Buscar

Lógica de Programação em C

Prévia do material em texto

Algoritmo e 
Programação 
 Objetivo Geral: 
 
 Capacitar o aluno a visualizar soluções computacionais para problemas através 
da aplicação dos conceitos da lógica de programação e dotá-los da capacidade 
de construção de programas em linguagem de alto nível estruturada em 
(Linguagem C). 
Objetivos 
Objetivos 
 Objetivos Específicos: 
 
 
 Desenvolver o raciocínio lógico e abstrato do aluno; 
 
 Familiarizar o aluno com o modelo seqüencial de computação; 
 
 Apresentar técnicas e linguagens para representação e construção de 
algoritmos simples; 
 
 Apresentar conceitos básicos de linguagens de programação; 
 
 Capacitar o aluno no uso da linguagem C; 
 
 Treinar o aluno no processo básico de desenvolvimento de software 
(concepção, edição, execução e teste de programas de computador). 
Metodologia 
 Aulas expositivo - dialogadas. 
 
 Fornecer os componentes teóricos e conceituais. 
 
 Aulas práticas ministradas em laboratório. 
 
 Experimentação e fixação dos conteúdos. 
 
 Visualg e DevC++. 
Introdução 
 Nosso objetivo  Aprender conceitos básicos para desenvolver 
programas para computadores. 
 
 Exemplos: sistemas bancários, sistemas de restaurantes, cálculos 
avançados entre outros. 
 
 Roteiro para desenvolver programas: 
 
 
Problema  Solução  Algoritmo  Programa  Resultado 
 Computador  É uma máquina capaz de possibilitar variados tipos de 
tratamento automático de informações ou processamento de dados. 
 
 O que deve ser feito para que um determinado tratamento automático de 
informações ocorra? 
 
 Deve-se instruir o computador para que o mesmo utilizando-se de sua estrutura 
execute determinada tarefa. 
 
 Como? 
 
 Software (Programas). 
 
 Software é desenvolvido para realizar um processamento de dados. 
 
 Computador precisa compreender e executar o programa. 
 
 Linguagem que o homem compreenda e que o computador compreenda  
Linguagem de Programação. 
 
 
+ Hardware Software Computador 
Processamento de Dados 
+ Informações 
Operações Sobre as 
Informações 
Resposta 
+ Dispositivo de Entrada CPU Dispositivo de Saída 
Analogia 
• Análise – Nessa etapa estuda-se o enunciado do problema para definir os dados de 
Entrada, o Processamento e os dados de Saída. 
 
• Algoritmo – Onde ferramentas do tipo Descrição Narrativa, Fluxograma e o 
Pseudocódigo ou Portugol. Estruturado são utilizadas para descrever o problema com 
suas soluções. 
 
• Codificação – Onde o algoritmo é transformado em códigos da linguagem de 
programação escolhida para se trabalhar. 
 
As etapas para o desenvolvimento de um programa são: 
Análise 
 
1- Estudar o enunciado do problema para definir os dados de Entrada. 
2- Processamento. 
3- Saída. 
 
 
1º - Exemplo 
O sistema de notas do Unis trabalha com 3 etapas dividindo os 100 pontos. Este processo 
acontece durante um semestre inteiro e ao seu fim é obtido um resultado para cada aluno. 
Como ficaria este tipo de sistema pensando em suas entradas, saídas e processamento? 
Resolução do 1º Exemplo 
Entrada Processamento Saída 
Notas das avaliações, 
atividades, trabalhos. 
Frequência dos alunos e 
comportamento 
Realização das avaliações, 
entrega dos trabalhos, 
lançamento das faltas, 
apresentação dos trabalhos 
Notas por etapa, nota final e 
nota da prova fina, se 
necessário 
FEEDBACK – aluno aprovado ou reprovado 
A lógica de Programação 
Em que consiste? 
 
A lógica de programação consiste no uso correto das leis do pensamento, da "ordem da 
razão", de processos de raciocínio e de simbolização formal na programação de 
computadores. 
 
A lógica de programação é necessária para pessoas que desejam trabalhar com 
desenvolvimento de sistemas e programas, ela permite definir a seqüência lógica para o 
desenvolvimento. 
 
A Lógica de Programação tem o objetivo de permitir a resolução de problemas específicos 
com soluções de boa qualidade. 
Então o que é lógica? 
 
Lógica de programação é a técnica de encadear pensamentos para atingir determinado 
objetivo. 
Sequência lógica 
 
