= większe bądź równe Ich działanie możesz zobaczyć na kilku przykładach poniżej: Proste operacje logiczne możesz ze sobą łączyć przy pomocy dodatkowych operatorów: && logiczne i, || logiczne lub. Pomocna przy tym może być następująca tabelka. Pokazuje ona podstawowe operacje logiczne Operacja Wynik prawda i prawda prawda prawda i fałsz fałsz fałsz i" /> = większe bądź równe Ich działanie możesz zobaczyć na kilku przykładach poniżej: Proste operacje logiczne możesz ze sobą łączyć przy pomocy dodatkowych operatorów: && logiczne i, || logiczne lub. Pomocna przy tym może być następująca tabelka. Pokazuje ona podstawowe operacje logiczne Operacja Wynik prawda i prawda prawda prawda i fałsz fałsz fałsz i" />
Artykuł - tablice
Tablice w języku Java
11 listopada 2015
artykuł logo typy proste
Typy proste w języku Java
29 listopada 2015
pętle i instrukcje warunkowe

W tej części kursu Javy poznasz pętle i instrukcje warunkowe. Dowiesz się kiedy ich używać. Poznasz parę trików IDE wraz z dobrymi praktykami. Całość zakończysz zestawem zadań, które wykonasz samodzielnie :). Pamiętaj, że bez pętli i instrukcji warunkowych nie napiszesz żadnego „poważniejszego” programu. Do kodu!

To jest jeden z artykułów w ramach darmowego kursu programowania w Javie. Proszę zapoznaj się z pozostałymi częściami, mogą one być pomocne w zrozumieniu materiału z tego artykułu.

Operatory logiczne

Zanim przejdę do opisania instrukcji warunkowych przeczytasz coś więcej na temat operatorów logicznych.

< jest operatorem logicznym, który znasz z poprzednich arykułów. W Javie istnieje kilka operatorów logicznych:

  • == równe,
  • < mniejsze,
  • <= mniejsze bądź równe,
  • > większe,
  • >= większe bądź równe

Ich działanie możesz zobaczyć na kilku przykładach poniżej:

Proste operacje logiczne możesz ze sobą łączyć przy pomocy dodatkowych operatorów:

  • && logiczne i,
  • || logiczne lub.

Pomocna przy tym może być następująca tabelka. Pokazuje ona podstawowe operacje logiczne1

Operacja Wynik
prawda i prawda prawda
prawda i fałsz fałsz
fałsz i prawda fałsz
fałsz i fałsz fałsz
prawda lub prawda prawda
prawda lub fałsz prawda
fałsz lub prawda prawda
fałsz lub fałsz fałsz

Przekładając kilka powyższych linii na przykłady ze zmiennymi w Java wygląda to następująco:

Operatory w języku Java mają swój priorytet. Dzięki temu mnożenie jest wykonywane przed dodawaniem. Podobnie jest tutaj, operatory <, ==, < itp. mają wyższy priorytet niż && czy ||.

Instrukcje warunkowe

Instrukcja if, else if, else

Do tej pory każda linijka kodu, którą napisałeś w działającym programie została wykonana. W większych programach często musimy decydować co powinno być wykonane. Np. jeśli jest temperatura jest większa niż 37°C 2 oznacza to, że możesz być chory. Jeśli jest mniejsza niż 36°C możesz być osłabiony.

To jest najprostsza instrukcja warunkowa. Blok kodu zostanie wykonany jeśli wartość w nawiasie () będzie prawdą. W przykładzie sprawdzamy, czy temperatura jest mniejsza niż 36 stopni.

else, podobnie jak if, jest słowem kluczowym. Jeśli warunek przy instrukcji if nie zostanie spełniony wywołany zostanie zestaw instrukcji w bloku else.

W języku Java możesz także połączyć else z if jak w przykładznie poniżej:

Kod ten na początku sprawdza czy temperatura jest mniejsza niż 36°C. Jeśli ten warunek nie jest spełniony sprawdzamy czy temperatura jest mniejsza niż 37°C. Podobnie działa kolejny warunek. Jeśli żaden z nich nie jest spełniony zostaje wykonany kod w bloku po else.

Instrukcja switch

Jeśli mamy kilka warunków if następujących po sobie możemy zamienić je na inną konstrukcję – switch. Przejdźmy od razu do przykładu:

