Programowanie sieciowe

Podobne dokumenty
JAVA. Platforma JSE: Środowiska programistyczne dla języka Java. Wstęp do programowania w języku obiektowym. Opracował: Andrzej Nowak

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Tworzenie aplikacji w języku Java

Programowanie obiektowe

Programowanie obiektowe zastosowanie języka Java SE

Język JAVA podstawy. wykład 2, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Java jako język programowania

Programowanie obiektowe

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),

1 Podstawy c++ w pigułce.

1 Podstawy c++ w pigułce.

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Wprowadzenie do języka Java

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Programowanie obiektowe

Wykład 4: Klasy i Metody

Java EE produkcja oprogramowania

Podstawowe części projektu w Javie

Czym jest Java? Rozumiana jako środowisko do uruchamiania programów Platforma software owa

Microsoft IT Academy kurs programowania

Programowanie wieloplatformowe w Java

Języki Programowania II Wykład 3. Java podstawy. Przypomnienie

WPROWADZENIE DO JĘZYKA JAVA

Podstawy programowania skrót z wykładów:

Wykład 2: Podstawy Języka

Ćwiczenie 1. Przygotowanie środowiska JAVA

Wykład 8: klasy cz. 4

Podstawy Programowania C++

Programowanie w Internecie. Java

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.

Tablice (jedno i wielowymiarowe), łańcuchy znaków

dziedziczenie - po nazwie klasy wystąpią słowa: extends nazwa_superklasy

Podstawy i języki programowania

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Programowanie obiektowe

Spis treści. 1 Java T M

Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1)

Multimedia JAVA. Historia

Programowania w Javie

Zofia Kruczkiewicz, Programowanie obiektowe - java, wykład 2 1

Podstawy programowania w języku C

Programowanie w Javie - wykład 2

Zmienne, stałe i operatory

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta Strona 1 z 26. Powrót. Full Screen. Zamknij.

Aplikacje Internetowe. Najprostsza aplikacja. Komponenty Javy. Podstawy języka Java

Rozdział 4 KLASY, OBIEKTY, METODY

Java-wykład. Dorota Pylak

Programowanie w Javie

Programowanie obiektowe. Wprowadzenie

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.

Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków

Java w 21 dni / Rogers Cadenhead. Gliwice, cop Spis treści. O autorze 11. Wprowadzenie 13 TYDZIEŃ I JĘZYK JAVA

Języki C i C++ Wykład: 2. Wstęp Instrukcje sterujące. dr Artur Bartoszewski - Języki C i C++, sem. 1I- WYKŁAD

Języki skryptowe w programie Plans

Podstawy programowania obiektowego

Podejście obiektowe. Tablice obiektów Przykład 1 metody i atrybuty statyczne oraz niestatyczne

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 2. Karol Tarnowski A-1 p.

Jeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę.

Języki i techniki programowania Ćwiczenia 2

Platformy Programistyczne Podstawy języka Java

Podstawy Programowania Podstawowa składnia języka C++

2. Składnia, środowisko i konwencje w Javie

Definiowanie własnych klas

WPROWADZENIE DO JĘZYKA JAVA

Początki Javy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 8

Dorota Pylak. Aplikacje w Javie- wykład 1

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?

Definiowanie własnych klas

Laboratorium Wstawianie skryptu na stroną: 2. Komentarze: 3. Deklaracja zmiennych

Języki i metody programowania Java. Wykład 2 (część 2)

Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut.

Definicje klas i obiektów. Tomasz Borzyszkowski

JAVA?? to proste!! Autor: wojtekb111111

Programowanie obiektowe

Programowanie strukturalne i obiektowe

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016

Java Język programowania

Programowanie w Javie cz. 1 Wstęp. Łódź, 24 luty 2014 r.

Typy danych, zmienne i tablice. Tomasz Borzyszkowski

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość

Wykład pierwszy. Cay S. Horstmann, Gary Cornell, Core Java 2 Techniki Zaawansowane, Helion, Gliwice 2005

Część 4 życie programu

MATERIAŁY DO ZAJĘĆ II

Powtórka algorytmów. Wprowadzenie do języka Java.

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6

Materiały do zajęć VII

Wykład 1: Wprowadzenie do technologii Java

Wykład 5: Klasy cz. 3

Interpreter - EasyCompile

