Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
IF61A - Computação 1
Prof. Leonelo Almeida
nome: imprimirDe1a4
inicio
imprima(“1”);
imprima(“2”);
imprima(“3”);
imprima(“4”);
fim
Um pouco mais de flexibilidade ...
• Novo problema: Faça um algoritmo que imprima
todos os números inteiros de 1 até 100
nome: imprimirDe1a100
inicio
imprima(“1”);
imprima(“2”);
imprima(“3”);
imprima(“4”);
...
imprima(“100”);
fim
Mais um pouco de flexibilidade ...
• Novo problema: Faça um algoritmo que
imprima todos os números inteiros de 1 até um
número informado pelo usuário
?
Solução 1
nome: imprimirDe1aX
inicio
inteiro: num;
imprima(“Informe a quantidade de números: ”)
leia(num);
se (num >= 1)
imprima(“1”);
fim se;
se (num >= 2)
imprima(“2”);
fim se;
...
[até onde o programador conseguir escrever]
fim
Solução 1
• Limitada pelo número de comparações que o
programador prever
▫ E sempre haverá um número maior do que ele
previu
• O tamanho do programa será potencialmente
grande
• A solução 1 não resolve completamente o
problema proposto
Solução 2
• Precisamos de estruturas de repetição
nome: imprimirDe1aX
inicio
inteiro: num, contador;
imprima(“Informe a quantidade de números: ”)
leia(num);
valor <- 0;
enquanto (valor >= 0) faça
imprima(“Informe o novo valor ou um valor
negativo para encerrar: ”);
leia(valor)
imprima(“10% de juros: ”, 1.1*valor);
fim enquanto
Repetição com teste no início –
Exemplos: repetição com problema na
condição de parada
repita
comando ou
{bloco de comandos}
até (condição);
repita
imprima(“Informe o novo valor: ”);
leia(valor);
imprima(“10% de juros: ”, 1.1*valor);
imprima(“Deseja fazer outro cálculo (S-sim,N-não)?”);
leia(resposta);
se (resposta = “S”) então
continuar <- verdadeiro;
senão
continuar <- falso;
fim se;
até (não continuar)
Atividade 2
• Um cinema possui capacidade de 100 lugares. Certo dia, cada
expectador respondeu a um questionário no qual constava:
▫ Sua opinião sobre o filme
5 ÓTIMO
4 BOM
3 REGULAR
2 RUIM
1 PÉSSIMO
▫ Idade
Fazer um algoritmo que receba estes dados como entrada e
calcule e imprima:
▫ a porcentagem de respostas ótimo, bom, regular, ruim, péssimo
▫ a média de idades das pessoas que responderam ruim
▫ a maior idade das pessoas que responderam péssimo
Repetição com variável de controle
• Utilizado quando se deseja repetir um comando ou bloco
de comandos, utilizando uma variável de controle, que
tem seu valor incrementado a cada repetição
• Onde:
▫ Inicialização: variável e seu valor inicial. Ex. cont<-1
▫ Condição: condição para repetir. Ex. cont<=10
▫ Incremento: qual o incremento a cada repetição. Ex. 2
Repetição com variável de controle –
Exemplo: repetição correta
nome: multiplosDe5
início
inteiro: cont, numMultiplos;
imprima(“Informe quantos múltiplos de 5
deseja conhecer:”);
leia(numMultiplos);
para (cont<-1; cont<=numMultiplos; 1) faça
imprima(cont, “ x 5 = ”, cont*5);
fim para
fim
Atividade 3
• Faça uma algoritmo que imprima uma matriz
nxm, onde n e m são informados pelo usuário e o
valor de cada célula é dado por:
-1 -1 -1 -1 ...
-1 0 1 2 ...
-1 1 3 5 ...
-1 2 5 4 ...
-1 ... ... ... ...
Exemplo comparativo
• Problema: Faça um algoritmo que calcule 2n,
sendo n um número inteiro maior que zero,
informado pelo usuário.
▫ Restrição: não é permitido utilizar “^” ou “**”.
▫ Implemente o algoritmo em versões diferentes.
Utilize:
Versão 1 – enquanto ... faça
Versão 2 – repita ... até
Versão 3 – para ... faça
Versão 1 – enquanto ... faça
nome: calcularPot2
início
inteiro: contador, resultado, expoente;
imprima(“Informe o expoente:”);
leia(expoente);
contador <- 1;
resultado <- 1;
enquanto (contador <= expoente) faça
resultado <- resultado*2;
contador <- contador+1;
fim enquanto
imprima(“Resultado: ”, resultado);
fim
Versão 2 – repita ... até
nome: calcularPot2
início
inteiro: contador, resultado, expoente;
imprima(“Informe o expoente:”);
leia(expoente);
contador <- 1;
resultado <- 1;
repita
resultado <- resultado*2;
contador <- contador+1;
até (contador > expoente)
imprima(“Resultado: ”, resultado);
fim
Versão 3 – para ... faça
nome: calcularPot2
início
inteiro: contador, resultado, expoente;
imprima(“Informe o expoente:”);
leia(expoente);
resultado <- 1;
para (contador<-1; contador<=expoente; 1 ) faça
resultado <- resultado*2;
fim para
imprima(“Resultado: ”, resultado);
fim
Resumindo ...
• Uso
▫ O para é mais apropriado quando já se sabe (através do usuário ou
definindo-se o total através de uma constante) o número de iterações
(repetições).
▫ O enquanto é mais apropriando quando a condição de parada é
inesperada, isto é, não se sabe previamente o total de repetições. (Ex.
Parar quando o usuário informar o valor “-1”)
▫ O repita também é mais apropriado quando a condição de parada é
inesperada, mas o laço precisa ser executado ao menos 1 vez.