Podstawowe aspekty programowania w Javie

Slides:



Advertisements
Podobne prezentacje
Programowanie w Java.
Advertisements

Wstęp do strumieni danych
C++ wykład 2 ( ) Klasy i obiekty.
C++ wykład 4 ( ) Przeciążanie operatorów.
Programowanie obiektowe
Mgr inż.Marcin Borkowski Podstawy Java Część II
Mgr inż.Marcin Borkowski Podstawy Java Krótkie wprowadzenie dla studentów Wyższej Szkoły Ekologii i Zarządzania
Programowanie obiektowe
Wzorce.
Języki programowania C++
PROGRAMOWANIE STRUKTURALNE
PROGRAMOWANIE STRUKTURALNE
Tworzenie i obsługa programów – przykład 3 uwagi cd. Wykorzystując różne klasy biblioteki języka Java należy pamiętać w jakim pakiecie się znajdują. Wszystkie.
Programowanie obiektowe w Javie
Podstawy języka Java Nguyen Hung Son Uniwersytet Warszawski.
Programowanie imperatywne i język C Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie.
Kurs Pascala – spis treści
Struktury.
Tablice.
1 Dygresja: cztery płyty główne…. 2 Dygresja: osobliwości C /* cos o nieistniejacym typie Boolean */ /* oraz o operatorze przecinkowym */ #include int.
C++ wykład 2 ( ) Klasy i obiekty.
Zasady zaliczenia Warunki uzyskania zaliczenia:
Wykład 2 struktura programu elementy języka typy zmienne
Java – programowanie obiektowe
dr Anna Kwiatkowska Instytut Informatyki
Wprowadzenie do programowania w języku Turbo Pascal
Ogólnopolski Konkurs Wiedzy Biblijnej Analiza wyników IV i V edycji Michał M. Stępień
Podstawy programowania
Pakiety w Javie Łukasz Smyczyński (132834). Czym są pakiety? Klasy w Javie są grupowane w pewne zbiory zwane pakietami. Pakiety są więc pewnym podzbiorem.
Podstawy programowania
Java 3 MPDI Programowanie obiektowe W7. import java.io.*; public class X { // kontrukcja throws – określenie jakie wyjątki może dana metoda // sygnalizować
TABLICE C++.
Podstawy programowania w języku C i C++
Programowanie obiektowe – zastosowanie języka Java SE
JAVA c.d.. Instrukcji wyboru SWITCH używamy, jeśli chcemy w zależności od wartości pewnego wyrażenia wykonać jeden z kilku fragmentów kodu. Jest to w.
Andrzej Repak Nr albumu
Java – coś na temat Klas Piotr Rosik
Dziedziczenie Maciek Mięczakowski
Inicjalizacja i sprzątanie
JAVA.
Programowanie obiektowe Wykład 3 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/21 Dariusz Wardowski.
Programowanie obiektowe Wykład 6 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/14 Dariusz Wardowski.
Podstawy informatyki 2013/2014
Programowanie obiektowe 2013/2014
  ELEMENTY JĘZYKA JAVA komentarze w Javie, słowa kluczowe i operatory, proste typy danych, tablice, podstawowy zestaw instrukcji.
EcoCondens Kompakt BBK 7-22 E.
EcoCondens BBS 2,9-28 E.
Programowanie w języku C++
Podstawy języka Instrukcje - wprowadzenie
User experience studio Użyteczna biblioteka Teraźniejszość i przyszłość informacji naukowej.
WYNIKI EGZAMINU MATURALNEGO W ZESPOLE SZKÓŁ TECHNICZNYCH
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
Testogranie TESTOGRANIE Bogdana Berezy.
Jak Jaś parował skarpetki Andrzej Majkowski 1 informatyka +
Programowanie strukturalne i obiektowe C++
Kurs języka C++ – wykład 4 ( )
Technologie internetowe Wykład 5 Wprowadzenie do skrytpów serwerowych.
Elementy geometryczne i relacje
Podsumowanie wiedzy MPDI2 sem.3 INFORMATYKA. tworzenie nowego pliku i katalogu, nawigacja po katalogach, listowanie zawartości katalogu, zmiana nazw,
Seminarium Dyplomowe: Metodyka i Techniki Programowania Autor: Bartłomiej Fornal.
Wstęp do programowania Wykład 2 Dane, instrukcje, program.
Podstawowe konstrukcje języka Java Bartosz Walter InMoST Wielkopolska sieć współpracy w zakresie innowacyjnych metod wytwarzania oprogramowania Termin.
Programowanie Obiektowe – Wykład 6
Klasy, pola, obiekty, metody. Modyfikatory dostępu, hermetyzacja
Programowanie Obiektowe – Wykład 2
Programowanie obiektowe – zastosowanie języka Java SE
Założenia projektowe Javy
Język C++ Typy Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego.
Programowanie w Javie 1 Dr Robert Kowalczyk
Zapis prezentacji:

Podstawowe aspekty programowania w Javie Michał Kuciapski m.kuciapski@univ.gda.pl

Kwestie organizacyjne

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.

Tematyka przedmiotu

Tematyka przedmiotu

Tematyka przedmiotu

Tematyka przedmiotu

Ocena Egzamin – 70 % Ocena z ćwiczeń – 30 % Dodatkowe punkty za aktywność Zwolnienia dla osób z oceną z ćwiczeń 4,5 i 5

Literatura Eckel B, Thinking in Java, 3rd Edition Revision 4.0 , Prentice-Hall, New Jersey 2002; http://www.pythoncriticalmass.com/ Dokumentacja producenta języka JAVA; http://java.sun.com/docs/ Kurs dotyczący języka Java firmowany przez CISCO Networking Academy oraz firmę SUN http://java.sun.com/docs/books/tutorial/index.html

Języki programowania

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.

Podstawowe informacje o języku Java Historia i istota języka Java

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

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

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

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

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

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

Wirtualna Maszyna Javy Platforma Javy Program w Javie Wirtualna Maszyna Javy Java API System komputerowy

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

Ś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)

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

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

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

