390 likes | 580 Views
Struktura programu w języku Java. mgr inż. Sylwia Glińska. 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. Zasada działania. Pliki *.java. kompilacja. Pliki *.class.
E N D
Struktura programu w języku Java mgr inż. Sylwia Glińska
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
Zasada działania Pliki *.java kompilacja Pliki *.class interpretacja JVM
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/
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.
Aplkacje i aplety • Wyróżniamy dwa rodzaje programów: • aplikacje (standaloneprograms) • 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.
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ć:javacnazwa_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".
Aplikacja Aby aplikacja mogła zostać uruchomiona, główna klasa musi zawierać metodępublic static voidmain(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.
Pierwszy program public class Hello { public static void main (String [ ] args) { System.out.println("HELLO WORLD"); } }
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();
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.
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".
Modyfikacja programu classHello1 { public staticvoidmain (Stringargs[]) { pisz(„HELLO WORLD"); } public staticvoid pisz (String s) { System.out.println(s); } }
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.
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.
Podstawowy zestaw instrukcji • Instrukcja warunkowa if • Pętla while • Pętla do while • Pętla for • Instrukcja switch
Postać instrukcji if if (warunek) { instrukcje } else { instrukcje }
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).
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?
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?
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.
Instrukcja switch switch ( wyrażenie) { case Wartość1 : /* ... */ break; case Wartość2 : /* ... */ break; default : /* ... */ break; }
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.
Tablice jednowymiarowe • Przykład instrukcji tworzących tablice: int[] mojaTablica =newint[10];intmojaTablica[] = newint[10]; • Tablicę można też utworzyć w dwóch etapach: • najpierw deklarujemy zmienną referencyjną tablicy: int[]mojaTablica ;lubintmojaTablica[]; • następnie tworzymy nowy obiekt tablicy: • /* Musimy określić rozmiar tablicy, aby zaalokować • potrzebny dla niej obszar pamięci*/ • mojaTablica =newint[10];
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 =newtyp[roz1][roz2]...[rozN]; • Przykład instrukcji tworzącej tablicę o dwóch wymiarach (jest to najczęściej używana forma tablicy wielowymiarowej) : • int[][]A =newint[10][10];lub • intA[][] =newint[10][10];
Ć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.
Rozwiązanie public static void main (String args[]) { rysuj_gwiazdki(10); } public static void rysuj_gwiazdki(int n) { for (int i=0; i<n; i++ ) { System.out.print("*"); } System.out.println(); }
Ć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 parametrami8 i 3 powinniśmy dostać: * * * * * * * * * * * * * * * * * * * * * * * *Oto nagłówek funkcjipublic static void rysuj_prostokat( int a, int b )
Rozwiązanie public static void rysuj_prostokat(int a, int b) { for (int i=0; i<b; i++ ) { for (int j=0; j<b; j++ ) { System.out.print("*"); } System.out.println(); } }
Ć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: ** ** * * * * * *
Rozwiązanie public static void rysuj_trojkat(int n) { for (int i=0; i<n; i++ ) { for (int j=0; j<=i; j++ ) { System.out.print("* "); } System.out.println(); } }
Ć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: * * * * * * * * * * * * * * * *
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<n; i++ ) System.out.print(" "); }
public staticvoidrysuj_gwiazdki(intn) { for (int i=0; i<n; i++ ) System.out.print("* "); } public staticvoidrysuj_trojkat(intm) { for (int i=0; i < m; i++ ) { rysuj_spacje(m-i-1); rysuj_gwiazdki(2*i+1); System.out.println(); } }
Ć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
Ćwiczenie 6 Napisz program sprawdzający czy podana liczba jest liczbą parzystą.