sábado, 17 de março de 2012

Estruturas de Repetição II

Nesta lição vamos aprender a usar as estruturas de repetição while e do-while.

while quer dizer enquanto. Funciona da seguinte maneira enquanto a condição é verdadeira o laço é executado repetidas vezes. Vejamos a estrutura:

while (CONDIÇÃO){
           INSTRUÇÕES
}

Diferente do for o while tem só a condição como critério de repetição. Enquanto a condição é verdadeira o laço acontece, quando a condição for falsa o laço parará de executar as instruções.

Do quer dizer fazer. O algoritmo executa primeiro para depois conferir a condição. Esta é a vantagem: As instruções são executadas pelo menos uma vez com o do-while. Vejamos:

do{
      INSTRUÇÕES
     }while(CONDIÇÃO);

O incremento no caso do while e do-while acontece dentro das instruções, ou alguma leitura contradiz a condição. Às vezes o seu while pode ter uma condição sempre verdadeira, então ele sempre repetirá as instruções, mas é sempre bom ter uma condição de parada acessível para o usuário.

Prática

No exemplo a seguir teremos um algoritmo que separa em colunas os números pares e os números ímpares:

public class whileImpar {
    public static void main(String[] args) {

        int i = 0;
        System.out.println("Números impares e pares");
//Observe que usei o \t para esse efeito.
//É como o TAB que usamos para espaçamento.
        System.out.println("Pares \tImpares");
//i é 0, i será incrementado em i+=1 até ter valor 10, a condição será satisfeita e fim do laço.
//i % 2 == 0, todo número par dividido por 2, terá resto 0.
//i % 2 == 1, todo número impar dividido por 2, terá resto 1.
        while (i <= 10) {
            if (i % 2 == 0) {
                System.out.print(i);
            }
            if (i % 2 == 1) {
                System.out.println("\t" + i);
            }
            i++;
        }
    }

}

No exemplo abaixo, o usuário verá um menu com as opções de cadastrar, ver cadastro e sair:

import java.util.Scanner;

public class whileMenu {
    public static void main(String[] args) {
        int escolha = 1, idade = 0;
        String nome = "";
        Scanner input = new Scanner(System.in);
//De acordo com o que vimos do conceito de while e do-while
//Aqui poderia ser usado o do-while tranquilamente, já que escolha é inicializado acima com 1
        while (escolha == 1) {
            System.out.println("Bem-vindo ao JoyaSoftware!");
            System.out.println("1 - Cadastrar");
            System.out.println("2 - Ver Cadastro");
            System.out.println("3 - Sair");
            int opcao = input.nextInt();
//Usei o switch-case para atender as opções do menu
            switch (opcao) {
            case 1:
                if (idade == 0 || nome == "") {
                    System.out.println("Digite seu nome: ");
                    nome = input.next();
                    System.out.println("Digite sua idade: ");
                    idade = input.nextInt();
                } else {
//Que pena! ainda não estudamos arrays ou ainda arraylist. Risos!
                    System.out.println("Você já preencheu o cadastro!");
                    System.out.println("digite um caractere e dê enter para voltar.");
//nenhuma variável receberá a leitura do caractere ou palavra que o usuário digitar
                    input.next();
                }
                break;
            case 2:
                System.out.println("Nome: " + nome);
                System.out.println("idade: " + idade);
                System.out.println("digite um caractere e dê enter para voltar.");
                input.next();
                break;
            default:
//lembre while(escolha == 1), se escolha receber 2 a condição será falsa.
                escolha = 2;
            }
        }

    }

}

Este algoritmo pede a leitura de 2 números, sendo que o 1º número só recebe números naturais maiores que
100 e o 2º número os menores que 20:

import java.util.Scanner;

public class dowhileMaior {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int num1 = 0, num2 = 0;
//Leitura do 1º número, executando uma vez e sempre retornando se num1<100
        do {
            System.out.println("Informe um número natural maior que 100: ");
            num1 = input.nextInt();

        } while (num1 < 100);
//Leitura do 2º número, executando uma vez e sempre retornando se num2>20
        do {
            System.out.println("Informe um número natural menor que 20: ");
            num2 = input.nextInt();

        } while (num2 > 20);
    }

}

Neste exemplo o algoritmo concede ao usuário uma condição de parada, onde ele pode sair do programa:

import java.util.Scanner;
public class dowhileSair {
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        String nome;
        int sair=1;
//Leitura do seu nome
        System.out.println("Digite seu nome: ");
        nome = input.next();
//Esta condição de parada é muito usada quando o usuário pode digitar
//vários números e pode parar digitando 0 ou ainda -1.
//Ele pode digitar quantos números ele quiser.       
        do{
            System.out.println("Bem vindo, "+nome+" ao do While!");
            System.out.println("Para sair a condição deverá ser falsa!");
            System.out.println("Digite 0 e pressione enter para sair!");
            sair = input.nextInt();
//Enquanto sair é diferente de 0 retorne a executar o laço.
        }while(sair != 0);
    }

}

Bom, terminamos com esta lição o tópico das estruturas de repetição. Aguardem iremos aprender nas próximas aulas sobre vetores(arrays).

Tito 2:11-13
11 - Porque a graça de Deus se há manifestado, trazendo salvação a todos os homens,
12 - Ensinando-nos que, renunciando à impiedade e às concupiscências mundanas, vivamos neste presente século sóbria, e justa, e piamente,
13 - Aguardando a bem-aventurada esperança e o aparecimento da glória do grande Deus e nosso Salvador Jesus Cristo;

Nenhum comentário:

Postar um comentário

Related Posts Plugin for WordPress, Blogger...