1. Cykle w naszym życiu
Bardzo często w naszym życiu musimy wielokrotnie wykonywać ten sam rodzaj czynności. Na przykład potrzebuję zeskanować wielostronicowy dokument. Następnie wykonujemy tę samą procedurę w kółko:
- Umieść pierwszą stronę w skanerze
- Naciśnij przycisk Skanuj
- Umieść następną stronę
Trudno to zrobić ręcznie. Byłoby miło, gdyby ten proces można było jakoś zautomatyzować.
Lub inny przykład: chcę oznaczyć wszystkie nieprzeczytane e-maile w mojej skrzynce pocztowej jako spam. Kiedyś trzeba było je wybierać pojedynczo i oznaczać jako spam.
Ale programiści to leniwi ludzie, więc ta funkcja została zautomatyzowana przez długi czas: wystarczy wybrać dowolną listę liter i nacisnąć przycisk „oznacz jako spam”, a twój klient poczty przejrzy tę listę i przeniesie każdą literę do spamu teczka.
Co mogę powiedzieć? Jest to wygodne, gdy komputer lub program może wykonać setki i tysiące rutynowych operacji jednym kliknięciem. Teraz i ty się tego dowiesz.
2. Pętlawhile
Instrukcja if-else znacznie rozszerzyła nasze możliwości programistyczne: teraz możemy pisać programy, które wykonują różne działania w różnych sytuacjach. Ale jest jeszcze jedna rzecz, która sprawi, że nasze programy będą o rząd wielkości potężniejsze — są to pętle .
W Javie są 4 rodzaje pętli: while
, for
, for-each
i do-while
. Teraz przeanalizujemy pierwszy z nich.
Instrukcja pętli while
jest bardzo prosta i składa się tylko z dwóch części: warunku i treści pętli . Ciało pętli jest wykonywane w kółko, dopóki warunek jest równy true
. Ogólna postać pętli while
to:
while (condition)
statement;
while (condition)
{
block of statements
}
Wszystko jest bardzo proste. Polecenie lub blok poleceń jest wykonywane w kółko, aż warunek pętli będzie prawdziwy - równy true
.
Działa to tak: najpierw sprawdzany jest warunek , a jeśli jest prawdziwy, wykonywana jest treść pętli ( polecenie lub blok komend ), następnie ponownie sprawdzany jest warunek i ponownie wykonywana jest treść pętli . I tak dalej, aż warunek stanie się fałszywy.
Jeśli warunek jest zawsze prawdziwy , program nigdy nie przestanie działać i zawsze będzie się zapętlać.
Jeśli warunek był fałszywy za pierwszym razem , ciało pętli nigdy nie zostanie wykonane.
3. Przykłady pętli
Oto kilka praktycznych przykładów wykorzystania pętli.
Kod | Wyjaśnienie |
---|---|
|
Na ekranie pojawi się 5 linii:
|
Kod | Wyjaśnienie |
---|---|
|
Na ekranie pojawi się 10 linii:
|
Kod | Wyjaśnienie |
---|---|
|
Program odczytuje liczby z klawiatury tak długo, jak cyfry są wprowadzane. |
Kod | Wyjaśnienie |
---|---|
|
Program będzie w nieskończoność drukował literę na ekranie C . |
Kod | Wyjaśnienie |
---|---|
|
Program wprowadzi linie z klawiatury,
do momentu wprowadzenia ciągu znaków |
Funkcja equals()
z poprzedniego przykładu służy do porównywania łańcuchów. Jeśli ciągi są równe, funkcja zwróci wynik — true
, jeśli ciągi nie są równe, zwróci false
.
4. Pętla w pętli
Podczas wprowadzenia do operatora warunkowego przekonałeś się, że można go używać do implementacji złożonej logiki poprzez łączenie wielu operatorów warunkowych. Innymi słowy, użyj if
wewnątrz if
-a.
To samo możesz zrobić z cyklami. Aby napisać pętlę w pętli, musisz napisać drugą pętlę w treści pierwszej pętli. Będzie wyglądać mniej więcej tak:
while (condition for outer loop)
{
while (condition for inner loop)
{
block of statements
}
}
Przyjrzyjmy się trzem kwestiom.
Zadanie 1 . Załóżmy, że chcemy napisać program, który wyświetli to słowo 4 razy na ekranie Mom
. Pętla jest dokładnie tym, czego potrzebujemy. A nasz kod wyglądałby mniej więcej tak:
Kod | Wyjaśnienie |
---|---|
|
Na ekranie zostaną wyświetlone 4 linie:
|
Zadanie 2. Chcemy napisać program, który wyświetli 5 liter w jednym wierszu A
. Aby to zrobić, ponownie potrzebujemy cyklu. Oto jak wyglądałby ten kod
Kod | Wyjaśnienie |
---|---|
|
Zamiast tego println() piszemy print() , w przeciwnym razie każda litera A będzie w osobnym wierszu. Na ekranie pojawi się:
|
Zadanie 3. Chcemy wyświetlić prostokąt liter A
o wielkości 4 wierszy i 5 kolumn. Ale do tego potrzebujemy już zagnieżdżonych pętli. Weźmy tylko pierwszy przykład, w którym wyprowadzamy 4 wiersze i zamieńmy kod do wyprowadzania jednego wiersza kodem z drugiego przykładu.
Kod | Wyjaśnienie |
---|---|
|
Zewnętrzna pętla jest pokazana na fioletowo i wykorzystuje zmienną n do zliczania liczby iteracji pętli. Pętla wewnętrzna jest zaznaczona na zielono. Wykorzystuje zmienną do zliczania liczby iteracji pętli m . Konieczne jest jawne przesunięcie kursora do następnej linii po zakończeniu pętli wewnętrznej. W przeciwnym razie wszystkie litery, które program wydrukuje, będą w tej samej linii. Na ekranie pojawi się:
|
Pętle zewnętrzne i wewnętrzne muszą wykorzystywać różne zmienne do zliczania liczby wykonanych już iteracji. Musiałem też dodać komendę System.out.println()
po wewnętrznej pętli, bo wypisuje litery A
w jednej linii, a po wypisaniu wszystkich liter ktoś musi przesunąć kursor do nowej linii.
5. Porównanie pętli: Java vs Pascal
Wielu z Was uczyło się Pascala w szkole, więc aby ułatwić Wam zrozumienie materiału, porównamy pętle while
w Pascalu i Javie. Jeśli nie znasz Pascala, po prostu pomiń ten materiał.
Pascala | Jawa |
---|---|
|
|
|
|
|
|
|
|
|
|
GO TO FULL VERSION