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; i System.out.print(" ");
}
Slide 37
public static void rysuj_gwiazdki(int n)
{
for (int i=0; i System.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ą.
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; i
}
Slide 37
public static void rysuj_gwiazdki(int n)
{
for (int i=0; i
}
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ą.