Lógica de Programação Estruturas de Repetição Repetição com teste no início Consiste em uma estrutura de controle de fluxo lógico que permite executar diversas vezes um mesmo trecho do algoritmo, porém, sempre verificando antes de cada execução se é permitido repetir o mesmo trecho. 1
Repetição com teste no início Para realizar a repetição com teste no início, utilizamos a estrutura FAÇA ENQUANTO FAÇA ENQUANTO <condição> c1; c2; c3;... cn; fimfaça Repetição com teste no início Exemplo: N1, N2, N3, N4, MA: real; CONT: inteiro; CONT <- 0; FAÇA ENQUANTO CONT < 50 LEIA (N1, N2, N3, N4); MA <- (N1+N2+N3+N4)/4; ESCREVA( Média anual =, MA); SE MA >= 7 ENTAO ESCREVA ( Aluno Aprovado ); SENÃO ESCREVA ( Aluno reprovado ); FIMSE CONT <- CONT +1; FIMFAÇA 2
Repetição com teste no início Exemplo de acumulador: ACM, MAT, MA: real; CONT: inteiro; CONT <- 0; ACM <- 0; FAÇA ENQUANTO CONT < 50 LEIA (MA); ACM <- ACM + MA; CONT <- CONT +1; FIMFAÇA MAT <- ACM/50; ESCREVA( Média anual da turma =, MAT); Repetição com teste no início Exemplo com finalizador: ACM, MAT, MA: real; CONT: inteiro; CONT <- 0; ACM <-0; LEIA (MA); FAÇA ENQUANTO MA <> -1 ACM <- ACM + MA; CONT <- CONT +1; LEIA (MA); FIMFAÇA MAT <- ACM/CONT; ESCREVA( Média anual da turma =, MAT); 3
Repetição com teste no início Exercício: construa um algoritmo que calcule a média aritmética de todos os números pares fornecidos pelo usuário. O valor de finalização será a entrada do número 0 (zero). Observe que nada impede que o usuário forneça quantos números ímpares quiser, com a ressalva de que eles não poderão ser acumulados. Resolução: N, CONT, ACM: inteiro; MNP: real; CONT <- 0; ACM <-0; LEIA (N); FAÇA ENQUANTO N <> 0 SE N MOD 2 = 0 ENTAO ACM <- ACM + N; CONT <- CONT +1; FIMSE LEIA (N); FIMFAÇA; SE CONT > 0 ENTAO MNP <- ACM/CONT; ESCREVA( Média =, MNP); SENÃO ESCREVA( Nenhum par foi fornecido! ); FIMSE Repetição com teste no final Para realizar a repetição com teste no final, utilizamos a estrutura que permite que um bloco ou ação primitiva seja repetido ATÉ que uma determinada condição seja verdadeira. c1; c2; c3;... cn; ATÉ <condição>; 4
Repetição com teste no final Exemplo: MA, ACM, MAT: real; CONT: inteiro; CONT <- 0; ACM <- 0; LEIA (MA); ACM <- ACM + MA; CONT <- CONT +1; ATÉ CONT >= 50; MAT <- ACM/50; ESCREVA( Média anual da turma =, MAT); Repetição com teste no final Exercício: Construa um algoritmo que permita fazer um levantamento do estoque de vinhos de uma adega, tendo como dados de entrada tipos de vinho (branco, tinto e rosé). Especifique a porcentagem de cada tipo sobre o total geral de vinhos; a quantidade de vinhos é desconhecida (usar como finalizador a constante fim ). 5
Repetição com teste no final Resolução: TV : caractere; CONT_V, CT, CB, CR: inteiro; PT, PB, PR: real; CONT_V <- 0; CT <- 0; CB <- 0; CR <- 0; LEIA (TV); ESCOLHA TV CASO TINTO : CT <- CT +1; CASO BRANCO : CB <- CB +1; CASO ROSE : CR <- CR +1; FIMESCOLHA; CONT_V <- CONT + 1; ATÉ TV = FIM ; CONT_V <- CONT_V - 1; SE CONT_V > 0 ENTÃO PT <- (CT*100)/CONT_V; PR <- (CB*100)/CONT_V; PR <- (CR*100)/CONT_V; ESCREVA( Porcentagem de Tintos =, PT); ESCREVA( Porcentagem de Brancos =, PB); ESCREVA( Porcentagem de Rosé =, PR); SENÃO ESCREVA ( Nenhum tipo foi fornecido! ); FIMSE; Repetição com variável de controle A estrutura PARA repete a execução do bloco um número definido de vezes, pois ela possui limites fixos. PARA V DE vi ATÉ vf PASSO p FAÇA c1; c2; c3;... cn; FIMPARA; Onde: V é a variável de controle; vi é o valor inicial da variável V; vf é o valor final da variável V; p é o valor de incremente dado à variável V. 6
Repetição com variável de controle Exemplo: MA, ACM, MAT, V: real; ACM <- 0; PARA V DE 1 ATÉ 50 PASSO 1 FAÇA LEIA (MA); ACM <- ACM /50; FIMPARA MAT <-ACM/50; ESCREVA ( Média anual da turma =, MAT); Repetição com variável de controle Exercício: Elabore um algoritmo que efetue a soma de todos os números ímpares que são múltiplos de três e que se encontram no conjunto dos números de 1 até 500. Resolução: SI, V: inteiro; SI <- 0; PARA V DE 1 ATÉ 500 PASSO 1 FAÇA SE (INT(V/2)<>V/2) ENTÃO SE (INT(V/3)= V/3) ENTÃO SI <- SI + 1; FIMSE; FIMSE; FIMPARA; ESCREVA( Soma =, SI); 7
Comparação entre estruturas ESTRUTURA CONDIÇÃO QUANT. DE EXEC. COND. DE EXIST. FAÇA ENQUANTO início? Cond. Verdadeira final mínimo 1 Cond. Falsa PARA não tem (vf - vi+p) DIV p v <vf Exemplo: Elabore um algoritmo, que utilizando as três estruturas de repetição, imprima a tabuada do número 5. Comparação entre estruturas Utilizando FAÇA ENQUANTO CONT, RESULT: INTEIRO; FAÇA ENQUANTO CONT <= 10 RESULT <- CONT * 5; ESCREVA (CONT, X 5 =, RESULT); CONT <- CONT + 1; FIMFAÇA FIM 8
Comparação entre estruturas Utilizando CONT, RESULT: INTEIRO; CONT <- 1; RESULT <- CONT * 5; ESCREVA (CONT, X 5 =, RESULT); CONT <- CONT+1; ATÉ CONT > 10; FIM Comparação entre estruturas Utilizando PARA CONT, RESULT: INTEIRO; PARA CONT DE 1 ATÉ 10 PASSO 1 FAÇA RESULT <- CONT * 5; ESCREVA (CONT, X 5 =, RESULT); FIMPARA; FIM 9
Comparação entre estruturas Modifique o algoritmo para que este imprima a tabuada de quaisquer números, sendo que estes números são fornecidos pelo usuário, até encontrar como finalizador -1. Sabendo que o primeiro número base fornecido não é o -1. Comparação entre estruturas Utilizando FAÇA ENQUANTO N, CONT, RESULT: INTEIRO; LEIA(N); FAÇA ENQUANTO N <> -1 CONT <- 1; FAÇA ENQUANTO CONT <= 10 RESULT <- CONT * N; ESCREVA (CONT, X, N, RESULT); CONT <- CONT + 1; FIMFAÇA LEIA(N); FIMFAÇA; 10
Comparação entre estruturas Utilizando N, CONT, RESULT: INTEIRO; LEIA(N); CONT <- 1; RESULT <- CONT * N; ESCREVA (CONT, X, N, =, RESULT); CONT <- CONT+1; ATÉ CONT > 10 ATÉ N = -1; FIM 11