background image

Języki Programowania 

 

 

Instrukcje. Pętle 

 

wyrażenie 

if-else 

składnia 

if

 (condition) 

      statement1 

 

else

 statement2; 

 warunek 

– boolean 

wyrażenia 

instrukcja pojedyncza 

blok instrukcji 

//example of if-else 

  int v=5; 
  int summ=0; 
  

if(

 

v > 0

 

){ 

      sum += v*v; 
      v++; 

      } 
  

else

 

summ = 42; 

Uwaga: 

warunek jest wyrażeniem boolean i może 
używać arytmetycznych i logicznych relacji 

ważne jest pierszeństwo reguł 

bloki powinny być zdefiniowane w 
nawiasach { } 

background image

wyrażenie 

if 

skąłdnia 

if

 (condition) 

      action; 

   
 warunek 

– boolean 

działanie (action) 

instrukcja pojedyncza 

blok instrukcji 

//example of if 

  int v=5; 
  int summ=0; 
  

if(

 

v > 0

 

){ 

      sum += v*v; 
      v++; 

      }

 

Zagnieżdżanie  

if

  

można stosować kolejny if 
jako działanie dla 
spełnionego warunku lub dla 
else 

powinno się stosować 
wcięcia 

należy stosować nawiasy dla 
wyrażenia 

if

 i dla 

else 

(które wskazują 
przynależność) 

 

 

//nested if example 

  boolean isLeapYear; 
 

if

 (year % 4 == 0) 

     if

 (year % 100 != 0) 

         isLeapYear = false; 
       

if

 (year % 1000 == 0) 

           isLeapYear = true; 
    

else

 isLeapYear = false; 

}

 

background image

Porównywanie wartości zmiennoprzecinkowych 

należy rzadko użyć operatora równości (

==

kiedy porównuje się 

wartości 

float

 lub 

double

 

dwie liczby zmiennoprzecinkowe są dokładnie równe wtedy kiedy 
mają dokładnie taką samą reprezentację bitową

 

obliczenia często powodują nieznaczne różnice, które mogą być bez 
znaczenia 

w wielu sytuacjach można przyjąć, że dwie liczby 
zmiennoprzecinkowe są "wystarczająco blisko", nawet jeśli nie są 
dokładnie równe 

można przyjąć następującą technikę: 
 

 

 

gdy różnica pomiędzy tymi dwoma liczbami jest mniejsza niż wartość 
tolerancji, są one uznane za równe  

tolerancja może wynosić np.  0.000001 

 

if (Math.abs(f1 - f2) < TOLERANCE) 
   System.out.println ("Essentially equal");
 

Porównywanie łańcuchów (

Strings) 

pamiętaj: w Java ciąg znaków jest 

obiektem 

należy użyć metody 

equals

 

do porównania znaków z 

zachowaniem kolejności 

metoda 

equals

 zwraca typ boolean 

if (name1.

equals

(name2)) 

   System.out.println ("Same name"); 

background image

Porównywanie obiektów 

 

operator 

==

 

może być stosowany do obiektów – zwraca  

true 

jeśli dwie referencje są aliasem 

 

metoda 

equals

 jest zdefiniowana dla wszystkich 

obiektów, ale może być redefiniowana w klasie 

String 

 

Operator warunkowy  

? : 

Java 

posiada operator warunkowy do porównania dwóch wyrażeń 

jego składnia: 

condition

 ? 

expression1

 : 

expression2 

 

jeśli 

condition

 jest true

expression1

 jest wykonywane;  

jeśli 

jest  false, wykonywane jest 

expression2

 

background image

wyrażenie 

switch 

 

każdy 

case

 

zawiera wartość oraz listę wyrażeń (instrukcji) 

sprawdzane są kolejne 

case 

switch

 (

expression

   

case

 

value1

      

statement-list1 

   

case

 

value2

      

statement-list2 

   

case

 

value3

:

 

      

statement-list3 

   

case

  

... 

switch 

case 

 

jeśli 

expression 

ma wartość 

value2

następuje skok do: 

10 

wyrażenie

 

switch 

c.d. 

 

często stosujemy 

break

 do przerwania listy 

sprawdzeń 

wyrażenie 

break

 przenosi sterowanie na 

koniec 

switch

 

czasami jest to ważne 

w wyrażeniu 

switch

 

rezultatem musi być 

typ całkowity: 

int, char, byte, short

 

nie można stosować 

boolean

float, 

double 

lub innych typów całkowitych 

switch

 (option) 


   case 'A': 
      aCount++; 
      

break

   case 'B': 
      bCount++; 
      

break

   case 'C': 
      cCount++; 

      break

background image

11 

wyrażenie

 

switch 

c.d. 

 

switch

 ma opcjonalnie 

default 

case 

domyślny case  nie ma przypisanej wartości i używa słowa 

default 

jeśli żaden case nie pasuje to wykonuje się 

default

 

public void switchExample(int digit){  
        switch (digit){ 
            case 1: System.out.println("First ");  
            case 2: System.out.println("Second "); 
            case 3: System.out.println("Third "); 
            

default

: System.out.println("Other "); 

        } 
 } 

12 

Pętle 

 repetycje

(lub 

iteracje

pozwalają wykonywać wyrażenia wiele razy 

często nazywamy je 

pętlami

 (

loops) 

podobnie jak wyrażenia warunkowe są sterowane przez wyrażenie 
typu boolean 

Java 

ma 3 rodzaje pąetli: 

while

 

do

 

for

 

Programista powinien wybrać odpowiedni rodzaj pętli w zależności 
od sytuacji 

background image

13 

wyrażenie 

while 

int count = 1; 

while

 (count <= 5) 


   System.out.println (count); 
   count++; 
}
 

jeśli wyrażenie w 
pętli  

while

 ma 

początkowo false to 
wyrażenia w pętli nie 
wykonają się 

dlatego ciało pętli 

while

 

wykona się 

zero lub więcej razy 

14 

Obliczanie kolejnych potęg liczby 2 (

Java JDK

przy okazji, proszę zwrócić uwagę, jak konwertować String 

args [0]

 do 

liczby całkowitej (

int

)

 

przykłady z    

while 

background image

15 

Pętle nieskończone 

ciało pętli 

while 

w końcu musi się dać stan false 

jeśli nie to mamy pętlę nieskończoną 

infinite loop

która będzie wykonywana, dopóki użytkownik nie 
przerwie programu 

jest to częsty błąd logiczny 

należy zawsze dokładnie sprawdzić logikę 
programu, aby upewnić się, że pętle zakończą się 
normalnie 

Entore Buggati:  
„I build cars to go, not to stop." 

int count = 1; 

while

 (count <= 25) 


   System.out.println (count); 
   count = count - 1; 
}
 

pętla będzie się wykonywać 
aż nie zostanie przerwania  
(Ctrl-C w DOS) lub do 
momentu błędu 
przepełnienia 

16 

Zagnieżdżanie pętli 

Ile razy wystąpi string 

"Here”

 ? 

count1 = 1; 

while

 (count1 <= 10) 

   count2 = 1; 
   

while

 (count2 <= 20) 

   

      System.out.println ("Here"); 
      count2++; 

   } 

   count1++; 

} 

