Programowanie sieciowepkosla.kis.p.lodz.pl/fl/PS1.pdfTablice w Javie s ąobiektami. Dla ka Ŝdej...

54
1 Programowanie sieciowe Wyklad 1: Java, wstęp mgr inŜ. Pawel Kośla mgr Marcin Raniszewski Lódź, 2009

Transcript of Programowanie sieciowepkosla.kis.p.lodz.pl/fl/PS1.pdfTablice w Javie s ąobiektami. Dla ka Ŝdej...

1

Programowanie sieciowe

Wykład 1: Java, wstęp

mgr inŜ. Paweł Koślamgr Marcin Raniszewski

Łódź, 2009

2

Plan przedmiotumgr inŜ. Paweł Koś[email protected]://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)

3

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

4

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, 2006http://www.mindview.net/Books (ver. 3 EN)

Strona domowa firmy Sun: http://java.sun.com/

„Java. Receptury” Ian F. Darwin wyd. Helion, 2003

5

Platformy JavyJava 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.

6

Podstawowe poj ęciaJava 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:

javac – kompilator Javy,javadoc – generator dokumentacji,jar – archiwizator klas

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:

java – interpreter Javy, pozwalający uruchamiać samodzielnie programy,

7

Cechy Javy

Obiektowość

NiezaleŜność od architektury

Sieciowość i obsługa programowania sieciowego

Niezawodność i bezpieczeństwo

8

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

9

NiezaleŜność od architektury

Kod źródłowy – Plik zawierający program napisany w języku JavaKod 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.

Kod źródłowy.java

Kod po średni (bcode).class

kompilacja

JVM Windows

JVMUnix

uruchomienie(kompilacja JIT – Just In Time)

10

Sieciowo ść i obsługa programowania sieciowego

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.

Java zawiera bardzo rozbudowane, gotowe klasy do programowania aplikacji sieciowych.

Pakiety w Javie pozwalają na:

11

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.

12

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.

13

Konwencja koduNazwy 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) {}

}

14

Konwencja koduIstnieje 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.

15

Estetyka koduPomię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.

16

Pierwszy programpublic 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:

Efekt:

> javac Start.java

> java Start

> Hello World

17

Typy zmiennychW Javie występują dwa typy zmiennych:

• typy podstawowe (primitive types),

• typy referencyjne (odnośnikowe, reference types).

8-bajtowa liczba zmiennoprzecinkowa

4-bajtowa liczba zmiennoprzecinkowa

8-bajtowa liczba całkowita ze znakiem

4-bajtowa liczba całkowita ze znakiem

2-bajtowa liczba całkowita ze znakiem

1-bajtowa liczba całkowita ze znakiem

16-bitowy znak Unicode

Typ logiczny

Opis

0.0D

0.0F

0L

0

(short)0

(byte)0

\u0000

false

Wartość domy ślna

double

float

long

int

short

byte

char

boolean

Nazwa

Typy podstawowe:

18

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łkowitaint x2 = 0123; // liczba ósemkowaint x3 = 0x00FF; // liczba szesnastkowalong l4 = 100L; // liczba całkowita, długa

Inicjalizacja zmiennych zmiennoprzecinkowych:

float f = 1.234F;double d = 1234.56;

19

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 jed na”

20

TabliceTablice 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 alokacjitablicaInt = new int[5];tablicaInt[0] =10 ; // OK.

Jednoczesna deklaracja i alokowana pamięć:

int tablicaInt2[] = new int[10];

21

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

22

KomentarzeW 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

23

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.

24

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

25

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;

26

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

27

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;

}

28

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

}}

29

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 parametr uNazwaKlasy 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

30

Dokumentacja klasW 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 {

}

31

Dokumentacja klas

Znaczniki:

klasawersja@version

klasa, metoda, polenazwa związanej klasy@see

metodaopis zwracanej wartości@return

metodaopis parametru@param

metodaopis wyjątku@exception

klasa, metoda, poleprzestarzałe@deprecated

klasaautor klasy@author

ZastosowanieOpisZnacznik

32

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}

33

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

34

Słowo kluczowe staticPola 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 niestatycznychskł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

35

Słowo kluczowe staticSpoza klasy do jej statycznych składowych moŜemy odwoływać się na dwa sposoby:

• NazwaKlasy.nazwaSkładowejKlasa.metodaStatyczna();

• Gdy istnieje jakiś obiekt danej klasy, tak samo jak do niestatycznychskładowych tej klasy : obiektKlasy.nazwaSkładowej

Klasa obiekt = new Klasa();

obiekt.metodaStatyczna();

36

Słowo kluczowe staticPrzykł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) {...}

...}

37

Słowo kluczowe staticTak 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[]) {}

}

38

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.

39

Operatory

Operatory arytmetyczne (zmienne liczbowe i znakowe):+ - * / %

Operatory inkrementacji i dekrementacji:++ --

int x1 = 1;int x2 = ++x1; // x1 = 2, x2 = 2char c1 = ‘a’;c1++; // c1 = ‘b’

Operatory bitowe:~ & | ^ (XOR)<< >> (dla liczby dodatniej – rozszerzanie zerami,

dla ujemnej – jedynkami)>>> (rozszerzenie tylko zerami)

Operatory logiczne:! && ||

40

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

41

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

42

Instrukcje steruj ąceInstrukcje sterujące stanowią motor działania programu. Ich wykonanie powoduje odpowiednie przetwarzanie danych. Sterowanie wykonaniempolega 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 .

43

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

44

if-elseInstrukcja if-else pozwala dokonać wyboru wielowariantowego:

if (wyr_logiczne) {instrukcja;

}else if (wyr_logiczne) {

instrukcja;}else {

instrukcja;}

45

caseJest 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 .

46

casePrzykład:

int ilosc;...switch(ilosc) {

case 1:rabat = 0;break;

case 2:rabat = 0.15;break;

default:rabat = 0.30;

}

47

whileInstrukcja 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) {…

}

48

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

}

49

forfor(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.

50

forWewną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= 11i= 2 j= 9i= 3 j= 7i= 4 j= 5

51

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

52

breakbreak 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 .

53

breakPrzykład:int i = 0, j = 0;outerloop://etykietawhile(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

54

continuecontinue 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

}}