Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
Comando de Repetição "para" Comandos de Repetição Os comandos de repetição executam um mesmo bloco de comandos diversas vezes. Esses comandos são úteis em ocasiões nas quais é necessário realizar uma mesma tarefa repetidas vezes. São três os comandos de repetição: para, enquanto e faça-enquanto. Esses três comandos são apresentados em detalhes na aula de hoje e nas próximas duas aulas. O comando de repetição "para" Como já foi dito anteriormente, o comando de repetição para executa um bloco de comandos repetidamente. Sua estrutura é: para (<inicialização>; <expressão lógica>; <atualização>) { <comandos>; } O comando para possui a sintaxe mostrada acima. Na sua forma mais simples, em <inicialização> deve ser declarada uma inicialização de uma variável. Essa variável é chamada de variável de controle do laço. Dizemos laço, pois o comando de repetição executa o bloco de comandos repetidas vezes como se estivesse dentro de um laço. Outra expressão muito utilizada é loop. Ao iniciar a execução de um comando para, o algoritmo atribui o valor especificado em <inicialização> à variável de controle do laço. Após ser realizada essa atribuição, o comando para avalia a expressão lógica declarada em <expressão lógica>. Caso essa expressão for avaliada como verdadeiro, os comandos pertencentes ao bloco de comandos associado são executados pela primeira vez. Ao final da execução dos comandos do bloco de comandos, o algoritmo atualiza a variável de controle do laço conforme a declaração em <atualização>. Logo em seguida, a expressão declarada em <expressão lógica> é avaliada novamente e caso seu resultado for verdadeiro, os comandos do bloco de comandos são executados novamente. Esses passos são repetidos até que a <expressão lógica> é avalida como falso pela primeira vez. Quando isso ocorre o comando para termina, e o algoritmo prossegue. Cada execução do bloco de comandos de um comando de repetição é chamada de iteração (não confunda com interação). Vamos ver um exemplo de algoritmo com um comando para: 01 | Algoritmo exemplo_para; 02 | { 03 | i:inteiro; 04 | 05 | 06 | para (i 1; i <= 3; i i + 1) 07 | { 08 | escreva('O valor da variável de controle do laço é: ', i); 09 | } 10 | } A execução do algoritmo acima inicia na linha 05. Na linha 06, está a declaração de um comando para. Nesse comando, a variável de controle do laço é a variável i. A essa variável é atribuído o valor 1 (inicialização). Logo em seguida, a expressão lógica i <=3 é avaliada como verdadeiro e, então, o bloco de comandos associado ao para é executado pela primeira vez. O bloco de comandos está localizado nas linhas 07, 08 e 09, entretanto, o único comando a ser executado é um escreva. Portanto, a execução do bloco de comandos irá gerar a seguinte mensagem na tela do computador: O valor da variável de controle do laço é: 1 Como não existem mais comandos dentro do bloco de comandos associado ao para, a execução volta para a linha 06. O valor da variável de controle do laço é atualizado pela expressão i i + 1, portanto a variável i passa a ter o valor 2. A expressão lógica i <=3 é avaliada novamente, e como a variável i ainda possui um valor menor ou igual a 3, essa expressão lógica é avaliada como verdadeiro. Portanto, o bloco de comando é executado novamente, e a seguinte mensagem é escrita na tela do computador: O valor da variável de controle do laço é: 2 A execução volta para a linha 06, e o comando para é repetido mais uma vez. O valor da variável i é incrementado, e passa a ter o valor 3. Repare que 3 é o valor limite na expressão lógica do comando para, portanto, o laço será executado pela última vez. A execução do bloco de comandos irá gerar a seguinte mensagem: O valor da variável de controle do laço é: 3 A execução volta para a linha 06, a variável i é atualizada para 4, e a expressão lógica é avaliada novamente. Nesse caso, a expressão é avaliada como falso uma vez que i não é menor nem igual a 3. O laço é, portanto, encerrado, e a execução do algoritmo prossegue na linha 07. Como a linha 07 é a última linha do algoritmo, a execução do algoritmo é encerrada. É importante ressaltar que os valores especificados nos campos <inicialização>, <expressão lógica> e <atualização> podem ser quaisquer valores inteiros ou reais. Portanto é possível modificar o programa anterior para a seguinte forma: 01 | Algoritmo exemplo_para; 02 | { 03 | i:inteiro; 04 | 05 | 06 | para (i 5; i <= 12; i i + 1) 07 | { 08 | escreva('O valor da variável de controle do laço é: ', i); 09 | } 10 | } Esse algoritmo irá gerar as seguintes mensagens na tela: O valor da variável de controle do laço é: 5 O valor da variável de controle do laço é: 6 O valor da variável de controle do laço é: 7 O valor da variável de controle do laço é: 8 O valor da variável de controle do laço é: 9 O valor da variável de controle do laço é: 10 O valor da variável de controle do laço é: 11 O valor da variável de controle do laço é: 12 Apesar de que é possível modificar o valor da variável de controle do laço dentro do bloco de comandos de um comando para, isso é um péssimo hábito de programação. Quando utilizamos um comando para, nós estamos, indiretamente, dizendo que o bloco de comandos será executado um determinado número de vezes, e esse número de vezes está especificado nos valores utilizados na inicialização, na condição de parada e na atualiação da variável de controle do laço. Se o algoritmo modifica o valor da variável de controle do laço dentro do bloco de comandos, então essa regra é quebrada. A principal conseqüência disso é que o código se torna mais difícil de entender, portanto, mais difícil de ser feita manutenção do código. Variações do Comando "para" Vamos agora estudar algumas possíveis variações do comando para. para (i 10; i >= 1; i i - 1) { escreva('O valor da variável de controle do laço é: ', i); } Nesse primeiro caso, temos um laço decrescente. Repare que a variável i inicia com valor 10 e o laço prossegue enquanto essa variável tiver valor maior ou igual a 1. Repare também que a variável i é subtraída de 1 a cada iteração do laço. Dessa forma, esse laço irá produzir a seguinte saída: O valor da variável de controle do laço é: 10 O valor da variável de controle do laço é: 9 O valor da variável de controle do laço é: 8 O valor da variável de controle do laço é: 7 O valor da variável de controle do laço é: 6 O valor da variável de controle do laço é: 5 O valor da variável de controle do laço é: 4 O valor da variável de controle do laço é: 3 O valor da variável de controle do laço é: 2 O valor da variável de controle do laço é: 1 Vamos ver agora um outro caso. para (i 10; i <= 1; i i + 1) { escreva('O valor da variável de controle do laço é: ', i); } Nesse segundo caso, repare na inicialização da variável i e a condição da expressão lógica. Quantas vezes o bloco de comandos será executado, se alguma? Nesse caso, o bloco de comandos não será executado nenhuma vez, pois a expressão lógica é avaliada como falso logo de início. Vamos fazer agora um algoritmo que calcula e imprime na tela a tabuada de um número especificado pelo usuário. Ou seja, o algoritmo deve ler um número do teclado e calcular a sua tabuada de 1 a 10. 01 | Algoritmo tabuada; 02 | { 03 | número, resultado, i: integer; 04 | 05 | 06 | escreva('Entre com um número: '); 07 | leia(número); 08 | para (i 1; i <= 10; i i + 1) 09 | { 10 | resultado número * i; 11 | escreva(número, ' x ', i, ' = ', resultado); 12 | } 13 | } Resumo Algumas coisas que você deve lembrar da aula de hoje: • Os comandos de repetição executam um bloco de comandos diversas vezes; • O comando para utiliza uma variável de controle do laço e uma expressão lógica para controlar a execução do laço; • Nunca altere o valor da variável de controle de um laço para durante a execução do laço para; • A variável de controle de um laço só pode ser de um tipo ordinal, ou seja, tipos de dados em que dado um valor, sabemos quem é seu antecessor e seu sucessor. Os tipos inteiro (integer) e caracter (char) são ordinais, o tipo real não é ordinal. Exercícios 1. Faça um algoritmo e um programa que calcule n! (fatorial de n) sendo n um valor entrado pelo usuário. Lemre-se que: i. n! = 1 × 2 × 3 × � × (n-1) × n; ii. 0! = 1, por definição. 2. A conversão de graus Farenheit para centígrados é obtida por C = 5/9 × (F - 32). Faça um algoritmo e um programa que calcule e escreva uma tabela de conversão de graus Farenheit para centígrados. A tabela deve variar de 50°F até 150°F, de 1°F em 1°F. 3. Faça um algoritmo e um programa capaz de calcular o valor de S para a seguinte série: S = (1 / 1) + (3 / 2) + (5 / 3) + (7 / 4) + � + (99 / 50) 4. Séries são muito úteis para calcular, numericamente, valores aproximados para algumas funções matemáticas, como por exemplo, as funções trigonométricas sen e cos. A série: A - (A^3 / 6) + (A^5 / 120) - (A^7 / 5040), é capaz de aproximar a função trigonométrica sen A, sendo A um ângulo em radianos e A^X a representação do valor A elevado a X. Escreva um algoritmo e um programa para gerar e escrever uma tabela com os valores do seno de um ângulo A em radianos, utilizando a série apresentada acima. Os valores de A devem variar entre 0 e 6,3 (2×Pi), de 0.1 em 0.1