Baixe o app para aproveitar ainda mais
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.
Compartilhar