switch w przykładzie powyżej sprawdza wartość zmiennej temperature i w zależności od jej wartości wykonuje odpowiedni kod zdefiniowany w case poniżej. W naszym przypadku na ekranie zostanie wypisane Jesteś przeziębiony?.

Proszę zwróć uwagę na nowe słowo kluczowe break. switch dopasowuje case do wartość zmiennej, i wykonuje kod od pierwszego pasującego warunku do słowa kluczowego break.

W przykładzie powyżej break zostało pominięte przy case 35 oraz case 36. Wartość zmiennej pasuje do case 35. Przez pominięcie słowa kluczowego break na ekranie zostaną wypisane 3 linijki. Dzieje się tak dlatego, że słowo kluczowe break zostało wypisane dopiero przy case 37.

Warunek default zostaje wykonany jeśli żadna gałąź case nie pasuje do wartości zmiennej. Zachęcham Cię do eksperymentowania :).

Instrukcja switch jest trochę ograniczona. Sprawdzana zmienna może być zmienną kilku typów np. int czy String.

Pętle w jezyku Java

Pętla for

Pętla pozwala na wykonanie fragmentu kodu wielokrotnie. Na przykład jeśli chcemy wypisać wszystkie liczby od 0 do 10 możemy to zrobić przy pomocy pętli

Pierwsza linijka to nic innego jak właśnie definicja pętli for. Kod wewnątrz nawiasu () możemy podzielić na trzy części:

  1. inicjalizacja zmiennych,
  2. sprawdzenie warunku,
  3. zmiana wartości zmiennych.

W części inicjalizującej zmienne robimy coś co już znasz, tworzymy zmienną number i przypisujemy jej wartość 0. Kolejna część to sprawdzenie czy wartość zmiennej jest mniejsza bądź równa 10. Nowa dla Ciebie jest trzecia część a właściwie operator ++. Proszę spójrz na przykład poniżej:

Każda z trzech ostatnich linii zwiększa o jeden wartość zmiennej counter. Ostatnia wersja jest najkrótsza dlatego jest najczęściej spotykana w tego typu pętlach.

Kolejnym przykładem użycia pętli może być wyświetlenie każdego elementu tablicy

W pierwszej linijce definiujemy tablicę z kilkoma liczbami pierwszymi (jeśli nie wiesz czym są liczby pierwsze możesz przeczytać o nich w artykule na wikipedii). Następnie w pętli wyświetlamy każdy element tej tablicy.

Istnieje też uproszczona wersja pętli for. Jeśli nie musisz mieć dostępu do zmiennej reprezentującej np. indeks tablicy możesz użyć poniżej wersji pętli.

Tutaj w pierwszej linijce do zmiennej primeNumber przypisujemy kolejne elementy tablicy primenNumbers, które następnie wyświetlamy na ekranie.

Live templates

Obie wersje pętli for możesz utworzyć dużo łatwiej. Z jednego z poprzednich artykułów wiesz już o istnieniu live templates. Okazuje się, że IDE pomaga nam także w tworzeniu pętli. Wystarczy, że wpiszesz fori i naciśniesz Enter, IDE wstawi szablon pętli za Ciebie. Jeśli w ten sam sposób chcesz wstawić szablon uproszczonej pętli for możesz wpisać I i nacisnąć Enter.

Pętla while

W języku Java istnieją także inne konstrukcje pętli. Kolejnym przykładem jest pętla while. Tym razem przejdziemy od razu do przykładu

Pętla while wykonuje swoje ciało (kod wewnątrz {}) tak długo jak spełniony jest warunek zapisany pomiędzy () (lub pętla nie zostanie przez nas przerwana). Podobnie jak w poprzenich przykładach pętla wyświetla zestaw liczb, tym razem liczby od 0 do 9.

Poniżej kolejny przykład pętli while. Tym razem warunek zakończenia pętli sprawdzany jest w jej ciele. Użyliśmy do tego celu instrukcji warunkowej if. Słowo kluczowe break napotkane wewnątrz pętli natychmiast przerywa jej wykonanie (dotyczy to także pętli for).

Nieskończona pętla

Pętle mają to do siebie, że przy źle zdefiniowanych warunkach mogą wykonywać kod wewnątrz swojego ciała w nieskończoność. Jest to dość częsty błąd, szczególnie spotykany na początku przygody z programowaniem. Dlatego należy uważnie sprawdzać warunki zakończenia pętli, żeby uniknąć tego błędu.