odpowiedź: 10 * 20 = 200 razy 

background image

17 

Pętle zagnieżdżone 

przykład: liczby Pitagorasa 

liczby(a, b, c) spełniające regułę: a

2

+b

2

=c

zadanie: podać wszystkie liczby Pitagorasa 
dla a, b 

 100 

class

 Pitagoras{ 

  static

 

void

 allTriples(

int

 n){ 

    for (

int

 a=1; a <= n; a++) 

       for (

int

 b = a; b <= n; b++){ 

           

int

 c = intSqrt(a*a+b*b); 

           if (a*a+b*b == c*c) 
              System.out.println(”(”+a+”,”+b+”,”+c+”)”); 
       } 
  } 
  

static 

int

 intSqrt(

int

 n){ 

    return (

int

)(Math.sqrt(n)); 

  } 

18 

wyrażenie 

do 

do 

   

statement


while

 (

condition

wyrażenie jest wykonywane raz na 
początku, a potem jest warunek jest 
spełniony 

powtarza się dopóki nie będzie 

false 

int count = 0; 
do 

   count++; 
   System.out.println(count); 
} while (count < 5);

 

background image

10 

19 

wyrażenie 

for 

initialization

while

(

condition


   statement1; 
   statement2; 
   ... 
   

increment

for

(

initialization

;

condition

;

increment


   statement1; 
   statement2; 
   ... 

// for loop – example 
// calculate N! 

int sum = 0; 

for

 (int i=1; i<=N; i++) 

   sum+=1; 
System.out.println(sum); 

w inicjalizacji można 

deklarować

 

zmienną 

20 

wyrażenie  

for 

Podobnie jak dla 

while

, warunek dla 

for

 jest 

sprawdzany przed wykonaniem ciała pętli 

więc ciało pętli 

for

 

wykona się 0 lub więcej razy 

pętle 

for

 

są odpowiednie do wykonania wyrażenia z 

określoną liczbą powtórzeń 

każde z wyrażeń w nagłówku pętli 

for

 jest oopcjonalne 

initialization

 

condition

 

increment

 

for

(

initialization

;

condition

;

increment


   ... 

background image

11 

21 

przerywanie pętli 

składnia:  

break; 

przerywa  (lub przełącza) pętle 
natychmiastowo  

może być używane tylko dla: 

  

while 

  

for 

  

do-while 

lub w wyrażeniu 

switch

  

używane, gdy chcemy wyjść z pętli 
przed "normalnym" zakończeniem, np. 
gdy szukany element został już 
znaleziony 

{// server 

  while(true{ 
    acceptRequest(); 
    if (timeOut()) 
             

break; 

    provideService(); 
  } 

22 

kontynuacja pętli 

składnia:  

continue 

 

skok na początek ciała pętli 

używane aby rozpocząć następną iterację przerywając dalsze 
wykonywanie ciała pętli 

/** read numbers from keyboard until you get 0. 
 *  ignore numbers < 10 or > 60 
 *  write an average  
 */ 

Public static void readComputeAverage(){ 
  java.util.Scanner in = new java.util.Scanner(System.in); 
  System.out.println(„Please enter the number”); 
  int sum = 0, counter = 0; 
  while(true){ 
    int n = in.nextInt(); 
    if(n==0) 
      

break;

       

//zakończenie 

    if(n <20 || n > 60) 
      

continue;

    

//kontynuacja 

    sum += n; 
    counter++; 
  } 

// end while 

 System.out.println(”Average is ” + (float)sum/counter); 

background image

12 

23 

zakończenie metody 

 instrukcja 

return 

przerywa metodę natychmiast 

może zwracać wartość 

metody które zwracają rezultat 

muszą mieć słowo 

return

  

return stanKonta+16; 

 metody bez rezultatu (np. void

muszą mieć słowo 

return

  

return; 

„klasyczni” programiści unikają umieszczania 

return 

wewnątrz pętli