Podstawy programowania. Wykład: 5. Instrukcje sterujące c.d. Stałe, Typy zmiennych c.d. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Java Podstawy. Michał Bereta

Lab 9 Podstawy Programowania

Programowanie, algorytmy i struktury danych

Transkrypt:

Programowanie sieciowe Wykład 1: Java, wstęp mgr inŝ. Paweł Kośla mgr Marcin Raniszewski Łódź, 2009 1

Plan przedmiotu mgr inŝ. Paweł Kośla pkosla@kis.p.lodz.pl http://pkosla.kis.p.lodz.pl Organizacja zajęć. Zaliczenie przedmiotu: egzamin(test) + projekt. Podstawy programowania w Javie (Składnia języka, aplikacje graficzne) Sieci TCP/IP (Protokoły sieciowe - TCP,UDP,IP, gniazda, porty) Obsługa sieci w Javie (Pisanie programów sieciowych, klient-serwer) 2

Plan wykładu Właściwości Javy Wprowadzenie do programowania Typy danych Klasy i pojęcia z nimi związane Operatory Instrukcje sterujące 3

Literatura Java. Programowanie sieciowe Elliotte Rusty Harold, wyd. Read Me (RM), 2001 (wydanie 1) Java 2. Podstawy Cay Horstmann, Gary Cornell, wyd. Helion, 2003 Thinking in Java wydanie 4 Bruce Eckel, wyd. Helion, 2006 http://www.mindview.net/books (ver. 3 EN) Strona domowa firmy Sun: http://java.sun.com/ Java. Receptury Ian F. Darwin wyd. Helion, 2003 4

Platformy Javy Java 2 występuje w róŝnych edycjach: Standard Edition (J2SE) Dla zwykłych stacji roboczych, które w większości przypadków pracują pod kontrolą systemów: Linux, Solaris lub Windows. Tworzenie aplikacji klienckich. Enterprise Edition (J2EE) Platforma serwerowa dla systemów rozproszonych, tj. świadczących usługi dla wielu uŝytkowników. Programowanie po stronie serwera (np. serwery aplikacji). Micro Edition (J2ME) Technologia wykorzystywana przez małe urządzenia, takie jak: pagery, telefony komórkowe i inne małe urządzenia. J2ME wykorzystuje niektóre komponenty J2SE, takie jak mniejsza maszyna wirtualna i odchudzone API. 5

Podstawowe pojęcia Java Runtime Environment (JRE) środowisko uruchomieniowe Javy, zwane równieŝ JVM (Java Virtual Machine) platforma potrafiąca zinterpretować program napisany w języku Java. Tworzone oddzielnie dla kaŝdej platformy sprzętowej/systemowej. Podstawowy program: java interpreter Javy, pozwalający uruchamiać samodzielnie programy, Java 2 Software Developement Kit (Java 2 SDK - JDK) zestaw narzędzi do kompilowania i uruchamiania aplikacji, oglądania apletów, tworzenia dokumentacji. Zawiera środowisko uruchomieniowe (JRE), przykłady zastosowania standardowych elementów API, a takŝe dodatkowe biblioteki. W jego skład wchodzą między innymi: javac kompilator Javy, javadoc generator dokumentacji, jar archiwizator klas 6

Cechy Javy Obiektowość NiezaleŜność od architektury Sieciowość i obsługa programowania sieciowego Niezawodność i bezpieczeństwo 7

Obiektowość Java jest w pełni obiektowym językiem programowania (wywodzi się od języka Smalltalk takŝe w pełni obiektowego) KaŜdy program składa się z klas Definicja klasy jest jedynym sposobem zdefiniowania nowego typu danych Brak funkcji globalnych, nawet funkcję main() definiuje się w klasie 8

NiezaleŜność od architektury Kod źródłowy.java Kod pośredni (bcode).class JVM Windows kompilacja uruchomienie (kompilacja JIT Just In Time) JVM Unix Kod źródłowy Plik zawierający program napisany w języku Java Kod pośredni Pliki przechowujące klasy po kompilacji. Bcode jest jednakowy dla wszystkich platform. Uruchomienie Interpretowanie kodu bajtowego (bcode) przez tzw.maszynę wirtualną. Interpretacja kodu bajtowego jest wolniejsza od uruchamiania kodu maszynowego. 9

