190 likes | 296 Views
Programação de Computadores. Viviane Torres da Silva viviane.silva@ic.uff.br http://www.ic.uff.br/~viviane.silva/progIII. Estruturas de repetição. DO <variável>=<valor inicial>,<valor final>,<incremento> <bloco de comandos> END DO
E N D
Programação de Computadores Viviane Torres da Silva viviane.silva@ic.uff.br http://www.ic.uff.br/~viviane.silva/progIII
Estruturas de repetição DO <variável>=<valor inicial>,<valor final>,<incremento><bloco de comandos> END DO • A <variável> inicia com <valor inicial>e a cada repetição é incrementada de <incremento>. • Para cada repetição o <bloco de comandos>é executado, enquanto a <variável> for menor ou igual que <valor final>. • O incremento é opcional. A sua ausência significa incremento = 1. O incremento pode ser negativo. Valor inicial Valor final incremento processamento
Exemplo program impares implicit none integer impar do impar = 1, 100, 2 print *, impar end do end
Exercício 1 • Faça um programa que soma todos os números em um intervalo informado pelo usuário. • Ex: intervalo de 2 a 6 soma=2+3+4+5+6=20 program somar dentro de um intervalo implicit none integer soma, x, y, i print *, 'entre com o intervalo:' read *, x, y soma = 0 do i = x, y, 1 soma = soma + i end do print *, soma end
Exercício 2 • Faça um programa que informe todos os números divisíveis por 2 entre um intervalo dado pelo usuário. • Ex: intervalo: 2 a 11 • Resultado: 2, 4, 6, 8, 10
Exercício 3 • Faça um programa que calcule o fatorial de um número (lembrete: 0! = 1 e n! = n * (n-1)!) program somar dentro de um intervalo implicit none integer fatorial, x, i print *, 'entre com o número:' read *, x fatorial = 1 if (x .EQ. 0) then print *, 'fatorial de ', x, ' ‚ ', fatorial else do i = 1, x, 1 fatorial = fatorial * i end do print *, 'fatorial de ', x, ' ‚ ', fatorial end if end
Exercício 4 • Faça um programa que some a idade de todos os alunos de uma turma. O usuário deve informar o número de alunos da turma e em seguida a idade de todos estes alunos.
Repetição condicional I DO WHILE (<condição>)<bloco de comandos> END DO • Testa se a <condição> é verdadeira • Se for verdadeira, executa<bloco de comandos> • Se for falsa, termina verdade falso condição bloco de comando
Exemplo • Soma de números inseridospelo usuário enquanto ele não digitar 0.
Exemplo program somador implicit none integer n, soma soma = 0 print *, 'Informe um número (zero para sair):' read *, n do while (n .NE. 0) soma = soma + n print *, 'Informe um número (zero para sair):' read *, n end do print *, 'Soma: ', soma end
Repetição condicional II • Às vezes se deseja fazer a verificação no final do processamento. Ou seja, o bloco de comandos é sempre executado ao menos 1 vez. LOGICAL repete repete = .TRUE. DO WHILE (repete) <bloco de comandos> repete = <condição>END DO bloco de comando verdade falso condição
Exercício 1 (repetição condicional) • Faça um programa que: • some a idade de todos os alunos de uma turma. • informe a média das idades. Dica: Quando não existirem mais alunos o usuário deve informar idade = 0.
Exercício 2 (repetição contável) program imprimePrimo implicit none integer i, j logical primo primo = .true. print *, "insira um numero:" read *, j do i=2,j-1,1 if (mod(j,i) .eq. 0) then primo = .false. endif enddo if (primo) then print*, j ," eh primo" endif end • Faça um programa que informe se um determinado número fornecido pelo usuário é primo.
Exercício 3 (repetição contável) program imprimePrimo implicit none integer i, j logical primo primo = .true. do j= 1, 20, 1 do i=2,j-1,1 if (mod(j,i) .eq. 0) then primo = .false. endif enddo if (primo) then print*, j ," eh primo" endif primo = .true. enddo read* end • Faça um programa que calcule todos os números primos entre 1 e 20.
Exercício 4 (repetição contável) • Faça um programa que calcule todos os números primos entre um intervalo dado pelo usuário. Exemplo: primos entre 10 e 20 11, 13, 17, 19
Exercício 5 (repetição contável) program imprimePrimo implicit none integer x, y, i, j logical primo primo = .true. print *, "insira dois numeros:" read *, x, y do j= x, y, 1 do i=2,j-1,1 if (mod(j,i) .eq. 0) then primo = .false. endif enddo if (primo) then print*, j ," eh primo" endif primo = .true. enddo end
Exercício 6 (repetição contável + condicional) • Faça um programa que calcule todos os números primos de 10 em 10 até o usuário informar que deseja parar digitando 0. Ao final o programa deve imprimir qual foi o intervalo observado. Exemplo de saída 1, 2, 3, 5, 7 “Se desejar parar digite 0”. 11, 13, 17, 19 “Se desejar parar digite 0”. (imagine que o usuário digitou 0) “Foram calculados os primos de 1 a 20.
Exercício 3 (repetição contável + condicional) program imprimePrimo implicit none integer x, y, i, j, s logical primo, repetir primo = .true. repetir = .true. x=1 y=10 do while (repetir) do j=x,y,1 do i=2,j-1,1 if (mod(j,i) .eq. 0) then primo = .false. endif enddo if (primo) then print*, j endif primo = .true. enddo print *, "deseja continuar?" read *, s if (s .eq. 0) then repetir = .false. print*, 'terminou' else x=x+10 y=y+10 endif enddo print *, "foram calculados os primos de 1 a ", y read* end