Struktura_programu_w_języku_Java

Download Report

Transcript Struktura_programu_w_języku_Java

Slide 1

Struktura programu w języku Java
mgr inż. Sylwia Glińska


Slide 2

Zagadnienia:

Ogólna budowa programów w języku Java
Kompilacja i interpretacja kodu w języku Java
Typy wbudowane w języku Java
Podstawowe instrukcje w języku Java


Slide 3

Zasada działania
Pliki *.java

Pliki *.class

kompilacja

interpretacja

JVM


Slide 4

Edytory
Zintegrowane środowiska programistyczne Javy
Borland JBuilder – http://www.borland.com/products/download/

Eclipse – http://www.eclipse.org/
IBM VisualAge for Java – http://www7.software.ibm.com/vad.nsf
JCreator – http://www.jcreator.com/
Kawa – http://www.macromedia.com/
NetBeans – http://www.netbeans.org/
Sun Forte for Java – http://www.sun.com/forte/ffj/index.html
Sun One Studio – http://forte.sun.com/ffj/index.html
VIM – http://www.vim.org/


Slide 5

Program w Javie
Każdy program w Javie jest zestawem klas.
Klasa jest podstawową jednostką enkapsulacji (nie można pisać kodu poza definicją
klasy).
Pisany przez nas program może być zapamiętany w jednym lub wielu plikach
źródłowych o rozszerzeniu "java".

Należy przestrzegać następującej konwencji dotyczącej nazewnictwa – nazwa klasy
głównej powinna być zgodna z nazwą pliku, który przechowuje program.


Slide 6

Aplkacje i aplety
Wyróżniamy dwa rodzaje programów:


aplikacje (standalone programs)



aplety (applets).

Aplikacje mogą działać zarówno w trybie graficznym jak i tekstowym.
Aplety działają jedynie w środowisku graficznym.
Aby zobaczyć działanie aplikacji musimy mieć zainstalowaną w naszym komputerze
wirtualną maszynę Javy – JVM.

Aplety są wykonywane przez środowisko przeglądarek; są one widoczne wtedy, gdy
przeglądarka posiada zintegrowaną wirtualną maszynę Javy.


Slide 7

Kompilacja
Kompilator Javy wymaga, aby pliki źródłowe miały rozszerzenie "java".
Pliki źródłowe są kompilowane za pomocą kompilatora Javy (javac.exe) do postaci
kodu bajtowego (pośredniego), a nie kodu maszynowego.
Polecenie kompilacji pliku źródłowego ma postać:
javac nazwa_pliku.java
Wynikiem kompilacji są pliki z rozszerzeniem "class", które mogą być wykonane przez

maszynę wirtualną Javy.
Podczas kompilacji pliku źródłowego każda klasa zostaje przeniesiona do swojego
własnego pliku o nazwie właściwej zgodnej z nazwą klasy i rozszerzeniu "class".


Slide 8

Aplikacja
Aby aplikacja mogła zostać uruchomiona, główna klasa musi zawierać metodę
public static void main(String args[])
Maszyna wirtualna Javy jest wywoływana za pomocą polecenia java z argumentami:
nazwa pliku o rozszerzeniu "class" zawierającego metodę main() oraz argumenty

wywołania tej metody, np.:
java nazwa_pliku [arg1 arg2 …]
Po załadowaniu klasy przez JVM sterowanie zostaje przekazane do metody main() i tu
zaczyna się właściwe działanie programu: tworzenie obiektów, odwołania do

innych klas aplikacji.


Slide 9

Pierwszy program
public class Hello
{
public static void main (String [ ] args)
{
System.out.println("HELLO WORLD");
}
}


Slide 10

Jak działa nasz program?
Po załadowaniu klasy Pierwsza.class przez JVM sterowanie zostaje przekazane do
metody main().

W naszym przykładzie metoda ta jest zdefiniowana
z jednym parametrem; jest nim tablica args typu String. Dzięki temu możliwe jest
przekazanie parametrów do aplikacji. Są one umieszczane w kolejnych elementach
tej tablicy: args[0], args[1], args[2], itd.
Liczbę przekazanych parametrów można uzyskać za pomocą metody length(),
na przykład:
int liczbaParametrów = args.length();
Metoda main() zawiera jedynie jedno polecenie System.out.println();


Slide 11

Pakiety
Java dostarcza nam do dyspozycji tzw. pakiety - są to swoiste biblioteki klas, przy czym
każda klasa w Javie należy do jakiegoś pakietu; zdefiniowana przez nas klasa
należy do pakietu "bez nazwy" (domyślnego), definiowanego przez środowisko.
Pakiety poza grupowaniem klas pełnią również rolę porządkującą i chronią przed
kolizjami nazw. Jednym ze standardowych pakietów, nie wymagających deklaracji,
jest pakiet java.lang, zawierający główne klasy języka Java.


Slide 12

Metoda println()
W klasie System pakietu java.lang zadeklarowano statyczne pole out związane ze
standardowym wyjściem. Z polem tym związana jest metoda println(), która
wypisuje na wyjściu wiersz podany jako argument. Czyli wynikiem działania programu
będzie wypisanie na ekranie monitora pozdrowienia: „HELLO WORLD".


