Algoritmos
Prof. Antonio Tadeu Pellison tadeupellison@gmail.com
COMANDOS DE I/O (INPUT/OUTPUT)
• LER() Comando de entrada que permite a leitura de Variáveis de Entrada.
• ESCREVER() Comando de saída que exibe uma informação na tela do monitor.
uma informação na tela do monitor.
• IMPRIMIR() Comando de saída que envia uma informação para a impressora.
SINAL DE ATRIBUIÇÃO
• Uma Variável nunca é eternamente igual a um valor, seu conteúdo pode ser alterado a
qualquer momento. Portanto para atribuir valores a variáveis devemos usar o sinal de “:=”. “:=”. • Exemplos: A := 2; B := 3; C := A + B;
SINAL DE IGUALDADE
• As constantes são eternamente iguais a determinados valores, portanto usamos o sinal de “=”.
• Exemplos:
• Exemplos:
PI = 3.1416;
Empresa = “Colégio de Informática L.T.D.A.” V = Verdadeiro
CORPO GERAL DE UM PROGRAMA
ALGORITMO <<identificador>>; CONST <<identificador>> = <<dado>>; VAR <<identificador>> : <<tipo>>; ÍNICIO ÍNICIOCOMANDOS DE ENTRADA,PROCESSAMENTO E SAÍDA <<comando1>>;
<<comandoN>>; FIM.
ESTRUTURAS SEQÜÊNCIAIS
• Como pode ser analisado no tópico anterior, todo programa possui uma estrutura
; PONTO E VÍRGULA ;
• O sinal de ponto e vírgula “;” indica a
existência de um próximo comando (passa para o próximo).
• Na estrutura ÍNICIO não se usa “;”.
PRIMEIRO ALGORITMO
• Criar um Algoritmo para ler o nome e as 4 notas bimestrais de um aluno. Em seguida o Algoritmo calcula e escreve a média obtida.
PRIMEIRO ALGORITMO
ALGORITMO MEDIA_FINAL; VAR
NOTA1, NOTA2, NOTA3, NOTA4, MEDIA: REAL; NOME : CARACTERE [35];
INICIO INICIO
LER (NOME);
LER (NOTA1, NOTA2, NOTA3, NOTA4);
MEDIA := (NOTA1 + NOTA2 + NOTA3 + NOTA4) / 4; ESCREVER (NOME, MEDIA);
“ASPAS”
• Quando queremos exibir uma mensagem para a tela ou impressora ela deve estar contida
entre aspas, caso contrário, o computador irá identificar a mensagem como Variável
identificar a mensagem como Variável Indefinida.
• Exemplo:
E1) Escreva um algoritmo que leia um número inteiro pelo teclado e exiba o seu sucessor.
ALGORITMO sucessor; VAR N, SUCN: inteiro; INICIO ESCREVER(“Digite um número”); ESCREVER(“Digite um número”); LER(N); SUCN := N + 1;
ESCREVER(“Sucessor do número digitado =“, SUCN); FIM.
E2) Escreva um algoritmo que calcule a área de um quadrado de lado L. ALGORITMO áreadeumquadrado; VAR AREA, L : REAL; INICIO
ESCREVER(“Digite o lado do quadrado”); ESCREVER(“Digite o lado do quadrado”); LER(L);
AREA := SQR(L);
ESCREVER(“Área calculada = ”, AREA); FIM.
E3) Criar um algoritmo para calcular a média de duas variáveis A e B. Mostre na tela o resultado obtido.
ALGORITMO médiaduas; VAR
A, B, media: real; INICIO
ESCREVER(“Digite valor de A”); ESCREVER(“Digite valor de A”); LER(A);
ESCREVER(“Digite valor de B”); LER(B);
media := A + B;
ESCREVER(“Média de A+B =”,media); FIM.
E4) Ler dois valores para as variáveis A e B, efetuar a troca dos valores de forma que a variável A passe a possuir o valor da variável B e que a variável B passe a possuir o valor da variável A. Apresentar os valores trocados.
ALGORITMO trocadevariaveis; VAR
A, B, C : real; INICIO
ESCREVER(“Digite o valor de A”); ESCREVER(“Digite o valor de A”); LER(A); ESCREVER(“Digite o valor de B”); LER(B); C := A; A := B; B := C;
ESCREVER(“Novo valor de A=”,A); ESCREVER(“Novo valor de B=”,B); FIM.
E5) Qual o significado de uma atribuição? Supondo A=3 e B=4, quais seriam os valores finais de A, B, e C na seguinte atribuição: C := A * B – 4?
O comando de atribuição é o comando para guardar um determinado valor em uma variável. C := A * B – 4 C := A * B – 4 C := 3 * 4 – 4 C := 12 – 4 C := 8
{LINHAS DE COMENTÁRIO}
• Podemos inserir em um Algoritmo
comentários para aumentar a compreensão do mesmo, para isso basta que o texto fique entre Chaves “{}”.
entre Chaves “{}”.
• Exemplo:
SEGUNDO ALGORITMO
• Criar um Algoritmo para ler o raio de uma circunferência e calcular sua área.
Dado: A =PI . R2 Dado: A =PI . R2
SEGUNDO ALGORITMO
ALGORITMO AREA_CIRCUNFERENCIA; CONST
PI = 3.1416; VAR
RAIO, AREA : REAL; RAIO, AREA : REAL; INICIO
ESCREVER(“Digite o valor do raio”); LER (RAIO); {ENTRADA}
AREA := PI * SQR(RAIO); {PROCESSAMENTO} ESCREVER (“AREA =”, AREA); {SAÍDA}
E6) A ordem das atribuições é importante? A:=B e C:=A tem o mesmo efeito de C:=A e A:=B?
Sim. Supondo: A:=3 e B:=4 Primeira situação: A:= B C:= A A:= 4 C:= 4 Segunda Situação: C:= A A:= B C:= 3 A:= 4
E7) Aponte os erros no algoritmo abaixo:
ALGORITMO %ntriplo; VAR
NUM, TRIPLO: inteiro; INICIO ESCREVER(“Digite um número”); Caractere especial Variável errada ESCREVER(“Digite um número”); LER(NUM); TRPLO:= NUM . 3; ESCREVER(“Triplo = ” TRIPLO); FIM. Operador errado Falta virgula
Algoritmos
Prof. Antonio Tadeu Pellison tadeupellison@gmail.com
ESTRUTURAS DE DECISÃO
ESTRUTURAS DE DECISÃO
• Executa uma seqüência de comandos de acordo com o resultado de um teste.
• A estrutura de decisão pode ser Simples ou Composta, baseada em um resultado lógico. Composta, baseada em um resultado lógico.
ESTRUTURAS DE DECISÃO
• Simples: SE (<<CONDIÇÃO>>) ENTÃO INICIO INICIO <<COMANDO1>>; FIM; 4ESTRUTURAS DE DECISÃO
• Composta: SE (<<CONDIÇÃO>> ) ENTÃO INICIO <<COMANDO1>>; <<COMANDO1>>; FIM; SENÃO INICIO <<COMANDO2>>; FIM; 5ALGORITMO TRÊS
• Escrever um Algoritmo para ler 2 números e escrever o maior.
ALGORITMO ACHA_MAIOR; VAR
A, B : INTEIRO; INICIO
ESCREVER(“Digite dois números:”); LER (A, B);
SE (A>B) ENTÃO
INICIO
ESCREVER (“Maior valor”,A); ESCREVER (“Maior valor”,A); FIM;
SENÃO INICIO
ESCREVER (“Maior valor”,B); FIM;
FIM.
ALGORITMO QUATRO
• Criar um Algoritmo que leia o nome e as 4 notas bimestrais de um aluno. Em seguida o Algoritmo calcule e escreve a média obtida
pelo aluno escrevendo também se o aluno foi pelo aluno escrevendo também se o aluno foi aprovado ou reprovado.
• Média para aprovação >= 6
ALGORITMO MEDIA_FINAL; VAR
NOTA1, NOTA2, NOTA3, NOTA4, MEDIA: REAL; NOME : CARACTERE [35];
INICIO
ESCREVER(“Digite nome e quatro notas bimestrais”); LER (NOME);
LER (NOTA1, NOTA2, NOTA3, NOTA4);
MEDIA := (NOTA1 + NOTA2 + NOTA3 + NOTA4) / 4; SE (MEDIA>=6) ENTÃO ENTÃO INICIO ESCREVER (“APROVADO”); FIM; SENÃO INICIO ESCREVER (“REPROVADO”); FIM;
ESCREVER (“Nome e média”,NOME, MEDIA);
E1) Ler dois valores numéricos, efetuar a adição e apresentar o ser resultado caso o valor somado seja maior que 10.
ALGORITMO adicaodedois; VAR A,B,soma:REAL; INICIO ESCREVER(“Digite valores de A e B”); LER(A,B); soma:=(A+B); soma:=(A+B); SE (soma>10) ENTAO INICIO ESCREVER(“Resultado =”,soma); FIM; FIM. 10
E2) Faça um algoritmo que leia a idade em anos de 3 pessoas e determine se a média das idades é ou não maior ou igual a 50 anos.
ALGORITMO idade50; VAR
idadep1,idadep2,idadep3,media:real; INICIO
ESCREVER(“Digite a idade de três pessoas”); LER(idadep1,idadep2,idadep3); media:=(idadep1+idadep2+idadep3)/3; media:=(idadep1+idadep2+idadep3)/3; SE(media>=50) ENTAO INICIO
ESCREVER(“Media das idades MAIOR ou igual a 50”, media); FIM;
SENAO INICIO
ESCREVER(“Media das idades MENOR que 50”, media); FIM;
FIM.
E3) Ler dois valores numéricos, efetuar a adição. Caso o valor somado seja maior ou igual a 10, este deverá ser apresentado somando-se a ele mais 5; caso o valor somado não seja maior ou igual a 10, este deverá ser apresentado subtraindo-se 7.
ALGORITMO somasub10; VAR A,B,SOMA:REAL; INICIO ESCREVER(“Digite valores de A e B”); LER(A,B); SOMA:=(A+B); SOMA:=(A+B); SE(SOMA>=10) ENTAO INICIO SOMA:=SOMA+5; FIM; SENAO INCIO SOMA:=SOMA-7; FIM; ESCREVER(“Resultado =”,SOMA); FIM. 12
E4) Ler dois valores numéricos e apresentar a diferença do maior para o menor. ALGORITMO valordif; VAR A,B,DIF:REAL; INICIO ESCREVER(“Digite valores de A e B”); LER(A,B); SE(A>B) ENTAO ENTAO INICIO DIF:=(A-B); FIM; SENAO INCIO DIF:=(B-A); FIM; ESCREVER(“Resultado = ”,DIF); FIM. 13
NINHOS DE SE
Usados para tomadas de decisões para mais de 2 opções. Forma Geral: SE (<<CONDIÇÃO>>) ENTÃO INICIO <<COMANDO1>>; FIM; SENÃO INICIO SE (<<CONDIÇÃO>>) SE (<<CONDIÇÃO>>) ENTÃO INICIO <<COMANDO1>>; FIM; SENÃO INCIO <<COMANDO1>>; FIM; FIM; 14
ALGORITMO CINCO
• Criar um Algoritmo para ler 3 números e escrever o maior.
ALGORITMO ACHA_MAIOR; VAR A, B, C : INTEIRO; INICIO ESCREVER(“Digite três números”); LER (A, B, C); SE (A>B) E (A>C) ENTÃO INCIO ESCREVER (A); FIM; SENÃO INICIO SE (B>A) E (B>C) SE (B>A) E (B>C) ENTÃO INICIO ESCREVER (B); FIM; SENÃO INICIO ESCREVER (C); FIM; FIM; FIM. 16
E5) Elabore um algoritmo que, dada a idade de um nadador, classifique-o em uma das seguintes categorias:
bebe - <= 4 anos;
infantil - 4 <infantil<= 10 anos; juvenil - 10 <juvenil<= 17 anos; sênior - maiores de 17 anos.
sênior - maiores de 17 anos.
ALGORITMO nadador; VAR
idade : REAL; INICIO
ESCREVER(“Digite idade do nadador”); LER(IDADE); SE(idade<=4) ENTAO INCIO ESCREVER(“bebe”); FIM; SENAO INICIO SE (idade>4) E (idade<=10) ENTAO INICIO INICIO ESCREVER(“infantill”); FIM; SENAO INCIO SE(idade>10) E (idade<=17) ENTAO INICIO ESCREVER(juvenil”); FIM; SENAO INICIO ESECREVER(“senior”); FIM; FIM; FIM; FIM. 18
E6) Efetuar a leitura de três valores (variáveis A, B e C) e, apresentar os valores dispostos em ordem decrescente.
ALGORITMO emordemdecrescente; VAR A,B,C: REAL; INICIO ESCREVER(“Digite três números”); LER(A,B,C); SE(A>B) E (A>C) ENTAO INICIO SE(B>C) ENTAO INCIO ESCREVER(A,B,C); FIM; INICIO SE (B>A)E(B>C) ENTAO INICIO SE(A>C) ENTAO INCIO ESCREVER(B,A,C); FIM; SENAO INCIO ESCREVER(B,C,A); FIM; FIM; SENAO INCIO FIM; SENAO INCIO ESCREVER(A,C,B); FIM; FIM: SENAO INCIO SE(A>B) ENTAO INICIO ESCREVER(C,A,B); FIM; SENAO INICIO ESECREVER(C,B,A); FIM; FIM; FIM; FIM. 20
ESTRUTURA DE REPETIÇÃO
INDETERMINADA COM VALIDAÇÃO
INICIAL
ESTRUTURA DE REPETIÇÃO INDETERMINADA COM VALIDAÇÃO INICIAL
• É usada para repetir N vezes uma ou mais instruções.
• Tendo como vantagem o fato de não ser
necessário o conhecimento prévio do número necessário o conhecimento prévio do número de repetições.
ESTRUTURA DE REPETIÇÃO INDETERMINADA COM VALIDAÇÃO INICIAL
• Forma Geral: ENQUANTO (<<CONDIÇÃO>>) ÍNICIO <<COMANDO1>>; <<COMANDO1>>; <<COMANDON>>; FIM; 23
ALGORITMO SEIS
• Desenvolver um algoritmo que calcule a soma dos salários dos funcionários de uma
empresa. O programa termina quando o usuário digitar um salário menor que 0. usuário digitar um salário menor que 0.
ALGORITMO SOMA_SALARIOS; VAR
SOMA, SALARIO : REAL; INICIO SOMA:=0; SALARIO:=1; ENQUANTO (SALARIO>=0) INICIO ESCREVER(“Digite salário”); LER (SALARIO); SE(SALARIO>0) SE(SALARIO>0) ENTAO INICIO SOMA:=SOMA+SALARIO; FIM; FIM; ESCREVER (SOMA); FIM. 25
Exercício
• Pedir a leitura de um valor para a variável X, multiplicar este valor por 3, implicando-o à variável R e apresentar o valor de R obtido, repetindo esta sequência por cinco vezes. repetindo esta sequência por cinco vezes.
ALGORITMO tresnumeros; VAR X,R,I: INTEIRO; INÍCIO I := 1; ENQUANTO (I<=5) INÍCIO ESCREVER(“Digite um número”); ESCREVER(“Digite um número”); LER(X); R: = X * 3; ESCREVER( R); I: = I + 1; FIM; FIM. 27
E7) Construir um algoritmo para gerar a seguinte série: 1, 3, 5, 7, 9, 11,... Para os vinte primeiros termos.
ALGORITMO serie; VAR
I, nov_t, t_ant : INTEIRO; INICIO I:=1; nov_t:=1; ENQUANTO (I<=20) INICIO INICIO ESCREVER(nov_t); t_ant := nov_t; nov_t := t_ant + 2; I := I + 1; FIM; FIM. 29
E8) Faça um algoritmo para gerar os 20
primeiros termos da sequencia: 1, 1, 2, 3, 5, 8, 13, 21,..
ALGORITMO seriefibo; VAR
I, ANT1, ANT2, NOV : INTEIRO; INICIO I := 0; ANT1 := 1; ANT2 := 2; ESCREVER(ANT1, ANT2); ENQUANTO (I<=20) INICIO INICIO
NOV := ANT1 + ANT2; ANT1 := ANT2; ANT2 := NOV; ESCREVER(NOV); I := I + 1; FIM; FIM. 31
E9) Apresentar o total da soma obtido dos cem primeiros números inteiros
(1+2+3+4+...+99+100).
ALGORITMO soma100; VAR SOMA, I : INTEIRO; INICIO I := 1; SOMA := 0; ENQUANTO (I<=100) INICIO SOMA := I + SOMA; I := I + 1; FIM; FIM. 33
E10) Apresentar os resultados de uma tabuada de um número qualquer. Esta deverá ser
mostrada no seguinte formato: 2 x 1 = 2 2 x 2 = 4 2 x 3 = 6 .. . 2 x 10 = 20 34
ALGORITMO tabuada; VAR T, R, I : INTEIRO; INICIO ESCREVER(“Qual tabuada?”); LER(T); I := 1; ENQUANTO (I<=10) INICIO INICIO R := T * I; ESCREVER(T); ESCREVER(“x”, I); ESCREVER(“=”,R) I := I + 1; FIM; FIM. 35