Programação de Computadores
Viviane Torres da Silva
[email protected]
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
Valor inicial
Valor final
 A <variável> inicia com <valor inicial>
incremento
e a cada repetição é incrementada
de <incremento>.
processamento
 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.
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.
Parte II
Repetição condicional
I
DO WHILE (<condição>)
<bloco de comandos>
END DO
falso
 Testa se a <condição> é verdadeira
 Se for verdadeira, executa
<bloco de comandos>
 Se for falsa, termina
condição
verdade
bloco de comando
Exemplo
 Soma de números inseridos
pelo 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.
bloco de comando
verdade
falso
condição
LOGICAL repete
repete = .TRUE.
DO WHILE (repete)
<bloco de comandos>
repete = <condição>
END DO
Exercício 1 (repetição condicional)

1)
2)
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)

Faça um programa que informe se um determinado número
fornecido pelo usuário é primo.
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
Exercício 3 (repetição contável)

Faça um programa que calcule todos os números primos
entre 1 e 20.
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
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.
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
Exercício 3 (repetição contável + condicional)
Download

Repetição contável (parte I) - Instituto de Computação