Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Podstawowe aspekty programowania w Javie Michał Kuciapski

Podobne prezentacje


Prezentacja na temat: "Podstawowe aspekty programowania w Javie Michał Kuciapski"— Zapis prezentacji:

1 Podstawowe aspekty programowania w Javie Michał Kuciapski

2 Kwestie organizacyjne

3 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. Cel przedmiotu

4 Tematyka przedmiotu

5

6

7

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 9 z 108 Literatura 1.Eckel B, Thinking in Java, 3rd Edition Revision 4.0, Prentice-Hall, New Jersey 2002; 2.Dokumentacja producenta języka JAVA; 3.Kurs dotyczący języka Java firmowany przez CISCO Networking Academy oraz firmę SUN ml ml

10 Języki programowania

11 11 z 108 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 13 z 108 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 : 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 14 z 108 Najważniejsze etapy historia Javy 1996: w przeglądarce Netscape zaimplementowano obsługę JAVA w wersji 1.0; SUN propaguje darmowe środowisko JDK : JAVA 2, zastosowania biznesowe 1999 – stałe rozwijanie języka przez firmę Sun

15 15 z 108 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 16 z 108 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 17 z 108 Języki kompilowane a interpretowalne Języki kompilowane: 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 18 z 108 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 19 z 108 Platforma Javy Program w Javie Wirtualna Maszyna Javy Java API System komputerowy

20 20 z 108 Architektura Kod źródłowy Java (.java) Kompilator Kod bajtowy Java (.class) Przesyłany jest lokalnie lub poprzez sieć poprzez sieć Ładowacz Klas Weryfikator kodu Biblioteka klas Javy Interpretator Java Kompilator kodu „w locie” System wykonywania System operacyjny Sprzęt Wirtualna Maszyna Javy

21 21 z 108 Ś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 22 z 108 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 23 z 108 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 24 z 108 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 26 z 108 Typy elementy programowania Javy Strukturalne Obiektowe Zdarzeniowe Współbieżne

27 27 z 108 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 28 z 108 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 29 z 108 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 30 z 108 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 imię i nazwisko wersja ewentualne odwołania do źródeł

31 31 z 108 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 32 z 108 Przykładowy program Michał 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 34 z 108 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 35 z 108 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 36 z 108 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 37 z 108 Na czym polega obiektowość Javy – klasy Klasa – abstrakcja grupy obiektów o podobnej charakterystyce Klasa = wspólne własności + wspólne zachowania

38 38 z 108 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 39 z 108 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 40 z 108 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 41 z 108 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 42 z 108 Na czym polega obiektowość Javy – przykład Klasy i rozróżnianie pomiędzy nimi: public class OperacjePlikowe { … } public class PobieranieDanych { … }

43 43 z 108 Na czym polega obiektowość Javy – przykład Zależności – dziedziczenie: public abstract class Osoba { … } class Nauczyciel extends Osoba { … }

44 44 z 108 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 Składnia języka Java „Elementy strukturalne”

46 46 z 108 Elementy leksykalne Komentarze Identyfikatory Słowa kluczowe Separatory Przykład PrzykładPrzykład

