JP SS 8 Instrukcje, pętle

background image

1

Języki Programowania

Instrukcje. Pętle

2

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

2

3

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++;

}

}

4

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

3

5

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");

6

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

4

7

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

8

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

5

9

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

i

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

6

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

7

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

8

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

9

17

Pętle zagnieżdżone

przykład: liczby Pitagorasa

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

2

+b

2

=c

2

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


Wyszukiwarka

Podobne podstrony:
JP SS 4 start Java
JP SS 10 Interfejs graficzny
JP SS 5 podstawy Java (2)
JP SS 7 Klasy i obiekty
JP SS 6 BlueJ
JP SS 6 Klasy i obiekty
JP SS 7 Typy i operacje
JP SS 4 wprowadzenie Java
JP SS 3 jezyk C klasy id 228754 Nieznany
JP SS 2 algorytmy i podstawy programowania
JP SS 9 Tablice IO wyjątki
JP SS 3 jezyk C
JP SS 5 podstawy Java
JP SS 3 jezyk C
JP SS 1 podstawy JP
JP SS 2 algorytmy id 228753 Nieznany
JP SS 5 podstawy Java
JP SS 4 start Java

więcej podobnych podstron