• Nie Znaleziono Wyników

Podstawy programowania

N/A
N/A
Protected

Academic year: 2022

Share "Podstawy programowania"

Copied!
35
0
0

Pełen tekst

(1)

Podstawy programowania

Laboratorium 3 - operatory oraz instrukcje warunkowe i wyboru

mgr inż. Krzysztof Szwarc

krzysztof@szwarc.net.pl

Sosnowiec, 9 marca 2020

(2)

Wstęp do operatorów

Definicja

Operator jest konstrukcją językową zwracającą pewną wartość.

Operacje wykonywane są na operandach, czyli argumentach operatorów. Przykładowo dla operacji odejmowania 7 − 2 operandami operatora odejmowania -są cyfry 7 oraz 2.

(3)

Operatory arytmetyczne

Znak Opis Przykład Wynik

+ Dodawanie 2 + 2 4

- Odejmowanie 2 - 2 0

* Mnożenie 2 * 2 4

/ Dzielenie całkowite 2 / 2 1

% Reszta z dzielenia (modulo) 2 % 2 0

+ Unarny operator plus +2 2

- Unarny operator minus -2 -2

(4)

Przykład

int n u m b e r O n e = 5;

int n u m b e r T w o = 2;

int r e s u l t = n u m b e r O n e - n u m b e r T w o ; // 3 r e s u l t = n u m b e r O n e + n u m b e r T w o ; // 7

S y s t e m . out . p r i n t ( n u m b e r O n e * n u m b e r T w o ) ;// 10 char c h a r a c t e r = ’ k ’;

S y s t e m . out . p r i n t ( c h a r a c t e r ) ; // k S y s t e m . out . p r i n t (+ c h a r a c t e r ) ; // 107

(5)

Operatory inkrementacji i dekrementacji

Operator inkrementacji (++) zwiększa wartość zmiennej o je- den, a operator dekrementacji (- -) ją zmniejsza. Oba operatory występują w postaci przedrostkowej (++x) oraz przyrostkowej (x++). Dla pierwszej formy (nazywanej również preinkremen- tacją/predekrementacją) zwiększenie wartości następuje przed użyciem zmiennej, a dla drugiej (nazywanej również postinkre- mentacją/postdekrementacją) po jej wykorzystaniu.

(6)

Przykład

int n u m b e r O n e = 5;

int n u m b e r T w o ;

n u m b e r T w o = ++ n u m b e r O n e ;

// n u m b e r O n e = 6; n u m b e r T w o = 6;

n u m b e r T w o = n u m b e r O n e ++;

// n u m b e r O n e = 7; n u m b e r T w o = 6;

n u m b e r T w o = n u m b e r O n e - -;

// n u m b e r O n e = 6; n u m b e r T w o = 7;

n u m b e r T w o = -- n u m b e r O n e ;

// n u m b e r O n e = 5; n u m b e r T w o = 5;

(7)

Zadania

1 Napisz program pobierający od użytkownika dwie liczby całkowite, obliczający ich średnią arytmetyczną

i wyświetlający wynik.

2 Dla napisanego w punkcie 1 programu sprawdź jaki wynik zostanie zwrócony dla wartości 3 oraz 4.

3 Zainicjuj zmienną typu byte wartością 128.

4 Zainicjuj zmienną typu byte wartością 127, po czym dokonaj postinkrementacji. Wypisz wynik.

5 Zainicjuj zmienną o nazwie liczba typu double wartością 1, po czym wypisz wynik dzielenia jej przez zero.

(8)

Zadania

6 Zmiennej z zadania 5 przypisz wartość 0, po czym wypisz wynik dzielenia jej przez zero.

7 Zainicjuj zmienną o nazwie liczba typu int wartością 1, po czym wypisz wynik dzielenia jej przez zero.

8 Napisz konwerter walut przeliczający złotówki na dolary oraz euro.

9 Napisz program wyznaczający moment obrotowy przenoszony przez sprzęgło dla mocy N i prędkości obrotowej ns podanej przez użytkownika (wzór:

M = 9550 ·nN

s).

10 Zainicjuj zmienną typu float wartością 100000001 i odejmij od niej 100000000. Wypisz wynik.

(9)

Zadania

11 Pobierz od użytkownika liczbę całkowitą i wypisz jej resztę z dzielenia przez 2 oraz 1. Wpisz liczby od 1 do 5.