Poniżej przykład pętli wyświetlającej 1 w nieskończoność.

Zadania

  1. Poza poznanym dzisiaj operatorem ++ istnieje też jego odpowiednik zmniejszający wartość zmiennej o 1. Jest nim --. Napisz program, który wypisze na ekranie malejąco wszystkie liczby od 20 do 10.
  2. Napisz pętlę while, która wypisze na ekranie wszystkie liczby od 10 do 20 włącznie.
  3. Napisz pętlę for, która wypisze na ekranie wszystkie liczby nieparzyste od -10 do 40.
  4. Przerób pętlę z zadania trzeciego na pętlę while.

Przygotowałem też zestaw przykładowych rozwiązań powyższych zadań. Zachęcam jednak do ich samodzielnego rozwiązania, wtedy nauczysz się najwięcej.

Podsumowanie

Dzisiaj znów nauczyłeś się paru nowych rzeczy dotyczących Javy. Mam nadzieję, że artykuł Ci się spodobał. Jeśli tak będę wdzięczny jeśli podzielisz się nim ze swoimi znajomymi. Proszę polub stronę na facebooku jeśli nie chcesz pominąć żadnego nowego artykułu. Na dzisiaj już starczy wiedzy 🙂 Miłego dnia i do następnego razu!

Newsletter

  Jeśli chcesz otrzymywać informacje o nowych artykułach na blogu prosto na Twój email, zapisz się 🙂

  1. Tzw. algebrę Boole’a
  2. Tutaj lepszym pomysłem byłyby liczby „z przecinkiem”, te omówimy w osobnym artykule.

3 Komentarze

  1. mg napisał(a):

    Mam kolejne pytanie, tym razem odnośnie „organizacji” programów w javie. Jak to powinno wyglądać? Po każdej „lekcji” mamy do zrobienia kilka dosyć prostych ćwiczeń. Czy za każdym razem powinienem robić to w nowych klasach, pakietach, projektach?
    To zagadnienie nie dotyczy stricte programowania (pisania kodu) ale wydaje mi się dosyć istotne i chyba nawet trudniejsze do „ogarnięcia” niż instrukcje pętli. Czy np te ćwiczenia po każdej lekcji tworzyć w jednym dużym projekcie „samouczekprogramisty” i dla kolejnych ćwiczeń tworzyć nowe klasy (np klasy Exercise1, 2 itd w pakiecie loops) czy stworzyć klasę dla danej lekcji (np klasę Loops w której kolejne ćwiczenia będą metodami) i wywoływać je z jakiejś głównej klasy w projekcie? a moze dla każdej lekcji tworzyć projekt gdzie takie ćwiczenia jak te z pętli będą tylko fragmentami kodu w głównej klasie, w metodzie Main?
    Jak to powinno się robić? Trochę mi trudno na te pytania odpowiedzieć i sądzę że to wymaga sporo doświadczenia w pisaniu programów trochę większych niż wypisanie liczb od 10 do 20.

    • Marcin Pietraszek napisał(a):

      W późniejszych artykułach zacząłem publikować przykładowe rozwiązania do zadań, możesz je zobaczyć na samouczkowym koncie na githubie.

      W przykładowych rozwiązaniach, w większości przypadków, tworzę osobne klasy dla każdego zadania. Każdy z artykułów znajduje się w osobnym „module” – osobny katalog modul/src, w którym zanajdują się przykłady z artykułu i propozycje rozwiązań zadań.

      W większych projektach robi się to w podobny sposób – kod, który zajmuje się jakimś zagadnieniem „pakuje się” w klasy/pakiety/moduły. Za przykład można tu wziąć bibliotekę commons-lang. Sama bilbioteka grupuje klasy, które mogą być często używane w innych programach. Klasy te uporządkowane są w pakiety, np. pakiet org.apache.commons.lang3.time zawiera klasy, które mają coś wspólnego z czasem a interfejs DateParser wewnątrz tego pakietu zawiera metody związane z parsowaniem daty.

    • Marcin Pietraszek napisał(a):

      Dodałem przykładowe rozwiązania do zadań z tego artykułu. Sukcesywnie uzupełnię pozostałe artykuły bez przykładowych rozwiązań. Mam nadzieję, że te przykłady pomogą 🙂

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *