Baixe o app para aproveitar ainda mais
Prévia do material em texto
ALGORITMOS E PROGRAMAÇÃO I AULA 05 – Introdução Portugol Laços de Repetição Prof. Salatiel Dantas PORTUGOL • Vamos supor que você foi contratado para criar um algoritmo para gerenciar as notas de alunos de uma escola; • Qualquer nota digitada é válida? Seria ideal ficar solicitando a nota enquanto ela não for válida; • Quantas vezes você deve ler a nota? 2 PORTUGOL Leia(nota1) Leia(nota2) Leia(nota3) ... Leia(notaN) 3 PORTUGOL • Se uma turma possuir 100 alunos, poderíamos escrever 100 instruções de leitura de notas: Leia(nota1) Leia(nota2) Leia(nota3) ... Leia(notaN) • Inviável em situações reais! 4 PORTUGOL • Será que poderíamos ter alguma instruções que repetisse o comando de leitura um número N de vezes? 5 PORTUGOL • Para esse tipo de situação o portugol dispõe dos comandos: • Enquanto; • Repita ... Ate • Para ... faca 6 ENQUANTO • O comando enquanto caracteriza-se por apresentar um teste lógico no início da instrução; • O teste lógico sempre retorna um valor booleano. Ou seja, Verdadeiro ou Falso; • Esse comando continua a executar um conjunto de instruções enquanto o teste lógico apresentar valor verdadeiro; 7 ENQUANTO • Quantas vezes a tomada de decisão e a entrada de dados executarão? 8 INÍCIO FIM N1 N1 < 0? N1 sim não ENQUANTO • Primeiro um valor N1 é lido; • Em seguida, o valor de N1 é verificado em um teste lógico; • Enquanto o valor de N1 for menor que zero. Ocorrerá a entrada de Dados; 9 INÍCIO FIM N1 N1 < 0? N1 sim não ENQUANTO • Sintaxe: 10 enquanto (condição de entrada) faca comando 1; comando 2; ... comando n; fimenquanto ENQUANTO • Sintaxe: • As instruções comando 1, comando 2, ... , comando n executarão enquanto a condição de entrada for verdadeira 11 enquanto (condição de entrada) faca comando 1; comando 2; ... comando n; fimenquanto ENQUANTO • A instrução ENQUANTO é conhecida também como repetição com teste no início; • O teste é realizado logo no início da instrução, e todas as instruções subordinadas só executarão se esse teste apresentar, no início, o valor verdadeiro. • Caso valor do teste seja falso, nenhuma das instruções subordinadas serão executadas e o programa continuará sua execução na próxima linha após o bloco enquanto – fimenquanto. 12 ENQUANTO - EXEMPLO 13 Algoritmo "Contador" Var // Seção de Declarações das variáveis contador: inteiro Inicio contador := 1 enquanto (contador <= 10) faca escreval("Contador -> ", contador) contador := contador + 1; fimenquanto Fimalgoritmo ENQUANTO 14 Algoritmo "Contador" Var // Seção de Declarações das variáveis contador: inteiro Inicio contador := 1 enquanto (contador <= 10) faca escreval("Contador -> ", contador) contador := contador + 1; fimenquanto Fimalgoritmo A variável contador, irá contar alguns valores de 1 à 10. ENQUANTO 15 Algoritmo "Contador" Var // Seção de Declarações das variáveis contador: inteiro Inicio contador := 1 enquanto (contador <= 10) faca escreval("Contador -> ", contador) contador := contador + 1; fimenquanto Fimalgoritmo A variável contador, irá contar alguns valores de 1 à 10. No início do algoritmo, definimos contador igual a 1 pois pretendemos contar a partir do valor 1. ENQUANTO 16 Algoritmo "Contador" Var // Seção de Declarações das variáveis contador: inteiro Inicio contador := 1 enquanto (contador <= 10) faca escreval("Contador -> ", contador) contador := contador + 1; fimenquanto Fimalgoritmo A variável contador, irá contar alguns valores de 1 à 10. No início do algoritmo, definimos contador igual a 1 pois pretendemos contar a partir do valor 1. O teste lógico verifica se o valor de contador é menor ou igual ao valor 10 ENQUANTO 17 Algoritmo "Contador" Var // Seção de Declarações das variáveis contador: inteiro Inicio contador := 1 enquanto (contador <= 10) faca escreval("Contador -> ", contador) contador := contador + 1; fimenquanto Fimalgoritmo A variável contador, irá contar alguns valores de 1 à 10. No início do algoritmo, definimos contador igual a 1 pois pretendemos contar a partir do valor 1. O teste lógico verifica se o valor de contador é menor ou igual ao valor 10 Estas instruções mostram o valor atual de contador e em seguida, soma uma unidade ao valor de contador. ENQUANTO 18 Algoritmo "Contador" Var // Seção de Declarações das variáveis contador: inteiro Inicio contador := 1 enquanto (contador <= 10) faca escreval("Contador -> ", contador) contador := contador + 1; fimenquanto Fimalgoritmo Chamamos de contador porque essa variável irá controlar quantas vezes as instruções dentro do enquanto irão executar Sempre que o valor do teste lógico do enquanto for verdadeiro, as instruções subordinadas executarão e a execução do programa retornará mais uma vez ao teste lógico. ENQUANTO - EXEMPLO Esse algoritmo é finito? 19 Algoritmo "Contador" Var // Seção de Declarações das variáveis contador: inteiro Inicio contador := 1 enquanto (contador <= 10) faca escreval("Contador -> ", contador) fimenquanto Fimalgoritmo ENQUANTO - EXEMPLO Esse algoritmo é finito? Esse algoritmo nunca teria fim, pois o valor de contador sempre é 1. Então o teste lógico sempre dá verdadeiro 20 Início contador := 1 enquanto (contador <= 10) faca escreval("Contador -> ", contador) fimenquanto Fimalgoritmo LOOP INFINITO • Esse tipo de situação é chamado de LOOP INFINITO; • O algoritmo executa infinitamente sem terminar; • Deve-se evitar esse tipo de situação. Sempre é necessário que o contador chegue a algum valor em que o teste lógico seja falso. 21 ENQUANTO - EXEMPLO Esse algoritmo é finito? Esse algoritmo teria fim, pois o valor de contador chegará a 11. Então o teste lógico será dá falso 22 Início contador := 1 enquanto (contador <= 10) faca escreval("Contador -> ", contador) contador := contador + 1; fimenquanto Fimalgoritmo REPITA ... ATE • A instrução REPITA também faz parte dos recursos do PORTUGOL utilizados para executar um conjunto de instruções uma quantidade N de vezes; • Diferente do ENQUANTO, o teste lógico aqui ocorre ao final da instrução; • Esse comando continua a executar um conjunto de instruções enquanto o teste lógico apresentar valor FALSO; 23 REPITA ... ATE • Quantas vezes a tomada de decisão e a entrada de dados executarão? 24 INÍCIO FIM N1 N1 > 0? sim não REPITA ... ATE • Primeiro um valor N1 é lido; • Em seguida, o valor de N1 é verificado em um teste lógico; • Se o valor de N1 for menor que zero. A execução do programa retornará a entrada de dados e solicitar um novo valor para N1; 25 INÍCIO FIM N1 N1 > 0? sim não REPITA ... ATE • Sintaxe: 26 repita comando 1; comando 2; ... comando n; ate (condição de saída) REPITA ... ATE • Sintaxe: • As instruções comando 1, comando 2, ... , comando n executarão uma vez e se a condição de saída for FALSA, executarão mais uma vez. 27 repita comando 1; comando 2; ... comando n; ate (condição de saída) REPITA ... ATE • A instrução REPITA é conhecida também como repetição com teste no final; • O teste é realizado ao final de um conjunto de instruções, e todas as instruções subordinadas só executarão se esse teste apresentar, no final, o valor FALSO. • Caso valor do teste seja verdadeiro, nenhuma das instruções subordinadas serão novamente executadas e o programa continuará sua execução na próxima linha após o bloco REPITA – ATE. 28 REPITA ... ATE • Exemplo 29 REPITA ... ATE • Exemplo 30 A variável contador, irá contar alguns valores de 1 à 10. REPITA ... ATE • Exemplo 31 A variável contador, irá contar alguns valores de 1 à 10. Iniciando a variável contador em 1 REPITA ... ATE • Exemplo 32 A variável contador, irá contar alguns valores de 1 à 10. Iniciando a variável contador em 1 Conjunto de instruções subordinadas ao repita. Mostram o resultado de contador, e adicionam o valor 1 ao valor atual de contador REPITA ... ATE • Exemplo33 A variável contador, irá contar alguns valores de 1 à 10. Iniciando a variável contador em 1 Conjunto de instruções subordinadas ao repita. Mostram o resultado de contador, e adicionam o valor 1 ao valor atual de contador Teste Lógico verifica se valor da variável contador é maior que 10. Caso o teste resulte em falso, a execução do programa retornará ao início do repita. PARA • O comando PARA caracteriza-se por executar uma sequência de instruções um número finito de vezes; • Incorpora internamente o funcionamento de um contador de repetições; • As instruções internas serão executadas enquanto o contador não atingir o limite definido. 34 PARA • Sintaxe: • Repete todas as instruções comando1, comando2, ..., comando n, um número previsto de vezes. 35 para variavel de valor_inicial ate valor_final passo p faca comando 1; comando 2; ... comando n; fimpara PARA 36 algoritmo “Repetição com o PARA” var cont: inteiro inicio para cont de 1 ate 5 passo 1 faca /*instrucões do para*/ escreval(cont) fimpara /*instruções após o para*/ Fimalgoritmo PARA 37 algoritmo “Repetição com o PARA” var cont: inteiro inicio para cont de 1 ate 5 passo 1 faca /*instrucões do para*/ escreval(cont) fimpara /*instruções após o para*/ Fimalgoritmo A variável cont será utilizada como contador da instrução para. PARA 38 algoritmo “Repetição com o PARA” var cont: inteiro inicio para cont de 1 ate 5 passo 1 faca /*instrucões do para*/ escreval(cont) fimpara /*instruções após o para*/ Fimalgoritmo A variável cont será utilizada como contador da instrução para. Nessa instrução a variável cont recebe o valor 1 e até que ele contenha o valor 5 as instruções subordinadas abaixo serão executadas. PARA 39 algoritmo “Repetição com o PARA” var cont: inteiro inicio para cont de 1 ate 5 passo 1 faca /*instrucões do para*/ escreval(cont) fimpara /*instruções após o para*/ Fimalgoritmo A variável cont será utilizada como contador da instrução para. Nessa instrução a variável cont recebe o valor 1 e até que ele contenha o valor 5 as instruções subordinadas abaixo serão executadas. Ao final da execução das instruções subordinadas, a instrução passo 1 adiciona uma unidade ao valor de cont. PARA • O passo da instrução para pode ser valores diferentes de um: • Nesse caso, cont vai ser adicionado de duas unidades a cada rodada do para. 40 para cont de 0 ate 10 passo 2 faca escreval(cont) fimpara PARA 41 algoritmo “Repetição com o PARA” var cont: inteiro inicio para cont de 0 ate 10 passo 2 faca /*instrucões do para*/ escreval(cont) fimpara /*instruções após o para*/ Fimalgoritmo PARA 42 algoritmo “Repetição com o PARA” var cont: inteiro inicio para cont de 0 ate 10 passo 2 faca /*instrucões do para*/ escreval(cont) fimpara /*instruções após o para*/ Fimalgoritmo A variável cont será utilizada como contador da instrução para. Nessa instrução a variável cont recebe o valor 0 e até que ele contenha o valor 10 as instruções subordinadas abaixo serão executadas. Ao final da execução das instruções subordinadas, a instrução passo 2 adiciona duas unidade ao valor de cont. PARA • A instrução para pode também executar uma contagem decrescente de passos: • Nesse caso, cont vai ser subtraído de uma unidades a cada rodada do para. 43 para cont de 10 ate 1 passo -1 faca escreval(cont) fimpara PARA 44 algoritmo “Repetição com o PARA” var cont: inteiro inicio para cont de 10 ate 1 passo -1 faca /*instrucões do para*/ escreval(cont) fimpara /*instruções após o para*/ Fimalgoritmo PARA 45 algoritmo “Repetição com o PARA” var cont: inteiro inicio para cont de 10 ate 1 passo -1 faca /*instrucões do para*/ escreval(cont) fimpara /*instruções após o para*/ Fimalgoritmo A variável cont será utilizada como contador da instrução para. Nessa instrução a variável cont recebe o valor 10 e até que ele contenha o valor 1 as instruções subordinadas abaixo serão executadas. Ao final da execução das instruções subordinadas, a instrução passo -1 subtrai uma unidade ao valor de cont. INSTRUÇÕES DE REPETIÇÃO • Conhecemos três maneiras de construir laços de repetição: • Enquanto; • Repita ... Ate; • Para. • É importante perceber que existem laços mais adequados ou convenientes para cada situação. 46 INSTRUÇÕES DE REPETIÇÃO Resumo das Estruturas de Repetição 47 Estrutura Condição Quantidade de Execuções Condição de Existência Enquanto Testada no Início Zero ou Muitas Condição Verdadeira Repita Testada no Final Uma ou Muitas Condição Falsa Para Não tem (Valor final – Valor Incial) + 1 Contador <= Valor Final ENQUANTO - EXERCÍCIO Construa um algoritmo para somar valores até o usuário digitar o valor 0. Ou seja, vamos somar todos os valores que o usuário digitar, porém quando ele digitar 0 o algoritmo acaba, a cada iteração do loop vamos apresentar o resultado atual da soma. 48 ENQUANTO - EXERCÍCIO 49 ENQUANTO - EXERCÍCIO 50 O teste lógico, verifica se valor da variável valorEntrada é diferente de zero. Caso verdadeiro todas as instruções abaixo serão executadas e ao final, o valor de valorEntrada será testado novamente. Conjunto de instruções subordinadas ao Enquanto. Só executarão caso o teste lógico apresente valor verdadeiro. REPITA ... ATE - EXERCÍCIO Construa um algoritmo para solicitar uma entrada do usuário e continuar solicitando até que valor seja menor que zero. 51 REPITA ... ATE - EXERCÍCIO Construa um algoritmo para solicitar uma entrada do usuário e continuar solicitando até que valor seja menor que zero. 52 REPITA ... ATE - EXERCÍCIO Construa um algoritmo para solicitar uma entrada do usuário e continuar solicitando até que valor seja menor que zero. 53 Conjunto de instruções subordinadas ao repita. Executarão pelo menos uma vez. caso o teste lógico apresente valor FALSO, executarão novamente Teste lógico retornará valor falso se valor de entrada for maior o igual a zero. Quando valor de entrada for menor que zero, o teste lógico resulta em verdadeiro e encerra o repita. PARA - EXERCÍCIO Construa um algoritmo que receba dez valores digitados pelo usuário e mostre o resultado do somatório. 54 PARA - EXERCÍCIO 55 PARA - EXERCÍCIO Construa um algoritmo para calcular o fatorial de um numero. OBS: Fatorial e a multiplicação de todos os números de 1 ate ao numero que se esta calculando. Por exemplo: Fatorial de 5 (5!) = 1 * 2 * 3 * 4 * 5 = 120 56 PARA - EXERCÍCIO 57 DÚVIDAS? Contanto: salatiel.dantas@ufersa.edu.br
Compartilhar