12 Pobierz od użytkownika liczbę zmiennoprzecinkową i wypisz jej resztę z dzielenia przez 2 oraz 1. Wpisz liczby od 1 do 5 oraz 3,5.

(10)

Operatory porównawcze i logiczne

Znak Opis Przykład Wynik

== Równy 2 == 2 true

!= Różny 2 != 2 false

>= Większy bądź równy 2 >= 2 true

<= Mniejszy bądź równy 2 <= 2 true

<,> Mniejszy, większy 2 <2 false

&& Koniunkcja true && false false

k Alternatywa true k false true

! Negacja !true false

(11)

Przykład

int n u m b e r O n e = 2;

int n u m b e r T w o = 1;

b o o l e a n r e s u l t ;

r e s u l t = n u m b e r O n e == n u m b e r T w o ; // f a l s e

r e s u l t = n u m b e r O n e != n u m b e r T w o ; // true r e s u l t = n u m b e r O n e >= n u m b e r T w o ; // true r e s u l t = n u m b e r O n e <= n u m b e r T w o ;

// f a l s e

r e s u l t = n u m b e r O n e < n u m b e r T w o ; // f a l s e r e s u l t = n u m b e r O n e > n u m b e r T w o ; // true r e s u l t = true && f a l s e; // f a l s e

r e s u l t = true || f a l s e; // true r e s u l t = !true; // f a l s e

(12)

Porównywanie liczba zmiennoprzecinkowych

d o u b l e n u m b e r = 0.1;

n u m b e r + = 0 . 1 ; // 0.2

n u m b e r + = 0 . 1 ;

// 0 . 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4

S y s t e m . out . p r i n t ( 0 . 3 = = n u m b e r ) ; // f a l s e

(13)

Porównywanie liczba zmiennoprzecinkowych - rozwiązanie

d o u b l e n u m b e r = 0.1;

n u m b e r + = 0 . 1 ; n u m b e r + = 0 . 1 ;

d o u b l e e p s i l o n = 0 . 0 0 0 0 0 1 ;

d o u b l e a b s o l u t e = Math . abs ( number - 0 . 3 ) ; S y s t e m . out . p r i n t ( absolute <= e p s i l o n ) ; // true

(14)

Zadania

1 Napisz program pobierający od użytkownika dwie liczby całkowite i wyświetlający informację czy pierwsza liczba jest większa od drugiej.

2 Napisz program pobierający od użytkownika trzy liczby całkowite i wyświetlający informację czy pierwsza liczba jest większa od drugiej oraz trzeciej.

(15)

Operatory bitowe

Znak Opis Przykład Wynik

& Koniunkcja binarna 3 & 2 2

| Alternatywa binarna 3 | 2 3

˜ Negacja binarna ˜2 -3

ˆ Alternatywa wykluczająca

(XOR) 3ˆ2 1

<< Przesunięcie arytmetyczne

w lewo 2 << 1 4

>> Przesunięcie arytmetyczne

w prawo 2 >> 1 1

>>>

Przesunięcie arytmetyczne w prawo z wypełnieniem

zerami

-2 >>> 1 2147483647

(16)

Zadanie

1 Napisz program z wykorzystaniem operatora przesunięcia arytmetycznego w prawo z wypełnieniem zerami

przesuwający liczbę 2 o 1 miejsce.

(17)

Operatory przypisania

Założenie: zmienna typu int o nazwie x ma wartość 1.

Znak Opis Przykład Wynik

= Przypisanie x = 2 2

+= Zwiększenie wartości x += 2 3

-= Zmniejszenie wartości x -= 2 -1

*= Pomnożenie wartości x*=2 2

/= Podzielenie całkowite wart. x /= 2 0

%= Reszta z dzielenia wart. x %= 2 1

&= Koniunkcja wartości x &= 2 0

|= Alternatywa wartości x |= 2 3

ˆ= XOR wartości x ˆ= 2 3

<<= Przesunięcie wart. w lewo x <<= 2 4

>>= Przesunięcie wart. w prawo x >>= 2 0

>>>= Przesunięcie i wyp. zerami x >>>= 2 0

(18)

Instrukcja warunkowa

Opis

Instrukcja warunkowa w Javie ma następującą postać:

if ( c o n d i t i o n ) i n s t r u c t i o n ;

Jedynie w momencie, gdy warunek ma wartość true następuje wykonanie instrukcji.

