Baixe o app para aproveitar ainda mais
Prévia do material em texto
Estruturas de repetição Introdução à programação de computadores – EMB 5013 Fluxo de execução • Para que um conjunto de ações se torne viável é preciso definir como elas se relacionam, ou seja, é preciso definir o fluxo de execução do algoritmo; • Estruturas básicas de controle de fluxo de execução (e a combinação delas) permitem que criemos algoritmos; • Estruturas de controle de fluxo: – Sequencial; – Seleção; – Repetição. 2 Estruturas de repetição • As estruturas sequencial e de seleção resolvem os problemas individualmente, ou seja, processam apenas uma vez cada comando (ou teste); • Para utilizar a mesma sequência de comandos várias vezes precisamos desviar o fluxo de execução do algoritmo para um ponto anterior; • Trechos repetidos são chamados de laços de repetição; • O número de repetições pode ser indeterminado, porém necessariamente finito; 3 Estruturas de repetição • Repetição com teste no início: – Estrutura de controle do fluxo de execução que permite repetir diversas vezes um mesmo trecho do algoritmo, porém, sempre verifica uma condição antes de cada execução; – Para realizar repetição com teste no início utilizamos a estrutura enquanto faça, que permite que um bloco seja repetido enquanto uma determinada condição for verdadeira; 4 Estruturas de repetição • Repetição com teste no início (cont.): – Quando o resultado de <condição> for falso, o comando de repetição é abandonado; – Resultado falso no primeiro teste faz com que os comandos não sejam executados nenhuma vez; 5 enquanto <condição> faça ação1; ação2; ação3; ⁞ açãon; fimenquanto; Estruturas de repetição • Repetição com teste no início (cont.): – A estrutura enquanto faça não conta o número de vezes que um bloco é executado; – Para estabelecer uma contagem é preciso contar com a ajuda de um contador: 6 inteiro: Contador; // declaração do contador Contador ← 0; // inicialização do contador Contador ← Contador + 1; // incrementa o contador de 1 Estruturas de repetição • Repetição com teste no início (cont.): – Exemplo 1: • Escreva um algoritmo que calcule e imprima a média individual de 50 alunos. 7 Início real: N1, N2, N3, N4, MA; inteiro: Contador; // contador Contador ← 0; enquanto (Contador < 50) faça leia (N1, N2, N3, N4); MA ← (N1 + N2 + N3 + N4)/4; escreva (“Média = ”, MA); Contador ← Contador + 1; fimenquanto; Fim. Estruturas de repetição • Repetição com teste no início (cont.): – E se desejarmos calcular a média da turma? • É preciso somar a média de todos os alunos e dividir pelo número de alunos; – Nesta situação utilizamos uma variável denominada de acumulador: 8 inteiro: Acumulador, X; // declaração do acumulador e da // variável que será acumulada Acumulador ← 0; // inicialização do acumulador Acumulador ← Acumulador + X; // acumula o valor da variável X Estruturas de repetição • Repetição com teste no início (cont.): – Exemplo 2: • Escreva um algoritmo que calcule a média das médias de uma turma de 50 alunos e imprima o resultado. 9 Início real: MA, MT, Acumulador; // variáveis e acumulador inteiro: Contador; // contador Contador ← 0; Acumulador ← 0; enquanto (Contador < 50) faça leia (MA); // lê a média de um aluno Acumulador ← Acumulador + MA; // acumula as médias Contador ← Contador + 1; fimenquanto; MT ← Acumulador/50; escreva (“Média da turma = ”, MT); Fim. Estruturas de repetição • Repetição com teste no início (cont.): – O conhecimento do número de alunos da turma permitiu escrever um algoritmo com um laço de repetição com quantidade predeterminada de execuções; – Quando a quantidade de vezes que a repetição será executada é indeterminada define-se um critério de parada que encerra a execução do laço; – Finalizador é um valor predefinido que quando atribuído à uma variável indica que o laço de repetição deve ser encerrado; • Para o exemplo de cálculo da média da turma podemos utilizar como finalizador MA = -1; 10 Estruturas de repetição • Repetição com teste no início (cont.): – Exemplo 3: • Escreva um algoritmo que calcule a média das médias de uma turma em que o usuário indica quando já forneceu as médias de todos os alunos. Imprima o resultado. 11 Estruturas de repetição • Repetição com teste no início (cont.): – Exemplo 3 (cont.): 12 Início real: MA, MT, Acumulador; // variáveis e acumulador inteiro: Contador; // contador Contador ← 0; Acumulador ← 0; leia (MA); // lê a média do primeiro aluno enquanto (MA <> -1) faça Acumulador ← Acumulador + MA; // acumula as médias Contador ← Contador + 1; leia (MA); fimenquanto; se (Contador > 0) então MT ← Acumulador/Contador; escreva (“Média da turma = ”, MT); senão; escreva (“Nenhuma média válida fornecida!”); fimse; Fim. Estruturas de repetição • Repetição com teste no final: – A estrutura repita permite que um bloco (ou ação primitiva) seja repetido até que uma determinada condição seja verdadeira; – O bloco é executado pelo menos uma vez, independente da validade da condição; • A inspeção da condição é feita após a execução do bloco, o que representa a característica principal desta estrutura de repetição; 13 repita ação1; ação2; ação3; ⁞ açãon; até <condição>; Estruturas de repetição • Repetição com teste no final (cont.): – Exemplo 4: • Escreva um algoritmo que calcule a média das médias de uma turma de 50 alunos. Utilize a estrutura repita. 14 Início real: MA, MT, Acumulador; // variáveis e acumulador inteiro: Contador; // contador Contador ← 0; Acumulador ← 0; repita leia (MA); // lê a média de um aluno Acumulador ← Acumulador + MA; // acumula as médias Contador ← Contador + 1; até (Contador >= 50); MT ← Acumulador/50; escreva (“Média da turma = ”, MT); Fim. Estruturas de repetição • Repetição com variável de controle: – Nas estruturas anteriores um bloco era executado: • enquanto uma condição era satisfeita (enquanto); ou • até que uma condição fosse satisfeita (repita); – A estrutura para repete a execução de um bloco um número predeterminado de vezes, não prevê condição, e possui limites fixos; 15 Estruturas de repetição • Repetição com variável de controle (cont.): – v é a variável de controle; – vi é o valor inicial que será atribuído à variável v; – vf é o valor final que será atribuído à variável v, ou seja, o valor até o qual ela vai chegar; – p é o valor do incremento dado à variável v; 16 para v de vi até vf passo p faça ação1; ação2; ação3; ⁞ açãon; fimpara; • Repetição com variável de controle (cont.): – Exemplo 5: • Escreva um algoritmo que calcule a média das médias de uma turma de 50 alunos. Utilize a estrutura para. Início real: MA, MT, Acumulador; // variáveis e acumulador inteiro: V; // variável de controle Acumulador ← 0; para V de 1 até 50 passo 1 faça leia (MA); // lê a média de um aluno Acumulador ← Acumulador + MA; // acumula as médias fimpara; MT ← Acumulador/50; escreva (“Média da turma = ”, MT); Fim. Estruturas de repetição 17 Estruturas de repetição • Observações: – Nem sempre a variável de controle atinge o valor final estabelecido. Isso pode ocorrer quando é utilizado um passo maior que 1; • Exemplo: para I de 1 até 10 passo 2 faça // a variável vai chegar até 9 – O laço de repetição sempre será executado pelo menos 1 vez; • Exemplo: para I de 1 até 10 passo 10 faça // a variável vai chegar até 1 18 Estruturas de repetição • Observações: – É possível utilizar um passo negativo, onde a variável de controle é decrementada a cada repetição • Exemplo: para I de 10 até 1 passo -1 faça// a variável vai chegar até 1 – É possível encadear (aninhar) laços de repetição: 19 para i de 1 até 10 passo 1 faça ação; para j de 1 até 100 passo 1 faça ação1; ⁞ açãon; fimpara; fimpara; Estruturas de repetição • Comparação entre as estruturas de repetição: – Todas permitem escrever algoritmos com laços de repetição; – Características: 20 Estrutura Condição Quantidade de execuções Condição de existência enquanto No início 0 ou muitas Condição verdadeira repita No final Mínimo 1 Condição falsa para Não tem ((vf - vi) div p)+ 1 v <= vf Para passo p positivo Estruturas de repetição • Exercício: – Escrever três algoritmos, cada um usando uma estrutura de repetição diferente que calcule a tabuada de um número informado. 21 Estruturas de repetição • Exercício (cont.): – Tabuada usando enquanto: 22 Início inteiro: Contador, Número; // contador Contador ← 1; leia (Número); // lê o número para o qual calcularemos // a tabuada enquanto (Contador <= 10) faça escreva (Contador, “ * ”, Número, “ = ”, Contador * Número); Contador ← Contador + 1; fimenquanto; Fim. Estruturas de repetição • Exercício (cont.): – Tabuada usando repita: 23 Início inteiro: Contador, Número; // contador Contador ← 1; leia (Número); // lê o número para o qual calcularemos // a tabuada repita escreva (Contador, “ * ”, Número, “ = ”, Contador * Número); Contador ← Contador + 1; até (Contador > 10); Fim. Estruturas de repetição • Exercício (cont.): – Tabuada usando para: 24 Início inteiro: Contador, Número; // contador leia (Número); // lê o número para o qual calcularemos // a tabuada para Contador de 1 até 10 passo 1 faça escreva (Contador, “ * ”, Número, “ = ”, Contador * Número); fimpara; Fim. Exercícios • 1 – Escreva um algoritmo (em pseudocódigo) que conte o total de números múltiplos de 3 entre dois números X e Y inteiros e positivos informados pelo usuário. Considere X > Y. • 2 - Escreva um algoritmo (em pseudocódigo) que leia 10 números inteiros fornecidos pelo usuário e informe ao final do processamento qual foi o maior número fornecido e qual foi o menor número fornecido. • 3 - Escreva um algoritmo em pseudocódigo que calcule o valor de a na série abaixo. O algoritmo deve solicitar para o usuário o número n e escrever na tela o resultado do cálculo da série matemática (valor de a). 25 Avisos • Conteúdo desta aula: – Capítulo 3 do livro do Forbellone e Eberspacher após “Exercícios de fixação 2”. • Lista de exercícios: – Disponível no moodle. 26
Compartilhar