Buscar

capitulo5 21 C121L1

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 11 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 11 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 9, do total de 11 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

Prévia do material em texto

C121-L1 – Algoritmos e Estruturas de Dados 1 
Profa. Rosanna Mara Rocha Silveira – Fevereiro/2018 - Versão 2.1 
 
 
 
 
 
 
 
 
 
 
CAPÍTULO 5 
 
Estruturas de Repetição 
 
 
 
 
 
 
 
 
 
 
 
ESTRUTURAS DE REPETIÇÃO ................................................................................................................... 49 
Estrutura de Repetição com Teste no Início: ENQUANTO-FAÇA ........................................................... 49 
SINTAXE DA ESTRUTURA ENQUANTO-FAÇA EM PROGRAMAS EM C++ .................................................. 50 
Estrutura de Repetição com Variável de Controle: PARA-FAÇA ............................................................. 52 
SINTAXE DA ESTRUTURA PARA-FAÇA EM PROGRAMAS EM C++ .............................................................. 53 
EXERCÍCIOS PROPOSTOS DO CAPÍTULO 5: ............................................................................................. 56 
 
49 
CAPÍTULO 5 
ESTRUTURAS DE REPETIÇÃO 
 
Em programação de computadores, é muito comum nos depararmos com a necessidade de 
repetição de processos. Na verdade, os processos repetitivos são tidos por alguns autores 
como uma das justificativas para o uso do computador, por ser essa máquina imune a 
fadiga, o que não ocorre com a mente humana. A máquina executa a primeira e a milésima 
instrução com a mesma rapidez e precisão, já a mente humana......!!!!.... 
 
As estruturas de repetição são utilizadas para que uma parte do programa possa ser 
repetida n vezes sem a necessidade de reescrevê-lo. São também conhecidas como loops 
ou laços repetitivos. 
 
Veremos a seguir as estruturas mais utilizadas na implementação de repetições em 
programação de computadores: 
estrutura WHILE (enquanto-faça) 
estrutura FOR (para-faça) 
 
Estrutura de Repetição com Teste no Início: WHILE 
 
A estrutura de repetição ENQUANTO-FAÇA é muito utilizada quando não se sabe o número 
de vezes em que um trecho do programa deve ser repetido, embora também possa ser 
utilizada quando se sabe esse número. 
 
Essa estrutura ENQUANTO-FAÇA efetua a repetição de um conjunto de comandos 
enquanto uma condição for satisfeita (verdadeira). É importante que se observe que 
inicialmente a condição é verificada e, se verdadeira, os comandos serão executados. Ao 
término da execução dos comandos, a condição volta a ser verificada e, se ainda 
permanece verdadeira, novamente os comandos serão executados. Assim, a estrutura 
permite a repetição dos comandos enquanto a condição for verdadeira. Quando a condição 
não mais for verdadeira, o programa avançará para a próxima linha após o fim da estrutura 
ENQUANTO-FAÇA. Se já da primeira vez, o resultado da condição for falso, o(s)comando(s) 
que está(ao) dentro da estrutura repetitiva não são executados nenhuma vez. 
 
O fluxograma da estrutura ENQUANTO-FAÇA pode ser visto como mostrado a seguir: 
 
50 
SINTAXE DA ESTRUTURA ENQUANTO-FAÇA EM PROGRAMAS EM C++ 
 
while (condição) 
 comando; 
 
ou 
 
while (condição) 
{ 
 comando1; 
 comando2; 
 ... 
 comando_n; 
 } 
 
Exercício 5.1) Verifique o(s) valor(es) que será(ão) impresso(s) para i, após a execução dos 
seguintes trechos de programa e indique o número de vezes que se passa por cada laço 
repetitivo. 
 
a) 
: 
i = 1; 
while (i <= 3) 
 i = i + 1; 
cout << i; 
: 
 Valor(es) de i impresso(s): 
 Número de repetições: 
 
b) 
: 
i = 1; 
while (i < 4) faça 
{ 
 i = i + 1; 
cout << i << endl;; 
} 
: 
 Valor(es) de i impresso(s): 
 Número de repetições: 
 
c) 
: 
i = 0; 
while (i <= 3) 
 i = i + 1; 
cout << i; 
: 
 Valor(es) de i impresso(s): 
 Número de repetições: 
 
51 
d) 
: 
i = 10; 
while (i >10) 
 i = i - 1; 
cout << i; 
 Valor(es) de i impresso(s): 
 Número de repetições: 
 
e) 
i = 10; 
while (i <= 10) 
i = i - 1; 
cout << i; 
 Valor(es) de i impresso(s): 
 Número de repetições: 
 
f) 
: 
I = -3; 
while (I <= 0) 
{ 
I = I + 1; 
cout << i << endl;; 
} 
cout << i; 
 Valor(es) de I impresso(s): 
 Número de repetições: 
 
Exemplo 1: Faça um programa para ler 20 números e mostrar a média aritmética como 
resultado. 
 
int main () // programa de média 
{ 
float num, soma; // número lido e soma dos 20 números lidos 
 int cont; // contador 
 
 cont = 0; 
soma = 0; 
while (cont < 20) 
{ 
 cout << “Digite um número “; 
 cin >> num; 
 soma = soma + num; // soma do número lido 
 cont = cont + 1; // contagem dos números lidos 
} 
cout << “A média aritmética dos números é “ << soma/20; 
 
/* poderíamos usar também o seguinte comando para o cálculo da média 
cout << “A média aritmética dos números é “ << soma/cont; */ 
 
return 0; 
} 
 
52 
Exemplo 2: Faça um programa para ler números positivos e só parar de ler quando o 
número digitado for um número negativo (FLAG); mostrar quantos números foram lidos e a 
média aritmética como resultado. 
 
int main () // programa que lê um número indeterminado de valores positivos 
{ 
float num, soma; // número lido e soma dos 20 números lidos 
 int cont; // contador 
 
 cont = 0; 
soma = 0; 
 
cout << “Digite um número positivo (negativo para sair) “; 
cin >> num; 
 
while (num >= 0) // condição contrária ao Flag (num < 0) 
{ 
 soma = soma + num; // soma do número lido 
 cont = cont + 1; // contagem dos números lidos 
 cout << “Digite um número positivo (negativo para sair) “; 
 cin >> num; 
} 
cout << “Foram lidos “ << cont << “ números”<< endl; 
 
if (cont > 0) 
 cout << “A média aritmética dos números é “ << soma/cont; 
 
return 0; 
} 
Exercício 5.2) Faça um programa para ler um valor x qualquer e calcular a expressão Y = ( 
x+1)+(x+2)+(x+3)+(x+4)+(x+5)+…(x+100). Mostre o resultado Y. 
 
Exercício 5.3) Faça um programa para ler alguns números até que seja digitado o numero –
9999 (Flag). Somar esses números e ao final imprimir essa soma e quantos números foram 
digitados. 
 
Exercício 5.4) Faça um programa para ler um valor X e calcular Y = X + 2X + 3X + 4X + 5X 
+…+ 2000X. Mostre o resultado Y. 
 
Estrutura de Repetição com Variável de Controle: PARA-FAÇA 
 
A estrutura de repetição PARA-FAÇA é muito utilizada quando sabemos o número de vezes 
que um trecho do programa deve ser repetido. 
 
Essa estrutura faz uma variável assumir valores desde um valor inicial até um valor final, 
definidos conforme a necessidade, e, para cada valor que essa variável assume (dentro do 
intervalo definido acima), um conjunto de comandos pode ser executado. 
 
A variável que assumirá tais valores é chamada de variável de controle. 
 
Quando a variável de controle assumir um valor fora do intervalo de variação, a execução do 
programa passará automaticamente para a linha após a estrutura PARA-FAÇA. 
 
 
53 
O princípio de funcionamento do PARA-FAÇA é bem parecido com o ENQUANTO-FAÇA, 
onde a repetição se manterá enquanto a condição for verdadeira. Uma vez que essa 
condição retorne falso, a execução da repetição é interrompida. 
 
SINTAXE DA ESTRUTURA PARA-FAÇA EM PROGRAMAS EM C++ 
 
Dentro dos parênteses devemos informar 3 parâmetros, que são eles: o valor inicial onde 
será começada a contagem, o valor final da contagem e quantas unidades a variável de 
controle alcançará a cada ciclo de repetição. 
 
Se a variável de controle começar com um valor menor que o valor final, e ir aumentando ao 
longo do tempo, dizemos que a esta variável está possuindo um incremento. Mas se a 
variável de controle começar com um valor maior que o valor final, e ir decrementando, tem-
se um decremento. 
 
A sintaxe padrão é: 
 
for (inicio ; fim ; incremento | decremento) // aquisem o (;) ponto e vírgula 
 
Com incremento: 
 
for (varcontrole = v_inicial ; varcontrole <= v_final ; varcontrole = varcontrole + 1) 
 comando; 
 
ou 
 
for (varcontrole = v_inicial ; varcontrole <= v_final ; varcontrole = varcontrole + 1) 
{ 
 comando1; 
 comando2; 
 ... 
 comando_n; 
} 
 
Com decremento: 
 
for (varcontrole = v_inicial ; varcontrole >= v_final ; varcontrole = varcontrole - 1) 
 
 
onde, 
 
varcontrole é a variável de controle da estrutura de repetição que é incrementada ou 
decrementada após cada execução do bloco de comandos 
v_inicial é o valor inicial da contagem da repetição 
v_final é o valor final da contagem da repetição 
 
v_inicial, v_final podem ser constantes e/ou variáveis. 
 
Você também pode declarar a variável de controle no interior da expressão de 
inicialização. Isto é bastante comum nos programas em C++. Veja! 
 
for (int i = 3 ; i <= 100 ; i = i + 3) 
 
Em C++, geralmente declara-se as variáveis tão próximo quanto possível do ponto onde 
elas serão usadas. 
 
54 
 
 
 
Exemplo 3: Veja o trecho de programa abaixo, o valor 1 é atribuído à variável de controle i. 
A seguir o valor de i é comparado com 4. Se o conteúdo de I for maior que 4, então o 
comando composto não é executado e a execução do programa vai para o próximo 
comando após a estrutura. Se i for menor ou igual a 4, o comando composto é executado e 
ao final tem-se o incremento (unitário) de i. Retorna-se à comparação e repete-se o 
processo até que i tenha um valor maior que 4 (neste exemplo, igual a 5). 
 
: 
soma = 0; 
for (i = 1 ; i <= 4 ; i = i + 1) 
{ 
 soma = soma + i; 
 cout << soma << endl; 
 } 
 cout << i << endl; 
: 
 
Exercício 5.5) Verifique o(s) valor(es) que será(ão) impresso(s) para i, após a execução dos 
seguintes trechos de programa e indique o número de vezes que se passa por cada laço 
repetitivo. 
 
a) 
: 
for (i = 1 ; i <= 5 ; i = i + 1) 
 cout << i << endl; 
: 
 
 Valor(es) de i impresso(s): 
 Número de repetições: 
 
b) 
: 
for (i = 5 ; i <= 5 ; i = i + 1) 
 cout << i << endl; 
cout << i << endl; 
: 
 
 Valor(es) de i impresso(s): 
 Número de repetições: 
 
c) 
: 
for (i = 2 ; i <= 1 ; i = i + 1) 
 cout << i << endl; 
cout << i << endl; 
: 
 
 Valor(es) de i impresso(s): 
 Número de repetições: 
 
55 
d) 
: 
for (i = 0 ; i >= -3 ; i = i -1) 
 cout << i << endl; 
cout << i << endl; 
: 
 
 Valor(es) de I impresso(s): 
 Número de repetições: 
e) 
: 
for (i = -1; i >= 3; i = i -1) 
 cout << i << endl; 
cout << i << endl; 
: 
 
 Valor(es) de I impresso(s): 
 Número de repetições: 
 
 
 
Toda estrutura PARA pode ser convertida em ENQUANTO, mas nem toda estrutura 
ENQUANTO (por exemplo, Flag) pode ser convertida em PARA. 
: : 
soma = 0; soma = 0; 
for (i = 1 ; i <= 10 ; i = i + 1) i = 1; 
 soma = soma + i; while (i <= 10) 
: { 
 soma = soma + i; 
 i = i + 1; 
 } 
 : 
 
Exemplo 4: Faça um programa para somar os números de 1 a 10 e mostrar o resultado. 
 
int main () // programa de soma 10 números (de 1 a 10) 
{ 
 int cont, soma; 
 
 soma = 0; 
 
 for (cont = 1 ; cont <= 10 ; cont = cont + 1) 
 soma = soma + cont; 
 
 cout << “O resultado da soma dos 10 números é: “ << soma; 
return 0; 
} 
 
Obs.: A variável de controle, no Exemplo acima é a variável cont. Ela é automaticamente 
incrementada em uma unidade, a partir do valor inicial ( 1 ), até que seja ultrapassado o 
limite final definido ( 10 ). 
 
Quando existe a necessidade de interromper o processamento antes de ser alcançado o 
limite final definido para a estrutura, não deverá ser usada a estrutura PARA-FAÇA, pela 
simples razão que a variável de controle não deve ser alterada propositadamente pelo 
 
56 
usuário. A alteração do conteúdo da variável de controle do PARA-FAÇA é de inteira 
responsabilidade da própria estrutura. Por isso não é recomendável modificar o seu valor e 
nem o valor final que ela deverá alcançar dentro da estrutura, pois resultados imprevistos 
poderão ser produzidos. 
 
Exemplo 5: Faça um programa para somar os números pares entre 2 e 20 e mostrar o 
resultado. 
int main () // programa de soma pares de 2 a 20 
{ 
 int cont, soma; 
 soma = 0; 
 for (cont = 2 ; cont <= 20 ; cont = cont + 2) // incremento de 2 
 soma = soma + cont; 
 
 cout << “O resultado da soma dos números pares de 2 a 20 é: “ << soma; 
return 0; 
} 
 
Exemplo 6: Faça um programa para ler 20 números e mostrar a média aritmética como 
resultado. 
 
int main () // programa de soma 20 números e calcula a média deles 
{ 
 int cont; // variável de controle do for 
float num, soma; // número lido e soma deles 
 soma = 0; 
 
 for (cont = 1 ; cont <= 20 ; cont = cont + 1) 
 { 
 cout << “Digite um número qualquer “; 
 cin >> num; 
 soma = soma + num; 
 } 
 // Note que a variável cont neste ponto tem o valor 21, não podemos utilizá-la para o 
 // denominador no cálculo da média 
 cout << “A média aritmética é: “ << soma/20; 
return 0; 
} 
 
Exercício 5.6) Escreva um programa para calcular e mostrar a soma de dez números 
quaisquer fornecidos pelo usuário, bem como mostrar o maior deles também. 
 
EXERCÍCIOS PROPOSTOS DO CAPÍTULO 5: 
 
P5.1) Construa um programa que, dado um conjunto de valores positivos, determine qual o 
maior valor do conjunto. O final do conjunto de valores é conhecido através de um valor 
negativo (-1, por exemplo) que não deve ser considerado. 
 
P5.2) Faça um programa que leia alguns números até que seja digitado o valor –9999. 
Mostrar como resultado quantos números foram lidos, quantos foram maiores que 0 e 
quantos foram menores que 0. 
 
 
57 
P5.3) Faça um programa que leia alguns números até que seja digitado o valor –9999. 
Mostrar como resultado o maior e o menor número lido. 
 
P5.4) Construa um programa que, dado um conjunto de 100 números, determine o menor 
valor e a média desse conjunto. 
 
P5.5) Construa um programa para calcular a média de cada aluno da turma de Algoritmos 
(composta de 30 alunos) e sua situação (aprovado ou reprovado). A média de aprovação é 
7. O programa terá como entrada o número de matrícula do aluno e suas 4 notas parciais. E 
como saída, a matrícula, a média e a situação para cada 1 dos 30 alunos. 
 
P5.6) Dada uma série de 20 valores reais, faça um programa que calcule e escreva a média 
aritmética destes valores, entretanto se a média obtida for maior que 8 deverá ser atribuída 
10 para a média. 
 
P5.7) Dado um conjunto de 20 valores reais, faça um programa que: 
 a) Imprima os valores que são negativos; 
b) Calcule e imprima a média dos valores > 0. 
 
P5.8) Suponha que para cada aluno de sua sala exista uma ficha contendo o nome e a 
idade do aluno. Supondo que existam 50 alunos, faça um programa que mostre o nome do 
alunos que tem idade maior que 20. 
 