(19)

Instrukcja warunkowa

Wykonanie wielu instrukcji

Aby wykonać wiele instrukcji dla jednego warunku należy dodać nawiasy klamrowe zgodnie z poniższym przykładem:

if ( c o n d i t i o n ) { i n s t r u c t i o n 1 ; i n s t r u c t i o n 2 ; ...

i n s t r u c t i o n N ; }

(20)

Instrukcja warunkowa

Słowo kluczowe else

Jeżeli chcemy wykonać dodatkowe instrukcje w momencie, gdy warunek nie jest spełniony należy wykorzystać słowo kluczowe else zgodnie z poniższym przykładem:

if ( c o n d i t i o n ) { i n s t r u c t i o n 1 ; i n s t r u c t i o n 2 ; }

else {

i n s t r u c t i o n 3 ; i n s t r u c t i o n 4 ; }

(21)

Instrukcja warunkowa - przykład 1

b o o l e a n i s D i v i d e d B y T w o = 7 % 2 = = 0 ; if ( i s D i v i d e d B y T w o )

S y s t e m . out . p r i n t l n (" L i c z b a jest p o d z i e l n a p r z e z dwa ") ;

else

S y s t e m . out . p r i n t l n (" L i c z b a nie jest p o d z i e l n a p r z e z dwa ") ;

(22)

Instrukcja warunkowa - przykład 2

if ( 7 % 2 = = 0 )

S y s t e m . out . p r i n t l n (" L i c z b a jest p o d z i e l n a p r z e z dwa ") ;

else

S y s t e m . out . p r i n t l n (" L i c z b a nie jest p o d z i e l n a p r z e z dwa ") ;

(23)

Instrukcja warunkowa - przykład 3

if ( 7 % 2 = = 0 ) {

S y s t e m . out . p r i n t l n (" L i c z b a jest p o d z i e l n a p r z e z dwa ") ;

}

else {

S y s t e m . out . p r i n t l n (" L i c z b a nie jest p o d z i e l n a p r z e z dwa ") ;

}

(24)

Instrukcja warunkowa

Słowo kluczowe else if

Jeżeli chcemy sprawdzić dodatkowe warunki należy wykorzystać słowo kluczowe else if zgodnie z poniższym przykładem:

if ( c o n d i t i o n ) i n s t r u c t i o n 1 ; else if ( c o n d i t i o n 2 )

i n s t r u c t i o n 2 ; else if ( c o n d i t i o n 3 )

i n s t r u c t i o n 3 ; else

i n s t r u c t i o n 4 ;

Warunki są sprawdzane do momentu spełnienia pierwszego z nich.

(25)

Instrukcja warunkowa - przykład 4

b o o l e a n i s D i v i d e d B y T w o = 7 % 2 = = 0 ; b o o l e a n i s D i v i d e d B y T h r e e = 7 % 3 = = 0 ; if ( i s D i v i d e d B y T w o )

S y s t e m . out . p r i n t l n (" L i c z b a jest p o d z i e l n a p r z e z dwa ") ;

else if ( i s D i v i d e d B y T h r e e )

S y s t e m . out . p r i n t l n (" L i c z b a jest p o d z i e l n a p r z e z trzy ") ;

else

S y s t e m . out . p r i n t l n (" L i c z b a nie jest p o d z i e l n a p r z e z dwa , ani p r z e z trzy ") ;

(26)

Zadania

1 Napisz program pobierający od użytkownika liczbę zmiennoprzecinkową i wypisujący wiadomość „Wpisana liczba jest mniejsza od 50”, jeżeli jest ona mniejsza od 50 i „Wpisana liczba jest większa bądź równa 50”

w przeciwnym razie.

2 Napisz program pobierający od użytkownika trzy liczby całkowite i wyświetlający informację która z liczb jest największa - „Liczba x jest największa”, gdzie x jest jej lp.

3 Napisz program pobierający od użytkownika liczbę całkowitą i wyświetlający jej wartość bezwzględną.

(27)

Instrukcja wyboru

Opis

Instrukcja warunkowa switch stosowana jest w celu zdefiniowania instrukcji dla różnych wyników wyrazenia.

s w i t c h ( v a r i a b l e ) { case v a l u e 1 :

i n s t r u c t i o n 1 ; b r e a k;

case v a l u e 2 : i n s t r u c t i o n 2 ; b r e a k;

d e f a u l t:

S y s t e m . out . p r i n t (" Inne od 1 i 2 ") ; }

