Estruturas de repetio em Pascal Prof Luis Otavio
- Slides: 38
Estruturas de repetição em Pascal Prof. Luis Otavio Alvares INE/UFSC 1
Lógica de programação • ESTRUTURAS DE REPETIÇÃO • para. . . até. . . faça. . • enquanto. . . faça. . • repita. . . até. . . 2
Exemplo Para • Ler 50 números fornecidos pelo usuário e calcular e exibir a média. Pseudocódigo: 1. Início 2. Soma = 0 <<< o acumulador precisa ter um valor inicial 3. Para cont =1 até 50 faça 3. 1 ler num 3. 2 soma = soma + num 4. Media = soma / cont 5. Mostrar media 6. Fim 3
E se eu quisesse calcular a média de N números? Lógica de programação – Para esse problema construímos um algoritmo que será genérico, ou seja, que poderá ser usado para calcular a média de quantos números se quiser! – Pseudocódigo: 1 - Início 2 - Mostrar “De quantos valores você quer calcular a média? ” 3 - Ler QUANT (aqui se descobre quantas repetições) 4 - SOMA = 0 5 - Para CONT = 1 até QUANT faça 5. 1 Ler N (aqui é lido cada número, um em cada ciclo) 5. 2 SOMA = SOMA + N (aqui os valores lidos são acumulados) 6 - MEDIA = SOMA / QUANT (isto está fora do loop) 7 - Mostrar MEDIA 8 - Fim 4
Estruturas de repetição em Pascal 5
Estrutura de repetição: comando for • Comando for <variável de controle> : = <valor inicial> to do <comando>; <valor limite> for <variável de controle> : = <valor inicial> downto <valor limite> do <comando>; Um só comando to downto incrementa decrementa +1 -1 6
7
Comando for <variável de controle> : = <valor inicial> to/downto <valor limite> do <comando>; for <variável de controle> : = <valor inicial> to/downto <valor limite> do begin <comando 1>; . . . . <comando n>; end; O(s) comando(s) será(o) executado(s) até o valor limite (inclusive) O incremento ou decremento é executado automaticamente após a execução do(s) comando(s) 8
Exemplo Program teste. For; var I, K: integer; begin K: = 5; for I : = K+1 to K+3 do writeln ('I= ', I); readln; end. Saída I= 6 I= 7 I= 8 9
for <variável de controle> : = <valor inicial> to <valor limite> do <comando> valor inicial valor limite expressões • avaliadas somente uma vez, na entrada do comando • resultado deve ser do mesmo tipo da variável de controle • integer ou char • pode ser utilizada no comando • pode ser alterada no comando (mas não é recomendável) 10
Exemplo Program teste. For; var I, K: integer; begin k: =8; for I : = 5 to K do begin k: =7; writeln('I= ', I , ' end; readln; end. Saída: K= ', k ); I= 5 I= 6 I= 7 I= 8 K= 7 11
Exemplo Program Letras; var Letra: char; begin for Letra : = 'a' to 'z' do write (Letra, ' '); writeln ('Fim'); readln; end. Saída: a b c d e f g h i j k l m n o p q r s t u v w x y z Fim 12
Exercício Escrever um programa que lê 5 valores, e conta quantos destes valores são negativos, escrevendo esta informação. program conta_negativos; var numero, cont, neg: integer; Begin Neg: =0; for cont: =1 to 5 do begin write('Digite um numero inteiro: '); readln (numero); if numero<0 then neg: =neg+1; end; writeln ('O numero de valores negativos eh ', neg); readln; end. 13
Cuidado!!! • Se o valor da variável de controle do comando for alterado explicitamente dentro do bloco de repetição … • Exemplo: saída: program teste_for; var I: integer; begin for I: =1 to 10 do begin writeln('I= ', I); if I=5 then I: =8; end; readln; end. I= I= 1 2 3 4 5 9 10 14
Lembre-se!!! Qual o valor da variável de controle do for após a execução do comando for? Exemplo: saída: program teste 2_for; var I: integer; begin for I: =1 to 10 do writeln('I= ', I); writeln('Valor de I apos o for: ', I); readln; end. I= 1 I= 2 I= 3 I= 4 I= 5 I= 6 I= 7 I= 8 I= 9 I= 10 Valor de I apos o for: 10 15
Só use quando estritamente necessário: E para forçar o término da repetição? Use um break. Exemplo : program teste 3_for; var I: integer; begin for I: =1 to 10 do begin writeln('I= ', I); if i=5 then break; end; writeln('Valor de I apos o for: ', I); readln; end. saída: I= 1 I= 2 I= 3 I= 4 I= 5 Valor de I apos o for: 5 Atenção para o valor de saída da variável de controle 16
Cuidado!! • Faça sempre um teste de mesa com os valores inicial e final do loop do comando for, pois a maioria dos erros são na primeira ou na última execução do laço. • Erros comuns: – Executar o laço (repetição) uma vez a mais ou a menos que o desejado – Atribuir o valor inicial de alguma variável dentro do laço, quando deveria ser fora – Não atribuir o valor inicial de uma variável (principalmente em for s aninhados) 17
Comando de repetição para número fixo de repetições • número conhecido For I : = -10 to 10 do Writeln(I); • número desconhecido Readln ( N ); For I : = 1 to N Do begin readln ( Nome ); Writeln ( Nome ); end; 18
Exercício • Faça um programa para calcular e escrever o valor de S: var I: integer; S: real; Begin S: =0; for I: =1 to 50 do S: =S+(I*2 -1)/I; writeln(S: 1: 6); readln; end. 19
exercício • Escreva um programa Pascal para informar o fatorial de um número lido. 20
Exemplo de solução: fatorial Program Fatorial; var num, Fat, I : integer; begin write('informe um numero positivo: '); readln(num); if num <=0 then writeln('o numero deve ser positivo') else begin Fat : = 1; for I: = 2 to num do Fat : = Fat * I; writeln ( 'Fatorial de ', num, ' = ' , Fat); end; readln; end. 21
• Faça um programa para calcular os números primos menores que 100 22
program primos; var n, I: integer; ehprimo: boolean; begin for n: =2 to 99 do begin ehprimo: =true; for I: =2 to n-1 do if (n MOD I)=0 then ehprimo: =false; if ehprimo then writeln(n, ' eh primo'); end; readln; end. 23
Exercício Faça um programa para ler 500 valores e informar o maior e sua posição 24
Program Maior. EPosicao ; var N: real; { lido } Maior: real; { guarda o maior lido } Posicao: integer; { posicao do maior dos lidos } K: integer; { variavel de controle do for } begin readln(N); maior: =N; { por enquanto o primeiro é o maior } Posicao : = 1; for K : = 2 to 500 do begin O que acontece se readln(N); entre os números lidos if N >= Maior existem valores iguais? then begin Maior : = N; Posicao : = K; end; { do comando for } writeln('Maior lido: ', Maior: 5: 1, ' na posicao ', Posicao); readln; end. 25
Comandos for aninhados saída. . . for K : = 1 to 3 do begin readln (N); for L : = 1 to N do writeln(L); end; . . . for K : = 1 to 5 do for L : = 1 to 3 do writeln(‘K=‘, K, ‘L=‘, L); . . . K=1 L=1 K=1 L=2 K=1 L=3 K=2 L=1 K=2 L=2 K=2 L=3 K=3 L=1 K=3 L=2 K=3 L=3 K=4 L=1 K=4 L=2 K=4 L=3 K=5 L=1 K=5 L=2 K=5 L=3 26
Comando while Pseudo-linguagem Pascal enquanto <condição> while <condição> faça <comando > do <comando > Um só comando 27
Exemplo 1: var a: integer; begin a : = 1; while (a < 5) do a : = a + 1; writeln('Valor de a = ', a); readln; end. Saída: Valor de a = 5 Obs. 1) a variável de controle de término a, neste caso, também PRECISOU ser inicializada! Obs. 2) neste caso, o corpo do while tem apenas 1 comando, a: = a +1 !
Exemplo 2: . . . Obs. 1: a variável de controle de término k, neste caso, foi inicializada com k: =1! . . . Obs. 2: como o corpo do WHILE tem 2 comandos, precisa-se usar o comando composto Begin. . End. k : = 1; while k < 4 do begin writeln(‘Iteracao: ‘, k); k: = k +1; end; Comando Composto
Exemplos. . . A : = 1; while A < 5 do A: = A + 1; writeln(A); . . . A : = 10; B : = 4; while A – 2 > B + 1 do begin writeln(A, ' ', B); A : = A - 1; end; . . . A: = 1; while A <= 5 do begin writeln(A); A : = A + 1; end; . . . A : = 0; while A < 5 do begin A : = A + 1; writeln(A); end; . . .
O comando while. . . • Conclusão – A variável ou variáveis que fazem parte da condição de término deverão ter seu valor atribuído através de um comando de leitura ou de atribuição • Antes da estrutura de repetição while e • Dentro da estrutura
Utilização de variável boolean. . . Segue : = true; while Segue do begin readln(A); if A <> 0 then writeln(A) else Segue : = false end; Parar : = false; while not Parar do begin readln(A); if A <> 0 then writeln(A) else Parar : = true end; Exemplos. . . S : = 0; readln(A); while A <> 0 do begin writeln(A); S : = S + 1; readln(A) end; writeln(S); • 1 a vez que testa A já deve ter um valor • S informa quantos valores foram lidos
Ex: Escreva um programa que leia o nome e as 3 notas dos alunos de uma classe e mostre o nome do aluno seguido da sua media. O programa deverá ser encerrado quando o nome for igual a ‘ZZZ’. VAR nome: string; cont: integer; media, nota, soma: real; BEGIN write('Digite o nome do aluno. (ZZZ para encerrar): '); readln(nome); while nome<>'ZZZ' do begin soma: =0; for cont: =1 to 3 do begin write ('Digite nota: '); readln (nota); soma: =soma+nota; end; media: =soma/3; writeln('A media do aluno ', nome, ' eh ', media: 1: 2); writeln('Digite o nome do aluno. (ZZZ para encerrar): '); readln(nome); end; readln; END.
Estruturas de repetição • para. . . faça. . • enquanto. . . faça. . • repita. . . até. . .
Comando repeat Pseudo-linguagem repita <comandos > até <condição> Pascal repeat <comandos > until <condição> vários comandos
Exemplos. . A : = 0; repeat A : = A + 1; writeln(A) until A = 10; . . Achou : = false; repeat readln(Nome); writeln(Nome); if Nome = ‘Ana Terra’ then Achou : = true until Achou; repeat readln(Nome); writeln(‘Outro ? (s/n) ’); readln(Resposta) until (Resposta=‘n’);
Exercício Faça um programa Pascal que leia 10 valores positivos e informe o maior deles. Valores não positivos devem ser ignorados. var I: integer; maior, N: real; begin maior: =0; for I: =1 to 10 do begin repeat write('forneca o ', I, '. numero positivo: '); readln(N); if not(N>0) then writeln('numero invalido!!'); until N>0; if N>maior then maior: =N; end; writeln('o maior numero fornecido foi: ', maior: 1: 3); readln; end. 37
Diagramas de sintaxe Comando while WHILE Expressão lógica DO comando Comando repeat REPEAT Comandos Separados por ; UNTIL Expressão lógica Comando ;
- Luis otávio pinto
- Pastor otavio rendeiro filho
- Repetio
- Repetio
- Repetio
- Repetio
- While fluxograma
- Repetio
- Repetio
- Repetio
- Repetio
- Repetio
- Repetio
- Repetió
- Teoria das estruturas
- Estruturas homólogas e análogas
- Valecula
- Estruturas
- Estruturas e formas de relevo
- Teoria de gerber
- Relevo do brasil
- Tecido
- ástey
- Homologia
- Estruturas sequenciais
- Cerebelo
- Estruturas sensoriais
- Mapa das estruturas geologicas do brasil
- Estruturas estaticamente indeterminadas
- Estruturas naturais e artificiais
- Estruturas organizacionais modernas
- Exemplos de orações coordenadas copulativas
- Estrutura resistente
- Teoria das estruturas
- Forma de aço para concreto
- Estruturas do encefalo
- Musculo
- Textura naturais e artificiais
- Estabilidade das estruturas