Baixe o app para aproveitar ainda mais
Prévia do material em texto
Click to edit Master title style Click to edit Master subtitle style * * * Algoritmos com laços (ou seja, com conjuntos de instruções que devem ser executados repetidas vezes) * * * Problema do Aluno Conversador: Aluno deve escrever 100 vezes: Não devo conversar em aula! (ou seja, uma ação deve ser realizada um número preciso e conhecido de vezes) * * * Primeira solução: Fazer um programa em Pascal com 100 writeln´s, ou seja, fazendo 100 vezes a ação : Writeln (´Não devo conversar em aula!); Writeln (´Não devo conversar em aula!); Writeln (´Não devo conversar em aula!); (…) Writeln (´Não devo conversar em aula!); * * * Segunda solução: fazer com que a instrução de escrita seja repetida o número necessário de vezes (100) Elementos para implementar este tipo de solução: a ação a ser realizada; uma forma de indicar a repetição da ação; um contador que registre o número de vezes que a ação foi realizada; um teste para verificar, com base no contador, quando a ação deve parar de ser repetida (executada). * * * Semântica do FOR: Permite a execução de um ou mais comandos um número determinado de vezes. O controle das execuções é por contagem , utilizando uma variável contador. Execuções acontecem até que um valor limite para a variável contador seja ultrapassado. Implementação da segunda solução uso do comando FOR * * * Comando FOR permite a criação de LAÇOS CONTADOS * * * for I := 1 to 100 do Writeln (´Não devo conversar em aula!´); Resultado: ´Não devo conversar em aula!´ será escrito 100 vezes. * * * Diagrama de funcionamento do FOR: Início I := 1 I > 100 I := I + 1 Fim Não Sim Inicialização da variável de controle, com valor inicial indicado no comando Incremento da variável de controle a cada nova iteração Avaliação da condição de término, com o valor final indicado no comando Não devo conversar em aula * * * Início Fim I <-- 1 I <-- I + 1 Representação do FOR em um fluxograma: Sim Não Inicialização do I (só ocorre 1 vez) Incremento do I ( da 2a iteração em diante) Teste do I quanto a seu valor final, a cada iteração I > 100 Escrever (´Não devo conversar em aula´) * * * Diagrama de Chapin: Operação Repetitiva <condição> <comando> Semântica: enquanto condição for verdadeira, comando será executado. * * * Para I de 1 até 100 Escrever “Não devo conversar em aula” FOR usando diagrama de CHAPIN: Obs.: neste caso, condição é I <= 100. * * * Duas modalidades do FOR em TURBO PASCAL: FOR …TO: incremento da variável do FOR é de +1, a cada iteração FOR…DOWNTO: decremento da variável do FOR é de -1, a cada iteração * * * Impressão de inteiros entre 1 e 50: For J := 1 to 50 do write (J:4); Resultado: 1 2 3 4 5 6 … 20 21 22 23 24 … 40 etc... * * * Impressão da tabuada de multiplicação de um número informado: Readln(Valor); for K := 1 to 10 do writeln(K:4 ,´ X ´, Valor:4 , ´ = ´ , K * Valor:5); * * * Duas formas de imprimir o alfabeto em ordem inversa: for I := 122 downto 97 do write(chr(I):4); (função CHR fornece o caracter ASCII correspondente a um determinado valor) for carac := ´z´ downto ´a´ do write (carac:4); * * * FOR identificador expressão1 expressão2 Comando* := do to downto Sintaxe * Simples ou composto (dois ou mais comandos delimitados por begin…end) * * * Identificador (ou variável de controle): tipo ordinal simples (integer, char, etc.). Expressões 1 e 2: Seu tipo deve coincidir com aquele do identificador. * * * Cuidados: Valores Inicial e Final (expressões 1 e 2) devem ser molde a permitir pelo menos uma execução do FOR. Ex.: for K := 7 to 7 do writeln(´Só executa uma vez´); for Y := 12 to 10 do writeln(´Nunca vai executar este write´); * * * Cuidados: Variável de controle não deve ser modificada durante a execução do FOR (mas seu conteúdo pode ser utilizado em testes, expressões ou ser escrito). Ex.: for J := 5 to 35 do {J é a variável de controle} begin if J mod 5 = 0 then writeln else write(J:5) end; * * * Levantamento de uso da Internet, por número de horas, realizado em um universo de 200 usuários: For I := 1 to 200 do begin readln(Horas); case Horas of 1..10: Cont1 := Cont1 + 1; 11..40: Cont2 := Cont2 + 1; 41..744: Cont3 := Cont3 + 1 end; {do Case} end; {do begin do For} * * * Funcionamento: Para cada variação de valor da variável de controle do FOR externo, todo o FOR interno será executado integralmente. FORs aninhados * * * Início Fim I <-- 1 I <-- I + 1 Sim Não I > 10 J <-- 1 J <-- J + 1 Não J > 10 J , ´ x ´ , I , ´ = ´, J * I Sim FORs Aninhados Impressão das tabuadas de multiplicação do 1 ao 10 Em Fluxograma * * * Para I de 1 até 10 Para J de 1 até 10 Escrever J , ´ x ´ , I , ´ = ´, J * I FORs Aninhados Em diagrama de Chapin Impressão das tabuadas de multiplicação do 1 ao 10 * * * for I := 1 to 10 do for J := 1 to 10 do writeln(J , ´ X´, I , ´ = ´, J * I); { mesmo writeln acima, apenas agora editado: writeln(J:5 , ´X´ , I:5 , ´=´ , J * I: 5) } Trecho em PASCAL que imprime as tabuadas de multiplicação de 1 a 10: * * * USO DO COMANDO FOR Em Algoritmos com LAÇOS CONTADOS!!!! O Comando FOR deve ser utilizado tão somente nos casos de laços contados, em que a repetição de ações deve acontecer um número determinado e conhecido de vezes.
Compartilhar