Buscar

Material de Apoio 01 Fund II Comando Repetiçao

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 6 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 6 páginas

Prévia do material em texto

CENTRO UNIVERSITÁRIO DO LESTE DE MINAS GERAIS
ENGENHARIA DE PRODUÇÃO, ENGENHARIA MECÂNICA, ENGENHARIA DE MATERIAIS, ENGENHARIA SANITÁRIA E AMBIENTAL, 
ENGENHARIA CIVIL
DISCIPLINA: Fundamentos da Computação II
PROFESSORES: Núcleo de professores de Informática
MATERIAL DE APOIO – Nº 1
 
Material de Apoio Nº 1 – Estrutura de Repetição
1) Objetivos: Utilizar o comando de repetição para resolver problemas que necessitam de repetir determinados 
passos (tarefas) várias vezes.
2) Livro texto: ASCENIO, A. F.G., CAMPOS, E.A.V. Fundamentos da Programação de Computadores 
(Algoritmos, Pascal e C/C++). São Paulo: Prentice Hall, 2002.
3) Fundamentação Teórica :
a) Referência para consulta e estudos: Capítulo 4 do livro texto.
b) Motivação:
Considere o seguinte problema: Elabore um algoritmo que a leia nota do aluno e que determine escreva 
"Aprovado" se o aluno obter nota superior ou igual a 60 e "Reprovado" se o aluno obter nota inferior a 60. Uma 
solução para o problema poderia ser a seguinte:
Program CalculaNota ;
 var
 nota: integer;
 Begin
 write('Informe a nota do aluno: ');
 readln(nota);
 {compara se a nota é maior que 70 pontos}
 if(nota > 70) then
 begin
 writeln('O aluno foi aprovado');
 end
 else
 begin
 writeln('O aluno foi reprovado');
 end; 
 End.
Porém, um professor deseja checar o resultado de 30 alunos. Então, o algoritmo acima deverá ser chamado 
ou executado 30 vezes para mostrar o resultado de todos os 30 alunos de uma turma, pois a execução do 
mesmo permite informar a nota de somente um aluno. Podemos alterá-lo para que com somente uma chamada 
ou execução o mesmo possa mostrar o resultado de todos os trinta alunos.
Para isso é necessário utilizarmos uma ESTRUTURA DE REPETIÇÃO, ou seja, uma estrutura de controle do 
fluxo lógico que permite executar diversas vezes um mesmo trecho do algoritmo, porém, sempre verificando 
antes de cada execução se é "permitido" repetir o mesmo trecho. 
Veja solução no próximo item.
c) Estrutura de Repetião Padrão no Algoritmo: comando ENQUANTO
Para realizar repetições com teste no início, podemos utilizar a estrutura ENQUANTO, que permite que um 
bloco de comandos ou uma ação primitiva seja repetida enquanto uma determinada (condição) for verdadeira.
Observe abaixo a sintaxe do comando ENQUANTO que no PascalZIM chamados de while.
While condição do
 begin
 {comandos}
 end;
Os comandos que estão dentro do 
bloco Begin e end do comando while 
serão repetidos quantas vezes a 
condição estabelecida permitir.
Solução do problema anterior:
Program CalculaNotaComEnquanto ;
 var
 nota, contador :integer;
 
 Begin
 contador := 0;
 while contador < 30 do
 begin
 write('Informe a nota do aluno: ');
 readln(nota);
 {compara se a nota é maior que 70 pontos}
 if(nota > 70) then
 begin
 writeln('O aluno foi aprovado');
 end
 else
 begin
 writeln('O aluno foi reprovado');
 end; 
 contador := contador + 1; 
end; 
End.
4) Exemplos de algoritmos utilizando comando ENQUANTO
a) Cálculo de Quantidade: Construir um programa que leia a idade de 10 pessoas e conte quantas possuem 
mais de 50 anos. Exibir o resultado. 
Program MaisQue50;
var x, Id, Qtd50, QtdP : integer;
Begin
 Qtd50 := 0;
 x := 1;
 while (x <= 10) do
 begin
 write (‘Informe a idade da ‘, x , ‘ ª pessoa’); 
 read (Id);
 if (Id > 50) then
 begin
 Qtd50 := Qtd50 +1;
 end;
 x := x + 1;
 end;
 write (‘Existem’, Qtd50, ‘pessoas com idade maior que 50 anos’);
