Logo Passei Direto
Buscar

Resolução de Problemas utilizando o Computador

User badge image

Enviado por Marianna Castaldi em

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

1 
LINGUAGEM E TÉCNICA DE PROGRAMAÇÃO I 
 
Profa. Gisele Busichia Baioco 
gisele@ft.unicamp.br 
 
 
Resolução de Problemas utilizando o Computador 
1 Lógica de Programação 
1.1 O que é Lógica? 
A lógica trata da “correção do pensamento”. Pode-se dizer também que a lógica é a 
arte de pensar corretamente e, visto que a forma mais completa do pensamento é o raciocínio, 
a lógica estuda ou tem em vista a “correção do raciocínio”. A lógica ensina a colocar 
ORDEM NO PENSAMENTO. 
Exemplo: 
Todo mamífero é animal. 
Todo cavalo é mamífero. 
Portanto, todo cavalo é animal. 
1.2 Existe Lógica no dia-a-dia? 
Sempre que uma pessoa pensa, a lógica ou a ilógica está presente. Também, quando se 
fala, pois a palavra falada é a representação do pensamento.Visto que a palavra escrita é a 
representação da palavra falada, também se pensa quando se escreve. 
Pode-se perceber então, a importância da lógica na vida das pessoas não só na teoria, 
como também na prática. 
Exemplo: 
A gaveta está fechada. 
A bala está na gaveta. 
Preciso primeiro abrir a gaveta, para depois pegar a bala. 
1.3 Mas e a Lógica de Programação? 
Significa o uso correto das leis do pensamento, da “ordem da razão” e de processos de 
raciocínio e simbolização formais na programação de computadores, objetivando 
racionalidade e o desenvolvimento de técnicas que cooperem para a produção de soluções 
logicamente válidas e coerentes, que resolvam com qualidade os problemas que se deseja 
programar. 
O objetivo principal do estudo da Lógica de Programação é a construção de 
algoritmos coerentes e válidos. 
2 Algoritmos 
A solução de um problema não deve ser implementada diretamente por meio de um 
programa de computador, pois a probabilidade de erros se torna maior. Assim, um trabalho de 
programação deve ser dividido em duas fases como mostra a figura 1: 
• Fase de resolução do problema: consiste na elaboração de um algoritmo (“receita”) 
para resolver o problema proposto; 
 2 
• Fase de implementação: consiste na conversão do algoritmo elaborado na fase 
anterior, para alguma linguagem de programação. 
 
 
Solução em 
forma de 
algoritmo 
Problema Fase da resolução 
do problema 
Solução 
como um 
programa 
Fase da 
implementação 
Passo 
difícil 
 
Figura 1: Resolução de um problema e programação 
 
De maneira mais detalhada, a resolução de um problema utilizando o computador deve 
ser realizada por meio dos seguintes passos: 
1- Ter o enunciado do problema e saber exatamente o que é desejado como resposta. 
2- Elaborar um algoritmo para resolver o problema; 
3- Converter o algoritmo para uma linguagem de programação específica 
(codificação do problema); 
4- Editar o programa no computador para que ele possa ser executado (pode ser feito 
simultaneamente com o passo 3); 
5- Compilar o programa; 
6- Executar o programa; 
7- Interpretar os resultados obtidos (testes). 
2.1 Conceito de Algoritmo 
Um algoritmo pode ser definido como uma seqüência ordenada, e sem ambigüidade, 
de passos que levem à solução de um dado problema. Exemplo de um algoritmo para trocar 
uma lâmpada: 
 
Passo 1 – Escolha uma nova lâmpada de mesma potência da queimada 
Passo 2 – Peque a escada 
Passo 3 – Posicione a escada embaixo da lâmpada a ser trocada 
Passo 4 – Suba na escada até alcançar a lâmpada 
Passo 5 – Remova a lâmpada queimada 
Passo 6 – Coloque a lâmpada nova 
Passo 7 – Desça da escada 
 
O algoritmo ainda não está com uma especificação precisa, ou seja, diversos passos 
dele implicam em operações mais elaboradas que devem ser expressas explicitamente. 
Especificando mais detalhadamente os passos 1, 4, 5, 6, tem-se (tudo o que estiver escrito 
entre os símbolos /* e */ são comentários para facilitar o entendimento): 
 
 3 
Passo 1 – /* Escolha uma nova lâmpada de mesma potência da queimada */ 
Selecione uma nova lâmpada 
Se a potência não for a mesma da queimada, repita o processo seguinte até 
encontrar uma que sirva: 
 Descarte a lâmpada selecionada 
 Selecione uma nova lâmpada 
Passo 2 – Peque a escada 
Passo 3 – Posicione a escada embaixo da lâmpada a ser trocada 
Passo 4 – /* Suba na escada até alcançar a lâmpada */ 
Repita até que a lâmpada possa ser alcançada: 
 Suba num degrau da escada 
Passo 5 – /* Remova a lâmpada queimada */ 
Repita até que a lâmpada fique livre do soquete: 
 Gire a lâmpada no sentido anti-horário 
Passo 6 – /* Coloque a lâmpada nova */ 
Posicione a lâmpada nova no soquete 
Repita até que a lâmpada esteja firme no soquete: 
 Gire a lâmpada no sentido horário 
Passo 7 – Desça da escada 
 
