Buscar

Algoritmos I (Unidade Curricular 4) - Positivo Tecnologia em Sistemas para Internet

Prévia do material em texto

Competências da Aula
• C4 - (N) - Identificar e codificar estruturas de 
repetição simples e aninhadas para resolver 
problemas algorítmicos.
Estruturas de Repetição
• Nas aulas anteriores, conhecemos as estruturas de decisão: 
estruturas de decisão simples, compostas, aninhadas e as 
decisões de múltipla escolha.
• Vimos que tais decisões são utilizadas quando há a necessidade 
de se estabelecer desvios na execução dos comandos e o 
algoritmo tem que decidir que caminho seguir. E essa decisão é 
tomada de acordo com uma condição específica.
• A partir de agora, conheceremos outro grupo de estrutura de 
controle: as estruturas de repetição.
• Há momentos em que há a necessidade de repetir um 
determinado trecho do algoritmo por um número específico de 
vezes.
Estruturas de Repetição
Estruturas de Repetição
• Uma estrutura de repetição, ou simplesmente laço
ou loop, permite que um grupo de comandos seja
executado repetidamente um número determinado
de vezes ou até que uma determinada condição seja
verdadeira ou falsa.
Estruturas de Repetição
As estruturas de repetição podem funcionar de diferentes formas, de acordo 
com a necessidade do algoritmo que você vai criar. Assim como nas 
estruturas de decisão, há uma classificação para as estruturas de repetição:
 Repetição contada (comando PARA...FAÇA) – repete as instruções sob
controle de um contador que percorre valores, de acordo com limites iniciais
e finais pré estabelecidos.
• Repetição condicional com teste de condição no INICIO (comandos 
ENQUANTO...FAÇA) – repete as instruções enquanto a condição for 
verdadeira.
• Repetição condicional com teste da condição no FINAL (comandos 
REPITA...ATÉ) – repete as instruções até que a condição seja verdadeira.
Estruturas de Repetição
 Na repetição contada, a quantidade de execuções do 
comando que irá repetir é conhecida previamente.
 Uma variável é criada para funcionar como contador 
para essas repetições e cessar a repetição no momento 
em que a contagem chegar ao final. 
 Há, também, um valor de incremento,que define de 