Sieciowość i obsługa programowania sieciowego Java zawiera bardzo rozbudowane, gotowe klasy do programowania aplikacji sieciowych. Pakiety w Javie pozwalają na: obsługę róŝnych protokołów sieciowych, (HTTP,FTP,TCP,UDP), zdalne wykonywanie metod (programowanie rozproszone), RMI, implementacje rozbudowanych serwerów, (web service), tworzenie apletów i serwletów. 10

Niezawodność i bezpieczeństwo Wyjątki. Zgłaszanie wyjątków np. przy wyjściu poza zakres tablicy. Garbage collector. Automatycznie usuwane są nieuŝywane obiekty. Brak konieczności ręcznej kontroli wycieków pamięci, czyli jak w C++ stosowania delete. Brak moŝliwości wykonywania operacji na wskaźnikach, na obiektach działamy za pomocą referencji. 11

Java a C++ Java wolniejsza od C++, Składnia podobna do C/C++, Łatwiejszy niŝ C/C++ (proste budowanie aplikacji okienkowych), Brak ręcznej obsługi pamięci dzięki GC. 12

Konwencja kodu Nazwy klas piszemy z wielkiej litery i kolejne słowa (jeśli nazwa klasy się z takich składa) piszemy łącznie i rozpoczynamy takŝe wielką literą. class PierwszaKlasa { Metody i pola wewnątrz klasy piszemy podobnie, lecz rozpoczynamy małą literą. class PierwszaKlasa { int zmiennacalkowita; void pierwszametoda(int numerzmiennej) { 13

Konwencja kodu Istnieje kilka wariantów pisania nawiasów { : while(i<4) { while(i<4) { while(i<4) { Wszystkie te są poprawne. Warto jednak wybrać jeden i konsekwentnie się go trzymać. Warto równieŝ po otwarciu klamry od razu postawić klamrę zamykającą. Pozwoli to uniknąć wielu niepotrzebnych błędów. 14

Estetyka kodu Pomiędzy zmiennymi, liczbami i operatorami powinniśmy stawiać spacje: int j = 3; int k = 0; for(int i = 0; i < 10; i++) { if (i > j) { k++;... Kod powinien być opisywany (stosujemy komentarze). Nazwy metod, klas i pakietów powinny odzwierciedlać ich zawartość, w krótki i zwięzły sposób je opisywać. Kod powinien być prawidłowo powcinany (stosowanie tabulatorów), przejrzysty i łatwy do zrozumienia. 15

Pierwszy program public class Start { public static void main(string args[]) { System.out.println( Hello World ); Kod źródłowy zapisujemy w pliku z nazwa Start.java (Nazwa klasy publicznej taka jak nazwa pliku!). Kompilujemy: Utworzony został przenośny plik Start.class (KaŜda klasa w oddzielnym pliku). Wykonujemy: > java Start Efekt: > javac Start.java > Hello World 16

Typy zmiennych W Javie występują dwa typy zmiennych: typy podstawowe (primitive types), typy referencyjne (odnośnikowe, reference types). Typy podstawowe: Nazwa boolean char byte short int long float double Opis Typ logiczny 16-bitowy znak Unicode 1-bajtowa liczba całkowita ze znakiem 2-bajtowa liczba całkowita ze znakiem 4-bajtowa liczba całkowita ze znakiem 8-bajtowa liczba całkowita ze znakiem 4-bajtowa liczba zmiennoprzecinkowa 8-bajtowa liczba zmiennoprzecinkowa Wartość domyślna false \u0000 (byte)0 (short)0 0 0L 0.0F 0.0D 17

Typy zmiennych Deklaracja typów podstawowych, deklaracja jak w C/C++: int x; float f1, f2; boolean zmiennalogiczna; Inicjalizacja zmiennych całkowitych: int x1 = 10; // liczba całkowita int x2 = 0123; // liczba ósemkowa int x3 = 0x00FF; // liczba szesnastkowa long l4 = 100L; // liczba całkowita, długa Inicjalizacja zmiennych zmiennoprzecinkowych: float f = 1.234F; double d = 1234.56; 18

Typy odnośnikowe Obiekty deklarowane i inicjalizowane są jako referencja: Point p1; p1 = new Point(); Wyjątek stanowi klasa String, której moŝemy uŝywać jak typu podstawowego : String s1 = Przykladowy napis, s2 = Wyraz ; Dla obiektów String przeciąŝony został operator + i =+ : s1 = Pierwsza czesc napisu + i druga ; s1 += i jeszcze jedna ; // s1 = Pierwsza czesc napisu i druga i jeszcze jedna 19

Tablice Tablice w Javie są obiektami. Dla kaŝdej tablicy Java tworzy odpowiadającą jej klasę tablicową. Deklaracja zmiennej będącej tablicą składa się z dwóch części: nazwy typu tablicy i nazwy tablicy. Typ tablicy określa typ danych, jakie tablica będzie zawierała. Deklaracja tablicy zawierającej elementy typu int: int tablicaint[]; lub int[] tablicaint; Przed uŝyciem naleŝy zaalokować dla niej pamięć: tablicaint[0] = 10; // BŁĄD brak alokacji tablicaint = new int[5]; tablicaint[0] =10 ; // OK. Jednoczesna deklaracja i alokowana pamięć: int tablicaint2[] = new int[10]; 20

Tablice MoŜna zainicjalizować od razu jej elementy (tworzenie obiektu i alokacja jest niejawna): int tablicaint3[] = {1,2,3,4,5; Indeksowanie podobne jak w C++, od 0 do n-1. Przekroczenie zakresu tablicy spowoduje wyjątek ArrayIndexOutOfBoundsException. KaŜda tablica ma zmienna publiczną length, określającą rozmiar tablicy: int dlugosc = tablicaint3.length; // dlugosc = 5; Tablice wielowymiarowe: int tablicaint4 [] []; tablicaint4 = new int[3][3]; int macierzint[][] = {{1,2,3,{4,5,6; 21

Komentarze W Javie istnieją dwa rodzaje komentarzy: Pierwszy to komentarz zaczynający się od znaków /*, kończący się */, a mogący obejmować wiele wierszy. Wielu programistów dodatkowo rozpoczyna kaŝdy wiersz takiego komentarza *: /* Pierwsza linia komentarza * Druga linia komentarza * Trzecia linia komentarza */ To co znajduje się pomiędzy /* a */ jest przez kompilator ignorowane. Drugi rodzaj komentarza, to komentarz jednowierszowy, rozpoczynający się od znaków // i kończący się wraz z końcem wiersza. // To jest komentarz jednowierszowy 22

Obiekty i klasy (pola i metody) Projektowanie zorientowane obiektowo polega na podzieleniu aplikacji na kilka autonomicznych komponentów, które pracują razem. Projektowanie zorientowane obiektowo składa się z podstawowych zadań: podziału dziedziny problemu na typy obiektów (klasy), modelowaniu związków pomiędzy tymi typami, projektowaniu pól oraz metod dostępu w typach. 23

Obiekty i klasy (pola i metody) Klasa zawiera: atrybuty (inaczej pola klasy), czyli zmienne lub stałe, określonych typów przechowujące dane związane z obiektami, metody, czyli inaczej funkcje, które moŝemy wykonywać na danym obiekcie lub na klasie (metody statyczne), konstruktor, czyli kod inicjalizujący obiekt danej klasy, inne klasy (klasy wewnętrzne). 24

Obiekty i klasy (pola i metody) Do tworzenia klasy słuŝy słowo kluczowe class. Po nim występuje nazwa nowego typu (klasy): public class NazwaKlasy { /* ciało klasy */ Aby utworzyć obiekt nowej klasy piszemy: NazwaKlasy obiekt = new NazwaKlasy(); KaŜdy z obiektów otrzymuje własny obszar pamięci dla swoich zmiennych składowych: public class NazwaKlasy { public int i; public double d; Odwołanie się do składowych obiektu: obiekt.i = 10; obiekt.d = 12.3; 25

Obiekty i klasy (pola i metody) Metody określają funkcje, które moŝemy wykonywać na danym obiekcie lub na całej klasie (o tym później): typzwracany nazwametody(/* lista argumentów */) { /* ciało metody */ Odwołanie się do metod: obiekt.nazwametody(arg1, arg2, ); 26

Obiekty i klasy (pola i metody) Wynik działania metody. return pełni dwie funkcje: Określa opuszczenie metody, Określa wartość zwracaną (jeśli jest). Typ void metoda nie zwraca wartości: void metoda1() { return; int metoda2() { return 2*3; 27

Konstruktory Jest wywoływany podczas tworzenia obiektu (new). Nazwa jest taka sama jak nazwa klasy. Konstruktor nic nie zwraca. Konstruktor moŝe być domyślny, jeśli klasa nie zawiera zdefiniowanego Ŝadnego. Jego funkcja sprowadza się tylko do powołania obiektu z ustawionymi polami na domyślne wartości inicjalizacyjne (jeśli pole jest inną klasą ustawiona zostaje watość null). public class NazwaKlasy { public int i; public double d; NazwaKlasy() { /* operacje inicjalizujące */ i = 10; d = 0.002; 28

PrzeciąŜanie konstruktorów: public class NazwaKlasy { NazwaKlasy() { System.out.println( konstruktor bez parametru ); NazwaKlasy(String str) { System.out.println( konstruktor z napisem: + str); Wywołanie: NazwaKlasy obiekt = new NazwaKlasy(); // bez parametru NazwaKlasy obiekt2 = new NazwaKlasy( pierwszy ); // konstruktor z napisem: pierwszy Jeśli zdefiniujemy jakiś konstruktor przyjmujący parametr, wówczas nie jest tworzony domyślny konstruktor: class NazwaKlasy { NazwaKlasy(String str) { NazwaKlasy obiekt = new NazwaKlasy(); // BŁĄD 29

Dokumentacja klas W kodzie źródłowym powinno się umieszczać tzw. komentarz dokumentacyjny. Standardowo generator javadoc tworzy dokumentacje w formacie HTML. Komentarz powinien pojawiać się przed deklaracją klasy metod oraz pól. /** * Klasa testowa * @author Jan Kowalski * @version 1.0 */ class Test { 30

Dokumentacja klas Znaczniki: Znacznik @author @deprecated @exception @param @return @see @version Opis autor klasy przestarzałe opis wyjątku opis parametru opis zwracanej wartości nazwa związanej klasy wersja Zastosowanie klasa klasa, metoda, pole metoda metoda metoda klasa, metoda, pole klasa 31

Zasięg Wiele języków programowania posługuje się pojęciem zasięgu. Zasięg oznacza widoczność oraz czas Ŝycia zmiennych w obrębie zakresu. Zakres w Javie definiuje się za pomocą nawiasów klamrowych { { double x = 1.0; // tylko x jest dostępny { int a = 4; // dostępne są obie zmienne x i a // tylko x jest dostępny //a jest poza zasięgiem 32

Zasięg śycie obiektów Javy jest inne od Ŝycia zmiennych typów podstawowych. Kiedy w Javie tworzymy obiekt za pomocą słowa kluczowego new jest on równieŝ dostępny poza zasięgiem: { String s = new String("lancuch"); // koniec zasiegu W powyŝszym przykładzie referencja s przepadnie wraz z końcem zakresu, ale sam obiekt, na który wskazywała przetrwa i będzie zajmował pamięć. Zajmie się nim jednak garbage collector (opis w dalszej części wykładu). 33

Słowo kluczowe static Pola i metody klas mogą być statyczne lub niestatyczne. Składowe niestatyczne zawsze wiąŝą się z istnieniem jakiegoś obiektu. Składowe statyczne (zadeklarowane z modyfikatorem static), mogą być uŝywane nawet wtedy, gdy nie istnieje Ŝaden obiekt klasy. Deklaracja pola lub metody z modyfikatorem static mówi, Ŝe pole danych lub metoda dotyczy klasy a nie obiektu. Oznacza to, Ŝe dla wszystkich obiektów danej klasy pole statyczne ma tą samą wartość. Ze statycznych metod nie wolno odwoływać się do niestatycznych składowych klasy (obiekt moŝe nie istnieć). MoŜliwe są odwołania do innych statycznych składowych. public class Klasa { public int i; static void metodastatyczna() { i=5; // BŁĄD, zmienna i moŝe nie istnieć, // jeśli metoda została // wywołana bez obiektu 34

Słowo kluczowe static Spoza klasy do jej statycznych składowych moŝemy odwoływać się na dwa sposoby: NazwaKlasy.nazwaSkładowej Klasa.metodaStatyczna(); Gdy istnieje jakiś obiekt danej klasy, tak samo jak do niestatycznych składowych tej klasy : obiektklasy.nazwaskładowej Klasa obiekt = new Klasa(); obiekt.metodastatyczna(); 35

Słowo kluczowe static Przykład: W klasie System pakietu java.lang zadeklarowano statyczne pole typu PrintStream (oznaczające obiekt klasy PrintStream, związany ze standardowym wyjściem). public class System { public static PrintStream out; W klasie PrintStream pakiet java.io zdefiniowano metodę println, która wypisuje na standardowe wyjście (stdout) wiersz podany jako argument. public class PrintStream {... public void println(string s) {...... 36

Słowo kluczowe static Tak więc System.out oznacza statyczne pole klasy System o identyfikatorze (nazwie) out, oznaczające obiekt klasy PrintStream. Natomiast println jest uŝyciem metody na rzecz tego obiektu. To wyjaśnia uŝywane dotychczas polecenie: System.out.println( Hello World ); TakŜe metoda main jest statyczna, gdyŝ zostaje ona wywoływana podczas uruchamiania programu, zanim jeszcze powstał jakikolwiek obiekt. public class Start { public static void main(string args[]) { 37

Operatory Operatory w Java dzieli się na (podobnie jak w C/C++) : arytmetyczne, inkrementacji i dekrementacji, bitowe, logiczne, przypisania, porównania, pozostałe: rzutowanie, operatory klas, operator warunkowy. 38

Operatory Operatory arytmetyczne (zmienne liczbowe i znakowe): + - * / % Operatory inkrementacji i dekrementacji: ++ -- int x1 = 1; int x2 = ++x1; // x1 = 2, x2 = 2 char c1 = a ; c1++; // c1 = b Operatory bitowe: ~ & ^ (XOR) << >> (dla liczby dodatniej rozszerzanie zerami, dla ujemnej jedynkami) >>> (rozszerzenie tylko zerami) Operatory logiczne:! && 39

Operatory Operatory przypisania: = przypisanie, takŝe dla obiektów += -= *= /= %= najpierw następuje operacja arytmetyczna, następnie przypisanie &= = ^= <<= >>= >>>= najpierw operacja bitowa, następnie przypisanie Operatory porównania: ==!= porównanie, takŝe dla obiektów (Uwaga na String!!) <= >= < > 40

Operatory Kolejność operatorów: 1 X++ X-- ++X --X -X ~! 7 & rzutowanie 8 ^ 2 * / % 9 3 + - 10 && 4 operatory_bitowe 11 5 <= >= < > instanceof 12 operator_warunkowy?: 6 ==!= 13 operatory_przypisania Operatory specjalne: new konkretyzacja. - kwalifikator, selektor [] - indeks, - separator list () - ogranicznik list parametrów 41

Instrukcje sterujące Instrukcje sterujące stanowią motor działania programu. Ich wykonanie powoduje odpowiednie przetwarzanie danych. Sterowanie wykonaniem polega na pomijaniu, wielokrotnym wykonywaniu pewnych fragmentów kodu oraz sprawdzaniu warunków w celu ustalenia dalszego przebiegu wykonania programu. Zbiór instrukcji języka Java zawiera: instrukcje warunkowe if-else, instrukcje iteracyjne for, while, do-while, instrukcje continue, break, return, instrukcja wielokrotnego wyboru switch. 42

if-else Jest to najbardziej podstawowa metoda sterowania programem: if (wyr_logiczne){ instrukcje; else { instrukcje; wyr_logiczne musi zwracać wartość logiczną. instrukcje oznacza zarówno pojedynczą instrukcję jak i złoŝoną. Przykład: if (x % 2 == 0) { x = x / 2; else { x = 3 * x + 1; 43

if-else Instrukcja if-else pozwala dokonać wyboru wielowariantowego: if (wyr_logiczne) { instrukcja; else if (wyr_logiczne) { instrukcja; else { instrukcja; 44

case Jest to instrukcja przeznaczona do wyboru z wielu wariantów: switch(wyr_całkowite) { case stała1_całkowita: instrukcja; break; case stałan_całkowita: instrukcja; break; default: instrukcja; WyraŜenie wyr_całkowite musi być całkowite. KaŜdy przypadek kończy się instrukcją break. Przypadek default nie jest zakończony instrukcją break. Selektorem moŝe być zmienna typu int lub char. Dla typów niecałkowitych naleŝy korzystać z instrukcji if-else. 45

case Przykład: int ilosc;... switch(ilosc) { case 1: rabat = 0; break; case 2: rabat = 0.15; break; default: rabat = 0.30; 46

while Instrukcja while zaliczana jest do grupy instrukcji iteracyjnych. Instrukcja jest powtarzana dopóki wyr_logiczne jest prawdziwe: while(wyr_logiczne) { instrukcja; Przykład: int x=10; while (x > 1) { x--; while (true) { 47

do-while Wykonanie tej instrukcji róŝni się od wykonania poprzedniej tym, Ŝe warunek wyr_logiczne jest sprawdzany po kaŝdym wykonaniu instrukcji, a nie przed, jak to ma miejsce w przypadku instrukcji while. Oznacza to, Ŝe instrukcja zostaje wykonana co najmniej jeden raz: do { instrukcja; while (wyr_logiczne); Przykład: public class VarValue { public static void main(string[] args) { int test = 1; do { System.out.println("Test = " +test); test++; while(test < 99); 48

for for(inicjalizacja; wyr_logiczne; krok) { instrukcja; W miejscu inicjalizacja moŝe pojawić się deklaracja zmiennych wraz z ich inicjalizacją. Zmienne zadeklarowane w inicjalizacja są widoczne tylko w ciele instrukcji for. KaŜde z wyraŝeń inicjalizacja, wyr_logiczne, krok moŝe być puste. Opuszczenie wyraŝenia warunkowego traktowane jest tak, jakby stało tam wyraŝenie zawsze prawdziwe. Wykonanie instrukcji for przebiega w następujący sposób: najpierw wykonują się instrukcje inicjalizujące pracę pętli, obliczane jest wyraŝenie warunkowe. Jeśli jest równe false pętla jest przerywana, jeŝeli powyŝej okazało się, Ŝe wyraŝenie było prawdziwe, wówczas wykonywane są instrukcje będące treścią pętli, po wykonaniu treści pętli wykonana zostanie instrukcja krok, po czym powtarzana jest akcja sprawdzania warunku. 49

for Wewnątrz instrukcji for moŝna zdefiniować kilka zmiennych naraz. Instrukcje te muszą być oddzielone przecinkami. Są one wykonywane sekwencyjnie. Część inicjalizacyjna moŝe zawierać dowolną liczbę definicji. Zmienne te muszą być tego samego typu. Przykład: for(int i = 1, j = i + 10; i < 5; i++, j = j - 2) { System.out.println("i= " + i + " j= " + j); Otrzymamy: i= 1 j= 11 i= 2 j= 9 i= 3 j= 7 i= 4 j= 5 50

for Istnieje łatwy sposób poruszania się po elementach tablicy. for(object obj : tablica) { Przykład: String tab[] = { raz, dwa, trzy for(string str : tab) { System.out.println(str); 51

break break etykieta; Etykieta to identyfikator, po którym występuje dwukropek. Etykiety wolno stosować tylko przed instrukcjami iteracji. Instrukcja break pozwala na wcześniejsze opuszczenie pętli. Jeśli break występuje bez etykiety to sterowanie programem przekazywane jest poza zasięg pętli. Jeśli instrukcja break posiada etykietę to sterowanie przekazywane jest poza blok instrukcji oznaczonych etykietą. UŜycie instrukcji break z etykietą pozwala na natychmiastowe opuszczenie wielu zagnieŝdŝonych instrukcji while. 52

break Przykład: int i = 0, j = 0; outerloop://etykieta while(i < 100) { i++; while(true) { j++; if(i + j > 10) { break outerloop; //Tu zostałoby przekazane sterowanie gdyby //instrukcja break nie miała etykiety outerloop. //koniec bloku instrukcji outerloop //Tu zostaje przekazane sterowanie programem po //wykonaniu instrukcji break outerloop 53

continue continue etykieta; Instrukcja continue nie powoduje opuszczenia pętli ale natychmiastowe przejście do następnego kroku iteracji. Bez uŝycia etykiety iteracji w której się znajduje continue. Z etykietą dotyczy iteracji oznaczonej daną etykietą. Przykład: etykieta1: iteracja_zewnętrzna { iteracja_wewnętrzna { break;//1 // continue;//2 // break etykieta1;//3 // continue etykieta1;//4 54