Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
1
Podstawowe aspekty programowania w Javie
Michał Kuciapski
2
Kwestie organizacyjne
3
Cel przedmiotu Celem przedmiotu jest ukazanie podstawowych elementów składni języka programowania Java wraz z wykazaniem praktycznego ich zastosowania w tworzeniu aplikacji konsolowych, na podstawie rozbudowanego przykładu przy wsparciu ze strony technik analizy i projektowania obiektowego.
4
Tematyka przedmiotu
5
Tematyka przedmiotu
6
Tematyka przedmiotu
7
Tematyka przedmiotu
8
Ocena Egzamin – 70 % Ocena z ćwiczeń – 30 %
Dodatkowe punkty za aktywność Zwolnienia dla osób z oceną z ćwiczeń 4,5 i 5
9
Literatura Eckel B, Thinking in Java, 3rd Edition Revision 4.0 , Prentice-Hall, New Jersey 2002; Dokumentacja producenta języka JAVA; Kurs dotyczący języka Java firmowany przez CISCO Networking Academy oraz firmę SUN
10
Języki programowania
11
Typy języków programowania
Język maszynowy - kod maszynowy pisany binarnie lub szesnastkowo. Asemblery - języki programowania tzw. niskiego poziomu. Każda instrukcja asemblera odpowiada jednej instrukcji procesora w kodzie maszynowym (w przeciwieństwie do języków wysokiego poziomu). Przykład: Asembler. Imperatywne - program składa się ze zmiennych oraz modyfikujących je operacji, z jawnie określonym przepływem sterowania. Typowe języki tego typu to C, Pascal. Obiektowe - program składa się z "obiektów" - elementów łączących stan (czyli dane) i zachowanie (metody). Obiektowy program komputerowy jest zbiorem obiektów, komunikujących się pomiędzy sobą w celu wykonywania zadań. Typowe języki: Simula, Smalltalk, C++, Perl, Java, Ada, Python, Delphi, VB.
12
Podstawowe informacje o języku Java
Historia i istota języka Java
13
Najważniejsze etapy historia Javy
1980: pojawienie się koncepcji programowania obiektowego (ang. object-oriented programming (OOP )) 1990: Bill Joy w raporcie „Further” sugeruje SUNowi stworzenie środowiska obiektowego na bazie C++ 1991: projekt „Green”. Powstaje język *7 / OAK (Object Application Kernel) firmowany przez Jamesa Goslinga. Przeznaczenie – elektronika powszechnego użytku (Przenośność! Niezależność od różnych procesorów!) 1995: zmiana nazwy na Java
14
Najważniejsze etapy historia Javy
1996: w przeglądarce Netscape zaimplementowano obsługę JAVA w wersji 1.0; SUN propaguje darmowe środowisko JDK 1.0 1999: JAVA 2, zastosowania biznesowe 1999 – stałe rozwijanie języka przez firmę Sun
15
Dlaczego Java Szerokie zastosowanie
Elastyczność w zakresie obsługiwanego sprzętu Wsparcie ze strony profesjonalnych narzędzi Możliwość ponownego wykorzystania raz stworzonego kodu Uproszczenie szeregu mechanizmów oraz zwiększenie poziomu bezpieczeństwa w stosunku C++ Moda
16
Zastosowania Javy Karty inteligentne i elektronika
Systemy zarządzania bazami danych Obsługa multimediów Internet - rozproszone, wielowarstwowe aplikacje - J2EE (Java 2 Enterprise Edition) , aplety Grafika 3D Technologie mobilne Kryptografia
17
Języki kompilowane a interpretowalne
Cały kod źródłowy aplikacji jest kompilowany do pliku wykonalnego (.exe, .com) Kompilacja polega na transformacji kodu źródłowego w plik „zrozumiały” dla konkretnej platformy programowo-sprzętowej Program nie będzie działał w innych środowiskach Kompilacja jest procesem wykonywanym jednokrotnie Plik wykonywalny zostanie stworzony tylko i wyłącznie wtedy, gdy nie wystąpią żadne błędy składniowe
18
Języki kompilowane a interpretowalne
Języki interpretowalne: Nie występuje plik wykonywalny dostosowany do konkretnej platformy - tzw. Beta-kod, Kolejne linie kodu są na bieżąco odczytywane z pliku źródłowego i wykonywane Kontrola składni wykonywana jest dopiero w momencie wywołania kolejnych linii kodu Języki tego typu są z natury wolniejsze
19
Wirtualna Maszyna Javy
Platforma Javy Program w Javie Wirtualna Maszyna Javy Java API System komputerowy
20
Wirtualna Maszyna Javy
Architektura Kod źródłowy Java (.java) Ładowacz Klas Weryfikator kodu Biblioteka klas Javy Kod bajtowy Java Przesyłany jest lokalnie lub poprzez sieć Kompilator Wirtualna Maszyna Javy Interpretator Java Kompilator kodu „w locie” Kod bajtowy Java (.class) System wykonywania System operacyjny Sprzęt
21
Środowisko tworzenia aplikacji
JVM (Java Virtual Machine) + Java API (Application Programming Interfaces) = JRE (Java Runtime Engine) + narzędzia kompilacji + biblioteki = Java SDK (Software Development Kit)
22
Podstawowe narzędzia javac – prekompilator
java – interpretator beta-kodu javaw – j. w., bez konsoli javadoc – generator dokumentacji appletviewer – interpretator appletów jar – narzędzie do zarządzania archiwami jdb – debugger Narzędzia domyślnie znajdują się w katalogu c:\java2sdk\bin
23
Procedura tworzenia programu
Napisanie kodu źródłowego i zapisanie go w pliku NazwaKlasy.java Nazwa pliku powinna być identyczna z nazwą klasy Prekompilacja do beta-kodu: javac NazwaKlasy.java Uruchomienie programu java NazwaKlasy
24
Procedura tworzenia programu
UWAGI: Java jest językiem case-sensitive Uważamy, aby w momencie użycia narzędzia javac podać rozszerzenie, a z kolei przy zastosowaniu interpretera java je pominąć Początkowo najlepiej korzystać z katalogu bin do zapisywania programów Na późniejszym etapie definiujemy w ustawieniach systemu zmienne środowiskowe: CLASSPATH – katalog w którym znajdują się klasy PATH – katalog w którym znajdują się narzędzia
25
Podstawowe informacje o języku Java
Konstruowanie kodu w języku Java
26
Typy elementy programowania Javy
Strukturalne Obiektowe Zdarzeniowe Współbieżne
27
Struktura programu PrzykladowaKlasa.java class PrzykładowaKlasa { … }
UWAGI: Musi istnieć zgodność pomiędzy nazwą wywołanego pliku a nazwą klasy Nazwy klas powinny zawierać rzeczowniki (np.: Student, PobieranieDanych), rzeczowniki i przymiotniki (np. WykładowcaAkademicki), aby jednoznacznie wyrażać typy tworzonych obiektów. Nie powinny zawierać one czasowników (np. DodajeStudentów)
28
Zasady konstrukcji kodu
Tworzenie czytelnego kodu jest jego organizacja w bloki, które są wyróżniane poprzez wcięcia instrukcja_grupująca { … } Stosowanie pewnej nadmiarowości int a = (c*2) + (b/3); zamiast int a=c*2+b/3;
29
Zasady konstrukcji kodu
Wykorzystywanie komentarzy Komentarz liniowy // taka linia kodu zostanie pominięta przez interpretator Komentarz blokowy /* tu jest kilka linii które są ignorowane */
30
Zasady konstrukcji kodu
Komentarz dokumentacyjny /** niby podobnie, a jednak inaczej */ Często komentarz dokumentacyjny jest umieszczany na samym początku programu, i zawiera specjalne słowa kluczowe: @author tu imię i nazwisko autora @version tu wersja aplikacji @see tu ewentualne odwołania do źródeł
31
Zasady konstrukcji kodu
Umieszczając komentarze pamiętajmy, że są one interpretowane jako spacja. double pi = 3.14/*kto to spamięta*/56; Konsekwencja int[] n; int n[]; Nazewnictwo
32
Przykładowy program /** @author Michał Kuciapski @version 0.1 */
public class Powitanie { // po uruchomieniu na ekran // wyskoczy Witaj serdecznie! public static void main(String[] args) { System.out.println(”Witaj serdecznie!”); }
33
Podstawowe informacje o języku Java
Podstawowe informacje o obiektowości Javy
34
Paradygmat obiektowości
Opanowywanie złożoności dziedziny problemu opiera się na zasadach: rozróżnianie poszczególnych obiektów tworzenie pojęć - łączenie obiektów w klasy znajdowanie zależności między pojęciami - klasami, wyprowadzanie nowych określanie relacji między obiektami, agregacja, kojarzenie
35
Na czym polega obiektowość Javy
Obiekty i atrybuty Klasy i rozróżnianie między nimi Zależności między pojęciami – dziedziczenie, agregacja, kojarzenie Hermetyzacja Komunikacja przy pomocy komunikatów
36
Na czym polega obiektowość Javy – obiekty i atrybuty
Obiekt – abstrakcja czegoś w dziedzinie problemu Abstrakcja - ignorowanie tych aspektów (cech, właściwości) przedmiotu, które nie są istotne z punktu widzenia bieżącego celu, a koncentrowanie się na aspektach właściwych Obiekt = (identyfikacja) + stan + zachowanie
37
Na czym polega obiektowość Javy – klasy
Klasa – abstrakcja grupy obiektów o podobnej charakterystyce Klasa = wspólne własności + wspólne zachowania
38
Na czym polega obiektowość Javy – zależności
Dziedziczenie – wyrażanie podobieństwa między klasami przy pomocy hierarchii uszczegóławiania i uogólniania Agregacja – wyróżnianie obiektów „całości” i ich „składowych” Kojarzenie – wiązanie obiektów na podstawie ich cech (atrybutów)
39
Na czym polega obiektowość Javy – hermetyzajca
Hermetyzacja – ukrywanie informacji o składowych systemu tak, aby zamykały one w sobie możliwie jedną decyzję projektową
40
Na czym polega obiektowość Javy – przykład
Elementy obiektowe w przykładowej aplikacji do zarządzania informacjami o studentach i nauczycielach mającej następujące funkcjonalności: 1. Dodanie osoby (nauczyciel/student) 2. Usunięcie osoby (nauczyciel/student) 3. Wyszukanie i wyświetlenie danych osoby (nauczyciel/student) 4. Modyfikacja danych osoby (nauczyciel/student) 5. Wyświetlenie listy osób (nauczyciel/student) 6. Zapisanie danych 7. Wczytanie danych 8. Wyjście z aplikacji
41
Na czym polega obiektowość Javy – przykład
Obiekty i atrybuty: nauczycielMK.imie = ”Michał”; studentAP.nazwisko = ”Borski”; PobieranieDanych tym = new PobieranieDanych(); tym.imie = br.readLine(); this.pracuje = true
42
Na czym polega obiektowość Javy – przykład
Klasy i rozróżnianie pomiędzy nimi: public class OperacjePlikowe { … } public class PobieranieDanych
43
Na czym polega obiektowość Javy – przykład
Zależności – dziedziczenie: public abstract class Osoba { … } class Nauczyciel extends Osoba
44
Na czym polega obiektowość Javy – przykład
Zależności - komunikacja za pomocą komunikatów : class Nauczyciel extends Osoba { … public Nauczyciel dodaj() throws IOException PobieranieDanych tym = new PobieranieDanych(); tym.dodajNauczyciel(); }
45
„Elementy strukturalne”
Składnia języka Java „Elementy strukturalne”
46
Przykład Elementy leksykalne Komentarze Identyfikatory Słowa kluczowe
Separatory Przykład
47
Komentarze Trzy typy: Jednoliniowe - // - np. //wczytanie linii tekstu z pliku Blokowe - /* */ - np. /* wczytanie linii tekstu z pliku skonwertowanie na liczbę */ Dokumentacyjne - /** */ - np. /** Write a description of class j here. @author (your name) @version (a version number or a date) */
48
Separatory
49
Słowa kluczowe Słowa kluczowe są identyfikatorami o specjalnym znaczeniu dla języka (kompilatora) Java. Poszukiwane przez kompilator w czasie kompilacji. Zarezerwowane dla języka i nie mogą być używane w konstrukcji nazw własnych identyfikatorów.
50
Słowa kluczowe - lista abstract – deklaruje klasę lub metodę jako abstrakcyjną boolean – deklaruje zmienną lub wartość zwracaną jako wartość logiczną break – przerwanie byte – deklaruje zmienną lub wartość zwracaną jako wartość byte case – określa opcję w instrukcji wyboru switch catch – obsługuje wyjątek char – deklaruje zmienną lub wartość zwracaną jako wartość znaku class – oznacza początek definicji klasy const – definiuje stałą (nieużywane) continue – przerywa pętlę rozpoczynając jej kolejny cykl
51
Słowa kluczowe - lista default – określa domyślne działanie dla instrukcji wyboru switch do – rozpoczyna blok instrukcji w pętli while double – deklaruje zmienną lub wartość zwracaną jako wartość rzeczywistą o podwójnej precyzji else – określa kod warunkowy do wykonania jeśli nie jest spełniony warunek w instrukcji if extends – określa, że definiowana klasa dziedziczy z innej final – określa pole, metodę lub klasę jako stałą finally – gwarantuje wykonywalność blok kodu float – deklaruje zmienną lub wartość zwracaną jako wartość rzeczywistą
52
Słowa kluczowe - lista for – określa początek pętli for,
goto – instrukcja skoku (jej używanie to zbrodnia) if – określa początek instrukcji warunkowej if implements – deklaruje, że klasa korzysta z danego interfejsu import – określa dostęp do pakietów i klas instanceof – sprawdza czy dany obiekt jest wystąpieniem określonej klasy int – deklaruje zmienną lub wartość zwracaną jako wartość całkowitą 4 bajtową interface – określa początek definicji interfejsu long – deklaruje zmienną lub wartość zwracaną jako wartość całkowitą 8 bajtową
53
Słowa kluczowe - lista native – określa, że metoda jest tworzona w kodzie danej platformy (np. C) new – wywołuje nowy obiekt package – określa nazwę pakietu do którego należy dana klasa private – deklaruje metodę lub pole jako prywatne protected – deklaruje metodę lub pole jako chronione public – deklaruje metodę lub pole jako dostępne return – określa zwracanie wartości metody short – deklaruje zmienną lub wartość zwracaną jako wartość całkowitą 2 bajtową static – deklaruje pole, metodę lub kod jako statyczny super – odniesienie do rodzica danego obiektu
54
Słowa kluczowe - lista switch – początek instrukcji wyboru
synchronized – oznacza fragment kodu jako synchronizowany, this – odniesienie do aktualnego obiektu throw – zgłasza wyjątek throws – deklaruje wyjątek zgłaszany przez metodę transient – oznacza blokadę pola przed szeregowaniem try – początek bloku kodu, który może wygenerować wyjątek void – deklaruje, że metoda nie zwraca żadnej wartości volatile – ostrzega kompilator, że zmienna może się zmieniać asynchronicznie while – początek pętli
55
Elementy strukturalne
„Zmienne”
56
Zmienne Zmienne przechowują wartości, do których możemy odwoływać się w trakcie działania programu Istnieje szereg typów danych charakteryzujących zmienne Każdy typ danych zajmuje określoną ilość pamięci Typy te można podzielić na dwie kategorie: podstawowe i rozszerzone Typy podstawowe zawsze nazywane są z małej litery Typy rozszerzone są w istocie kombinacją typów podstawowych Typy rozszerzone nazywane są z wielkiej litery i zwyczajowo inaczej deklarowane
57
Zmienne – typy proste – liczby całkowite
58
Zmienne – typy proste – liczby rzeczywiste
59
Zmienne – typy proste – inne
60
Zmienne – typy złożone Istnieje wiele zdefiniowanych i można definiować własne Ważnym typem danych jest String (ciąg znaków) – znak: String nauczyciel = ”Michał Kuciapski”; String nauczyciel = new String(”Michał Kuciapski”); Przykład wbudowanego typu: BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); Przykład zdefiniowanego własnego typu: Nauczyciel mk = new Nauczyciel(”Michał”, ”Kuciapski”, 25);
61
Zmienne – literały Literały oznaczają nazwy zmiennych, których typ oraz wartości wynikają z zapisu. Ponadto umożliwiają wyrażanie specyficznych wartości Typy literałów: boolean – mogą mieć wyłącznie wartość true lub false Znakowe (char) – zestaw znaków Unicode Napisowe
62
Zmienne – literały
63
Zmienne – deklarowanie
typ identyfikator [=wartość][, identyfikator [=wartość], …]; Przykłady 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 Przykłady typów złożonych: String imie; //dekl. imie = new String(”Anna”); //inic. String imie = new String(””); //dekl. i inic.
64
Zmienne – zasięg i czas życia
Globalny – na początku klasy publicznej; Lokalny: Dla metody Dla bloku
65
Zmienne – zasięg i czas życia
Dla globalnych – jeśli zmienna jest tworzona: wraz z obiektem – czas życiu równy czasowi istnienia obiektu wraz z klasą (zmienna statyczna) – dostępna przez cały czas Dla lokalnych – okres wykonywania instrukcji w metodzie lub bloku
66
Zmienne – zasięg i czas życia
Przykład: class Zasięg { public static void main(String args[]) { int x; // znane w całej procedurze main x = 10; if(x == 10) { // rozpoczęcie nowego zasięgu int y = 20; // znane wyłącznie w tym bloku // x i y oba znane tutaj System.out.println("x i y: " + x + " " + y); x = y * 2; } // y = 100; // Błąd - y nieznane tutaj // x wciąż znane tutaj System.out.println("x jest równe " + x);
67
Zmienne – konwersje Automatyczne – dokonywane przez sam program, gdy typy są kompatybilne i gdy typ docelowy jest większy od źródłowego, np. int na long Poprzez casting dla typów „niekompatybilnych” – (typ docelowy) wartość : int a; byte b; b = (byte) a; Nauczyciel nauczyciel = (Nauczyciel) listaNauczycieli[licznikNauczyciele];
68
Zmienne – przykład class Studenci {
public static void main(String args[]) { int studenciIrok = 400, studenciIIrok = 350, studenciIIIrok = 342; System.out.println("Program wyliczający liczbę studentów"); System.out.println("Łączna liczba studentów = " + (studenciIrok + studenciIIrok + studenciIIIrok)); }
69
Tablica Jest zbiorem elementów (wartości, obiektów) tego samego typu
Umożliwia i upraszcza przechowywanie większej ilości elementów (wartości, obiektów) pod nazwą jednej zmiennej Jest obiektem, przechowującym w polu length długość tablicy Mogą mieć wiele wymiarów, w różny sposób zdefiniowany
70
Tablice jednowymiarowe - deklarowanie, inicjowanie, definiowanie
Deklarowanie - typ nazwaZmiennej[]; Przykład: String studenci[]; Inicjowanie – nazwaZmiennej = new typ[wielkość]; Przykład: studenci = new String[10]; Definiowanie - typ nazwaZmiennej[] = new typ[wielkość]; Przykłady: String studenci[] = new String[10]; Student studenci[] = new Student[10];
71
Tablice wielowymiarowe
Deklarowanie - typ nazwaZmiennej[][[]…[]]; Przykład: int poleGry[][]; Inicjowanie – poleGry = new int[10][8]; Definiowanie – int poleGry[][] = new int[10][8] Object plansza[] = new Object[10][8];
72
Tablice – alternatywne metody deklarowania i definiowania
Istnieją dwie metody deklarowania: Przy nazwie zmiennej: int nauczyciele[] = new int[3]; char rozmieszczenie[][] = new char[3][4]; Przy nazwie typu: int[] nauczyciele = new int[3]; char[][] rozmieszczenie = new char[3][4];
73
Tablice – inicjowanie wartości
Istnieją dwie metody inicjowania wartości: Poprzez odwołanie do odpowiedniego indeksu: iloscDni[0] = 31; plansza[2][3] = smok1; Przy deklarowaniu: String studenci[] = {”Adam Malski”, „Tadeusz Śmigły”}; Object plansza[][] = { { las1, smok1, tawerna1}, { bagna1, las2, las3,}, { las4, tawerna2, tawerna3}, { dom1, barbarzyńcy1, barbarzyńcy2} };
74
Elementy strukturalne
„Operatory”
75
Operatory Elementy języka służące do generacji nowych wartości na podstawie podanych argumentów Zazwyczaj używane w kontekście operacji na zmiennych i sterowania wykonywaniem programu Wyróżnia się kilka typy operatorów: Arytmetyczne, Bitowe, Relacyjne, Logiczne
76
Operatory – arytmetyczne
+ Dodawanie np. a = a + a; – Odejmowanie, minus unarny np. a = -a; * Mnożenie / Dzielenie % Modulo ++ Inkrementacja np. a = a++; a = ++a; += Dodanie i przypisanie np. a += a; –= Odjęcie i przypisanie *= Mnożenie i przypisanie /= Dzielenie i przypisanie %= Modulo i przypisanie –– Dekrementacja
77
Operatory – bitowe - przesunięcia bitów
Operują na bitowych reprezentacjach liczb całkowitych Mogą być wykorzystywane jako element oszczędzający pamięć podczas zapamiętywania kolekcji wartości typu boolean << - przesunięcie bitowe w lewo >> - przesunięcie bitowe w prawo z powieleniem znaku >>> - przesunięcie bitowe w prawo Liczba : << >>>
78
Operatory – bitowe – przesunięcia bitów
liczba: = liczba<<1: = liczba>>>1: = 5 270 liczba>>>4: = 658 0*20+1*21+0*22+…+1*29
79
Operatory – bitowe ~ Bitowy unarny NOT & Bitowy I
| Bitowy LUB np. a = b | c ^ Bitowy wykluczający LUB &= Bitowy I i przypisanie np. a&=b |= Bitowy LUB i przypisanie ^= Bitowy wykluczający LUB i przypisanie >>= >>>= <<=
80
Operatory – bitowe - przykłady
A B A |B A &B A ^B ~A
81
Operatory – relacyjne == równa się np. a == b + 1; != nie równa się
> większe niż < mniejsze niż >= większe lub równe np. a >= b + 1; <= mniejsze lub równe this.pracuje == true; dane = wczytanie.readLine(); if (dane == null)
82
Operatory – logiczne & logiczne I np. (a<b) & (a>c);
| logiczne LUB ^ logiczne XLUB (wykluczający LUB) || krótkie LUB && krótkie I np. (a<b) & (a>c); ! logiczne unarne NOT &= I oraz przypisanie np. a |= b; //false != true, true |= LUB oraz przypisanie ^= wykluczający LUB oraz przypisanie == równe != nie równe ?: Ternarny if-then-else np. b = -10; a = b < 0 ? ++a : a;
83
Elementy strukturalne
„ Instrukcje sterowania przebiegiem programu”
84
Instrukcje sterowania przebiegiem programu
Instrukcje warunkowe Instrukcje wyboru Pętle: for Pętle typu while Pętle typu do … while Instrukcje sterowania przebiegiem pętli
85
Instrukcje warunkowe - if
Celem instrukcji warunkowej jest zweryfikowanie prawdziwości wyspecyfikowanego wyrażenia logicznego Weryfikacja wyrażenia logicznego Prawda (true) Fałsz (false) Instrukcje jeśli prawda Dalsze instrukcje
86
Instrukcje warunkowe - if
Jedno liniowa instrukcja if (wyrażenie logiczne) instrukacja 1; Blok if (wyrażenie logiczne){ instrukcja 1; instrukcja 2; ... instrukcja n; }
87
Instrukcje warunkowe - if
Przykłady: if (student[indeks].imieStudenta = ”Wojciech”) System.out.println(”Masz dzisiaj imieniny”); if ((student[indeks].srednia > 4.5) && ( student[indeks].rokStudiow < 3)) { float sredniaStypendium = student[indeks].srednia; float stypendium = student[indeks].obliczStypendium(sredniaStypendium); student[indeks].czesne -= stypendium; }
88
Instrukcje warunkowe – if else
Weryfikacja wyrażenia logicznego Prawda (true) Fałsz (false) Instrukcje jeśli fałsz Instrukcje jeśli prawda Dalsze instrukcje
89
Instrukcje warunkowe – if else
Jedno liniowa if (wyrażenie logiczne) instrukcja 1; else Blok if (wyrażenie logiczne){ instrukcja 1; ... instrukcja n; } else{
90
Instrukcje warunkowe – if else
Przykład if (student[indeks].dziasiajZajęcia() = true) System.out.println(”Masz dzisiaj zajęcia”); else System.out.println(”Nie masz dzisiaj zajęć”);
91
Instrukcje warunkowe – if else
Przykład if ((student[indeks].srednia > 4.5) && ( student[indeks].rokStudiow < 3)) { float sredniaStypendium = student[indeks].srednia; float stypendium = student[indeks].obliczStypendium(sredniaStypendium); student[indeks].czesne -= stypendium; } else { student[indeks].kosztWydaniaDyplomu = Dyplom.koszt;
92
Instrukcje warunkowe – if else if else
if (wyrażenie_logiczne) { instrukcja 1; … instrukcja n; } else if (drugie_wyrażenie logiczne) { else {
93
Instrukcje warunkowe – if else if else
Przykład if ((student[indeks].srednia > 4.5) && ( student[indeks].rokStudiow < 3)) { float sredniaStypendium = student[indeks].srednia; float stypendium = student[indeks].obliczStypendium(sredniaStypendium); student[indeks].czesne -= stypendium; } else if (student[indeks].srednia > 4.5) { student[indeks].kosztWydaniaDyplomu = 0; else student[indeks].kosztWydaniaDyplomu = Dyplom.koszt;
94
Instrukcja wyboru Instrukcja wyboru weryfikuje zadeklarowane wyrażenie pod kątem możliwych wartości W zależności od wartości, jakie przyjmuje wyrażenie, wykonywane są różne warianty kodu Jeśli instrukcja wyboru nie jest w stanie przyporządkować żadnego wariantu, wykonywane jest wyrażenie domyślne umieszczane na samym końcu
95
Instrukcja wyboru - składnia
switch(wyrażenie_wyboru) { case wartość1 : wyrażenie; break; case wartość2 : case wartość3 : wyrażenie; break; … default: wyrażenie; } Brak break spowoduje wykonywanie kolejnych instrukcji wewnątrz instrukcji wyboru
96
Instrukcja wyboru - przykład
switch(wybor){ case 1: System.out.print("\nDla kogo chcesz wprowadzić dane? (nauczyciel/student) "); ... break; case 2: System.out.print("\nDla kogo chcesz skasować dane? (nauczyciel/student) "); … case 8; default: System.out.println("Nieprawidłowy numer !"); }
97
Pętla for Powoduje wykonanie instrukcji określoną ilość razy
Ilość pętli jest równa różnicy wartości wyspecyfikowanej w inicjowaniu a górną granicą podaną przez wyrażenie logiczne z szybkością osiągnięcia zależną od kroku for (inicjowanie; wyrażenie_logiczne; krok) wyrażenie 1; for (inicjowanie; wyrażenie_logiczne; krok){ wyrażenie 2; }
98
Pętla for - przykład class Studenci {
public static void main(String args[]) { for (int minuta = 195; minuta < 1; minuta--) { if (minuta > 15) System.out.println("Pozostało jeszcze " + minuta + ” minut wykładu :-("); else System.out.println("Pozostało jeszcze " + minuta + ” minut wykładu :-)"); }
99
Pętla while Jest wykonywana, dopóki warunek logiczny jest prawdziwy
Należy uważać, gdyż łatwo stworzyć pętlę ”nieskończoną” np. while(true) Pętla może się nie wykonać ani razu while (wyrażenie_logiczne) wyrażenie; while (wyrażenie_logiczne){ wyrażenia; }
100
Pętla while - przykład class Studenci {
public static void main(String args[]) { int minuta = 195; while (minuta > 0) { if (minuta > 15) System.out.println("Pozostało jeszcze " + minuta + ” minut wykładu :-("); else System.out.println("Pozostało jeszcze " + minuta + ” minut wykładu :-)"); minuta--; }
101
Pętla do … while Bardzo zbliżona do pętli typu while, różnica w momencie sprawdzenia warunku logicznego – na końcu Pętla wykona się minimum 1 raz do wyrażenie; while wyrażenie_logiczne; do { wyrażenia; } while wyrażenie_logiczne;
102
Pętla do … while - przykład
class Studenci { public static void main(String args[]) { int minuta = 0; do { if (minuta > 15) System.out.println("Pozostało jeszcze " + minuta + ” minut wykładu :-("); else System.out.println("Pozostało jeszcze " + minuta + ” minut wykładu :-)"); minuta--; } while (minuta > 0); }
103
Instrukcje sterowania przebiegiem pętli
break - przerywa działanie dowolnej pętli bądź instrukcji wyboru continue - przejście na koniec wyrażenia znajdującego się wewnątrz pętli (rozpoczęcie kolejnego wykonania pętli) Etykieta, umożliwia przejście do określonego miejsca w kodzie etykieta: do { wyrażenie; if (warunek1) { break etykieta; } } while (warunek-2); } while (warunek-3);
104
Instrukcje sterowania przebiegiem pętli - przykład
class Kontynuuj { public static void main(String args[]) { for(int i=0; i<10; i++) { System.out.print(i + " "); if (i%2 == 0) continue; System.out.println(""); }
105
Instrukcje sterowania przebiegiem pętli - przykład
nowyTest: do { testST.wyswietlPytania(); Pytanie pytanieTym = testST.wybierzPytanie(); odpowiedz = pytanieTym.wSkazodpowiedz(); if (pytanieTym.IloscBledow = 2) { break nowyTest; } } while (odpowiedz == true); } while (testUkonczony == true);
106
Zadania Zadanie 1: Zaproponować krótki program, który oblicza i wyświetla w godzinach oraz minutach czas dotarcia na Okęcie z Trójmiasta, jeśli dojazd tramwajem do pociągu trwa 40 minut, pociąg do stolicy jedzie 220 minut, a autobus na lotnisko 35 minut.
107
Zadania Zadanie 2: Jeśli zmienna liczba przyjmuje wartość , ustalić, ile wynosi: liczba<<1 liczba>>>1 liczba>>>4
108
Zadania Zadanie 3: Napisać program, który deklaruje 3 zmienne, dwóm pierwszym przypisuje wartości odpowiednio 3 oraz 7 (trzeciej wartość dowolną) i weryfikuje, czy trzecia wartość Jest mniejsza od dwóch pozostałych Jest większa od dwóch pozostałych Jest pomiędzy dwoma pozostałymi Jest równa którejś z pozostałych
109
Proszę o ewentualne pytania
Michał Kuciapski
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.