quantas em quantas unidades a repetição executará.
Estrutura para (for) - faça
Sintaxe
para <variável> de <valor_inicial> até <valor_final> faca
<comando 1>;
<comando 2>;
<comando 3>;
fimpara
Estrutura para (for) - faça
Sintaxe
for(inicialização; condição; incremento)
{
instruções;
}
for(i=1;i<=10;i++)
{
printf("%d\n",i);
}
Estrutura faça - para
• Atribui a variável, que é o nome de uma
variável numérica, o valor_inicial;
• Compara o valor da variável com o valor
numérico valor_final. Se ele for menor ou igual
ao valor_final, executa os comandos. Caso
contrário, executa o comando após a estrutura
de repetição (fimpara);
• Incrementa o valor de variável em uma
unidade;
• Volta ao passo 2;
Estrutura faça - para
Veja a seguir algumas considerações sobre a sintaxe da 
estrutura:
• A variável de controle deve ser uma variável numérica do 
tipo inteiro, pois servirá de contador e terá seu valor 
incrementado a cada passo.
• O valor inicial corresponde ao valor de inicialização da 
variável antes da primeira repetição.
• O valor final corresponde ao valor máximo que a variável 
pode alcançar.
• Se o valor de incremento não for definido, assume-se o 
valor = 1.
Exemplo
• Escreva um algoritmo que escreva na tela (em 
linhas diferentes) os números de 1 a 100.
• Escreva um algoritmo que escreva na tela (em 
linhas diferentes) os números de 1 a um 
número informado pelo cliente.
• Escreva um algoritmo que mostre a tabuada 
de um número informado (entre 2 e 9).
Exemplo
nome exemplo_1;
variaveis
i : inteiro;
Inicio
i  0;
para (i=1; i<=100;i++) faca
Escreval(i);
fimpara
Fim
nome exemplo_2;
variaveis
i : inteiro;
numero : inteiro;
Inicio
escreva(“Favor inserir o número.”); 
leia(numero);
para(i=1; i<=numero;i++) faca
Escreva(i);
fimpara
Fim
nome exemplo_3;
variaveis
resultado : inteiro;
contador : inteiro;
numero : inteiro;
Inicio
escreva(“Favor informar um número entre 2 e 9.”);
leia(numero);
SE (numero >=2) E (numero <=9) ENTAO
para contador de 1 até 10 faça
resultado  numero * contador;
Escreva(numero, “*”, contador, “=“, resultado);
fimpara
FIMSE
Fim
Exercícios
• Faça um algoritmo que leia o nome, idade e 
sexo (‘M’ ou ‘F’) de 20 pessoas e mostre se a 
pessoa for do sexo masculino e tiver mais de 
21 anos.
• Faça um algoritmo que calcule o IMC de 20 
alunos de uma escola de natação. O IMC é 
dado pela fórmula IMC = peso / altura * 
altura. Após o calculo mostre na tela o IMC 
encontrado.
Nome exercicio_4;
Variaveis
nome : caracter;
idade: inteiro;
sexo : caractere;
contador : inteiro;
Inicio
para contador de 1 até 20 faca
escreva(“Favor informar o nome:”);
leia(nome);
escreva(“Favor informar a idade:”);
leia(idade);
escreva(“Favor informar o sexo da pessoa:”);
leia(sexo);
SE (sexo = ‘M’) E (idade > 21) ENTAO
escreva(nome);
FIMSE
fimpara
Fim
Variáveis Acumuladoras - Exemplo
• Faça um algoritmo que calcule a soma de 
todos os números de 100 (inclusive) à 200 
(inclusive). Mostre o resultado final na tela.
• Faça um algoritmo que calcule a soma de 
todos os números pares de 100 (inclusive) à 
200 (inclusive);
• Faça um algoritmo que calcule a soma de 
todos os números de um intervalo fornecido 
pelo cliente;
Nome exercicio_1;
Variaveis
i : inteiro;
soma: inteiro;
Inicio
soma  0;
para i de 100 até 200 faça
soma  soma + i;
fimpara
escreva(soma);
Fim
Nome exercicio_2;
Variaveis
i : inteiro;
soma: inteiro;
Inicio
soma  0;
para(i=100; i<=200, i++)faca
SE (i % 2 = 0) ENTAO
soma  soma + i;
FIMSE
fimpara
escreva(soma);
Fim
Nome exercicio_3
Variaveis
i : inteiro;
soma : inteiro;
num_inic, num_fim : inteiro;
Inicio
leia(num_inic);
leia(num_fim);
soma  num_inic;
para i de num_inic até num_fim faca
soma  soma + i;
fimpara
escreva(soma);
Fim
• Um professor possui 1 turma com 40 alunos. 
Construa um algoritmo que leia a nota dos alunos 
e exiba a média de notas da turma.
Exiba também a maior nota da turma e a menor 
nota da turma.
• Um professor possui 1 turma com 40 alunos. 
Construa um algoritmo que leia a nota dos alunos 
e exiba a média de notas da turma.
Exiba também a maior nota da turma e a menor 
nota da turma.
Em uma maternidade, nasceram 15 crianças em 
um dia. Faça um algoritmo que verifique o peso e 
o tamanho (em cm) das crianças, após indique o 
maior peso e maior tamanho registrado, neste 
dia.
Comando : faça - enquanto (while)
• A palavra “enquanto” indica que o comando 
seguinte será executado, desde que o resultado 
da expressão lógica seja verdadeiro
• Ao encontrar o final do comando (bloco), volta-
se para primeira linha do laço e verifica-se a 
expressão lógica ainda é verdadeira
– Se sim, será feita uma nova execução do trecho
– Se não, a execução do laço termina e continua-se no 
próximo comando após o trecho repetido.
Comando : enquanto - faça
enquanto <expr> faca
<comando 1>;
<comando 2>;
fimenquanto
• Repetição com teste no início
1)Valido se a expressão <expr> é verdadeira;
2) Se verdadeira, executo os comando 1 e 2, até 
que <expr> seja falsa;
Exemplo
Escreva um Algoritmo em Portugal que verifique se a nota do aluno é válida.
Caso a mesma seja válida, verifique se o aluno está aprovado ou reprovado
Alg Teste
Var
real: nota;
Inicio
escreval("Digite uma nota:");
leia(nota);
enquanto (nota < 0) ou (nota > 10) faca
escreval("Erro! A nota deve ser entre 0 e 10");
escreva("Digite novamente a nota: ");
leia(nota);fimenquanto
se (nota >= 7) então
escreval("Aluno aprovado!“;
senão
escreval("Aluno reprovado!")
fimse
Fim
Exemplo Resolvido
• Faça um algoritmo que leia 20 valores reais e 
escreva seu somatório.
Solução
algoritmo soma_leitura;
variaveis 
i :inteiro;
somatorio, num : Real;
inicio
i  1;
Somatorio  0;
enquanto i <= 20 faca
leia num;
Somatorio  Somatorio + num;
i  i + 1;
fimenquanto;
escreva 'O somatório é: ',Somatorio;
fim.
• Faça um algoritmo que leia diversos 
números informados pelo usuário, e 
após cada leitura exibir se o número 
é par ou ímpar. Considere que ao 
fornecer um valor negativo o 
usuário deseja encerrar a entrada 
de dados. Ao final, informar 
quantos números pares e quantos 
números impares foram lidos.
num 0;
par0;
impar0;
Escreval (“Favor Inf. Um numero”);
leia(num);
se (num>=0) entao
enquanto (num >= 0) faca
se (num % 2 = 0) entao
escreva('É PAR');
par par +1;
senao
escreva('É IMPAR');
impar impar +1;
fimse
escreval(“Favor Inf. Um Numero:”)
leia(num);
fim-enquanto
fimse
escreva(“O total de numeros pares é:”, par);
escreva(“O total de numeros impares é:”, impar);
fim
Exemplo
• Escreva um algoritmo que leia o código, o 
nome e a idade dos competidores de um 
campeonato de futebol. A leitura será 
encerrada quando o código lido for igual a 
zero.
• Altere o algoritmo anterior para que seja 
calculado o número de jogadores e a média de 
idade dos competidores
Exercício
• O que será impresso no algoritmo a seguir ?
var
X, Y : real;
inicio
X  5;
Y  9;
enquanto (X < 10) faca
X  X + 0.5;
Y  Y – 1;
fim-enquanto
escreva(X);
escreva(y);
fim
Exercício
Faça um algoritmo em Portugol que pergunte ao 
usuário quantos números deseja somar. Em 
seguida, leia a quantidade informada de números e 
apresente o valor da soma de todos os números,
quantos números são menores que 7 e quantos
números são maiores que 9.
Estruturas de Repetição
• Estrutura para - faça
• Estrutura enquanto – faça
• Estrutura repita – até
repita – ate ( do-while)
• Chamamos esta estrutura de repetição com teste 
no final, pois a decisão entre repetir ou parar o 
laço é feita ao final do comando.
• Conclui-se, portanto, que sempre haverá pelo 
menos uma execução do trecho delimitado.
repita - ate
repita
<comando 1>;
<comando 2>;
até <expr>
Repetição com o teste no final
1)Executo os comandos 1 e 2;
2)Verifico se a expressão <expr>. 
Se verdadeira, encerro a repetição. 
Senão, executo comando 1 e 2 novamente.
Exemplo
Inicio
Var
opcao: inteiro;
Inicio
repita
escreval("1 - Dizer olá!");
escreval("2 – Dizer oi! ");
escreval("0 - Sair do programa");
leia(opcao);
se (opcao = 1) então
escreval("Olá!");
fimse
se (opcao = 2) então
escreval("Oi!");
fimse
ate (opcao = 0)
Fim
Exercício
• Faça um algoritmo que leia valores reais e 
escreva seu somatório. Considere que ao 
fornecer o valor zero o usuário deseja encerrar 
a entrada de dados
Solução
algoritmo soma_leitura;
variaveis 
somatorio, num : Real;
inicio
somatorio  0;
repita
escreva(“Favor informar um num:”); 
ler num;
Somatorio  somatorio + num;
até (num = 0)
escreva (“O somatório é:”,somatorio);
fim.
Exemplo
• Imprimir um conjunto de números informados 
pelo cliente na tela até que seja informado um 
número negativo;
• Escreva um algoritmo que escreva na tela (em 
linhas diferentes) os números de 1 a 100.
Construa um programa que apresente o peso
total que será carregado por um container. Sabe-
se que esse container carrega 32 caixas, com
pesos diferentes. Será entrada do programa o
peso (P) de cada uma das caixas.
Considere que um funcionário recebe todo inicio
de mês um crédito de R$500,00 de vale
alimentação em seu cartão. Faça um programa
utilizando a estrutura de repetição do ...while que
após o recebimento do credito controle o saldo
do cartão alimentação deste funcionário.
Comparação
Contador < valorfinalDe valor_inicial 
até valor final
InícioPara
Condição falsaMínimo 1FinalRepita
Condição verdadeira?InícioEnquanto
Condição de 
existência/repetição
Quantidade de 
execuções
Condição de 
término
ESTRUTURA

Continue navegando