End. 
b) Cálculo de Média Geral: Elabore um algoritmo que leia o nome e a altura de um grupo de 15 pessoas e que 
calcule e escreva a altura média.
RASTREIO 
TELA MEMÓRIA
Informe a nota do aluno: 70
O aluno foi aprovado
Informe a nota do aluno: 45
O aluno foi reprovado
Informe a nota do aluno: 60
O aluno foi aprovado
Informe a nota do aluno: 59
O aluno foi reprovado
Informe nota do aluno: 90
O aluno foi aprovado
...
Informe a nota do aluno: 100
O aluno foi aprovado
Contador nota
0 70
1 45
2 60
3 59
4 90
...
30 100
31
OBS: Veja que quando a 
variável Contador passa 
para 31, a execução do 
programa não entra mais 
no comando enquanto e 
passa para a linha logo 
abaixo do fim do 
enquanto
OBS: Diferente dos outros rastreios que estávamos 
acostumados a fazer, agora iremos representar variáveis 
em uma tabela para mostrar o que foi acontecendo com 
as mesmas durante o processo de repetição.
Program CalcMedia;
var 
 Nome : String;
 x : integer;
Alt, SomaAlt, MediaAlt :real;
Begin
 SomaAlt := 0;
 x := 1;
 while (x <= 15) do
 Begin
 write (‘Informe o Nome da ‘, x , ‘ ª pessoa’); 
 read (Nome);
 write (‘Informe a altura da ‘, x , ‘ ª pessoa’); 
 read (Alt);
 SomaAlt := SomaAlt + Alt;
 x := x + 1;
 end;
 MediaAlt := SomaAlt/15;
 write (‘A idade média das pessoas é: ’, MediaAlt);
 End.
c) Cálculo de média de um grupo: Elabore um algoritmo que leia o sexo e a altura de um grupo de 20 pessoas 
e calcule a média das alturas dos homens.
Program CalcMedia2;
var
X, CONTH,:integer;
SEXO :char;
ALTURA, MEDIAALTH, SOMAALTH: real;
Begin
 CONTH := 0;
 SOMAALTH := 0;
X := 1;
while (X <= 20) do
 Begin
write (‘Digite SEXO (M, F) : ‘);
 read (SEXO);
write ( ‘ Digite altura : ‘);
 read (ALTURA);
if (SEXO = ‘M’) or (SEXO =’m') then 
begin
CONTH := CONTH + 1;
SOMAALTH := SOMAALTH + ALTURA;
end;
X:= X + 1;
end;
if (CONTH > 0) then
begin
 MEDIAALTH:= SOMAALTH / CONTH;
 write ( ‘A media de altura dos homens é: ‘, MEDIAALTH);
end
else
begin
 write ( ‘Não existem homens no grupo ‘);
end;
End.
d) Cálculo do Maior e do Menor: Elabore um algoritmo que leia a altura e o sexo de um grupo de 50 pessoas e 
que determine a maior e a menor altura do grupo. 
Program CalcMedia3;
Var 
 ALTURA, MENORALTURA, MAIORALTURA: real;
 X : integer;
Begin
MENORALTURA := 5;
MAIORALTURA := 0;
X := 1;
while (X <= 50) do
begin
write (‘ Digite altura ‘);
read (ALTURA);
if (ALTURA > MAIORALTURA) then 
begin
MAIORALTURA := ALTURA;
end;
if (ALTURA < MENORALTURA) then 
begin
MENORALTURA := ALTURA;
end;
X := X +1;
end;
write (‘ A maior altura do grupo é: ‘, MAIORALTURA);
write ( ‘ A menor altura do grupo é: ‘, MENORALTURA);
end.
e) Quantidade informada pelo usuário: Elabore um algoritmo que leia o nome e a altura de um grupo 
indeterminado de pessoas e que determine e escreva a maior altura e o nome da pessoa que a possui;
OBS.: O usuário deverá informar a quantidade de pessoas do grupo.
Program Pessoas;
Var ALT, MAIORALT: real;
NOME, NOMEMALT: String;
X, QTDPESS : integer;
begin
MEALT := 3;
MAIORALT := 0;
X := 1;
write(‘ Informe a quantidade de pessoas: ‘); 
read (QTDPESS);
while (X <= QTDPESS) do
begin
write(‘ Digite o nome: ‘);
read (NOME);
write (‘ Digite a altura: ‘);
read (ALT);
if (ALT > MAIORALT) then 
begin
NOMEMALT := NOME;
MAIORALT := ALT;
end;
 X:= X +1;
