Algoritmos e Estrutura de Dados I Estruturas de Repetição Prof. Elyssandro Piffer 1 ESTRUTURAS DE REPETIÇÃO • Repetição com Teste no Início –comando Enquanto • Repetição com Teste no Final –comando Faça-enquanto • Repetição de Controle (Contada) –comando para 2 Estruturas de Repetição Em algumas ocasiões é preciso repetir um trecho do programa um determinado número de vezes. Suponha que se queira ler um valor X e multiplicá-lo por 3 armazenando o resultado em R e repetir essa seqüência de passos 3 vezes. 3 Exemplo 1 Algoritmo pede_numero; Declare X, R : inteiro; Leia (X); R := X * 3; Escreva (R); Leia (X); R := X * 3; Escreva (R); Leia (X); R := X * 3; Escreva (R); Fim_Algoritmo. 4 Exemplo para descascar batatas ENQUANTO ( condição verdadeira ) Inicio comandos; comandos; comandos; Fim; 5 Exemplo para descascar batatas Estrutura de Repetição Algoritmo Pede_Numero; Declare Cont, X, R : inteiro; Cont := 0; enquanto ( cont < 3 ) inicio Leia (X); R := X * 3; Escreva (R); Cont := Cont + 1; fim; Fim_Algoritmo. 6 Fluxograma do enquanto ... faça Zera o contador F condição comando x; V comando1; comando 2; ... Comando n; ... 7 Fluxograma do Exemplo 1 Z:=0; F Z<3 V leia (X); R := X * 3; escreva (R); Z := Z + 1; Fim 8 Funcionamento do Enquanto ... Condição falsa enquanto ( condição ) Condição verdadeira início comando1; comando2; ... cont:= cont+1; fim; comando x; ... 9 Exemplo 1 – Algoritmo Estático Algoritmo pede_número; Declare X, R, cont: inteiro; Variável contador cont := 0; enquanto ( cont < 3 ) início leia (X); R := X * 3; escreva (R); cont := cont + 1; fim; Fim_Algoritmo. estático 10 Exemplo 2 – Algoritmo Estático Algoritmo pede_número; Declare X, R, cont, termino : inteiro; Variável contador cont := 0; termino := 3; enquanto ( cont < termino ) início leia (X); R := X * 3; estático escreva (R); cont := cont + 1; fim; Fim_Algoritmo. 11 Exemplo 3 – Algoritmo Dinâmico Algoritmo pede_número; Declare X, R, cont, termino : inteiro; Variável contador cont := 0; Leia (termino); enquanto ( cont < termino ) início leia (X); Dinâmico R := X * 3; escreva (R); Dinâmico cont := cont + 1; fim; Fim_Algoritmo. 12 Exemplo 3.1 – Algoritmo Dinâmico Algoritmo pede_número; Declare X, R, cont : inteiro; Termino : char; Termino := ‘S’; enquanto ( Termino = ‘S’ ) início leia (X); R := X * 3; escreva (R); Escreva (‘Deseja nova execução: ’); Leia (Termino); fim; Fim_Algoritmo. 13 Exemplo 4: Somar os primeiros 5 números naturais Algoritmo somatório_de_5; Declare soma, cont : inteiro; soma := 0; cont := 1; enquanto ( cont <= 5 ) início soma := soma + cont; cont := cont + 1; fim; escreva (soma); Fim_Algorimo. 14 Exemplo 5: Somar os primeiros n números naturais Algoritmo somatorio; Declare soma, cont : inteiro; soma := 0; cont := 0; Leia (n); enquanto ( cont < n ) início soma := soma + cont; cont := cont + 1; fim; escreva (soma); Fim_Algoritmo. 15 Exemplo 6: Calcular o fatorial de 5. Algoritmo fatorial; Declare fat, cont : inteiro; fat := 1; cont := 2; enquanto ( cont < = 5 ) início fat := fat * cont; cont := cont + 1; fim; escreva (fat); Fim_Algoritmo. 16 Exemplo 7: Calcular o fatorial de n. Algoritmo fatorial_n; Declare fat, cont, n : inteiro; fat := 1; cont := 2; leia (n); enquanto ( cont < = n ) início fat := fat * cont; cont := cont + 1; fim; escreva (fat); Fim_Algoritmo. 17 EXERCICIO (em sala) Faça um algoritmo para ler e escrever o Nome, idade e sexo de um número de alunos determinado pelo usuário. Ao final escreva o total de alunos lidos pelo contador. 18 Faça um algoritmo para ler e escrever o Nome, idade e sexo de um número de alunos, determinado pelo usuário. Ao final escreva o total de alunos lidos. Algoritmo alunos; Declare nome, sexo : caractere; num, idade, cont : inteiro; cont := 0; escreva(‘ Entre com o número de alunos ’); Leia(num); enquanto ( cont < num ) início Leia(nome, idade, sexo); Escreva(nome, idade, sexo); cont := cont +1; fim; escreva (‘O total de alunos lidos é: ‘, cont); Fim_Algoritmo. 19 EXERCICIO (em sala) Faça um algoritmo para ler e escrever o Nome de 20 pessoas. 20 Faça um algoritmo para ler e escrever o Nome de 20 pessoas. Algoritmo nomes; Declare i : inteiro; nome : caractere; i := 0; termino:=20 enquanto ( i < termino ) início leia (nome); escreva(nome); i := i +1; fim; FimAlgoritmo. 21