Estes pensamentos podem ser descritos como uma seqüência de instruções, que devem 
ser seguidas para se cumprir uma determinada tarefa. 
 
 
Então a Sequência Lógica são passos executados até atingir um objetivo ou solução de 
um problema 
Análise: 
 N1 + N2 
 Média Final = ---------------------- 
 2 
2º - Exemplo 
Imagine o seguinte problema: Calcular a Média Final dos alunos. Pelas provas os alunos 
receberão 2 notas: N1, N2. Onde: 
Para montar o algoritmo proposto, faremos três perguntas: 
 
a) Quais são os dados de entrada? 
 
R: Os dados de entrada são N1, N2 
 
b) Qual será o processamento a ser utilizado? 
 
R: O procedimento será somar todos os dados de entrada e dividi-los por 2 (dois) 
 
c) Quais serão os dados de saída? 
 
R: O dado de saída será a média final 
Instruções 
 
Na linguagem comum, entende-se por instruções “um conjunto de regras ou normas 
definidas para a realização ou emprego de algo”. 
 
Em informática, porém, instrução é a informação que indica a um computador uma ação 
elementar a executar. 
 
Convém ressaltar que uma ordem isolada não permite realizar o processo completo, para 
isso é necessário um conjunto de instruções colocadas em ordem seqüencial lógica. 
 
Por exemplo, se quisermos fazer uma omelete de batatas, precisaremos colocar em prática 
uma série de instruções: descascar as batatas, bater os ovos, fritar as batatas, etc... 
 
É evidente que essas instruções têm que ser executadas em uma ordem adequada – não 
se pode descascar as batatas depois de fritá-las. 
 
Dessa maneira, uma instrução tomada em separado não tem muito sentido; para obtermos 
o resultado, precisamos colocar em prática o conjunto de todas as instruções, na ordem 
correta. 
Então o que é instruções? 
 
São um conjunto de regras ou normas definidas para a realização ou emprego de algo. Em 
Informática, é o que indica a um computador uma ação elementar a executar. 
Método para a Construção de Algoritmo. 
Para a Construção de qualquer tipo de algoritmo, é necessário seguir estes passos: 
 
• Compreender completamente o problema a ser resolvido, destacando os pontos mais 
importantes e os objetivos que o compõem. 
 
• Definir os dados de entrada, ou seja, quais dados serão fornecidos e quais objetos 
fazem parte desse cenário problema. 
 
• Definir o processamento, ou seja, quais cálculos serão efetuados e quais as 
restrições para esse cálculos. O processamento é responsável pela transformação 
dos dados de entrada em dados de saída. Além disso, deve-se verificar quais objetos 
são responsáveis pelas atividades. 
 
• Definir os dados de saída, ou seja, quais dados serão gerados depois do 
processamento. 
 
• Construir o algoritmo utilizando um dos seus tipos. 
 
• Testar o algoritmo realizando simulações. 
Contexto Humano e Contexto Computacional 
 
O raciocínio lógico pode ser expresso através de várias linguagens: 
 
 - no contexto humano - utiliza-se a palavra escrita/falada que, por sua vez, se 
baseia num determinado idioma, mas, independente do idioma, tem-se o mesmo raciocínio. 
 
 - no contexto computacional - utilizam-se as linguagens de programação 
 
Vamos utilizar uma forma de representação mais genérica (livre de detalhes 
computacionais) e que traduza mais fielmente o raciocínio da lógica de programação: 
ALGORITMOS 
 
Então ... 
 
 
O objetivo da lógica de programação é a construção de algoritmos corretos e válidos. 
 
 
“Informalmente, um algoritmo é qualquer procedimento computacional bem definido que 
toma algum valor ou conjunto de valores como entrada e produz algum valor ou conjunto 
de valores como saída. Portanto, um algoritmo é uma sequência de passos computacionais 
que transformam a entrada na saída.” (CORMEN, 2002) 
Atenção 
Algoritmonão é a solução de um problema, pois, se assim fosse, cada problema teria um 
único algoritmo. Algoritmo é um caminho para a solução de um problema, e em geral, os 
caminhos que levam a uma solução são muitas. 
 
O aprendizado de algoritmos é como aprender a jogar futebol, não se consegue a não ser 
através de muitos exercícios. 
 
 Algoritmos não se aprendem: 
 
 - Copiando Algoritmos 
 - Estudando Algoritmos 
 
 Algoritmos só se aprendem: 
 
 - Construindo Algoritmos 
 - Testando Algoritmos 
“Uma estruturas de dados é um meio para armazenar e organizar dados com o objetivo de 
facilitar o acesso e as modificações.” (CORMEN, 2002) 
Programas 
 
