Informatyka I Wykład 3. Sterowanie wykonaniem programu. Instrukcje warunkowe Instrukcje pętli Dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2018
Operacje relacji (porównania) A > B A < B A <= B A >= B A == B A!= B A.equals( B ) A jest większe od B A jest mniejsze od B A jest mniejsze lub równe B A jest większe lub równe B A jest równe B A jest różne od B A jest równe B (String) 2
Instrukcja warunkowa IF Przekazuje sterowanie do jednego z dwóch bloków instrukcji A lub B w zależności od wartości wyrażenia logicznego X X == true instrukcji A X X == false instrukcji B 3
Wykonanie instrukcji warunkowej Sprawdzana jest wartość wyrażenia logicznego X Jeśli X ma wartość true, sterowanie przekazywane jest do bloku instrukcji A (instrukcje z bloku B nie zostaną wykonane) Jeśli X ma wartość false, sterowanie przekazywane jest do bloku instrukcji B (instrukcje z bloku A nie zostaną wykonane) Po wykonaniu wszystkich instrukcji wybranego bloku sterowanie jest przekazywane dalej 4
Składnia instrukcji IF if ( warunek ) else { } instr. A Wersja pełna { } ; instr. B Wersja bez ELSE 5
Przykład pełnej instrukcji IF 6
Uproszczona forma instrukcji IF nie ma sekcji ELSE w przypadku X==false blok instrukcji A jest pomijany true instrukcji A X false 7
Zagnieżdżanie oraz łączenie instrukcji warunkowych Instrukcja if może być wielokrotnie zagnieżdżona oraz łączona z innymi instrukcjami if Liczba else może być mniejsza od liczby if Należy unikać niejednoznacznych sytuacji! if ( a > 10 ) if ( a < 15 ). else. 8
Przykład niepoprawnego zagnieżdżenia instrukcji IF Jeden z bloków instrukcji nigdy nie zostanie wykonany 9
Skrócona forma instrukcji IF warunek? A : B ; Skrócona instrukcja IF zwraca wartość więc może być użyta w wyrażeniach arytmetycznych lub logicznych 10
Instrukcja wyboru SWITCH X X==A X==B X== X==N A B N inne default Instrukcja wyboru wielowariantowego: w zależności od wartości zmiennej X, jest wykonywany jeden z bloków instrukcji 11
Instrukcje pętli Instrukcje pętli służą do zorganizowania powtarzających się operacji Instrukcje wewnątrz pętli (ciało pętli) są powtarzane póki warunek pętli (wyrażenie logiczne) spełnia określone wymagania (ma wartość true) 12
Instrukcja pętli WHILE X false true powtarzanych instrukcji 13
Wykonanie instrukcji WHILE 1) Obliczana jest wartość wyrażenia logicznego warunku X 2) Jeśli X == false, pętla kończy działanie 3) Jeśli X == true, wykonuje się blok instrukcji stanowiących ciało pętli 4) Powrót do pkt. 1) 14
Składnia instrukcji WHILE while ( warunek ) Przykład instrukcji ; 15
Instrukcja pętli DO.. WHILE instrukcji X false true 16
Wykonanie instrukcji DO.. WHILE 1) Wykonać blok instrukcji 2) Obliczyć wartość X wyrażenia logicznego warunku 3) Jeśli X == true, przejść do pkt. 1 4) Jeśli X == false, pętla kończy działanie 17
Składnia instrukcji DO.. WHILE do while ( warunek ) ; instrukcji Przykład 18
Instrukcja pętli FOR Inicjalizacja int i = 0; while( i < 10 ) Czynności końcowe i++; X true instrukcji false for(int i=0; i<10; i++ ) { // } 19
Wykonanie instrukcji FOR 1) Wykonują się instrukcje umieszczone w sekcji inicjalizacji 2) Sprawdzana jest wartość wyrażenia warunku 3) Jeśli warunek == false, pętla kończy działanie 4) Jeśli warunek == true, wykonuje się blok instrukcji 5) Wykonują się instrukcje z sekcji czynności końcowe 6) Powrót do pkt. 2 20
Instrukcja pętli FOR Klasyczna postać użycia pętli for polega na wykonaniu określonej czynności N razy: for( int x=0; x<n; x++ ) { };. // czynność powtarzana 21
Zapętlenie się algorytmu Każdy rodzaj pętli może posiadać warunek, który nigdy nie zostanie spełniony powodując zapętlenie się programu Projektując pętlę należy przewidzieć zakończenie algorytmu na każdym zbiorze danych wejściowych int k = Math.random(100) - 10; while( k < 100 ) { k = k * 2; } System.out.print( k ); 22
Instrukcja BREAK Jest przeznaczona do natychmiastowego bezwarunkowego wyjścia z każdej pętli W przypadku pętli zagnieżdżonych przerwane zostanie wykonanie tylko pętli wewnętrznej (!) while( true ) { if( Math.random() < 0.1 ) break; } 23
Instrukcja CONTINUE Przerywa wykonanie pętli i powraca do jej początku Instrukcje nie wykonane w bieżącym cyklu, zostaną pominięte Instrukcja nie powoduje opuszczenia pętli for(int i=0; i<10; i++) { if( i % 2 == 0 ) continue; System.out.println(i); } 24