P5.9) Construa um programa que leia a altura e o sexo (1-masculino e 2- feminino) de um 
grupo de pessoas (o valor zero para a altura deve ser considerado como FLAG), calcule e 
imprima: 
a) o número de homens 
b) a menor altura do grupo 
 
P5.10) Construa um programa que permita fazer um levantamento do estoque de vinhos de 
uma adega, tendo como dados de entrada os tipos de vinho: B:branco, T:tinto e R:rosé. 
Especifique a porcentagem de cada tipo sobre o total geral de vinhos. A quantidade de 
vinhos é desconhecida (invente um FLAG). 
 
P5.11) Dados modelo, ano de fabricação, cor e placa de 1000 carros, faça um programa 
que: 
a) imprima quantos são, da cor PRATA e o percentual em relação ao total 
b) imprima quantos foram fabricados antes de 2000 e o percentual em relação ao 
totalc) imprima quantos são GOL e o percentual em relação ao total. 
 
P5.12) Um hotel cobra R$ 300,00 por diária e mais uma taxa adicional de serviços. Se o 
número de diárias for menor que 15, a taxa de serviços é de R$ 20,00. Se o número de 
diárias for igual a 15 a taxa é de R$ 14,00 e se o número for maior que 15 a taxa é de R$ 
12,00. Considerando-se 200 hóspedes e para cada hóspede um registro contendo seu 
nome e o número de diárias, faça um programa que imprima o nome e o total a pagar de 
cada hóspede e imprima também o total ganho pelo hotel e o número total de diárias. 
 
P5.13) Dado que cada pessoa tenha o seu nome, a sua idade e o seu peso em uma ficha, 
faça um programa que: 
a) imprima o nome da pessoa cuja idade está na faixa de 20 a 30 anos inclusive os 
extremos 
b) calcule a idade média das pessoas com peso maior que 80 Kg 
Considere que existam N pessoas (peça ao usuário para entrar com o valor de N). 
 
 
58 
P5.14) O Departamento de trânsito do estado anotou dados de acidentes de trânsito no 
último ano. Para cada motorista envolvido no acidente, têm-se as seguintes informações: 
- Ano de nascimento 
- Sexo (M - Masculino, F - Feminino) 
- Procedência ( 0 - Capital, 1 - Interior, 2 - Outro estado) 
 
Faça um programa que : 
a) calcule a porcentagem de motoristas com menos de 21 anos 
b) calcule quantas mulheres são da capital 
c) calcule quantos motoristas do interior do estado tem idade maior que 60 anos 
d) verifique se existe alguma mulher com idade maior que 60 anos 
Invente um FLAG. 
 
P5.15) Para cada uma das 200 mercadorias diferentes com que um armazém trabalha, 
dispõe-se dos seguintes dados: 
 -o código da mercadoria 
 -o seu preço unitário 
 -a quantidade total vendida da mercadoria no mês 
Elabore um programa que escreva um relatório com o total de vendas (R$) de cada 
mercadoria realizado no mês e calcule o faturamento total mensal do armazém. 
 
P5.16) O Inatel deseja fazer um levantamento a respeito dos candidatos do seu Vestibular 
de 2018. Para cada candidato, são fornecidos os seguintes dados a serem analisados: 
 .idade 
 .estado de origem (MG, SP, RJ, PR, etc) 
 .curso de 2o. grau (T-Técnico, M-Médio, S-Supletivo) 
Faça um programa que determine e escreva: 
 - a idade da pessoa mais velha; 
- o número de candidatos que são provenientes do Estado de MG e com formação 
de 2o. grau Técnico. 
Flag → IDADE = 0 
 
P5.17) Elabore um programa que efetue e mostre a soma de todos os números ímpares que 
são múltiplos de três e que se encontram no conjunto dos números naturais de 1 até 50. 
 
P5.18) Construa um programa para gerar e imprimir a seguinte série: 1 3 5 7 9 11.... para 
os 30 primeiros termos. 
 
P5.19) Construa um programa para gerar e imprimir a seguinte série: 0 2 4 6 8 10........ 
para os 51 primeiros termos. 
 
P5.20) Construa um programa que calcule o fatorial de um número N, sendo que o valor de 
N é fornecido pelo usuário. 
 Sabendo que: 
 N! = N x (N-1) x (N-2) x ... x 3 x 2 x 1 0! = 1 , por definição

Outros materiais