(28)

Instrukcja wyboru - przykład

int v a r i a b l e = 1;

s w i t c h ( v a r i a b l e ) { case 1:

S y s t e m . out . p r i n t (" Z m i e n n a ma w a r t o s c 1 ") ;

b r e a k; case 2:

S y s t e m . out . p r i n t (" Z m i e n n a ma w a r t o s c 2 ") ;

b r e a k; d e f a u l t:

S y s t e m . out . p r i n t (" Z m i e n n a ma w a r t o s c inna niz 1/2 ") ; }

(29)

Zadanie

1 Napisz program korzystający z instrukcji switch, który pobiera od użytkownika liczbę całkowitą i wypisującą tekst „Zmienna ma wartość 1”, jeżeli ma ona taką wartość. Domyślnie niech zostanie wypisana informacja

„Zmienna ma inną wartość”. Usuń instrukcjębreak, uruchom program i wpisz wartość 1.

2 Napisz program pobierający od użytkownika znak (skorzystaj z metod next().charAt(0)) i wypisujący

dowolny tekst w razie W (skorzystaj ze switcha). Sprawdź jak zachowa się program dla tekstu użytkownika w, W oraz Więc.

(30)

Trójargumentowy operator warunkowy

Opis

Trójargumentowy operator warunkowy pełni rolę skróconej wersji instrukcji warunkowej. Jego budowa została

przedstawiona poniżej:

c o n d i t i o n ? v a l u e 1 : v a l u e 2 ;

Jeżeli warunek jest prawdziwy zostanie zwrócona value1, w przeciwnym razie value2.

(31)

Operator warunkowy - przykład

int v a r i a b l e = 1;

b o o l e a n l o g i c a l = true;

int r e s u l t = l o g i c a l ? 2 : v a r i a b l e ; // r e s u l t = 2

(32)

Zadanie

1 Napisz program korzystający z trójargumentowego operatora warunkowego, który pobiera od użytkownika liczbę całkowitą i przypisuje nowej zmiennej wartość 0 dla wprowdzonej liczby mniejszej od 50 oraz 100 w

przeciwnym razie.

(33)

Walidacja danych pobieranych od użytkownika

Opis

W celu sprawdzenia poprawności typu danych wprowadzonych przez użytkownika można skorzystać z metod hasNext... klasy Scanner (hasNextInt(), hasNextDouble(), . . . ). Przykład:

int n u m b e r ;

S c a n n e r r e a d e r = new S c a n n e r ( S y s t e m . in ) ; if ( r e a d e r . h a s N e x t I n t () )

n u m b e r = r e a d e r . n e x t I n t () ; else

S y s t e m . out . p r i n t (" N i e p o p r a w n a w a r t o s c ") ;

(34)

Zadanie

1 Napisz program, który pobiera od użytkownika liczbę zmiennoprzecinkową i przypisuje jej wartość do zmiennej.

Niech aplikacja sprawdza poprawność wprowadzonych danych.

(35)

Dziękuję za uwagę

Cytaty

Powiązane dokumenty

Instytut Matematyczny UWr www.math.uni.wroc.pl/∼jwr/BO2020 III LO we

Liczbę naturalną n nazwiemy szczęśliwą, jeżeli istnieją takie dwa trójkąty równoboczne o bokach długości całkowitej, że jeden trójkąt ma pole większe o n% od pola

[r]

Dla podanych a, b, c podać takie d, aby istniał czworokąt wy- pukły o bokach długości (z zachowaniem kolejności) a, b, c, d, w który można wpisać okrąg.. Dla podanych a, b,

Według niedowiedzionej do dzisiaj hipotezy, istnieje nieskończenie wiele liczb pierwszych Mersena..

Liczby wymierne – to takie, liczby które można zapisać w postaci ilorazu dwóch liczb całkowitych, w którym dzielnik jest różny od zera.. Są to więc liczby,

Krawędzi, które łączą wierzchołki należące do różnych kawałków, jest dokładnie n k − 1, a ponieważ poddrzewa połączone takimi krawędziami składają się z

Program generuje 15 węzłów listy jednokierunkowej z polami item generowanymi losowo z zakresu od 0 do 20, a następnie wypisuje po kolei wszystkie pola item oraz sumę liczb