Slide 13

Modyfikacja programu
class Hello1
{
public static void main (String args[])
{

pisz(„HELLO WORLD");
}
public static void pisz (String s)
{
System.out.println(s);
}
}


Slide 14

Jaka jest różnica?
Wynik działania naszej aplikacji jest dokładnie taki sam jak poprzednio, wywołanie
w metodzie main() metody pisz() z parametrem „Hello world" oznacza
polecenie wypisania podanego tekstu na ekranie monitora.
Jedyna różnicą jest to, iż tym razem zdefiniowaliśmy w naszej klasie dwie metody metodę główną sterującą działaniem aplikacji oraz metodę pomocniczą, służącą
do wypisywania linii tekstu na ekranie.


Slide 15

Operatory i ich priorytety
Priorytet

Operator

1

++ --

Arytmetyczny Inkrementacja,
Arytmetyczny Unarny +, unarny -

~

Całkowity

!

Boole'owski

(typ)

Dowolny

* /
%

3

Nazwa
dekrementacja

+ -

2

Typ argumentu

+ -

Uzupełnienie bitowe
Negacja logiczna
Konwersja
(rzutowanie)

Arytmetyczny Mnożenie, dzielenie
Arytmetyczny Modulo (reszta)
Arytmetyczny Dodawanie,
odejmowanie
15


Slide 16

Priorytet

Operator

Typ argumentu

3

+

Łańcuchowy

4

<< >> >>>

Całkowity

5

< > <= >=
instanceof

6

Nazwa
Konkatenacja
Przesunięcie bitowe

Arytmetyczny Operatory relacji
Obiektowy

Stwierdzenie typu

==

!=

Podstawowy

Równe nierówne

==

!=

Obiektowy

Równe nierówne

7

&

Całkowity

Bitowe AND

8

^

Całkowity

Bitowe XOR
16


Slide 17

Priorytet

Operator

Typ argumentu

Nazwa

9

|

Całkowity

10

&&

Boole'owski

Logiczne AND

11

||

Boole'owski

Logiczne OR

12

?:

Boole'owski

Operator warunku

13

=
*=
/=
+=
-=
%=

Zmienna,
dowolny

Bitowe OR

Operatory przypisania


Slide 18

Typy danych w Javie








Java jest językiem ze ścisłą kontrolą typów, w którym rozmiar i
postać danych są określone bardzo precyzyjnie.
Typy danych w Javie można podzielić na dwa rodzaje: typy
proste i typy referencyjne (klasy, interfejsy i tablice).
Do przechowywania liczb całkowitych przeznaczone są cztery
typy: byte (8 b), short (16 b), int (32 b) oraz long (64 b).
Rzeczywiste typy liczbowe to: float (32 b) i double (64 b).
Dane znakowe zapisywane są zgodnie ze standardem Unicode są to 16-bitowe liczby całkowite bez znaku. Do ich
przechowywania służy typ char.
Typ boolean (1 b) umożliwia przechowywanie wartości
logicznych. Może on przyjmować tylko dwie wartości: true i
false.


Slide 19

Podstawowy zestaw instrukcji


Instrukcja warunkowa if



Pętla while



Pętla do while



Pętla for



Instrukcja switch

19


Slide 20

Postać instrukcji if

if (warunek)
{
instrukcje
}
else
{
instrukcje
}


Slide 21

Wyrażenia logiczne (warunki)



Wyrażenia logiczne można przypisywać zmiennym typu
boolean. Ich wartością może być true lub false.
Proste wyrażenia logiczne konstruuje się za pomocą
operatorów relacji:




<, >, <=, >=, == (czy równe), != (czy różne).

Do budowy bardziej złożonych wyrażeń używa się
operatorów logicznych:




&& (koniunkcji – logiczne AND),
|| (alternatywy – logiczne OR),
! (negacji – logiczne NOT).


Slide 22

Instrukcja while
while ( warunek )
{
instrukcje
}

Przykład pętli while (dopóki)
while ( samochód jest brudny )
{
myj_samochód( );
}

Ile razy wykona się instrukcja wewnętrzna
pętli, gdy samochód jest czysty?


Slide 23

Instrukcja do while
do
{
instrukcje
}
while ( warunek );
Przykład pętli do (wykonuj dopóki)
do
{
myj_samochód( );
}
while (samochód jest brudny);

Ile razy wykona się instrukcja wewnętrzna
pętli, gdy samochód jest czysty?


Slide 24

Instrukcja for
for ( wyrażenie1 ; warunek ; wyrażenie2 )
{
instrukcje
}

Przykład pętli for (dla)
for ( int i=0; i<10; i++)
{
myj_samochód( );
}

Zmienną i nazywamy zmienną
sterującą pętli.
Zasięg działania zmiennej i jest
ograniczony do pętli for.


Slide 25

Instrukcja switch
switch ( wyrażenie)
{
case Wartość1 :
/* ... */
break;
case Wartość2 :
/* ... */
break;

default :
/* ... */
break;
}


Slide 26

Tablice







Tablica - to ciąg zmiennych tego samego typu, opisanych jedną
wspólną nazwą.
Elementy tablicy identyfikuje się je za pomocą indeksów.
Dostęp do poszczególnych elementów tablicy odbywa się za
pomocą operatora indeksowania [].
Indeksy są liczone od zera.
Tablica jednowymiarowa odpowiada matematycznemu pojęciu
wektora, dwuwymiarowa – macierzy.
Tablice w języku Java są zaimplementowane jako obiekty, więc
nie mogą być deklarowane statycznie. Tworzenie tablicy składa
się z dwóch etapów:
 deklaracja zmiennej referencyjnej tablicy
 utworzenie nowego obiektu tablicy i przypisanie go
do danej zmiennej tablicowej.
26


Slide 27

Tablice jednowymiarowe


Przykład instrukcji tworzących tablice:
int[] mojaTablica = new int[10];
int mojaTablica[] = new int[10];



Tablicę można też utworzyć w dwóch etapach:


najpierw deklarujemy zmienną referencyjną tablicy:
int[] mojaTablica ;
lub
int mojaTablica[];



następnie tworzymy nowy obiekt tablicy:

/* Musimy określić rozmiar tablicy, aby zaalokować
potrzebny dla niej obszar pamięci*/
mojaTablica = new int[10];

27


Slide 28

Tablice wielowymiarowe



Java obsługuje tablice wielowymiarowe, kóre posiadają
dwa lub więcej indeksów.
Ogólna postać instrukcji tworzącej tablicę
wielowymiarową ma postać:
typ[][]...[] nazwa = new typ[roz1][roz2]...[rozN];



Przykład instrukcji tworzącej tablicę o dwóch
wymiarach (jest to najczęściej używana forma tablicy
wielowymiarowej) :



int[][] A = new int[10][10];
lub
int A[][] = new int[10][10];

28


Slide 29

Ćwiczenie 1
Napisz program, który wyświetli n znaków "*"
w jednym wierszu , gdzie n jest parametrem funkcji.
Oto nagłówek funkcji:
public static void rysuj_gwiazdki( int n )
Spróbuj użyć tej funkcji dla różnych parametrów.


Slide 30

Rozwiązanie
public static void main (String args[])
{
rysuj_gwiazdki(10);
}
public static void rysuj_gwiazdki(int n)

{
for (int i=0; i{
System.out.print("*");
}
System.out.println();
}


Slide 31

Ćwiczenie 2
Napisz funkcję rysującą prostokąt o zadanych wymiarach, który składa się z
samych gwiazdek.
Na przykład po wywołaniu tej funkcji z parametrami
8 i 3 powinniśmy dostać:
********
********
********
Oto nagłówek funkcji
public static void rysuj_prostokat( int a, int b )


Slide 32

Rozwiązanie
public static void rysuj_prostokat(int a, int b)
{
for (int i=0; i{
for (int j=0; j{
System.out.print("*");

}
System.out.println();
}
}


Slide 33

Ćwiczenie 3
Napisz funkcję rysującą trójkąt z gwiazdek. Wysokość trójkąta ma być
podawana jako parametr. Na przykład po wywołaniu funkcji z parametrem
4 powinniśmy otrzymać następujący rysunek:

*
* *
* * *
* * * *


Slide 34

Rozwiązanie
public static void rysuj_trojkat(int n)
{
for (int i=0; i{
for (int j=0; j<=i; j++ )

{
System.out.print("* ");
}
System.out.println();
}
}


Slide 35

Ćwiczenie 4*
Zmodyfikuj program rysujący trójkąt tak, aby rysował trójkąty równoramienne.
Na przykład po wywołaniu funkcji rysuj_trójkat z parametrem 4
powinniśmy otrzymać następujący rysunek:

*
* * *
* * * * *
* * * * * * *


Slide 36

Rozwiązanie
Trójkąt składa się z m wierszy, przy czym każdy kolejny wiersz jest dłuższy o
dwie gwiazdki i ma mniejszą o jeden liczbę spacji poprzedzających. Wygodnie
jest wprowadzić metody pomocnicze do rysowania spacji i gwiazdek.

public static void rysuj_spacje(int n)
{

for (int i=0; iSystem.out.print(" ");
}


Slide 37

public static void rysuj_gwiazdki(int n)

{
for (int i=0; iSystem.out.print("* ");
}
public static void rysuj_trojkat(int m)
{
for (int i=0; i < m; i++ )
{
rysuj_spacje(m-i-1);
rysuj_gwiazdki(2*i+1);
System.out.println();

}
}


Slide 38

Ćwiczenie 5
Napisz program wyznaczający pierwiastki równania kwadratowego dla danych
współczynników a, b i c.
Przykładowy nagłówek funkcji:
static void prk( int a, int b, int c )

Wyznacznik = b2 – 4ac
Wyznacznik
większy od
zera

Pierwiastki

równy zeru
mniejszy od
zera

brak pierwiastków
rzeczywistych


Slide 39

Ćwiczenie 6
Napisz program sprawdzający czy podana liczba jest liczbą parzystą.