end;
write(‘ A maior altura é: ‘, MAIORALT, ‘ e é do(a): ‘, NOMEMALT);
End.
4) Exercícios
1) Considere as seguintes faixas etárias: Criança (de 0 a 10 anos), Adolescente (de 11 a 16 anos), Jovem ( de 17 a 
26 anos) e Adulto ( acima de 27 anos). Construa um programa que leia o nome e a idade de 10 pessoas. Depois 
informe a qual faixa etária ela pertence.
2) Escreva um algoritmo que leia um número N, calcule seu fatorial e mostre o resultado obtido. Um exemplo de 
fatorial:
4! = 4*3*2*1
6! = 6*5*4*3*2*1
1!=1
0!=1 , atenção fatorial de zero é 1
3) Construirum programa que leia o código do consumidor (um número), o total de pessoas residentes na casa 
deste consumidor e o valor consumido em kwh referente ao último mês. Essa leitura deverá ser feita para 50 
consumidores. Calcular e escrever:
a) Qual foi o maior consumo registrado e a qual consumidor pertence.
b) A média de consumo dos consumidores que moram sozinhos.
4) Construir um programa que leia o nome, a idade e o estado civil ( C- casado, S- solteiro, O- outros) de um 
conjunto de várias pessoas. Solicitar ao usuário a quantidade de pessoas.Com esses dados calcular e escrever:
a) Quantidade de pessoas casadas
b) Média da idade das pessoas solteiras
c) Qual é a idade da pessoa mais nova
5) Construir um programa que leia o nome, peso e o sexo de um conjunto de várias pessoas. O usuário irá informar 
a quantidade exata de pessoas. Calcular e escrever:
a) Menor peso do grupo de pessoas.
b) Maior peso dos homens.
5) Exemplos de algoritmos utilizando comando ENQUANTO indeterminado
Neste caso o bloco de comando será executado indeterminadamente, até que a condição de parada seja atendida. 
Exemplo: Desenvolver um algoritmo que leia dois valores A e B (n vezes até que o usuário digite SIM ou S) e efetue 
e imprima a soma de A e B.
program EXEMPLO_WHILE_DO2;
 var A, B, R : integer;
 RESP : string;
 begin
 RESP := ‘SIM’;
 while (RESP = ‘SIM’) or (RESP = ‘S’) do
begin
 write(‘Entre um valor para A: ’);
 readln(A);
 write(‘Entre um valor para B: ’);
 readln(B);
 R := A + B;
 writeln(‘O resultado corresponde a: ’,R);
 writeln;
 write(‘Deseja continuar?’);
 readln(RESP);
 end;
 end
Observe que o laço não tem um contador, o contador foi substituído pela variável RESP, que enquanto tiver o seu 
valor igual a SIM ou igual a S, executará as instruções contidas entre as instruções begin e end do comando 
while...do.
Exercícios
1. Leia 1 variável X inúmeras vezes (parar quando o valor digitado for <= 0). Para cada valor lido mostre a sequência 
de 1 até o valor lido.
2. Escrever um algoritmo que, dada uma sequência de valores inteiros e positivos, determine qual é o menor valor 
desta sequência. O valor 0 (zero) indica o término dos dados de entrada (finalizador).
3. Construir um programa que leia o sexo e a idade de várias pessoas. Utilize como condição de parada a letra Z 
para o sexo. Calcule e escreva:
• Quantas pessoas são do sexo masculino e têm menos de 20 anos;
• O sexo da pessoa mais nova.
• A porcentagem de mulheres do grupo.
4. Um clube de serviços deseja fazer um levantamento com relação a seus associados. Elabore um algoritmo que 
leia os seguintes dados para cada associado: Sexo, Idade e Renda Familiar. A leitura terminará quando for 
digitada uma idade igual a zero. O algoritmo deve calcular e escrever: 
• Quantidade de Associados do Sexo Feminino com mais de 40 anos; 
• A renda média de todos os associados. 
5. Faça um programa que leia um conjunto de valores inteiros e positivos, calcule e mostre o maior e o menor valor 
do conjunto. Considere que:
• Para encerrar a entrada de dados deve ser digitado o valor zero;
• Para valores negativos deve ser enviada uma mensagem;
• Os valores negativos ou iguais a zero não entrarão nos cálculos.

Outros materiais