Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Lgica de programao
Algoritmo
Jefferson Henrique S. dos S. Bispo 12/02/2010
Nesta apostila vocs vero uma breve introduo Lgica de programao e desenvolvimento de algoritmos, em que estes so fundamentais para os programadores, seu principal objetivo apontar diversas tcnicas para solucionar problemas nas execues das tarefas computacionais. Sendo assim, a lgica essencial no aprendizado das diversas linguagens de programao.
Dedico esta apostila aos colegas do curso de Bacharelado em Cincias Exatas e Tecnolgicas e a todos aqueles que querem aprender algoritmo e lgica de programao.
Pgina 2
Linguagem de Mquina
nica compreendida pelo computador. Especfica de cada computador. Utilizam Mnemnicos para representar instrues elementares Utilizam instrues prximas da linguagem humana de forma a facilitar o raciocnio Ex.: Assembly
2. ALGORITMO
Pgina 3
Algoritmos e Lgica de Programao Algoritmo a seqncia de etapas resoluo de um determinado problema. H varias formas para resolvermos um problema por isso cada programador escolhe aquela de mais fcil compreenso tanto para si quanto para o usurio. 2.1. 2.2. CARACTERSTICAS DOS ALGORITMOS Ser finito; Entrada: informaes inseridas pelo usurio; Processamento: desenvolvimento para as informaes contidas nos dados; Sada: resultados obtidos do processamento ; No ser ambguo, para que tenha uma nica visualizao, sendo assim o usurio no encontrara outras interpretaes; Cada instruo tem que ser clara e objetiva; Pode ser representado de maneira grfica ou textual; Deve seguir uma ordem de execuo FLUXOGRAMA OU DIAGRAMA DE BLOCO
uma forma de representao padronizada com passos lgicos de um determinado processamento. Vejamos alguns smbolos utilizados para a sua representao: Exemplo 1:
Pgina 4
Algoritmos e Lgica de Programao Exemplo 2: Neste exemplo estamos mostrando a entrada de dados de nmeros para calcular a mdia aritmtica (processamento) de quatros notas e o resultado (sada) das mesmas.
Pgina 5
Incio
m >=5
Aprovado
Reprovado Fim
2.3.
o processo para descrever o percurso percorrido para desencadear um algoritmo, lembrando-se que em cada linha deve conter informaes com frases curtas e simples que contenha pelo menos um verbo. Exemplo: Faa um algoritmo para uma criana pegar o nibus para ir ao colgio. incio Esperar o nibus Acenar para o nibus parar Entrar no nibus Perguntar o valor da passagem Pagar a passagem Sentar Espera o local de chegada Descer do nibus Entrar no colgio fim 2.4. PSEUDOCDIGO
Pgina 6
Algoritmos e Lgica de Programao Chamado tambm de pseudolinguagem, portugus estruturado ou portugol. Aproxima-se de uma linguagem de Alto Nvel. Abaixo veremos como a estruturao para construirmos algoritmos em portugol. Algoritmo < nome_do_programa > < declarao_das_variveis > Incio < Instrues > Fim Exemplo 1: Calcular a rea e o permetro de um retngulo, sendo dadas as medidas dos lados. Algoritmo Retangulo Real: lado1 , lado2 , area , perimetro Incio Escreva( Digite as medidas dos lados do retangulo: ) Leia( lado1 , lado2 ) area lado1 * lado2 2 * (lado1 + lado2)
perimetro
Escreva( O valor da area : , area ) Escreva( O valor do perimetro : , perimetro ) fim Exemplo 2: Faa um algoritmo que exiba na tela do computador o seu nome, curso e a universidade. Algoritmo dados caractere: nome , curso , univer Incio Escreva( Qual seu nome? ) Leia( nome )
UFRB - Bacharelado em Cincias Exatas e Tecnolgicas - CETEC Pgina 7
Algoritmos e Lgica de Programao Escreva( Qual curso voc faz? ) Leia( curso ) Escreva( Qual instituio? ) Leia( univer ) Escreva( Meu nome : ,nome ) Escreva( Fao o curso de : ,curso ) Escreva( A instituio : ,univer ) fim
EXERCCIOS: 1) Desenvolva um fluxograma mostrando o processo da troca do pneu furado de um carro. 2) Construa um diagrama de blocos para desenvolver o processo de ligar um computador 3) Crie um fluxograma mostrando todo o processo que voc usa para tomar banho. 4) Refaa os trs exerccios acima, s que desta vez em forma textual, como vimos no exemplo acima (2.3). 5) Monte um algoritmo com a seqncia de aes para fazer uma vitamina com um mamo, uma banana, uma maa, um pouco de leite e acar. 6) Suponha que voc vai ao banco sacar R$ 200,00 num caixa eletrnico, faa o algoritmo que descreva todos os passos. 7) Suponha que temos um rob a nossa disposio e precisa ser ensinado a fazer determinadas tarefas. Para ensin-lo, vamos fazer um algoritmo para passar-lhe as instrues necessrias execuo de cada atividade. Escreva os passos necessrios para o nosso rob executar. 8) Um homem precisa atravessar um rio com um barco que possui capacidade para carregar, apenas, ele mesmo, e mais uma de suas trs cargas, que so: um lobo, um bode e um mao de alfafas. Escreva um algoritmo, ou seja, indique todas as aes necessrias para que o homem consiga atravessar o rio sem perder suas cargas.
Pgina 8
Algoritmos e Lgica de Programao 9) Trs jesutas e trs canibais precisam atravessar um rio; para tal dispem de um barco com capacidade para duas pessoas. Por medidas de segurana, no se deve permitir que em alguma margem a quantidade de jesutas seja inferior de canibais. Elabore um algoritmo indicando as aes que concretizam a travessia com segurana. 10) Elabore um algoritmo que mova trs discos de uma haste para outra, utilizando uma terceira como auxiliar. Os discos so de tamanhos diferentes e os menores so dispostos sobre os maiores (Torre de Hani). Pode-se mover um disco de cada vez para qualquer haste, contanto que nunca seja colocado um disco maior sobre um menor. 11) Elabore um algoritmo para calcular a mdia parcial de um aluno de Algoritmo aps as trs primeiras avaliaes e dizer a sua situao: aprovado, reprovado ou prova final, e nesse ltimo caso quanto precisa para ser aprovado. 12) Calcular o valor da funo f(x,y) = 3x2 + 2y2 - xy em um ponto qualquer do plano cartesiano. 13) Leia uma temperatura em graus centgrados e imprima a equivalente em graus farheneit ( F = 9C/5 + 32). 14) Uma quantidade de chuva dada em polegadas e imprima a equivalente em milmetros (1 polegada = 25,4 milmetros ).
Constate um determinado valor que no muda no decorrer da execuo do algoritmo. Ex.: nmeros, palavras, etc. 3.3. VARIVEIS
A varivel pode ser mudada ao longo do tempo na execuo de um programa, ou seja, so expresses que podem conter ou armazenar valores e cada varivel corresponde a uma posio de memria. Elas no podem conter
UFRB - Bacharelado em Cincias Exatas e Tecnolgicas - CETEC Pgina 9
Algoritmos e Lgica de Programao caracteres especiais (/?@^&#%]) e nem palavras reservadas da ling uagem utilizada. Ex.: idade, peso, preo, etc. 3.4. TIPOS DE DADOS
Inteiros: so nmeros inteiros, ou seja, sem casas decimais. Ex.: 4, 8, 23 Real: quaisquer nmeros inclusive os que contm casas decimais. Ex.: 2.3, 4.5, 3.14 Caractere: define variveis do tipo String, ou seja, conjunto de caracteres. Ex.: nome, estudante, programador Lgico: Armazena somente dados lgicos que podem ser Falso ou Verdadeiro.
4. OPERADORES
Existem trs tipos de operadores: Aritmticos, Relacionais e Lgicos. Estes so representados por smbolos. 4.1. OPERADORES ARITMTICOS OPERAO Multiplicao Diviso Adio Subtrao Exponenciao Inteiro da diviso Resto da diviso SMBOLO X / + ** Div Mod
Prioridade para os operadores matemticos: 1 Parnteses 2 Exponenciao 3 Multiplicao ou diviso (o que aparecer primeiro) 4 Adio ou subtrao (o que aparecer primeiro) 5 inteiro da diviso 6 resto da diviso
UFRB - Bacharelado em Cincias Exatas e Tecnolgicas - CETEC Pgina 10
4.2.
OPERADORES RELACIONAIS
Utilizados para comparar caracteres ou nmeros, e os resultados obtidos sempre retornam valores lgicos (Falso ou verdadeiro). OPERADOR Igual a Diferente de Maior que Menor que Maior ou igual a Menor ou igual a SMBOLO = <> > < => <=
Exemplos:
Pgina 11
Utiliza a lgica booleana (falsa ou verdadeira), para combinar os resultados de expresses. Os operadores lgicos so: And/E: verdadeira, se somente se, todas as condies forem verdadeiras; Or/ou: basta que uma parte seja verdadeira para retorna verdadeira; Not/no: esta inverte o valor da condio ou expresso. Ou seja, se o resultado for verdadeiro ela inverte para falso e vice-versa.
Exemplo: Suponha que atribumos determinados valores as variveis A=4; B=12; C=0 A > B and C > A Falso A < B or B < C Verdadeiro A < B not B > C Falso C > B and C>=B Falso A <= B or C < B Verdadeiro EXERCCIOS: 1) Faa a operao matemtica das equaes, e escreva qual o tipo de dado (inteiro ou real). a) 198-12*(12-11)/2+12 = b) 13*13**13/13*(15-3) =
UFRB - Bacharelado em Cincias Exatas e Tecnolgicas - CETEC Pgina 12
Algoritmos e Lgica de Programao c) 1+(18-1)/2**2-1+8div2 = d) 3**2(18-8)-1*3mod2 = 2) Faa um algoritmo para se obter a resposta da operao matemtica 5 multiplicado por 6 mais 2, dividido por 3 em uma calculadora simples. 3) Determine os operadores abaixo, se TRUE ou FALSE (Verdadeiro ou Falso). a) True and True = b) True and False = c) False and True = d) False and False = e) True or True = f) True or False = g) False or True = h) False or False = i) Not True =
5. ESTRUTURA DE DECISO / SE Permite a execuo de aes dependendo de determinadas condies A estrutura de deciso pode ser Simples (SE ENTO/ IF... THEN) ou Composta (SE ENTO SENO / IF... THEN... ELSE), baseada em um resultado lgico. Simples: se (<condio>) ento <comando1> fim_se Composta 1: se (<condio>) ento <comando1> seno <comando2> Fim_se Na estrutura de deciso simples, haver uma avaliao na condio, se essa for verdadeira o comando1 executado e assim finaliza o programa. J a estrutura de deciso composta 1, ela avalia a primeira condio, caso essa seja falsa o programa executa o comando2 e assim finaliza o programa.
UFRB - Bacharelado em Cincias Exatas e Tecnolgicas - CETEC Pgina 13
Algoritmos e Lgica de Programao Composta 2: se (<condio>)ento inicio <comando1> <comando2> fim_se; seno inicio <comando1>; <comando2> fim_se;
Exemplo 1: Determinar se uma pessoa maior ou menor de idade Algoritmo idade Inteiro: idade Incio Escreva( Fornea a idade : ) Leia( idade ) se (idade > 0) ento Se (idade >= 18 ) ento Escreva (Maior de idade ) seno Escreva( Menor de idade. ) fim_se seno Escreva( Idade errada ) fim_se fim
Pgina 14
Algoritmos e Lgica de Programao A estrutura de condio CASO, equivale a um conjunto da estrutura de seleo SE, mas esta estrutura utilizada para testar na condio uma nica expresso que gera um resultado a partir da opo escolhida. Escolha (<expresso>) Caso (<condio1>) faa <comando1> Caso (<condio2>) faa <comando2> . . . Caso (<condioN>)faa <comandoN> Seno <comando> fim_escolha Exemplo: Algoritmo calculadora Inteiro: num1, num2, op Inicio Escreva(Digite 1: Soma) Escreva(Digite 2: Subtrao) Leia (op) Escreva(Fornea dois nmeros) Leia (num1,num2) Escolha (op) Caso (1) faa Escreva (num1, +, num2, =, num1+num2) Caso (2) faa Escreva (num1, -, num2, =, num1-num2) seno Escreva (Digite a opo desejada) fim_escolha
UFRB - Bacharelado em Cincias Exatas e Tecnolgicas - CETEC Pgina 15
7. ESTRUTURA DE REPETIO
Tambm conhecida como looping ou lao, utilizada quando queremos repetir um determinado comando de vezes. 7.1. ESTRUTURA DE REPETIO / PARA...FAA Esta estrutura repete uma seqncia de comandos em um determinado nmero de vezes, enquanto o valor de uma varivel de controle incrementado. SINTAXE: PARA <varivel>DE<inicio>ATE<fim>(PASSO<n>)FAA <comandos> Fim_para
Exemplo 1: Algoritmo looping Inteiro: i Para i de 1 at 20 faa Escreva(Este lao executar 20 vezes) fim_para fim Exemplo 2: Clculo do fatorial de um nmero inteiro no-negativo. Algoritmo Fatorial Inteiro: num, k, fat Incio Escreva(Digite um nmero: ) Leia(num)
UFRB - Bacharelado em Cincias Exatas e Tecnolgicas - CETEC Pgina 16
Para k de 2 at num faa fat Fim_para Escreva(Fatorial de , num, igual a ,fat) Seno Escreva(No existe fatorial de nmero negativo) Fim_se Fim 7.2. ESTRUTURA DE REPETIO / ENQUANTO...FAA fat*k
Esta estrutura analisa o valor lgico, caso esse seja verdadeiro a seqncia executado. Se de inicio for falsa, o comando no executara os comandos em seqncia, passando o controle para o fim_enquanto.
EXEMPLO: Faa um algoritmo que imprima o total de nmeros compreendidos entre 1 e 20. Algoritmo total Inteiro: soma, numero inicio Numero = 2 Soma = 0 Enquanto valor <= 20 faa Soma soma + valor
Pgina 17
Algoritmos e Lgica de Programao Valor = valor +1 Fim_enquanto Escreva(Total: , soma) fim 7.3. ESTRUTURA DE REPETIO / REPITA...AT
o contrario do comando enquanto...faa, pois esta estrutura repetia executa a seqncia at que o valor retornado pela expresso lgica seja verdadeira.
SINTAXE: REPITA <comando> AT(<expresso lgica>) Exemplo: Imprimir os divisores de um nmero inteiro positivo dado. Algoritmo Divisores Inteiro: num, div Incio Repita Escreva (Digite um numero inteiro positivo: ) Leia (num) At (num > 0) Escreva (Divisores do nmero , num) div Repita Se ( num / div * div = num) ento Escreva (div) Fim_se
UFRB - Bacharelado em Cincias Exatas e Tecnolgicas - CETEC Pgina 18
EXERCCIOS: 1) Calcular a soma dos nmeros pares entre 13 e 125. 2) Calcular a soma dos nmeros mpares compreendidos entre dois outros nmeros inteiros dados. 3) Imprimir o maior, o menor e a mdia aritmtica de n nmeros quaisquer dados. 4) Imprimir os n primeiros nmeros da Sequncia de Fibonacci ( 1 1 2 3 5 8 13 21 ). 5) Clculo do mdc entre dois nmeros inteiros positivos. 6) A multa por excesso de velocidade baseada em quanto voc se excedeu alm do limite mximo permitido. Supe-se que a multa seja computada da seguinte forma:
VELOCIDADE ACIMA DO LIMITE (km/h)
1 a 10 11 a 20 21 1 30 31 a 40 41 a 50
Dados o limite de velocidade e a velocidade com que voc vinha, qual o valor de sua multa? 7) Recebendo quatro mdias bimestrais, calcule a media do ano (ponderada), sabendo que o 1 bimestre tem peso 1, o 2 bimestre tem peso 2, o 3 bimestre tem peso 3 e o 4 bimestre tem peso 4.
UFRB - Bacharelado em Cincias Exatas e Tecnolgicas - CETEC Pgina 19
Algoritmos e Lgica de Programao Sabendo que para aprovao o aluno precisa ter uma mdia anual maior ou igual a 7, escreva uma mensagem indicando se o aluno foi aprovado ou reprovado.
Pgina 20
REFERNCIAS
Lgica de Programao, SRGIO, Paulo de Moraes Lgica de Programao A Construo de Algoritmos e Estruturas de Dados So Paulo: Forbellone, Andr Luiz Villar - MAKRON, 1993 Site: http://www.univasf.edu.br/~marcelo.linder/iaa.html#pt4
Pgina 21
Pgina 22