Rozdział 5 - Pętle - Ten sam kod z użyciem różnych pętli

Spójrzmy na dwa przykłady kodu zapisane za pomocą każdego z rodzajów pętli.

Wyświetlanie kwadratu podanej liczby

Poniższe fragmenty programów (które są treścią metod main) wykonują to samo zadanie używając różnych rodzajów pętli:

  • pobierają od użytkownika jedną liczbę,
  • wypisują jej kwadrat,
  • pytają użytkownika, czy chce zakończyć działanie programu.

Pętla while:

Nazwa pliku: KwadratLiczbyWhile.java
int x;
String czyKoniec = "n";

while (!czyKoniec.equals("t")) {
  System.out.print("Podaj liczbe: ");
  x = getInt();

  System.out.println("Kwadrat tej liczby wynosi: " + (x * x));

  System.out.print("Czy chcesz zakonczyc program? [t/n] ");
  czyKoniec = getString();
}

W powyższym przykładzie musieliśmy przypisać zmiennej czyKoniec wstepną wartość inną niż "t", ponieważ w przeciwnym razem pętla nie wykonałaby się ani razu.

Pętla do..while:

Nazwa pliku: KwadratLiczbyDoWhile.java
int x;
String czyKoniec;

do {
  System.out.print("Podaj liczbe: ");
  x = getInt();

  System.out.println("Kwadrat tej liczby wynosi: " + (x * x));

  System.out.print("Czy chcesz zakonczyc program? [t/n] ");
  czyKoniec = getString();
} while (!czyKoniec.equals("t"));

W tym przykładzie pętla wykona się co najmniej raz, więc wartość zmiennej czyKoniec możemy nadać pod koniec każdej iteracji pętli.

Pętla for:

Nazwa pliku: KwadratLiczbyFor.java
String czyKoniec = "n";

for (int x; !czyKoniec.equals("t"); czyKoniec = getString()) {
  System.out.print("Podaj liczbe: ");
  x = getInt();

  System.out.println("Kwadrat tej liczby wynosi: " + (x * x));
  System.out.print("Czy chcesz zakonczyc program? [t/n] ");
}

W tej wersji programu, w instrukcji inicjalizującej pętlę, definiujemy zmienną x, do której będziemy przypisywać liczbę pobraną od użytkownika. W instrukcji kroku wstawiliśmy przypisanie do zmiennej czyKoniec informacji podanej przez użytkownika, czy chce on zakończyć działanie programu.

Wypisanie kolejnych liczb parzystych

Poniższe fragmenty kodów wypisują kolejne liczby parzyste mniejsze bądź równe 20.

Pętla while:

Nazwa pliku: WypiszParzysteWhile.java
public class WypiszParzysteWhile {
  public static void main(String[] args) {
    int x = 0;

    while (x <= 20) {
      System.out.print(x + " ");
      x += 2;
    }

    System.out.println(); // wypisz pusta linie
    System.out.println("x na koncu jest rowne " + x);
  }
}

Przykładowy wynik działania powyższego programu:

0 2 4 6 8 10 12 14 16 18 20 x na koncu jest rowne 22

Pętla do..while:

Nazwa pliku: WypiszParzysteDoWhile.java
public class WypiszParzysteDoWhile {
  public static void main(String[] args) {
    int x = 0;

    do {
      System.out.print(x + " ");
      x += 2;
    } while (x <= 20);

    System.out.println(); // wypisz pusta linie
    System.out.println("x na koncu jest rowne " + x);
  }
}

Powyższy program wypisuje na ekran dokładnie takie same dane, jak przykład z pętlą while.

Petla for:

Nazwa pliku: WypiszParzysteFor.java
public class WypiszParzysteFor {
  public static void main(String[] args) {
    for (int x = 0; x <= 20; x += 2) {
      System.out.print(x + " ");
    }

    // spowoduje blad kompilacji - zmienna x juz tutaj nie istnieje!
    //System.out.println("x na koncu jest rowne " + x);
  }
}

Każda z pętli ma takie samo zadania – wypisanie liczb parzystych od 0 do 20 (włącznie). Na końcu wypisujemy też wartość zmiennej x po zakończeniu każdej pętli – poza ostatnim programem, w którym korzystamy z pętli for.

Należy zwrócić uwagę, że w przypadku pętli for, użyta zmienna nie istnieje poza pętlą i dlatego ostatnia linijka musi być zakomentowana – inaczej program by się w ogóle nie skompilował.

Dodaj komentarz

Twój adres email nie zostanie opublikowany.