Podstawowe informacje o języku Java Konstruowanie kodu w języku Java

Typy elementy programowania Javy Strukturalne Obiektowe Zdarzeniowe Współbieżne

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)

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;

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 */

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ł

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

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!”); }

Podstawowe informacje o języku Java Podstawowe informacje o obiektowości Javy

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

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

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

Na czym polega obiektowość Javy – klasy Klasa – abstrakcja grupy obiektów o podobnej charakterystyce Klasa = wspólne własności + wspólne zachowania

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)

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ą

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

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

Na czym polega obiektowość Javy – przykład Klasy i rozróżnianie pomiędzy nimi: public class OperacjePlikowe { … } public class PobieranieDanych

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

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(); }

„Elementy strukturalne” Składnia języka Java „Elementy strukturalne”

Przykład Elementy leksykalne Komentarze Identyfikatory Słowa kluczowe Separatory Przykład

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) */

Separatory

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.

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

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ą

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ą

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

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

Elementy strukturalne „Zmienne”

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

Zmienne – typy proste – liczby całkowite

Zmienne – typy proste – liczby rzeczywiste

Zmienne – typy proste – inne

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

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

Zmienne – literały

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.

Zmienne – zasięg i czas życia Globalny – na początku klasy publicznej; Lokalny: Dla metody Dla bloku

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

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

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

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

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

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

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

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

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

Elementy strukturalne „Operatory”

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

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

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 20 000: 00000000000000000100111000100000 << 2 00000000000000010011100010000000 >>>2 00000000000000000001001110001000

Operatory – bitowe – przesunięcia bitów liczba: 00000000000000000010100100101100 = 10 540 liczba<<1: 00000000000000000101001001011000 = 21 080 liczba>>>1: 00000000000000000001010010010110 = 5 270 liczba>>>4: 00000000000000000000001010010010 = 658 0*20+1*21+0*22+…+1*29

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 >>= >>>= <<=

Operatory – bitowe - przykłady 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

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)

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;

Elementy strukturalne „ Instrukcje sterowania przebiegiem programu”

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

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

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

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

Instrukcje warunkowe – if else Weryfikacja wyrażenia logicznego Prawda (true) Fałsz (false) Instrukcje jeśli fałsz Instrukcje jeśli prawda Dalsze instrukcje

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

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ęć”);

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;

Instrukcje warunkowe – if else if else if (wyrażenie_logiczne) { instrukcja 1; … instrukcja n; } else if (drugie_wyrażenie logiczne) { else {

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;

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

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

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

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

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

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

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

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;

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

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

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

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

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.

Zadania Zadanie 2: Jeśli zmienna liczba przyjmuje wartość 10 540, ustalić, ile wynosi: liczba<<1 liczba>>>1 liczba>>>4

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

Proszę o ewentualne pytania Michał Kuciapski