Os programas de computadores nada mais são do que algoritmos escritos numa linguagem 
de computador (Pascal, C, Cobol, Fortran, Visual Basic entre outras) e que são 
interpretados e executados por uma máquina, no caso um computador. Notem que dada 
esta interpretação rigorosa, um programa é por natureza muito específico e rígido em 
relação aos algoritmos da vida real. 
Para que um computador possa 
desempenhar uma tarefa é necessário 
que esta seja detalhada passo a 
passo, numa forma compreensível 
pela máquina, utilizando aquilo que se 
chama de programa. Neste sentido, 
um programa de computador nada 
mais é que um algoritmo escrito numa 
forma compreensível pelo computador. 
C, Java, C++, Delphi, VB, ... 
Mundo Real Máquina 
Algoritmo 
É uma seqüência finita de ações que descrevem como um problema pode ser resolvido. 
 
Ferramentas são utilizadas para descrever o problema com suas soluções. 
 
Tipos de Algoritmos 
 
Os três tipos mais utilizados de algoritmos são: 
 
• Descrição Narrativa 
• Fluxograma 
• Pseudocódigo ou Portugol 
 
Algoritmo é uma sequência de passos que visa atingir um objetivo bem definido 
(FORBELLONE, 1999) 
 
Algoritmo é a descrição de uma sequência de passos que deve ser seguida para a 
realização de uma tarefa (ASCENSIO, 1999) 
 
Como Construir um algoritmo 
a) Análise Preliminar 
 
Entenda o problema, identifique os dados envolvidos e os resultados esperados. 
 
b) Solução 
 
Desenvolver algoritmo para resolver o problema 
 
c) Teste de qualidade (Teste de mesa) 
 
Ideal testar o algoritmo com o máximo de combinações possíveis 
 
d) Alteração 
 
Caso o resultado do algoritmo não seja satisfatório, altere-o e submeta a um novo teste. 
 
e) Produto Final 
 
Algoritmo concluído e testado. 
Decomposição (Top-Down) 
Dividir o problema em problemas menores. 
 
Exemplo: 
 
1. Troque o pneu furado. 
 
 1. Pegue o material necessário (Inicio) 
 
 2. Troque o pneu furado (Meio) 
 
 3. Guarde o material (Fim) 
 Abra o porta-malas 
 Retire o macaco, o estepe e a chave em cruz e o sinalizador 
 Coloque o sinalizador atrás do carro 
 Afrouxe as porcas do pneu furado 
 Coloque o macaco na posição correta 
 Levante o carro 
 Retire as porcas 
 Retire o pneu 
 Coloque o estepe 
 Coloque as porcas 
 Desça o carro 
 Retire o macaco 
 Aperte as porcas do pneu trocado 
 Guarde o macaco, o pneu furado , o sinalizador e a chave em cruz. 
 Feche o porta-malas 
 
 
Obs. Algumas instruções poderiam ser dividas mais uma vez. 
 
Desenvolvimento Estruturado 
São técnicas que permitem sistematizar e ajudar no desenvolvimento de algoritmos para a 
resolução de grandes e complexos problemas computacionais. 
 
Objetivos destas técnicas 
 
- Facilitar o desenvolvimento do algoritmo 
 
- Facilitar o seu entendimento pelos humanos 
 
- Antecipar a comprovação de sua correção 
 
- Facilitar a sua manutenção e modificação 
 
- Permitir que o seu desenvolvimento possa ser empreendido simultaneamente por uma 
equipe de pessoas 
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 sua resolução. 
 
Vantagem: não é necessário aprender nenhum conceito novo, pois uma língua natural, 
neste ponto, 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. 
1º Exemplo 
1º Algoritmo: Somar Três Números. 
 
Passo 1 – Receber os Três Números. 
Passo 2 – Somar os Três Números. 
Passo 3 – Mostrar o Resultado Obtido. 
 
 
2º Exemplo 
2º Algoritmo: Fazer um Sanduíche. 
 
 
 
3º Algoritmo: Trocar uma Lâmpada. 
Exemplo - Resolução 
2º Algoritmo: Fazer um Sanduíche. 
 
Passo 1 – Pegar o Pão. 
Passo 2 – Cortar o Pão ao Meio. 
Passo 3 – Pegar a Maionese. 
Passo 4 – Passar a Maionese no Pão. 
Passo 5 – Pegar e Cortar Alface e Tomate. 
Passo 6 – Colocar Alface e Tomate no Pão. 
Passo 7 – Pegar o Hambúrguer. 
Passo 8 – Fritar o Hambúrguer. 
Passo 9 – Colocar o Hambúrguer no Pão. 
 
 
Exemplo - Resolução 
3º Algoritmo: Trocar uma Lâmpada. 
 
