Title: Podstawowe aspekty programowania w Javie
1Podstawowe aspekty programowania w Javie
- Michal Kuciapski
- m.kuciapski_at_univ.gda.pl
2Kwestie organizacyjne
3Celem przedmiotu jest ukazanie podstawowych
elementów skladni jezyka programowania Java wraz
z wykazaniem praktycznego ich zastosowania w
tworzeniu aplikacji konsolowych, na podstawie
rozbudowanego przykladu przy wsparciu ze strony
technik analizy i projektowania obiektowego.
Cel przedmiotu
4Tematyka przedmiotu
5Tematyka przedmiotu
6Tematyka przedmiotu
7Tematyka przedmiotu
8Ocena
- Egzamin 70
- Ocena z cwiczen 30
- Dodatkowe punkty za aktywnosc
- Zwolnienia dla osób z ocena z cwiczen
- 4,5 i 5
9Literatura
- Eckel B, Thinking in Java, 3rd Edition Revision
4.0 , Prentice-Hall, New Jersey 2002
http//www.pythoncriticalmass.com/ - Dokumentacja producenta jezyka JAVA
http//java.sun.com/docs/ - Kurs dotyczacy jezyka Java firmowany przez CISCO
Networking Academy oraz firme SUN
http//java.sun.com/docs/books/tutorial/index.html
10Jezyki programowania
11Typy jezyków programowania
- Jezyk maszynowy - kod maszynowy pisany binarnie
lub szesnastkowo. - Asemblery - jezyki programowania tzw. niskiego
poziomu. Kazda instrukcja asemblera odpowiada
jednej instrukcji procesora w kodzie maszynowym
(w przeciwienstwie do jezyków wysokiego poziomu).
Przyklad Asembler. - Imperatywne - program sklada sie ze zmiennych
oraz modyfikujacych je operacji, z jawnie
okreslonym przeplywem sterowania. Typowe jezyki
tego typu to C, Pascal. - Obiektowe - program sklada sie z "obiektów" -
elementów laczacych stan (czyli dane) i
zachowanie (metody). Obiektowy program
komputerowy jest zbiorem obiektów, komunikujacych
sie pomiedzy soba w celu wykonywania zadan.
Typowe jezyki Simula, Smalltalk, C, Perl,
Java, Ada, Python, Delphi, VB.
12Podstawowe informacje o jezyku Java
- Historia i istota jezyka Java
13Najwazniejsze etapy historia Javy
- 1980 pojawienie sie koncepcji programowania
obiektowego (ang. object-oriented programming
(OOP )) - 1990 Bill Joy w raporcie Further sugeruje
SUNowi stworzenie srodowiska obiektowego na bazie
C - 1991 projekt Green. Powstaje jezyk 7 / OAK
(Object Application Kernel) firmowany przez
Jamesa Goslinga. Przeznaczenie elektronika
powszechnego uzytku (Przenosnosc! Niezaleznosc od
róznych procesorów!) - 1995 zmiana nazwy na Java
14Najwazniejsze etapy historia Javy
- 1996 w przegladarce Netscape zaimplementowano
obsluge JAVA w wersji 1.0 SUN propaguje darmowe
srodowisko JDK 1.0 - 1999 JAVA 2, zastosowania biznesowe
- 1999 stale rozwijanie jezyka przez firme Sun
15Dlaczego Java
- Szerokie zastosowanie
- Elastycznosc w zakresie obslugiwanego sprzetu
- Wsparcie ze strony profesjonalnych narzedzi
- Mozliwosc ponownego wykorzystania raz stworzonego
kodu - Uproszczenie szeregu mechanizmów oraz zwiekszenie
poziomu bezpieczenstwa w stosunku C - Moda
16Zastosowania Javy
- Karty inteligentne i elektronika
- Systemy zarzadzania bazami danych
- Obsluga multimediów
- Internet - rozproszone, wielowarstwowe aplikacje
- J2EE (Java 2 Enterprise Edition) , aplety - Grafika 3D
- Technologie mobilne
- Kryptografia
17Jezyki kompilowane a interpretowalne
- Jezyki kompilowane
- Caly kod zródlowy aplikacji jest kompilowany do
pliku wykonalnego (.exe, .com) - Kompilacja polega na transformacji kodu
zródlowego w plik zrozumialy dla konkretnej
platformy programowo-sprzetowej - Program nie bedzie dzialal w innych srodowiskach
- Kompilacja jest procesem wykonywanym jednokrotnie
- Plik wykonywalny zostanie stworzony tylko i
wylacznie wtedy, gdy nie wystapia zadne bledy
skladniowe
18Jezyki kompilowane a interpretowalne
- Jezyki interpretowalne
- Nie wystepuje plik wykonywalny dostosowany do
konkretnej platformy - tzw. Beta-kod, - Kolejne linie kodu sa na biezaco odczytywane z
pliku zródlowego i wykonywane - Kontrola skladni wykonywana jest dopiero w
momencie wywolania kolejnych linii kodu - Jezyki tego typu sa z natury wolniejsze
19Platforma Javy
Program w Javie
Wirtualna Maszyna Javy
Java API
System komputerowy
20Architektura
Kod zródlowy Java (.java)
Biblioteka klas Javy
Ladowacz Klas Weryfikator kodu
Kod bajtowy Java Przesylany jest lokalnie lub
poprzez siec
Kompilator
Wirtualna Maszyna Javy
Interpretator Java
Kompilator kodu w locie
Kod bajtowy Java (.class)
System wykonywania
System operacyjny
Sprzet
21Srodowisko tworzenia aplikacji
- JVM (Java Virtual Machine)
- Java API (Application Programming Interfaces)
- JRE (Java Runtime Engine)
- narzedzia kompilacji
- biblioteki
- Java SDK (Software Development Kit)
22Podstawowe narzedzia
- javac prekompilator
- java interpretator beta-kodu
- javaw j. w., bez konsoli
- javadoc generator dokumentacji
- appletviewer interpretator appletów
- jar narzedzie do zarzadzania archiwami
- jdb debugger
- Narzedzia domyslnie znajduja sie w katalogu
c\java2sdk\bin
23Procedura tworzenia programu
- Napisanie kodu zródlowego i zapisanie go w pliku
NazwaKlasy.java - Nazwa pliku powinna byc identyczna z nazwa klasy
- Prekompilacja do beta-kodu
- javac NazwaKlasy.java
- Uruchomienie programu
- java NazwaKlasy
24Procedura tworzenia programu
- UWAGI
- Java jest jezykiem case-sensitive
- Uwazamy, aby w momencie uzycia narzedzia javac
podac rozszerzenie, a z kolei przy zastosowaniu
interpretera java je pominac - Poczatkowo najlepiej korzystac z katalogu bin do
zapisywania programów - Na pózniejszym etapie definiujemy w ustawieniach
systemu zmienne srodowiskowe - CLASSPATH katalog w którym znajduja sie
klasy - PATH katalog w którym znajduja sie
narzedzia
25Podstawowe informacje o jezyku Java
- Konstruowanie kodu w jezyku Java
26Typy elementy programowania Javy
- Strukturalne
- Obiektowe
- Zdarzeniowe
- Wspólbiezne
27Struktura programu
- PrzykladowaKlasa.java
- class PrzykladowaKlasa
-
-
- UWAGI
- Musi istniec zgodnosc pomiedzy nazwa wywolanego
pliku a nazwa klasy - Nazwy klas powinny zawierac rzeczowniki (np.
Student, PobieranieDanych), rzeczowniki i
przymiotniki (np. WykladowcaAkademicki), aby
jednoznacznie wyrazac typy tworzonych obiektów.
Nie powinny zawierac one czasowników (np.
DodajeStudentów)
28Zasady konstrukcji kodu
- Tworzenie czytelnego kodu jest jego organizacja w
bloki, które sa wyrózniane poprzez wciecia - instrukcja_grupujaca
-
-
-
-
- Stosowanie pewnej nadmiarowosci
- int a (c2) (b/3)
- zamiast
- int ac2b/3
29Zasady konstrukcji kodu
- Wykorzystywanie komentarzy
- Komentarz liniowy
- // taka linia kodu zostanie pominieta przez
interpretator - Komentarz blokowy
- /
- tu jest
- kilka
- linii
- które sa ignorowane
- /
30Zasady konstrukcji kodu
- Komentarz dokumentacyjny
- /
- niby
- podobnie, a jednak
- inaczej
- /
- Czesto komentarz dokumentacyjny jest umieszczany
na samym poczatku programu, i zawiera specjalne
slowa kluczowe - _at_author tu imie i nazwisko autora
- _at_version tu wersja aplikacji
- _at_see tu ewentualne odwolania do zródel
31Zasady konstrukcji kodu
- Umieszczajac komentarze pamietajmy, ze sa one
interpretowane jako spacja. - double pi 3.14/kto to spamieta/56
- Konsekwencja
- int n
- int n
- Nazewnictwo
32Przykladowy program
- /
- _at_author Michal Kuciapski
- _at_version 0.1
- /
- public class Powitanie // po uruchomieniu na
ekran // wyskoczy Witaj serdecznie! - public static void main(String args)
- System.out.println(Witaj serdecznie!)
-
33Podstawowe informacje o jezyku Java
- Podstawowe informacje o obiektowosci Javy
34Paradygmat obiektowosci
- Opanowywanie zlozonosci dziedziny problemu opiera
sie na zasadach - rozróznianie poszczególnych obiektów
- tworzenie pojec - laczenie obiektów w klasy
- znajdowanie zaleznosci miedzy pojeciami -
klasami, wyprowadzanie nowych - okreslanie relacji miedzy obiektami, agregacja,
kojarzenie
35Na czym polega obiektowosc Javy
- Obiekty i atrybuty
- Klasy i rozróznianie miedzy nimi
- Zaleznosci miedzy pojeciami dziedziczenie,
agregacja, kojarzenie - Hermetyzacja
- Komunikacja przy pomocy komunikatów
36Na czym polega obiektowosc Javy obiekty i
atrybuty
Obiekt abstrakcja czegos w dziedzinie
problemu Abstrakcja - ignorowanie tych aspektów
(cech, wlasciwosci) przedmiotu, które nie sa
istotne z punktu widzenia biezacego celu, a
koncentrowanie sie na aspektach
wlasciwych Obiekt (identyfikacja)
stan zachowanie
37Na czym polega obiektowosc Javy klasy
Klasa abstrakcja grupy obiektów o podobnej
charakterystyce Klasa wspólne
wlasnosci wspólne zachowania
38Na czym polega obiektowosc Javy zaleznosci
Dziedziczenie wyrazanie podobienstwa miedzy
klasami przy pomocy hierarchii uszczególawiania i
uogólniania Agregacja wyróznianie obiektów
calosci i ich skladowych Kojarzenie
wiazanie obiektów na podstawie ich cech
(atrybutów)
39Na czym polega obiektowosc Javy hermetyzajca
Hermetyzacja ukrywanie informacji o skladowych
systemu tak, aby zamykaly one w sobie mozliwie
jedna decyzje projektowa
40Na czym polega obiektowosc Javy przyklad
Elementy obiektowe w przykladowej aplikacji do
zarzadzania informacjami o studentach i
nauczycielach majacej nastepujace
funkcjonalnosci
1. Dodanie osoby (nauczyciel/student) 2.
Usuniecie osoby (nauczyciel/student) 3.
Wyszukanie i wyswietlenie danych osoby
(nauczyciel/student) 4. Modyfikacja danych osoby
(nauczyciel/student) 5. Wyswietlenie listy osób
(nauczyciel/student) 6. Zapisanie danych 7.
Wczytanie danych 8. Wyjscie z aplikacji
41Na czym polega obiektowosc Javy przyklad
Obiekty i atrybuty nauczycielMK.imie
Michal studentAP.nazwisko Borski
PobieranieDanych tym new PobieranieDanych()
tym.imie br.readLine() this.pracuje true
42Na czym polega obiektowosc Javy przyklad
Klasy i rozróznianie pomiedzy nimi public
class OperacjePlikowe
public class PobieranieDanych
43Na czym polega obiektowosc Javy przyklad
Zaleznosci dziedziczenie public abstract
class Osoba class
Nauczyciel extends Osoba
44Na czym polega obiektowosc Javy przyklad
Zaleznosci - komunikacja za pomoca komunikatów
class Nauczyciel extends Osoba
public Nauczyciel dodaj() throws
IOException
PobieranieDanych tym new PobieranieDanych()
tym.dodajNauczyciel()
45Skladnia jezyka Java
46Elementy leksykalne
- Komentarze
- Identyfikatory
- Slowa kluczowe
- Separatory
- Przyklad
47Komentarze
- Trzy typy
- Jednoliniowe - // - np. //wczytanie linii tekstu
z pliku - Blokowe - / / - np. / wczytanie linii tekstu
z pliku -
skonwertowanie na liczbe / - Dokumentacyjne - / / - np.
- /
- Write a description of class j here.
- _at_author (your name)
- _at_version (a version number or a date)
- /
48Separatory
49Slowa kluczowe
- Slowa kluczowe sa identyfikatorami o specjalnym
znaczeniu dla jezyka (kompilatora) Java. - Poszukiwane przez kompilator w czasie kompilacji.
- Zarezerwowane dla jezyka i nie moga byc uzywane w
konstrukcji nazw wlasnych identyfikatorów.
50Slowa kluczowe - lista
abstract deklaruje klase lub metode jako
abstrakcyjna boolean deklaruje zmienna lub
wartosc zwracana jako wartosc logiczna break
przerwanie byte deklaruje zmienna lub wartosc
zwracana jako wartosc byte case okresla opcje w
instrukcji wyboru switch catch obsluguje
wyjatek char deklaruje zmienna lub wartosc
zwracana jako wartosc znaku class oznacza
poczatek definicji klasy const definiuje stala
(nieuzywane) continue przerywa petle
rozpoczynajac jej kolejny cykl
51Slowa kluczowe - lista
default okresla domyslne dzialanie dla
instrukcji wyboru switch do rozpoczyna blok
instrukcji w petli while double deklaruje
zmienna lub wartosc zwracana jako wartosc
rzeczywista o podwójnej precyzji else okresla
kod warunkowy do wykonania jesli nie jest
spelniony warunek w instrukcji if extends
okresla, ze definiowana klasa dziedziczy z
innej final okresla pole, metode lub klase jako
stala finally gwarantuje wykonywalnosc blok
kodu float deklaruje zmienna lub wartosc
zwracana jako wartosc rzeczywista
52Slowa kluczowe - lista
for okresla poczatek petli for, goto
instrukcja skoku (jej uzywanie to zbrodnia) if
okresla poczatek instrukcji warunkowej
if implements deklaruje, ze klasa korzysta z
danego interfejsu import okresla dostep do
pakietów i klas instanceof sprawdza czy dany
obiekt jest wystapieniem okreslonej klasy int
deklaruje zmienna lub wartosc zwracana jako
wartosc calkowita 4 bajtowa interface okresla
poczatek definicji interfejsu long deklaruje
zmienna lub wartosc zwracana jako wartosc
calkowita 8 bajtowa
53Slowa kluczowe - lista
native okresla, ze metoda jest tworzona w
kodzie danej platformy (np. C) new wywoluje
nowy obiekt package okresla nazwe pakietu do
którego nalezy dana klasa private deklaruje
metode lub pole jako prywatne protected
deklaruje metode lub pole jako chronione public
deklaruje metode lub pole jako dostepne return
okresla zwracanie wartosci metody short
deklaruje zmienna lub wartosc zwracana jako
wartosc calkowita 2 bajtowa static deklaruje
pole, metode lub kod jako statyczny super
odniesienie do rodzica danego obiektu
54Slowa kluczowe - lista
switch poczatek instrukcji wyboru synchronized
oznacza fragment kodu jako synchronizowany, this
odniesienie do aktualnego obiektu throw
zglasza wyjatek throws deklaruje wyjatek
zglaszany przez metode transient oznacza
blokade pola przed szeregowaniem try poczatek
bloku kodu, który moze wygenerowac wyjatek void
deklaruje, ze metoda nie zwraca zadnej
wartosci volatile ostrzega kompilator, ze
zmienna moze sie zmieniac asynchronicznie while
poczatek petli
55Elementy strukturalne
56Zmienne
- Zmienne przechowuja wartosci, do których mozemy
odwolywac sie w trakcie dzialania programu - Istnieje szereg typów danych charakteryzujacych
zmienne - Kazdy typ danych zajmuje okreslona ilosc pamieci
- Typy te mozna podzielic na dwie kategorie
podstawowe i rozszerzone - Typy podstawowe zawsze nazywane sa z malej litery
- Typy rozszerzone sa w istocie kombinacja typów
podstawowych - Typy rozszerzone nazywane sa z wielkiej litery i
zwyczajowo inaczej deklarowane
57Zmienne typy proste liczby calkowite
58Zmienne typy proste liczby rzeczywiste
59Zmienne typy proste inne
60Zmienne typy zlozone
- Istnieje wiele zdefiniowanych i mozna definiowac
wlasne - Waznym typem danych jest String (ciag znaków)
znak - String nauczyciel Michal Kuciapski
- String nauczyciel new String(Michal
Kuciapski) - Przyklad wbudowanego typu
- BufferedReader br new BufferedReader(new
InputStreamReader(System.in)) - Przyklad zdefiniowanego wlasnego typu
- Nauczyciel mk new Nauczyciel(Michal,
Kuciapski, 25)
61Zmienne literaly
Literaly oznaczaja nazwy zmiennych, których typ
oraz wartosci wynikaja z zapisu. Ponadto
umozliwiaja wyrazanie specyficznych wartosci
- Typy literalów
- boolean moga miec wylacznie wartosc true lub
false - Znakowe (char) zestaw znaków Unicode
- Napisowe
62Zmienne literaly
63Zmienne deklarowanie
- typ identyfikator wartosc, identyfikator
wartosc, - Przyklady dla typów prostych
- int wiek //tylko deklaracja
- wiek 34 //tylko inicjalizacja
- int wiek 34 //deklaracja i inicjalizacja
statycznie - int wiek nauczyciel.pobierzWiek() //
deklaracja i - inicjalizacja dynamicznie
- Przyklady typów zlozonych
- String imie //dekl. imie new String(Anna)
//inic. - String imie new String() //dekl. i inic.
-
64Zmienne zasieg i czas zycia
- Zasieg
- Globalny na poczatku klasy publicznej
- Lokalny
- Dla metody
- Dla bloku
65Zmienne zasieg i czas zycia
- Czas zycia
- Dla globalnych jesli zmienna jest tworzona
- wraz z obiektem czas zyciu równy czasowi
istnienia obiektu - wraz z klasa (zmienna statyczna) dostepna przez
caly czas - Dla lokalnych okres wykonywania instrukcji w
metodzie lub bloku
66Zmienne zasieg i czas zycia
Przyklad class Zasieg public static void
main(String args) int x // znane w calej
procedurze main x 10 if(x 10) //
rozpoczecie nowego zasiegu int y 20 //
znane wylacznie w tym bloku // x i y oba
znane tutaj System.out.println("x i y "
x " " y) x y 2 // y
100 // Blad - y nieznane tutaj // x wciaz
znane tutaj System.out.println("x jest równe
" x)
67Zmienne konwersje
- Automatyczne dokonywane przez sam program, gdy
typy sa kompatybilne i gdy typ docelowy jest
wiekszy od zródlowego, np. int na long - Poprzez casting dla typów niekompatybilnych
(typ docelowy) wartosc - int a byte b b (byte) a
- Nauczyciel nauczyciel (Nauczyciel)
listaNauczycielilicznikNauczyciele
68Zmienne przyklad
class Studenci public static void main(String
args) int studenciIrok 400,
studenciIIrok 350, studenciIIIrok 342
System.out.println("Program wyliczajacy liczbe
studentów") System.out.println("Laczna
liczba studentów " (studenciIrok
studenciIIrok studenciIIIrok))
69Tablica
- Jest zbiorem elementów (wartosci, obiektów) tego
samego typu - Umozliwia i upraszcza przechowywanie wiekszej
ilosci elementów (wartosci, obiektów) pod nazwa
jednej zmiennej - Jest obiektem, przechowujacym w polu length
dlugosc tablicy - Moga miec wiele wymiarów, w rózny sposób
zdefiniowany
70Tablice jednowymiarowe - deklarowanie,
inicjowanie, definiowanie
- Deklarowanie - typ nazwaZmiennej
- Przyklad String studenci
- Inicjowanie nazwaZmiennej new typwielkosc
- Przyklad studenci new String10
- Definiowanie - typ nazwaZmiennej new
typwielkosc - Przyklady String studenci new String10
- Student studenci new Student10
71Tablice wielowymiarowe
- Deklarowanie - typ nazwaZmiennej
- Przyklad int poleGry
- Inicjowanie poleGry new int108
- Definiowanie
- int poleGry new int108
- Object plansza new Object108
72Tablice alternatywne metody deklarowania i
definiowania
- Istnieja dwie metody deklarowania
- Przy nazwie zmiennej
- int nauczyciele new int3
- char rozmieszczenie new char34
- Przy nazwie typu
- int nauczyciele new int3
- char rozmieszczenie new char34
73Tablice inicjowanie wartosci
- Istnieja dwie metody inicjowania wartosci
- Poprzez odwolanie do odpowiedniego indeksu
- iloscDni0 31
- plansza23 smok1
- Przy deklarowaniu
- String studenci Adam Malski, Tadeusz
Smigly - Object plansza
- las1, smok1, tawerna1,
- bagna1, las2, las3,,
- las4, tawerna2, tawerna3,
- dom1, barbarzyncy1, barbarzyncy2
-
74Elementy strukturalne
75Operatory
- Elementy jezyka sluzace do generacji nowych
wartosci na podstawie podanych argumentów - Zazwyczaj uzywane w kontekscie operacji na
zmiennych i sterowania wykonywaniem programu - Wyróznia sie kilka typy operatorów
- Arytmetyczne,
- Bitowe,
- Relacyjne,
- Logiczne
76Operatory arytmetyczne
Dodawanie np. a a a
Odejmowanie, minus unarny np. a -a
Mnozenie / Dzielenie Modulo
Inkrementacja np. a a a a
Dodanie i przypisanie np. a
a Odjecie i przypisanie Mnozenie i
przypisanie / Dzielenie i przypisanie Modulo
i przypisanie Dekrementacja
77Operatory bitowe - przesuniecia bitów
- Operuja na bitowych reprezentacjach liczb
calkowitych - Moga byc wykorzystywane jako element
oszczedzajacy pamiec podczas zapamietywania
kolekcji wartosci typu boolean - ltlt - przesuniecie bitowe w lewo
- gtgt - przesuniecie bitowe w prawo z powieleniem
znaku - gtgtgt - przesuniecie bitowe w prawo
- Liczba 20 000
- 00000000000000000100111000100000
- ltlt 2 00000000000000010011100010000000
- gtgtgt2 00000000000000000001001110001000
78Operatory bitowe przesuniecia bitów
- liczba
- 00000000000000000010100100101100 10 540
- liczbaltlt1
- 00000000000000000101001001011000 21 080
- liczbagtgtgt1
- 00000000000000000001010010010110 5 270
- liczbagtgtgt4
- 00000000000000000000001010010010 658
- 020121022129
79Operatory bitowe
Bitowy unarny NOT Bitowy I Bitowy
LUB np. a b c Bitowy wykluczajacy
LUB Bitowy I i przypisanie np. ab Bitowy
LUB i przypisanie Bitowy wykluczajacy LUB i
przypisanie gtgt gtgtgt ltlt
80Operatory bitowe - przyklady
- A B A B A B A B A
- 0 0 0 0 0 1
- 1 0 1 0 1 0
- 0 1 1 0 1 1
- 1 1 1 1 0 0
81Operatory relacyjne
- równa sie np. a b 1
- ! nie równa sie
- gt wieksze niz
- lt mniejsze niz
- gt wieksze lub równe np. a gt b 1
- lt mniejsze lub równe
- this.pracuje true
- dane wczytanie.readLine()
- if (dane null)
82Operatory logiczne
- logiczne I np. (altb) (agtc)
- logiczne LUB
- logiczne XLUB (wykluczajacy LUB)
- krótkie LUB
- krótkie I np. (altb) (agtc)
- ! logiczne unarne NOT
- I oraz przypisanie np. a b //false !
true, true - LUB oraz przypisanie
- wykluczajacy LUB oraz przypisanie
- równe
- ! nie równe
- ? Ternarny if-then-else np. b -10 a b lt
0 ? a a
83Elementy strukturalne
- Instrukcje sterowania przebiegiem programu
84Instrukcje sterowania przebiegiem programu
- Instrukcje warunkowe
- Instrukcje wyboru
- Petle
- for
- Petle typu while
- Petle typu do while
- Instrukcje sterowania przebiegiem petli
85Instrukcje warunkowe - if
- Celem instrukcji warunkowej jest zweryfikowanie
prawdziwosci wyspecyfikowanego wyrazenia
logicznego
Weryfikacja wyrazenia logicznego
Falsz (false)
Prawda (true)
Instrukcje jesli prawda
Dalsze instrukcje
86Instrukcje warunkowe - if
- Jedno liniowa instrukcja
- if (wyrazenie logiczne)
- instrukacja 1
- Blok
- if (wyrazenie logiczne)
- instrukcja 1
- instrukcja 2
- ...
- instrukcja n
-
87Instrukcje warunkowe - if
- Przyklady
- if (studentindeks.imieStudenta Wojciech)
- System.out.println(Masz dzisiaj imieniny)
-
- if ((studentindeks.srednia gt 4.5) (
studentindeks.rokStudiow lt 3)) -
- float sredniaStypendium studentindeks.sredni
a - float stypendium studentindeks.obliczStypend
ium(sredniaStypendium) - studentindeks.czesne - stypendium
88Instrukcje warunkowe if else
Weryfikacja wyrazenia logicznego
Prawda (true)
Falsz (false)
Instrukcje jesli falsz
Instrukcje jesli prawda
Dalsze instrukcje
89Instrukcje warunkowe if else
Blok if (wyrazenie logiczne) instrukcja
1 ... instrukcja n else
instrukcja 1 ... instrukcja n
- Jedno liniowa
- if (wyrazenie logiczne)
- instrukcja 1
- else
- instrukcja 1
90Instrukcje warunkowe if else
- Przyklad
- if (studentindeks.dziasiajZajecia() true)
- System.out.println(Masz dzisiaj zajecia)
- else
- System.out.println(Nie masz dzisiaj zajec)
91Instrukcje warunkowe if else
- Przyklad
- if ((studentindeks.srednia gt 4.5) (
studentindeks.rokStudiow lt 3)) - float sredniaStypendium studentindeks.sredni
a - float stypendium studentindeks.obliczStypend
ium(sredniaStypendium) - studentindeks.czesne - stypendium
-
- else
-
- studentindeks.kosztWydaniaDyplomu
Dyplom.koszt
92Instrukcje warunkowe if else if else
- if (wyrazenie_logiczne)
- instrukcja 1
-
- instrukcja n
-
- else if (drugie_wyrazenie logiczne)
- instrukcja 1
-
- instrukcja n
-
- else
- instrukcja 1
-
- instrukcja n
-
93Instrukcje warunkowe if else if else
- Przyklad
- if ((studentindeks.srednia gt 4.5) (
studentindeks.rokStudiow lt 3)) - float sredniaStypendium studentindeks.sredni
a - float stypendium studentindeks.obliczStypend
ium(sredniaStypendium) - studentindeks.czesne - stypendium
-
- else if (studentindeks.srednia gt 4.5)
-
- studentindeks.kosztWydaniaDyplomu 0
-
- else
-
- studentindeks.kosztWydaniaDyplomu
Dyplom.koszt
94Instrukcja wyboru
- Instrukcja wyboru weryfikuje zadeklarowane
wyrazenie pod katem mozliwych wartosci - W zaleznosci od wartosci, jakie przyjmuje
wyrazenie, wykonywane sa rózne warianty kodu - Jesli instrukcja wyboru nie jest w stanie
przyporzadkowac zadnego wariantu, wykonywane jest
wyrazenie domyslne umieszczane na samym koncu
95Instrukcja wyboru - skladnia
switch(wyrazenie_wyboru) case wartosc1
wyrazenie break case wartosc2
wyrazenie break case wartosc3
wyrazenie break default wyrazenie
- Brak break spowoduje wykonywanie kolejnych
instrukcji wewnatrz instrukcji wyboru
96Instrukcja wyboru - przyklad
- switch(wybor)
- case 1
- System.out.print("\nDla kogo
chcesz wprowadzic dane? (nauczyciel/student) ") - ...
- break
- case 2
- System.out.print("\nDla kogo
chcesz skasowac dane? (nauczyciel/student) ") - ...
- break
-
- case 8
- break
- default
- System.out.println("Nieprawidlowy
numer !")
97Petla for
- Powoduje wykonanie instrukcji okreslona ilosc
razy - Ilosc petli jest równa róznicy wartosci
wyspecyfikowanej w inicjowaniu a górna granica
podana przez wyrazenie logiczne z szybkoscia
osiagniecia zalezna od kroku - for (inicjowanie wyrazenie_logiczne krok)
- wyrazenie 1
- for (inicjowanie wyrazenie_logiczne krok)
- wyrazenie 1
- wyrazenie 2
-
98Petla for - przyklad
- class Studenci
- public static void main(String args)
- for (int minuta 195 minuta lt 1 minuta--)
- if (minuta gt 15)
- System.out.println("Pozostalo jeszcze "
minuta minut wykladu -(") - else
- System.out.println("Pozostalo jeszcze "
minuta minut wykladu -)") -
-
-
-
99Petla while
- Jest wykonywana, dopóki warunek logiczny jest
prawdziwy - Nalezy uwazac, gdyz latwo stworzyc petle
nieskonczona np. while(true) - Petla moze sie nie wykonac ani razu
- while (wyrazenie_logiczne)
- wyrazenie
-
- while (wyrazenie_logiczne)
- wyrazenia
100Petla while - przyklad
- class Studenci
- public static void main(String args)
- int minuta 195
- while (minuta gt 0)
- if (minuta gt 15)
- System.out.println("Pozostalo jeszcze "
minuta minut wykladu -(") - else
- System.out.println("Pozostalo jeszcze "
minuta minut wykladu -)") - minuta--
-
-
-
-
101Petla do while
- Bardzo zblizona do petli typu while, róznica w
momencie sprawdzenia warunku logicznego na
koncu - Petla wykona sie minimum 1 raz
- do
- wyrazenie
- while wyrazenie_logiczne
- do
- wyrazenia
- while wyrazenie_logiczne
102Petla do while - przyklad
- class Studenci
- public static void main(String args)
- int minuta 0
- do
- if (minuta gt 15)
- System.out.println("Pozostalo jeszcze "
minuta minut wykladu -(") - else
- System.out.println("Pozostalo jeszcze "
minuta minut wykladu -)") - minuta--
- while (minuta gt 0)
-
-
-
103Instrukcje sterowania przebiegiem petli
- break - przerywa dzialanie dowolnej petli badz
instrukcji wyboru - continue - przejscie na koniec wyrazenia
znajdujacego sie wewnatrz petli (rozpoczecie
kolejnego wykonania petli) Etykieta, umozliwia
przejscie do okreslonego miejsca w kodzie -
- etykieta
- do
- wyrazenie
- do
- wyrazenie
- if (warunek1)
- break etykieta
-
- while (warunek-2)
- while (warunek-3)
104Instrukcje sterowania przebiegiem petli - przyklad
-
- class Kontynuuj
- public static void main(String args)
- for(int i0 ilt10 i)
- System.out.print(i " ")
- if (i2 0) continue
- System.out.println("")
-
-
-
105Instrukcje sterowania przebiegiem petli - przyklad
-
- nowyTest
- do
- testST.wyswietlPytania()
- Pytanie pytanieTym testST.wybierzPytanie()
- do
- odpowiedz pytanieTym.wSkazodpowiedz()
- if (pytanieTym.IloscBledow 2)
- break nowyTest
-
- while (odpowiedz true)
- while (testUkonczony true)
106Zadania
- Zadanie 1
- Zaproponowac krótki program, który oblicza i
wyswietla w godzinach oraz minutach czas dotarcia
na Okecie z Trójmiasta, jesli dojazd tramwajem do
pociagu trwa 40 minut, pociag do stolicy jedzie
220 minut, a autobus na lotnisko 35 minut.
107Zadania
- Zadanie 2
- Jesli zmienna liczba przyjmuje wartosc 10 540,
ustalic, ile wynosi - liczbaltlt1
- liczbagtgtgt1
- liczbagtgtgt4
108Zadania
- Zadanie 3
- Napisac program, który deklaruje 3 zmienne, dwóm
pierwszym przypisuje wartosci odpowiednio 3 oraz
7 (trzeciej wartosc dowolna) i weryfikuje, czy
trzecia wartosc - Jest mniejsza od dwóch pozostalych
- Jest wieksza od dwóch pozostalych
- Jest pomiedzy dwoma pozostalymi
- Jest równa którejs z pozostalych
109Prosze o ewentualne pytania
Michal Kuciapski