Skip to content

Latest commit

 

History

History
154 lines (106 loc) · 4.71 KB

1-laço_repetição.md

File metadata and controls

154 lines (106 loc) · 4.71 KB

Laços de Repetição

Quando criamos um programa, cada linha do código é executada uma única vez. Para que possamos repetir uma seqüência de passos dentro do código-fonte, devemos executar o programa quantas vezes forem necessárias. Entretanto, imagine a seguinte situação:

Um programa que leia duas notas de um determinado aluno, calcule e apresente a sua média aritmética e informe se o aluno está aprovado (caso a média seja >=6) ou reprovado (caso a média seja < 6). Esse programa deverá ser executado para 5 alunos.

Para que isso seja possível, com os comandos e estruturas que aprendemos até o momento, teríamos que criar um programa enorme, repetindo 5 vezes a mesma seqüência de passos, pois a fórmula para saber se um aluno está aprovado ou reprovado é a mesma para qualquer aluno.
Imagine ainda que ao invés de 5 alunos tenhamos que repetir essa operação para 40 alunos. O código-fonte ficaria enorme, repetindo 40 vezes o mesmo trecho. O mesmo ocorreria caso tivéssemos 100 ou 1000 alunos.

Quando devemos repetir um determinado trecho de um programa ou até mesmo todo o código, utilizamos uma estrutura chamada de LAÇO DE REPETIÇÃO que nos permite executarmos mais de uma vez um mesmo trecho do código-fonte, baseado em uma condição (teste lógico). Existem três tipos básicos de laços de repetição, conforme veremos a seguir.

Laço de repetição com teste no início (while)

Nesse tipo de estrutura, é realizado um teste lógico no início do bloco. Caso a condição seja VERDADEIRA, o bloco de comandos associado à condição será executado. Quando a condição for FALSA, o bloco é abandonado, e a execução do programa seguirá seu fluxo.

Vejamos como ficaria o exemplo acima utilizando essa estrutura:

import java.util.*;
public class LacoInicio {
    public static void main(String args[]){

        Scanner in = new Scanner(System.in);

        int i=1;
        double n1, n2,m;

        while( i <= 5){
            System.out.println("Digite a 1a nota do "+i+"o
            aluno:");
            n1 = in.nextDouble();
            
            System.out.println("Digite a 2a nota do "+i+"o
            aluno:");
            n2 = in.nextDouble();

            m = (n1 + n2) / 2;

            System.out.println("A média é: "+m);
            
            if (m >= 6){
                System.out.println("Aprovado!");

            }
            else{
                System.out.println("Reprovado!");
            }

            i++;

        }

    }
}

Laço de repetição com teste no fim (do)

Nesse tipo de estrutura, o bloco de execução associado ao laço de repetição é executado, e ao final é realizado um teste lógico. Caso a condição seja VERDADEIRA, o bloco de comandos associado à condição será executado novamente. Enquanto a condição for VERDADEIRA, o bloco é repetido, e a execução do programa seguirá seu fluxo.

Vejamos como ficaria o exemplo anterior utilizando essa estrutura:

import java.util.*;
public class LacoFim {
    public static void main(String args[]){

        Scanner in = new Scanner(System.in);

        int i=1;
        double n1, n2,m;

        do{
            System.out.println("Digite a 1a nota do "+i+"o
            aluno:");
            n1 = in.nextDouble();

            System.out.println("Digite a 2a nota do "+i+"o
            aluno:");
            n2 = in.nextDouble();

            m = ( n1 + n2 ) / 2;

            System.out.println("A média é: "+m);

            if (m < 6){
                System.out.println("Reprovado!");
            }
            else{
                System.out.println("Aprovado!");
            }

            i++;

        }while(i <= 5);
    }
}

Laço de repetição com teste no fim (for)

Nesse tipo de estrutura, no início do laço de repetição uma variável de controle (contador) é iniciada, incrementada e testada numa única instrução.

Escrito com esse tipo de laço ficaria assim:

import java.util.*;
public class LacoInicio {
    public static void main(String args[]){

        Scanner in = new Scanner(System.in);

        int i;
        double n1, n2,m;
        
        for (i=1;i<=5;i++){
            System.out.println("Digite a 1a nota do "+i+"o aluno:");
            n1 = in.nextDouble();

            System.out.println("Digite a 2a nota do "+i+"o aluno:");
            n2 = in.nextDouble();

            m = (n1+n2)/2;

            System.out.println("A média é: "+m);

            if ( m < 6){
                System.out.println("Reprovado!");
            }
            else{
                System.out.println("Aprovado!");
            }

        }
    }
}