O processo de detalhamento (refinamento) de um algoritmo pode continuar quase que 
indefinidamente. O nível de detalhamento necessário é determinado pelo “agente” que irá 
executar o algoritmo, isto é, um algoritmo está suficientemente detalhado quando estiver 
expresso em termos de tarefas já conhecidas pelo “agente” que irá executá-lo. Em termos 
computacionais, isso significa que o algoritmo está suficientemente refinado quando puder ser 
expresso em termos das instruções fornecidas pela linguagem de programação a ser utilizada. 
2.2 Método para a Construção de Algoritmos 
Para a construção de qualquer tipo de algoritmo são necessários os passos descritos a 
seguir: 
1- Ler atentamente o enunciado do problema, destacando os pontos mais importantes; 
2- Definir os dados de entrada: quais os dados que serão fornecidos; 
3- Definir o processo (ou processamento): quais cálculos serão efetuados e quais as 
restrições para esses cálculos. O processamento é responsável pela transformação 
dos dados de entrada em dados de saída; 
4- Definir os dados de saída: quais as informações se pretende obter, ou seja, quais 
dados deverão ser gerados após o processamento; 
5- Construir o algoritmo; 
6- Testar o algoritmo realizando simulações. 
2.3 Tipos de Algoritmos 
Os três tipos mais utilizados de algoritmos são: descrição narrativa, fluxograma e 
algoritmo estruturado (ou pseudocódigo). 
2.3.1 Descrição Narrativa 
A descrição narrativa consiste em analisar o enunciado do problema e escrever, 
utilizando uma linguagem natural (por exemplo, a língua portuguesa), os passos a serem 
seguidos para a resolução do problema. 
 
 4 
Vantagem: não é necessário aprender nenhum conceito novo, pois uma língua natural já é 
bem conhecida. 
 
Desvantagem: a língua natural abre espaço para várias interpretações, o que posteriormente 
dificultará a transcrição desse algoritmo para o programa. 
2.3.2 Fluxograma 
O fluxograma consiste em analisar o enunciado do problema e escrever, utilizando 
símbolos gráficos predefinidos (figura 2), os passos a serem seguidos para a resolução do 
problema. 
 
 
Indicam a ordem em que as operações devem ser executadas 
Processo Decisão Entrada Saída Início e Fim 
 
Figura 2: Símbolos básicos de fluxogramas 
 
Vantagem: o entendimento de elementos gráficos é mais fácil que o entendimento de textos. 
 
Desvantagem: é necessário aprender a simbologia dos fluxogramas e, além disso, o algoritmo 
resultante não apresenta muitos detalhes, dificultando a sua transcrição para um programa. 
Para programas extensos, a representação usando fluxograma fica difícil de ser visualizada 
por completo. 
2.3.3 Algoritmo Estruturado ou Pseudocódigo 
O algoritmo estruturado ou peseudocódigo consiste em analisar o enunciado do 
problema e escrever, por meio de regras predefinidas, os passos a serem seguidos para a 
resolução do problema. 
 
Vantagem: a passagem do algoritmo para uma linguagem de programação é quase imediata, 
bastando conhecer os comandos (instruções) da linguagem de programação que será utilizada. 
 
Desvantagem: é necessário aprender as regras do pseudocódigo. 
2.4 Exemplo Geral de Algoritmo 
Problema: Fazer um algoritmo
para calcular a média aritmética de duas notas de um 
aluno e mostrar a situação desse aluno que pode ser: aprovado, se a média for maior ou igual a 
5 e reprovado, caso contrário. 
Entrada: nota1 e nota2 
Processo: média aritmética = (nota1 + nota2)/2 
Saída: se média aritmética ≥ 5 então aprovado; caso contrário reprovado 
 
 5 
Algoritmo em descrição narrativa: 
 
Passo 1 – Receber duas notas 
Passo 2 – Calcular a média aritmética 
Passo 4 – Se a média aritmética for maior ou igual a 5, 
 então a situação do aluno é aprovado; 
 caso contrário, a situação é reprovado 
 
Algoritmo em fluxograma: 
 
 
M = (N1 + N2)/2 
N1, N2
Início 
M ≥≥≥≥ 5 Aprovado 
Fim 
Sim Não Reprovado 
 
 
Algoritmo estruturado: 
 
 Algoritmo 
 início 
 declare N1, N2, M: numérico; 
 escreva(“Digite as duas notas”); 
 leia(N1, N2); 
 M ← (N1 + N2)/2; 
 se M ≥ 5 
 então escreva(“Aprovado”); 
 senão escreva(“Reprovado”); 
 fim 
2.5 Conclusões 
Para que sejam obtidas soluções eficientes para problemas computacionais é 
necessário que o problema seja bem analisado, solucionado e descrito e/ou representado 
passo-a-passo. 
A descrição narrativa e os fluxogramas ajudam, mas em alguns momentos se tornam 
ineficientes. Por isso, o tipo de algoritmo mais indicado para a representação da solução de 
problemas computacionais é o Algoritmo Estruturado. 
 6 
3 Linguagem de Programação Estruturada – A Linguagem C 
A linguagem C foi criada por Dennis M. Ritchie e Ken Thompson no laboratório Bell 
em 1972, baseada na linguagem B de Thompson que era uma evolução da antiga linguagem 
BCPL. B foi nomeada com a primeira letra de BCPL e C com a segunda. 
C é uma linguagem muito utilizada no desenvolvimento de sistemas de software 
básico (por exemplo, sistemas operacionais, planilhas eletrônicas, processadores de texto, 
gerenciadores de banco de dados, processadores gráficos, sistemas de transmissão de dados, 
etc) e aplicações científicas (por exemplo, solução de problemas de engenharia, física, 
matemática, etc). O sistema operacional UNIX foi desenvolvido em C. 
A linguagem C tornou-se rapidamente uma das mais importantes e populares, 
principalmente por ser muito poderosa (combina as características de uma linguagem de alto 
nível com a funcionalidade das linguagens de baixo nível), portável e flexível. 
Os programas em C podem ser desenvolvidos de maneira estruturada e modular, o que 
resulta em programas mais legíveis. Os programas C também são compactos e de execução 
rápida.

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?