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