47 47 z 108 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 (your (a version number or a date) */

48 48 z 108 Separatory

49 49 z 108 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 50 z 108 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 51 z 108 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 52 z 108 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 53 z 108 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 54 z 108 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 56 z 108 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 57 z 108 Zmienne – typy proste – liczby całkowite

58 58 z 108 Zmienne – typy proste – liczby rzeczywiste

59 59 z 108 Zmienne – typy proste – inne

60 60 z 108 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 61 z 108 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 62 z 108 Zmienne – literały

63 63 z 108 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 64 z 108 Zmienne – zasięg i czas życia Zasięg: Globalny – na początku klasy publicznej; Lokalny: –Dla metody –Dla bloku

65 65 z 108 Zmienne – zasięg i czas życia 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 66 z 108 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 67 z 108 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 68 z 108 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 69 z 108 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 70 z 108 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 71 z 108 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 72 z 108 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 73 z 108 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 75 z 108 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 76 z 108 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 77 z 108 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 78 z 108 Operatory – bitowe – przesunięcia bitów liczba: = liczba<<1: = liczba>>>1: = liczba>>>4: = 658 0*2 0 +1*2 1 +0*2 2 +…+1*2 9

79 79 z 108 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 80 z 108 Operatory – bitowe - przykłady ABA |B A &B A ^B ~A

81 81 z 108 Operatory – relacyjne == równa sięnp. a == b + 1; != nie równa się > większe niż < mniejsze niż >= większe lub równenp. a >= b + 1; <= mniejsze lub równe this.pracuje == true; dane = wczytanie.readLine(); if (dane == null)

82 82 z 108 Operatory – logiczne & logiczne Inp. (a c); |logiczne LUB ^logiczne XLUB (wykluczający LUB) ||krótkie LUB &&krótkie Inp. (a c); !logiczne unarne NOT &=I oraz przypisanienp. 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 84 z 108 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 85 z 108 Instrukcje warunkowe - if Celem instrukcji warunkowej jest zweryfikowanie prawdziwości wyspecyfikowanego wyrażenia logicznego Instrukcje jeśli prawda Dalsze instrukcje Prawda (true) Fałsz (false) Weryfikacja wyrażenia logicznego

86 86 z 108 Instrukcje warunkowe - if Jedno liniowa instrukcja if (wyrażenie logiczne) instrukacja 1; Blok if (wyrażenie logiczne){ instrukcja 1; instrukcja 2;... instrukcja n; }

87 87 z 108 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 88 z 108 Instrukcje warunkowe – if else Instrukcje jeśli prawda Instrukcje jeśli fałsz Prawda (true) Fałsz (false) Weryfikacja wyrażenia logicznego Dalsze instrukcje

89 89 z 108 Instrukcje warunkowe – if else Jedno liniowa if (wyrażenie logiczne) instrukcja 1; else instrukcja 1; Blok if (wyrażenie logiczne){ instrukcja 1;... instrukcja n; } else{ instrukcja 1;... instrukcja n; }

90 90 z 108 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 91 z 108 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 92 z 108 Instrukcje warunkowe – if else if else if (wyrażenie_logiczne) { instrukcja 1; … instrukcja n; } else if (drugie_wyrażenie logiczne) { instrukcja 1; … instrukcja n; } else { instrukcja 1; … instrukcja n; }

93 93 z 108 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 94 z 108 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 95 z 108 Instrukcja wyboru - składnia break Brak break spowoduje wykonywanie kolejnych instrukcji wewnątrz instrukcji wyboru switch(wyrażenie_wyboru) { case wartość1 : wyrażenie; break; case wartość2 : wyrażenie; break; case wartość3 : wyrażenie; break; … default: wyrażenie; }

96 96 z 108 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) ");... break; … case 8; break; default: System.out.println("Nieprawidłowy numer !"); }

97 97 z 108 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 1; wyrażenie 2; }

98 98 z 108 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 99 z 108 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 100 z 108 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 101 z 108 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 102 z 108 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 103 z 108 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; do { wyrażenie; if (warunek1) { break etykieta; } } while (warunek-2); } while (warunek-3);

104 104 z 108 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 105 z 108 Instrukcje sterowania przebiegiem pętli - przykład nowyTest: do { testST.wyswietlPytania(); Pytanie pytanieTym = testST.wybierzPytanie(); do { odpowiedz = pytanieTym.wSkazodpowiedz(); if (pytanieTym.IloscBledow = 2) { break nowyTest; } } while (odpowiedz == true); } while (testUkonczony == true);

106 106 z 108 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 107 z 108 Zadania Zadanie 2: Jeśli zmienna liczba przyjmuje wartość , ustalić, ile wynosi: liczba<<1 liczba>>>1 liczba>>>4

108 108 z 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


Pobierz ppt "Podstawowe aspekty programowania w Javie Michał Kuciapski"

Podobne prezentacje


Reklamy Google