Passo 1 – Pegar uma Lâmpada Nova. 
Passo 2 – Pegar uma Escada. 
Passo 3 – Posicionar a Escada Embaixo da Lâmpada Queimada. 
Passo 4 – Subir na Escada com a Lâmpada Nova na Mão. 
Passo 5 – Retirar a Lâmpada Queimada. 
Passo 6 – Colocar a Lâmpada Nova. 
Passo 7 – Descer da Escada. 
Passo 8 – Testar o Interruptor. 
Passo 9 – Guardar a escada. 
Passo 10 – Jogar a lâmpada velha no lixo. 
 
Fluxograma 
O fluxograma consiste em analisar o enunciado do problema e escrever, utilizando 
símbolos gráficos predefinidos, os passos a serem seguidos para sua resolução. 
 
Vantagem: o entendimento de elementos gráficos é mais simples que o entendimento de 
texto. 
 
Desvantagem: é necessário aprender a simbologia dos fluxogramas e, além disso, o 
algoritmo resultante não apresenta muitos detalhes, dificultando sua transcrição para um 
programa. 
Conjunto de Símbolos 
Símbolo utilizado para indicar o início e o fim do algoritmo. 
Símbolo que permite indicar o sentido do fluxo de dados. 
Serve exclusivamente para conectar os símbolos ou blocos 
existentes. 
Símbolo utilizado para indicar cálculos e atribuições de 
valores. 
Símbolo utilizado para representar a entrada de dados. 
Símbolo utilizado para representar a saída de dados. 
Símbolo utilizado para indicar que deve ser tomada uma 
decisão, apontando a possibilidade de desvios. 
INICÍO 
CÁLCULOS / 
ATRIBUIÇÕES 
DECISÃO 
SAÍDA DE DADOS 
ENTRADA DE 
DADOS 
CONECTAR 
TERMINADOR 
Fluxograma é uma representação gráfica por meio de símbolos geométricos, da 
solução algorítmica de um problema. 
Codificação 
Algoritmo é transformado em códigos da linguagem de programação escolhida para se 
trabalhar 
 
PROGRAMA É A CODIFICAÇÃO DE UM ALGORITMO EM UMA DETERMINADA 
LINGUAGEM DE PROGRAMAÇÃO 
Pseudocódigo ou Portugol 
O pseudocódigo ou portugol consiste em analisar o enunciado do problema e escrever, por 
meio de regras predefinidas, os passos a serem seguidos para sua resolução. 
 
Vantagem: a passagem do algoritmo para qualquer linguagem de programação é quase 
imediata, bastando conhecer as palavras reservadas da linguagem que será utilizada. 
 
Desvantagem: é necessário aprender as regras do pseudocódigo. 
 
Programas recebem dados que precisam ser armazenados no computador para serem 
utilizados no processamento. 
 
Para isso, utiliza estruturas de Memória. 
 
A representação de um algoritmo na forma de pseudocódigo é a seguinte: 
 
Algoritmo Nome_Do_Algoritmo 
Variáveis 
Declaração das variáveis 
Procedimentos 
Declaração dos procedimentos 
Funções 
Declaração das funções 
Início 
Corpo do Algoritmo 
Fim 
Algoritmo em Descrição Narrativa 
1- Faça um algoritmo em Descrição Narrativa para mostrar o resultado da multiplicação de 
2 números. 
Passo 1 – Receber dois Números que serão Multiplicados. 
Passo 2 – Multiplicar os Números. 
Passo 3 – Mostrar o Resultado Obtido na Multiplicação. 
Início N1, N2 
M = N1 * N2M FIM 
Algoritmo em Fluxograma. 
 
Algoritmo em Pseudocódigo. 
 
ALGORITMO 
DECLARE N1, N2, M NUMÉRICO 
ESCREVA “Digite dois Números” 
LEIA N1, N2 
M N1 * N2 
ESCREVA “Multiplicação = ”, M 
FIM_ALGORITMO. 
Algoritmo em Descrição Narrativa 
2- Faça um algoritmo em Descrição Narrativa e com Fluxograma para calcular a média 
aritmética entre duas notas de um aluno e mostrar sua situação (aprovado >=60) ou 
reprovado. 
Passo 1 – Receber as Duas Notas. 
Passo 2 – Calcular a Média Aritmética. 
Passo 3 – Mostrar a Média Aritmética. 
Passo 4 – Se a Média Aritmética for Maior ou Igual a 60, então a situação do aluno 
é Aprovado; caso contrário, a situação é Reprovado. 
Início N1, N2 
M = (N1 + N2) / 2 
M 
FIM 
Algoritmo em Fluxograma. 
 
