Szukaj

1944

Reklama

Chroń swoje dziecko

w Internecie
Reklama

za darmo ...

Kalendarz

Reklama

Jak odbierasz ...

Wygląd portalu
 

"Musicie od siebie wymagać, nawet jeśli inni by od Was nie wymagali..." JP2 [100%]

Reklama
Pętle WHILE - PĘTLA WHILE PDF Drukuj Email
Ocena użytkowników: / 2
SłabyŚwietny 
Instrukcje dodatkowe - Programowanie w języku JAVA
Wpisany przez Administrator   
Spis treści
Pętle WHILE
Przejdź do pętli WHILE
Przejdź do instrukcji BREAK
Przejdź do instrukcji CONTINUE
Wszystkie strony

 

PĘTLA WHILE

Przyjrzyjmy się jeszcze raz programowi z poprzedniej lekcji. Przypomnijmy ten program:

{ Napisz program, który tworzy macierz liczb całkowitych podanych przez użytkownika. O ilości elementów w macierzy (czyli jej rozmiarze) również decyduje użytkownik. Po zakończeniu wprowadzania danych przez użytkownika program wyświetla po kolei wszystkie wartości. }

Listing do programu:

Przypomnijmy, że użytkownik, aby zakończyć wprowadzanie danych musiał podać wartość zero lub mniejszą niż zero., po czym program przechodził do wyświetlania pobranych od użytkownika danych. Jeśli użytkownik podał od razu wartość równą zero lub mniejszą niż zero, program kończył procedurę wprowadzania danych i rozpoczął wyświetlanie.. elementów tablicy pustej:

Wyraźnie jest napisane, że tablica zawiera 0 elementów, natomiast wyświetlony jest element pierwszy {którego nie ma} równy zero. Skąd ten błąd i dlaczego tak się dzieje?

 

Odpowiedź jest prosta i kryje się w budowie pętli do..while. Jeszcze raz przypomnijmy sobie jej składnię i działanie:

do{

instrukcje

}while(warunek jest spełniony);

Zauważ, że program sprawdza, czy dany warunek jest spełniony dopiero po pierwszym przebiegu instrukcji. Czyli pętla wykona się przynajmniej jeden raz, zanim sprawdzony zostanie warunek, czy powinna się dalej wykonywać. Stąd problem z błędem, który przedstawiono na przykładzie powyżej. Dlaczego jednak program nie zawiesił się, tylko wyświetlił nieistniejący element pustej tablicy? Odpowiedź jest również bardzo prosta: tablica nie jest pusta, tylko zawiera 1000 elementów typu double, które zainicjowane są z wartością zero.

Oznacza to, że w momencie tworzenia tablicy zdefiniowano, że ma ona 1000 elementów i od razu przypisano jej wartość zero.  Zrobiliśmy tak dlatego,że język Java nie zawiera prostego sposobu na zdefiniowanie tzw. tablic dynamicznych, czyli takich,których rozmiar może być zmieniany w miarę potrzeb. Możliwości takie mają inne języki,natomiast Java, głównie ze względu na kwestie stabilności działania programów w niej napisanych nie daje takiej opcji. Dlatego tworząc tablicę, w której nie wiemy, ile elementów będzie wykorzystanych stworzyliśmy ją bardzo dużą, aby mieć pewność, że nie będzie za mała. Również ze względu na specyfikę języka, zainicjowaliśmy tablicę wypełniając ją "zerami".

Przejdźmy teraz do rozwiązania naszego problemu. W jaki sposób zapobiec wyświetlaniu, w naszym programie elementów, które nie istnieją?

Jedną z możliwości jest wykorzystanie innej pętli, takiej, która od razu sprawdza, czy w ogóle choć raz powinny się wykonać zawarte w niej instrukcje. Taką pętlą jest iteracja while(). Składnia pętli jest taka:

while (warunek jest spełniony)

{

instrukcje

}

w porównaniu do pętli do..while różni się ona właśnie tym, że instrukcja sprawdzająca wystąpienie warunku wykonywania przesunięta jest na początek.

Oto, jak powinniśmy zmodyfikować nasz program, aby wszystko działało jak należy:

Oto efekt uruchomienia programu dla dwóch wariantów:

a)tablica zawiera jakieś elementy:

b) tablica jest pusta

Zadanie dla utrwalenia:

Zadanie 1: napisz program, który prosi użytkownika o podawanie wartości ujemnych lub równych zero. jeśli użytkownik poda wartość większą niż zero to program wyświetla wprowadzone dane i przechodzi do ich wyświetlenia (jeśli takowe w ogóle są).