ESTRUTURAS DE REPETIÇÃO II

Este texto-base aborda os seguintes temas:

Conhecendo dois novos Laços de Repetição

Na unidade anterior, você conheceu o comando “para...fim-para”, utilizado em situações em que você sabe exatamente o número vezes que as instruções deverão ser repetidas. Como exemplo, você estudou programas que realizam instruções repetidamente para exibir aos usuários os números de 0 a 9.

Mas, como fazer em situações nas quais não é possível definir quantas vezes a instrução deverá ser repetida?

Os Laços de Repetição abordados nessa unidade são utilizados nesses contextos. São comandos que só encerram suas repetições quando a condição é satisfeita. Dê uma olhada:

Agora, você conhecerá cada Estrutura de Repetição com maior profundidade.

Laço de Repetição “enquanto... fim-enquanto”

Este Laço de Repetição, como apresentado anteriormente, trabalha enquanto a condição for verdadeira e vai executando as instruções. Porém, a condição sendo falsa, ele sai do loop e vai para o próximo comando na programação.

PSEUDOCÓDIGO FLUXOGRAMA JAVA
Enquanto <condição> faça
      <Comando>
      <Comando>
      <Comando>
Fim enquanto
while (condição){
      instrução
}

Agora que você conheceu a definição e a estrutura do laço, veja o exemplo a seguir.


Elabore um Algoritmo, um Fluxograma e um Programa em Java que mostre todos os números menores que 10.

PSEUDOCÓDIGO FLUXOGRAMA
Programa ex

  Declare
        num como inteiro
  Início
        Num <- 0
        Enquanto (num < 10) faça
              escreva num
              num <- num+1
        fim-enquanto

Agora, veja o programa em Java.

          public class ex01 {

            public static void main(String[]args) {
                  int num =0;
                  while (num < 10) {
                        System.out.println("Número " + num);
                        num++;
                  }
            }
          }

Observe que na linha 5 temos a estrutura de repetição enquanto while tendo como condição a situação que o exercício colocou (números menores que 10). As linhas 6 e 7 apresentam os comandos que são executados dentro desta estrutura.

Como resultado, o computador apresenta:

Você percebeu que a condição colocada acima foi “num < 10”, por isso o resultado apresentado são números de 0 até o 9.

Lembre-se sempre: o incremento não é automático

O Laço de repetição Enquanto...Fim-Enquanto não possui incremento automático como o laço Para...Fim...Para.

Fique atento a isso! O exemplo a seguir apresenta uma repetição infinita e demonstra as implicações da ausência de contador:

PSEUDOCÓDIGO FLUXOGRAMA
Programa ex

    Declare
          num como inteiro
    Início
          Num <- 0
          Enquanto (num < 10) faça
                escreva num
          fim-enquanto

No Java:

            public class exemploLoopInfinito {
                public static void main(String[]args) {
                      int num =0;
                      while (num < 10) {
                            System.out.println(“Número “ + num);
                      }
                }
            }

Note que o programa é idêntico ao anterior com a exceção de que não temos o incremento do contador num (num <- num+1). Com isso, o contador fica eternamente com o valor de 0 (zero) e o programa nunca terá um fim.

Resultado:

Laço de Repetição “repita... até que”

Como você já sabe, esta estrutura é parecida com a while, que você acabou de conhecer. A única diferença é que a condição dela é executada por último. Vamos aos detalhes para entender melhor?

PSEUDOCÓDIGO FLUXOGRAMA JAVA
Repita <condição> faça
      <Comando>
      <Comando>
      <Comando>
até que<Comando>
do {
      instrução
}
while (condição)

Agora que você conheceu um pouco mais esta estrutura, vamos voltar ao exemplo anterior.


Elabore um Algoritmo, um Fluxograma e um Programa em Java que mostre todos os números menores que 10.

PSEUDOCÓDIGO FLUXOGRAMA
Programa ex01

    Declare
          num como inteiro
    Início
          repita
                escreva num
                num < num + 1
          até que (num < 10)
     fim.

Agora, veja o programa em Java:

            
           public class ex01 {

            public static void main(String[]args) {
               int num =0;
               do{
                    System.out.println("Número " + num);
                    num++;
               }
               while (num < 10);
            }
        }

Observe que, como o programa responde ao mesmo exercício, e o resultado é o mesmo. Porém, o programa foi construído utilizando outro Laço de repetição. Note que as linhas 6 até 10 apresentam a sintaxe do comando repita até.

Na videoaula a seguir, o professor Sandro Valérios retoma os conteúdos estudados até o momento.

Utilizando comandos de repetição em conjunto com comando condicional if

Nas unidades anteriores você viu que é possível utilizar o comando para (for) em conjunto com o se (if) para atingir a solução de um problema na programação. Assim, como no caso do para, também podemos usar o enquanto (while) e o repita até (do while) em conjunto com o se (if) com o mesmo propósito.

Veja o exemplo a seguir, um programa de uma empresa financeira. Nele, o usuário informa seu cargo e salário e, a partir dessas informações, o programa informa quanto de empréstimo a pessoa pode obter.

Diretor = 30%
Gerente = 25%
Operacional = 20%
            import java.util.Scanner;
            public class ex03 {

                  public static void main(String[]args) {

                        String nome, cargo;
                        float sal, emprestimo=0;

                        System.out.println("Por favor informe seu nome");
                        nome = new Scanner(System.in).nextLine();
                        System.out.println("E agora informe seu cargo (Diretor, Gerente ou Operacional)");

                        cargo = new Scanner(System.in).nextLine();

                        while (cargo == "Diretor" || cargo == "Gerente" || cargo == "Operacional") {
                              System.out.println("Cargo incorreto, por favor informe o cargo novamente");
                              cargo = new scanner(System.in).nextLine();
                        }

                        System.out.println("Agora informe o seu salário");
                        sal = new scanner(System.in).nextFloat();

                        if (cargo.equals("Gerente"))
                            emprestimo = sal*25/100;
                        else if (cargo.equals("Diretor"))
                            emprestimo = sal*30/100;
                        else
                            emprestimo = sal*20/100;

                        System.out.println("Olá" + nome);
                        System.out.println("Seu cargo é" + cargo);
                        System.out.println("Seu salário é" + sal);
                        System.out.println("Olá" + nome);
                        System.out.println("E você tem direito a pegar R$" + emprestimo + "de empréstimo");
               }
           }

Você notou que além dos usos do Laço de repetição while (linhas 15 até 18), da estrutura de seleção if (linhas 23 até 28), foi utilizado, também, o scanner (linhas 1, 10, 13, 17 e 21)? Pois é, neste momento do curso você já tem diversos comandos em seu repertório, e deve utilizá-los conjuntamente para solucionar os desafios propostos.

Para finalizar, assista à videoaula do professor Rogério Silva, que sintetiza o conteúdo da unidade.