M>=60 
REPROVADO APROVADO 
SIM NÃO 
Algoritmo em Pseudocódigo. 
 
ALGORITMO 
DECLARE N1, N2, M NUMÉRICO 
ESCREVA “Digite duas Notas” 
LEIA N1, N2 
M (N1 + N2) / 2 
ESCREVA “Média = ”, M 
SE M >= 60 
ENTÃO ESCREVA “Aprovado” 
SENÃO ESCREVA “Reprovado” 
FIM_ALGORITMO. 
3- Faça um algoritmo em Descrição Narrativa, mais Fluxograma e com Pseudocódigo para 
mostrar o resultado da divisão de dois números verificando se é possível ou não dividir. 
 
 
4- Faça um algoritmo para calcular o novo salário de um funcionário. Sabe-se que os 
funcionários que recebem atualmente salário de até R$ 500,00 terão aumento de 20%; os 
demais terão aumento de 10%. Monte um algoritmo em Descrição Narrativa, mais 
Fluxograma e com Pseudocódigo. 
Exercício 
Exercício 3 
 
Descrição Narrativa. 
 
Passo 1 – Receber os dois números que serão divididos. 
Passo 2 – Se o segundo número for igual a zero, não poderá ser feita a divisão, pois não 
existe divisão por zero, caso contrário, dividir os números e mostrar o resultado da divisão. 
Pseudocódigo. 
 
ALGORITMO 
DECLARE N1, N2, D NUMÉRICO 
ESCREVA “Digite dois números” 
LEIA N1, N2 
SE N2 = 0 
ENTÃO ESCREVA “Impossível dividir” 
SENÃO INICIO 
 D N1 / N2 
 ESCREVA “Divisão = “, D 
 FIM 
FIM_ALGORITMO. 
Início N1, N2 
D = N1 / N2 D 
FIM 
Algoritmo em Fluxograma. 
 
N2=0 
IMPOSSÍVEL 
DIVIDIR 
SIM 
NÃO 
Exercício 4 
 
Descrição Narrativa. 
 
Passo 1 – Receber o salário atual do funcionário. 
Passo 2 – Se o salário atual do funcionário for até R$ 500,00, calcule o novo salário com 
percentual de aumento de 20%; caso contrário, calcule o novo salário com percentual de 
aumento de 10%. 
Pseudocódigo. 
 
ALGORITMO 
DECLARE SAL_ATUAL, NOVO_SAL NUMÉRICO 
ESCREVA “Digite o salário atual do funcionário” 
LEIA SAL_ATUAL 
SE SAL_ATUAL <= 500 
ENTÃO NOVO_SAL SAL_ATUAL * 1,20 
SENÃO NOVO_SAL SAL_ATUAL * 1,10 
ESCREVA “Novo Salário = “, NOVO_SAL 
FIM_ALGORITMO. 
Pseudocódigo – Outra Situação. 
 
ALGORITMO 
DECLARE SAL_ATUAL, NOVO_SAL NUMÉRICO 
ESCREVA “Digite o salário atual do funcionário” 
LEIA SAL_ATUAL 
SE SAL_ATUAL <= 500 
ENTÃO NOVO_SAL (SAL_ATUAL * 20%) + SAL_ATUAL 
SENÃO NOVO_SAL (SAL_ATUAL * 10%) + SAL_ATUAL 
ESCREVA “Novo Salário = “, NOVO_SAL 
FIM_ALGORITMO. 
Início 
SAL_ATUAL 
NOVO_SAL = SAL_ATUAL * 
1,20 
NOVO_SAL FIM 
Algoritmo em Fluxograma. 
 
SAL_ 
ATUAL 
<=500 
NOVO_SAL 
SIM 
NOVO_SAL = SAL_ATUAL * 
1,10 
NÃO 
Início 
SAL_ATUAL 
NOVO_SAL = (SAL_ATUAL * 
20%) + SAL_ATUAL 
NOVO_SAL FIM 
Algoritmo em Fluxograma – Outra Situação. 
 
SAL_ 
ATUAL 
<=500 
NOVO_SAL 
SIM 
NOVO_SAL = (SAL_ATUAL 
* 10%) + SAL_ATUAL 
NÃO

Continue navegando