Pętle WHILE - PĘTLA WHILE |
Instrukcje dodatkowe - Programowanie w języku JAVA | ||||||
Wpisany przez Administrator | ||||||
Strona 2 z 4
PĘTLA WHILEPrzyjrzyjmy 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ą).
|