006 Repeticao Loops

Embed Size (px)

Citation preview

  • 8/16/2019 006 Repeticao Loops

    1/28

     Algoritmos

    Prof. Carlos Alves

    [email protected] 

  • 8/16/2019 006 Repeticao Loops

    2/28

    Estrutura de Repetição

    •   Até o momento vimos estruturas seqüenciais, alguns

    problemas pode requisitar que uma operação seja

    executada um certa quantidade de vezes.

    • Exemplo:   Entre com o salário de 100 funcionários e

    calcule a média dos salário.

    • Solução Seqüencial:  Você teria que criar 100 linhascom a função leia (cin) para armazenar os valores.

  • 8/16/2019 006 Repeticao Loops

    3/28

    Estrutura de Repetição

    •   Para resolver estes tipos de problemas, onde um certo

    conjunto de operações deve ser executado mais de

    uma vez, vamos introduzir novas estruturas de controle,

    chamadas estruturas de repetição.

    •  As estruturas de repetição podem ser utilizadas para

    vários tipos de problemas como, por exemplo, teste de

    senha, contagem e soma de valores, recebimento deuma certa quantidade de dados de entrada, percorrer 

    estruturas de dados (vetores).

  • 8/16/2019 006 Repeticao Loops

    4/28

    Repetição com Variável de Controle

    •   A estrutura de repetição com variável de controle serve

    para se executar um trecho de código   n  vezes, onde   n

    é um número conhecido previamente.

    •   O número de repetições executado por esta estrutura é

    controlado por uma variável, chamada variável de

    controle. Esta variável começa com um valor inicial

    estabelecido pelo programador e, a cada repetição

    (iteração ou loop), o valor é incrementado ou

    decrementado, até alcançar o valor final, também

    definido pelo programador.

  • 8/16/2019 006 Repeticao Loops

    5/28

    Repetição com Variável de Controle

    •   Vejamos como ficaria o programa para ler o salário de

    100 funcionários e calcular a média dos salários.

    • Portugolinício

    inteiro: SALARIO, SAL_TOTAL;

    para CONTADOR de 1 até 100 faça

    leia (SALARIO);

    SAL_TOTAL = SAL_TOTAL + SALARIOfimpara;

    ESCREVA(SAL_TOTAL/100);

    fim.

  • 8/16/2019 006 Repeticao Loops

    6/28

    Repetição com Variável de Controle

    •   C++

    #include

    using namespace std;

    int main(int argc, char *argv[]) {

    int salario, sal_total=0;

    for (int i = 0; i < 100; i++) {

    cout

  • 8/16/2019 006 Repeticao Loops

    7/28

    Repetição com Variável de Controle

    •   Em C++, a estrutura de repetição com variável de

    controle é representada pelo comando for , que é dividido

    em três partes, separadas por ponto e vírgula (;). Aprimeira parte inicializa a variável de controle com o valor 

    inicial (zero, no caso do exemplo). A segunda parte é o

    critério de parada (contador < 100). A terceira parte é o

    incremento ou decremento da variável de controle.

  • 8/16/2019 006 Repeticao Loops

    8/28

    Repetição com Teste no Início

    •   A estrutura de repetição com teste no início é uma

    estrutura na qual o teste para se verificar se o loop

    executará a próxima vez ou não é realizado no início daestrutura, antes de qualquer outro comando. Dessa

    forma, se o teste der falso logo na primeira vez, os

    comandos dentro da estrutura não serão executados

    nenhuma única vez

  • 8/16/2019 006 Repeticao Loops

    9/28

  • 8/16/2019 006 Repeticao Loops

    10/28

    Repetição com Teste no Início

    •   No início da execução, a condição lógica é avaliada. Se

    ela for verdadeira, os comando dentro da estrutura de

    repetição são executados. Quando o programa chega nainstrução fimenquanto, ele volta novamente ao início e

    avalia a condição novamente. Esse processo continua

    enquanto a condição for verdadeira.

  • 8/16/2019 006 Repeticao Loops

    11/28

    Repetição com Teste no Início

    • Portugolinício

    inteiro: IDADE, CONTADOR;

    caracter: NOME;CONTADOR 30

    então imprima (NOME);fimse;

    CONTADOR

  • 8/16/2019 006 Repeticao Loops

    12/28

    Repetição com Teste no Início

    •   O comando da estrutura de repetição com teste no início

    em C++ é o while, e sua sintaxe é a seguinte:

    while (condição_lógica) {

    comando_1;

    comando_2;

    ...comando_n;

    }

  • 8/16/2019 006 Repeticao Loops

    13/28

    Repetição com Teste no Início

    • C++#include

    using namespace std;

    int main(int argc, char *argv[]) {

    int idade, cont =0; string nome;

    while ( cont < 5){

    cout>idade;

    if (idade > 30){

    cout

  • 8/16/2019 006 Repeticao Loops

    14/28

    Uso de Condição de Parada (Flag)

    •   Nos exemplos vistos até o momento, as estruturas de

    repetição são executadas um número fixo de vezes (n

    vezes), que foi definido pelo programador no momento da

    construção do programa.

    •   No entanto, na grande maioria das vezes o programador 

    não saberá quantas vezes a estrutura deverá ser 

    executada, pois esta é uma decisão que geralmente cabe

    ao usuário do programa

  • 8/16/2019 006 Repeticao Loops

    15/28

    Uso de Condição de Parada (Flag)

    •   Neste caso, precisamos criar uma condição de parada

    (também chamada de flag).

    • Exemplo: Execute enquanto a idade informada for > 0.

    Quando o usuário digitar 0 (zero) o programa será

    finalizado

  • 8/16/2019 006 Repeticao Loops

    16/28

    Uso de Condição de Parada (Flag)

    • Portugol

    início

    inteiro: IDADE;

    caracter: NOME;

    leia (IDADE);

    enquanto IDADE > 0 faça

    leia (NOME);

    se IDADE > 30

    então imprima (NOME);fimse;

    leia (IDADE);

    fimenquanto;

    fim.

  • 8/16/2019 006 Repeticao Loops

    17/28

    Uso de Condição de Parada (Flag)

    •   Este programa funciona da seguinte maneira. Primeiro é

    lida uma idade fora da estrutura de repetição. Se ela for 

    menor ou igual a 0 (zero), o programa não entra na

    estrutura, pois o usuário informou justamente um valor quesatisfaz o critério de parada e, portanto, não quer informar 

    nenhum dado.

  • 8/16/2019 006 Repeticao Loops

    18/28

    Uso de Condição de Parada (Flag)

    • C++#include

    using namespace std;

    int main(int argc, char *argv[]) {

    int idade;

    string nome;

    cout idade;

    while (idade > 0){

    cout nome;

    if (idade > 30){

    cout

  • 8/16/2019 006 Repeticao Loops

    19/28

    Repetição com Teste no Final

    •   A estrutura de repetição com teste no final possui um

    funcionamento semelhante ao da estrutura de repetição

    com teste no início. A principal diferença entre elas é que

    no teste no final os comandos que estão dentro daestrutura de repetição serão obrigatoriamente executados

    pelo menos uma vez.

  • 8/16/2019 006 Repeticao Loops

    20/28

    Repetição com Teste no Final

    •   Em Portugol, o comando para a estrutura de repetição

    com teste no final é o repita...até.

    início

    inteiro: IDADE;caracter: NOME;

    repita

    leia (NOME, IDADE);

    se IDADE > 30então imprima (NOME);

    fimse;

    até IDADE

  • 8/16/2019 006 Repeticao Loops

    21/28

    Repetição com Teste no Final

    •   C++

    do {

    comando_1;

    comando_2;

    ...

    comando_n;

    } while (condição_lógica);

  • 8/16/2019 006 Repeticao Loops

    22/28

    Repetição com Teste no Final

    •   C++int main(int argc, char *argv[])

    {

    int idade; string nome;

    do {

    cout nome;

    cout idade;

    if (idade > 30) {

    cout

  • 8/16/2019 006 Repeticao Loops

    23/28

    Repetição com Teste no Final

    • Portugol

    Repita

    leia (ALTURA);até ALTURA > 0 e ALTURA < 3;

    C++

    do{cin >> altura;

    } while (altura = 3)

  • 8/16/2019 006 Repeticao Loops

    24/28

    Repetição - Exemplos

    • For 

    //Imprimir 100 números na tela.

    int main(int argc, char *argv[])

    {

    cout

  • 8/16/2019 006 Repeticao Loops

    25/28

    Repetição - Exemplos

    • For //Ler 10 numero do teclado e imprimir a média.

    int main(int argc, char *argv[])

    {

    int num, total=0;for (int i=0; i < 10; i++)

    {

    cout

  • 8/16/2019 006 Repeticao Loops

    26/28

    Repetição - Exemplos

    • while//Ler 10 numero do teclado e imprimir a média.

    int main(int argc, char *argv[]) {

    int cont, num, total;

    cont = num = total = 0;while ( cont < 10){

    cout

  • 8/16/2019 006 Repeticao Loops

    27/28

    Repetição - Exemplos

    • Do//Ler 10 numero do teclado e imprimir a média.

    int main(int argc, char *argv[]) {

    int cont, num, total;

    cont = num = 0;do {

    cout

  • 8/16/2019 006 Repeticao Loops

    28/28