Kurs Java TI 312[01]



Podobne dokumenty
Programowanie obiektowe

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

Multimedia JAVA. Historia

Programowanie w Internecie. Java

Programowanie obiektowe zastosowanie języka Java SE

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

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

1 Podstawy c++ w pigułce.

WPROWADZENIE DO JĘZYKA JAVA

Programowanie obiektowe

Dokumentacja do API Javy.

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

1 Podstawy c++ w pigułce.

Java jako język programowania

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

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

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

JAVA W SUPER EXPRESOWEJ PIGUŁCE

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

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

Wykład 4: Klasy i Metody

Podstawy i języki programowania

Ćwiczenie 1. Przygotowanie środowiska JAVA

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

Programowanie obiektowe

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

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

1 Atrybuty i metody klasowe

Kurs programowania. Wykład 3. Wojciech Macyna. 22 marca 2019

Interfejsy w Java. Przetwarzanie równoległe. Wątki.

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

Część 4 życie programu

Dziedziczenie. Tomasz Borzyszkowski

Kurs programowania. Wykład 6. Wojciech Macyna. 7 kwietnia 2016

JAVA?? to proste!! Autor: wojtekb111111

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

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

Rysowanie prostych obiektów graficznych przy użyciu biblioteki AWT (Abstract Window Toolkit)

Wykład 8: Obsługa Wyjątków

Wykład 7: Pakiety i Interfejsy

Języki i metody programowania Java Lab1 Zofia Kruczkiewicz

Programowanie - instrukcje sterujące

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.

Temat 1: Podstawowe pojęcia: program, kompilacja, kod

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

TEMAT : KLASY DZIEDZICZENIE

Wyjątki (exceptions)

Programowanie komputerów Wykład 6: Aplety Java

Podstawowe części projektu w Javie

Programowanie komputerowe. Zajęcia 1

Wyjątki. Streszczenie Celem wykładu jest omówienie tematyki wyjątków w Javie. Czas wykładu 45 minut.

Rozdział 4 KLASY, OBIEKTY, METODY

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

Programowanie Obiektowe Ćwiczenie 4

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

Tworzenie aplikacji w języku Java

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

Polimorfizm. dr Jarosław Skaruz

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

Podstawy języka C++ Maciej Trzebiński. Praktyki studenckie na LHC IFJ PAN. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. M. Trzebiński C++ 1/16

Języki i metody programowania Java Lab2 podejście obiektowe

Aplikacje w środowisku Java

Spis treści. 1 Aplet. 2 Od aplikacji do apletu. 1 Aplet 1. 2 Od aplikacji do apletu 1. 3 Budowa apletu 3. 4 Cykl życia apletu 4

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

Java EE produkcja oprogramowania

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

Java: otwórz okienko. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Platformy Programistyczne Podstawy języka Java

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

Aplikacje w środowisku Java

Wykład 2: Podstawy Języka

Język ludzki kod maszynowy

Programowanie w języku Python. Grażyna Koba

Języki i metody programowania Java INF302W Wykład 3 (część 1)

WPROWADZENIE DO JĘZYKA JAVA

Wykład 11: Programowanie Apletów

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

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Programowanie obiektowe

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

Wielowątkowość. Programowanie w środowisku rozproszonym. Wykład 1.

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

Podstawy i języki programowania

Spis treści. 1 Java T M

Java SE Laboratorium nr 5. Temat: Obsługa zdarzeń

Wprowadzenie do języka Java

KOTLIN. Język programowania dla Androida

Java: kilka brakujących szczegółów i uniwersalna nadklasa Object

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

Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu.

Programowanie obiektowe

I - Microsoft Visual Studio C++

Podstawy programowania obiektowego

UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami.

Podstawy Programowania C++

Podstawy Języka Java

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Programowanie strukturalne i obiektowe

Umieszczanie kodu. kod skryptu

Programowanie Multimediów. Programowanie Multimediów JAVA. wprowadzenie do programowania (3/3) [1]

Transkrypt:

TI 312[01]

Spis treści 1. Wiadomości ogólne... 4 2. Instalacja i narzędzia... 4 3. Beta-kod i maszyna wirtualna... 4 4. Struktura programu... 5 5. Pierwszy program... 5 Przykład 5.1. Program Hello... 5 6. Komentarze... 6 Przykład 6.1... 6 7. Typy podstawowe (pierwotne)... 6 8. Zmienne... 6 Przykład 8.1... 6 Przykład 8.2. Deklaracja wartości stałej (1)... 7 Przykład 8.3. Deklaracja wartości stałej (2)... 7 Przykład 8.4... 7 9. Operatory... 7 Tabela 9.1. Operatory matematyczne... 8 Tabela 9.2. Operatory porównania... 8 Tabela 9.3. Operatory logiczne... 8 Tabela 9.4. Operatory bitowe... 8 Tabela 9.5. Skrócony zapis operatorów przypisania... 8 Przykład 9.1. Działania na operatorach... 9 10. Instrukcje warunkowe... 9 Przykład 10.1. Liczba nieparzysta... 9 Przykład 10.2. Litera alfabetu (zagnieżdżanie instrukcji warunkowych)... 10 11. Wybór wielokrotny... 11 Przykład 11.1. Litera alfabetu... 11 12. Pętle... 12 a) Pętla for... 12 Przykład 12.1. Liczby całkowite mniejsze od 1000... 12 Przykład 12.2. Gwiazdki... 12 Przykład 12.3. Największy wspólny dzielnik... 13 b) Pętla while... 13 Przykład 12.4. Dzielniki całkowite liczby 10000 nie podzielne przez 4... 13 Przykład 12.5. Rozkład na czynniki pierwsze... 14 Przykład 12.6. Największy wspólny dzielnik (algorytm Euklidesa)... 14 c) Pętla do-while... 15 Przykład 12.7. Suma dzielników całkowitych liczby 200000 nie podzielnych przez 3. 15 13. Obiekty i klasy... 15 14. Klasa jako typ danych... 16 Przykład 14.1... 16 Przykład 14.2. Działania na liczbach zespolonych... 17 Przykład 14.3. Działania na zbiorach... 18 15. Tablice... 21 a) Tablice jednowymiarowe... 22 Przykład 15.1... 22 Przykład 15.2... 22 b) Tablice wielowymiarowe... 23 Przykład 15.3... 23 Przykład 15.4... 23 Przykład 15.5... 24 Przykład 15.6. Litera alfabetu... 24 Przykład 15.7. Trójkąt Pascala... 25 16. Metody klasy... 25 Przykład 16.1... 25 Przykład 16.2... 26 2

Przykład 16.3... 26 17. Konstruktory... 27 Przykład 17.1... 27 18. Dziedziczenie... 28 Przykład 18.1... 28 Przykład 18.2. Samochody... 28 19. Obsługa sytuacji wyjątkowych... 29 Przykład 19.1... 29 Przykład 19.2... 30 Przykład 19.3... 31 20. Aplety... 32 20.1 Struktura apletu... 33 20.2 Tekst w apletach... 34 Przykład 20.2.1... 34 Przykład 20.2.2. Przekazanie tekstu z parametru do apletu... 35 Tabela 20.2.1 Kolory podstawowe w klasie Color... 36 Przykład 20.2.3 Czcionki i kolory... 36 20.3 Metody odpowiedzialne za rysowanie w aplecie... 37 Tabela 20.3.1 Metody odpowiedzialne za rysowanie... 38 Przykład 20.3.1 Domek... 38 20.4 Dźwięki i animacje... 39 Przykład 20.4.1... 40 Przykład 20.4.2... 40 Przykład 20.4.3 Obrazek z dźwiękiem... 41 20.5 Obsługa zdarzeń... 41 Przykład 20.5.1 Punkt i współrzędne (kliknięcie myszą)... 42 Przykład 20.5.2 Punkt i współrzędne (przesuwanie z wciśniętym klawiszem myszy) 43 Przykład 20.5.3 Rysowanie pędzlem... 44 Przykład 20.5.4 Rysowanie prostej... 44 Przykład 20.5.5 Program graficzny... 45 21. Aplikacje... 55 21.1 Komponenty i kontenery... 55 Tabela 21.1.1 Komponenty i kontenery... 55 21.2 Okno aplikacji... 56 Przykład 21.2.1... 56 Przykład 21.2.2 Linia prosta... 57 21.3 Menu aplikacji... 59 Przykład 21.3.1 Menu rozwijane... 59 Przykład 21.3.2 Menu rozwijane 2... 61 Przykład 21.3.3 Kolorowe kwadraty... 63 Przykład 21.3.4 Kolorowe koła... 66 21.4 Komponenty... 68 Przykład 21.4.1... 70 Przykład 21.4.2 Kalkulator (szkielet)... 72 Przykład 21.4.3 Kalkulator... 75 Przykład 21.4.4 Kalkulator naukowy... 82 Przykład 21.4.5 Równania kwadratowe... 98 22. Programowanie współbieżne...103 Tabela 22.1 Metody obsługi wątków...104 Przykład 22.1 Przełączanie wątków...105 23. Programy pracujące w sieci...106 Przykład 23.1 Działanie metod statycznych klasy InetAddress...106 Przykład 23.2 Filtrowanie adresów...108 Przykład 23.3 Aplikacja serwer-klient...109 3

1. Wiadomości ogólne Język Java powstał w 1991 roku w firmie Sun Mikrosystem. Głównym założeniem budowy języka było uniezależnienie go od platformy sprzętowej. Java wywodzi się z języka C++, ma też większość elementów związanych z obiektowością języka C, z którego zaczerpnięto składnię. Java umożliwia budowanie programów możliwych do zastosowania w Internecie, nie jest zależna od różnych rodzajów systemów operacyjnych i rodzajów procesów. 2. Instalacja i narzędzia Programowanie w języku Java powinno się zacząć od zainstalowania platformy Java SE (do pobrania na stronie http://download.cnet.com/java-se-6-0-jdk-6/3000-2212_4-10857945.html (dla systemu Windows). Aby zainstalować wspomnianą platformę na systemie Ubuntu wystarczy w terminalu wpisać polecenie sudo apt-get install openjdk-6-jdk openjdk-6-jre openjdk-6-doc lub przeprowadzić instalację za pomocą Menadżera Synaptic. W obu przypadkach zostaną zainstalowane 3 komponenty: jre - Java Runtime Environment = środowisko uruchomieniowe jdk - Java Software Development Kit = zestaw narzędzi programistycznych doc dokumentacja JRE jest niezbędne do uruchamiania aplikacji Java na komputerze. Oznacza nie mniej, nie więcej, a dokładnie tyle, że programy pisane w tym języku uruchamiane są nie "w komputerze", ale w pewnym środowisku działającym na komputerze. Dzięki temu jesteśmy pewni, że jeśli powstanie implementacja Wirtualnej Maszyny Java (JRE - w naszym przypadku) na jakąkolwiek maszynę, to będziemy mogli na tej maszynie uruchomić nasz program bez względu na to, czy będzie to: Atari ST, XBOX czy najnowsza wersja tostera marki "dla Ciebie dla Domu". Dzięki temu programy pisane w Javie będą mogły być uruchamiane nawet na sprzęcie, który pojawi się za 10-20 lat, o ile będzie istniała implementacja Wirtualnej Maszyny Java dla tych urządzeń. Poza JRE (niezbędnym użytkownikowi) istnieje inna popularna forma dystrybucji pakietu Java. JDK (Java Development Kit), zwana również SDK (Software Development Kit). To dystrybucja języka Java dla osób tworzących kod w języku Java. Poza środowiskiem uruchomieniowym zawiera między innymi: kompilator, dokumentację/pomoc i debugger.(żródło:wikibooks.org) Następnym etapem jest zainstalowanie środowiska graficznego do programowania w języku Java. Jedną z bardziej popularnych dystrybucji jest Netbeans, która funkcjonuje zarówno na systemie Windows, jak również na systemach linixowych. Instalacja w Systemie Windows odbywa się w standardowy sposób, natomiast aby zainstalować oprogramowanie na systemach linuxowych wystarczy w terminalu wpisać polecenie sudo apt-get install netbeans Można oczywiście obejść się bez środowiska graficznego programując w dowolnym edytorze tekstowym (nawet notatniku). W takim wypadku kompilacji dokonujemy z poziomu konsoli poleceniem javac nazwa_programu.java a program uruchamiamy za pomocą polecenia java nazwa_programu 3. Beta-kod i maszyna wirtualna Podstawowym założeniem przy tworzeniu języka Java było to, aby był on językiem przenośnym. Biorąc pod uwagę to założenie, program skompilowany na jednym systemie operacyjnym powinien uruchamiać się na innym systemie operacyjnym. Podczas kompilacji nie może zatem powstać kod charakterystyczny dla jednego procesora i systemu. W tym celu został stworzony tzw. beta-kod, który jest generowany przez kompilator Javy. Kod jest zawarty w plikach z rozszerzeniem.class. Kod ten nie 4

jest bezpośrednio zrozumiały przez żaden procesor. Kod ten jest natomiast zrozumiały dla Wirtualnej Maszyny Javy, która stała się interfejsem dla aplikacji tworzonych w języku Java niezależnym od platform sprzętowo-programowych. 4. Struktura programu Programem w języku Java jest aplikacja lub aplet. Aplikacja jest samodzielnym programem, natomiast aplet programem wbudowanym (najczęściej w przeglądarkę WWW). Każda aplikacja powinna mieć dokładnie jeden moduł źródłowy (moduł główny aplikacji), którego klasa zawiera publiczną funkcję main. Podstawowa struktura programu wygląda zatem następująco: public class NazwaKlasy public static void main(string[] args) instrukcje programu; Słowo kluczowe public jest modyfikatorem dostępu, class informuje o deklaracji klasy. Każdy program w Javie składa się ze zbioru klas. Nazwa pliku z kodem musi być taka sama jak nazwa klasy. Klasy zapisujemy do pliku z rozszerzeniem.java, natomiast beta-kod po kompilacji będzie się znajdował w pliku z rozszerzeniem.class. Jeżeli w pliku nie znajduje się klasa o tej samej nazwie zostanie zwrócony błąd. 5. Pierwszy program Przykład 5.1. Program Hello public class PierwszyProgram public static void main(string[] args) System.out.println( Hello ); Każda funkcja Javy jest metodą jakiejś klasy (metoda - funkcja składowa klasy, której zadaniem jest działanie na rzecz określonych elementów danej klasy lub klas z nią spokrewnionych ). Ponadto w Javie musi istnieć klasa zawierająca metodę main. Wszystko, co znajduje się w metodzie main, to właśnie nasz program. Ponieważ nigdzie nie jest tworzony obiekt naszej klasy, metoda main musi być statyczna, aby można było ją wywołać bez tworzenia instancji klasy (czyli bez tworzenia obiektu). Metoda statyczna jest powiązana z klasą ale nie z obiektem klasy, nie może się odwoływać do niestatycznej zmiennej lub funkcji. Słowo kluczowe void oznacza, że metoda nie zwraca żadnej wartości. Do metody main jako parametr jest przekazywana tablica obiektów (łańcuchów) klasy String. Dostęp do parametrów zapewnia zmienna args. System jest nazwą klasy w standardowym środowisku języka. out jest statycznym obiektem składowym klasy system. System.out oznacza odnoszenie się do standardowego strumienia wyjściowego. println() jest natomiast metodą klasy System. W powyższym przykładzie metoda ta generuje jeden wiersz wyjściowy na podstawie zawartości obiektu klasy String. Obiektem tym jest przetłumaczony przez kompilator ciąg znaków Hello. 5

Nawiasy klamrowe oznaczają początek i koniec treści metody. 6. Komentarze Komentarz to fragment kodu pomijany przez kompilator w trakcie analizy programu. W języku Java komentarze jednowierszowe zaczynamy od znaków //, natomiast komentarze wielowierszowe zaczynamy od /* i kończymy */ Przykład 6.1 //komentarz jednowierszowy /*komentarz wielowierszowy, ktory moze zajmowac wiecej niz jeden wiersz :) */ 7. Typy podstawowe (pierwotne) W Javie jest zadeklarowanych osiem typów podstawowych. Typ Zajmowana pamięć Zakres Opis int 4B -2147483648 2147483647 zmienna całkowita short 2B -32768 32767 zmienna całkowita long 8B -9223372036854775808 9223372036854775807 zmienna całkowita byte 1B -128 127 zmienna całkowita float 4B 38 38-3,4 10 3,4 10 zmienna rzeczywista double 8B 308 308-1,8 10 1,8 10 zmienna rzeczywista char 2B zmienna znakowa boolean 1b 0 lub 1 zmienna logiczna Zmienna typu double jest dwukrotnie precyzyjniejsza od liczby float. 8. Zmienne Zmienna to element programu przechowujący dane. Przy deklaracji zmiennej w pamięci zostaje zarezerwowana dla niej pamięć w zależności od typu zmiennej. W języku Java deklaracja zmiennej odbywa się według schematu typ_zmiennej nazwa_zmiennej; Nazwa zmiennej musi zaczynać się od litery. Symbole typu +, nie mogą być używane wewnątrz nazw zmiennych, podobnie nie wolno używać spacji. Podobnie jak w języku C++ jednocześnie przy deklaracji zmiennej można przypisać jej wartość. Przykład 8.1 class Main public static void main(string[] args) int x=6; 6

char znak= A ; Istnieje również możliwość zadeklarowania wartości stałych za pomocą słowa final. Wartość stała nie może być zmieniona w trakcie programu. Przykład 8.2. Deklaracja wartości stałej (1) public class Stala public static final double PI=3.14; public static void main(string[] args) double promien=6; System.out.println( Obwod kola wynosi +2*promien*PI); Przykład 8.3. Deklaracja wartości stałej (2) public class Stala public static void main(string[] args) double promien=6; final double PI=3.14; System.out.println( Obwod kola wynosi +2*promien*PI); Próbując zmienić wartość zmiennej stałej dostajemy błąd podczas kompilacji (Przykład 8.4) Przykład 8.4 public class Stala public static void main(string[] args) double promien=6; final double PI=3.14; PI++; System.out.println( Obwod kola wynosi +2*promien*PI); 9. Operatory Zadaniem operatorów jest pobieranie argumentów i generowanie na ich podstawie nowych wartości. Operator wiąże się zatem (zazwyczaj) z określonym działaniem na zmiennych. 7

Tabela 9.1. Operatory matematyczne Operator Wykonywane działanie + dodawanie - odejmowanie * mnożenie / dzielenie % dzielenie modulo (reszta z dzielenia) ++ inkrementacja (zwiększanie wartości) -- dekrementacja (zmniejszanie wartości) Tabela 9.2. Operatory porównania Operacja x>y x>=y x<y x<=y x==y x!=y Opis x większe od y x większe lub równe y x mniejsze od y x mniejsze lub równe y x równe y x różne od y Tabela 9.3. Operatory logiczne Tabela 9.4. Operatory bitowe Operator Opis && and (iloczyn logiczny - koniunkcja) or (suma logiczna - alternatywa)! not (negacja) Operator Opis & and or ~ not ^ xor >> przesunięcie bitowe w prawo << przesunięcie bitowe w lewo >>> przesunięcie bitowe w prawo z wypełnieniem zerami Tabela 9.5. Skrócony zapis operatorów przypisania Operacja x=x+a x=x-a x=x*a x=x/a x=x%a x=x+1 (zwiększanie przed operacją) x=x-1 (zmniejszanie przed operacją) x=x+1 (zwiększanie po operacji) 8 Operacja skrócona x+=a x-=a x*=a x/=a x%=a ++x --x x++

x=x-1 (zmniejszanie po operacji) x=x<<a x=x>>a x=x>>>a x=x&a x=x a x=x^a x-- x<<=a x>>=a x>>>=a x&=a x =a x^=a Przykład 9.1. Działania na operatorach public class operatory public static void main(string[] args) int x=10; x++; System.out.println( x ma wartosc +x); ++x; System.out.println( x ma wartosc +x); x+=6; System.out.println( x ma wartosc +x); x/=8; System.out.println( x ma wartosc +x); x--; System.out.println( x ma wartosc +x); x%=4; System.out.println( x ma wartosc +x); x>>=3; System.out.println( x ma wartosc +x); x^=2; System.out.println( x ma wartosc +x); 10. Instrukcje warunkowe Konstrukcja: if (warunek) lista_instrukcji_1; else lista_instrukcji_2; Przykład 10.1. Liczba nieparzysta public class nieparzysta 9

public static void main(string[] args) int x=10; if (x%2!=0) System.out.print( Liczba +x+ jest nieparzysta ); else System.out.print( Liczba +x+ jest parzysta ); Przykład 10.2. Litera alfabetu (zagnieżdżanie instrukcji warunkowych) public class litera public static void main(string[] args) char litera='c'; if (litera=='a') System.out.print("Litera a jest pierwsza litera alfabetu"); else if (litera=='b') System.out.print("Litera b jest druga litera alfabetu"); else if (litera=='c') System.out.print("Litera c jest trzecia litera alfabetu"); else if (litera=='c') System.out.print("Litera c jest trzecia litera alfabetu"); else System.out.print( Nie znam takiej litery ); 10

11. Wybór wielokrotny Konstrukcja: switch(zmienna) case wartość_1: lista_instrukcji_1; break; case wartość_2: lista_instrukcji_2; break; case wartość_n: lista_instrukcji_n; break; default: inna_lista_instrukcji; Przykład 11.1. Litera alfabetu public class litera public static void main(string[] args) char litera='c'; System.out.print("Litera "+litera+" jest "); switch(litera) case 'a': System.out.print("1"); break; case 'b': System.out.print("2"); break; case 'c': System.out.print("3"); break; case 'd': System.out.print("4"); break; case 'e': System.out.print("5"); break; case 'f': System.out.print("6"); break; case 'g': System.out.print("7"); break; case 'h': System.out.print("8"); break; case 'i': System.out.print("9"); break; case 'j': System.out.print("10"); break; case 'k': System.out.print("11"); break; case 'l': System.out.print("12"); break; case 'm': System.out.print("13"); break; case 'n': System.out.print("14"); break; case 'o': System.out.print("15"); break; case 'p': System.out.print("16"); break; case 'q': System.out.print("17"); break; case 'r': System.out.print("18"); break; case 's': System.out.print("19"); break; case 't': System.out.print("20"); break; case 'u': System.out.print("21a"); break; case 'v': System.out.print("22"); break; case 'w': System.out.print("23"); break; case 'x': System.out.print("24"); break; 11

case 'y': System.out.print("25"); break; case 'z': System.out.print("26"); break; default: System.out.print("Nie ma takiej litery"); System.out.print(" litera alfabetu"); 12. Pętle a) Pętla for Konstrukcja: for(instrukcja_poczatkowa; warunek; instrukcja_krokowa) lista_instrukcji; Przykład 12.1. Liczby całkowite mniejsze od 1000 public class calkowite public static void main(string[] args) int i; for(i=0;i<1000;i++) System.out.print(i+", "); Przykład 12.2. Gwiazdki public class gwiazdki public static void main(string[] args) int i,k; for(i=0;i<10;i++) for(k=0;k<=i;k++) if (k<i) System.out.print("*"); else System.out.println("*"); 12

Przykład 12.3. Największy wspólny dzielnik public class nwd public static void main(string[] args) int x=1000; int y=250; int d=0; if(x<=y) for(int dzielnik=1;dzielnik<=x;dzielnik++) if(x % dzielnik == 0 && y % dzielnik == 0) d = dzielnik; else for(int dzielnik=1;dzielnik<=y;dzielnik++) if(x % dzielnik == 0 && y % dzielnik == 0) d = dzielnik; System.out.println("Najwiekszy wspolny dzielnik liczb "+x+" i "+y+" to "+d); b) Pętla while Konstrukcja: while (lista_warunkow) lista_instrukcji; Przykład 12.4. Dzielniki całkowite liczby 10000 nie podzielne przez 4 13

public class dzielniki public static void main(string[] args) int i=1; while (i<=10000) if (10000%i==0 && i%4!=0) System.out.print(i+", "); i++; Przykład 12.5. Rozkład na czynniki pierwsze public class rozkladkrol public static void main(string[] args) int n=100; System.out.print(n+"="); int i=2; int t=0; while (i<=n) while (n%i==0) if (t==0) System.out.print(i); else System.out.print("*"+i); i++; n=n/i; t=t+1; Przykład 12.6. Największy wspólny dzielnik (algorytm Euklidesa) public class euklides 14

public static void main(string[] args) int a = 40; int b = 20; int c; System.out.print("Najwiekszy wspolny dzielnik liczb "+a+" i "+b+" to "); while ( b!= 0) c = a%b; a = b; b = c; System.out.print(a); c) Pętla do-while Konstrukcja: do lista_instrukcji; while (lista warunkow); Przykład 12.7. Suma dzielników całkowitych liczby 200000 nie podzielnych przez 3 public class sumadzielnikow public static void main(string[] args) int i=1; int s=0; do if (200000%i==0 && i%3!=0) s=s+i; i++; while (i<=200000); System.out.print("Suma dzielnikow liczby 200000 nie podzielnych przez 3 wynosi "+s); 13. Obiekty i klasy 15

Każdy program w języku Java składa się z klas, które odpowiadają za opisanie obiektów, przedstawienie ich własności, opracowanie konstrukcji oraz interfejsu, za pomoca którego można wprowadzać polecenia, które obiekty będa realizować. Obiekt to element, który ma swoje cechy charakterystyczne (składowe zdefinowane w klasie). Powstaje on w trakcie działania programu jako reprezentant klasy (instancja klasy). Obiekty klasy mają możliwość wykonywania pewnych funkcji zdefiniowanych w ciele klasy. Klasa jest przepisem na obiekt. Zawiera własności obiektu i metody, jakie można wykonywać na rzecz obiektu. Standardowa biblioteka Javy udostępnia kilka tysięcy klas wykorzystywanych do różnych zadań, takich jak projektowanie interfejsu użytkownika, operowanie datami, kalendarzem oraz programowanie sieciowe. Oprócz tego możliwe jest budowanie własnych klas opisujących obiekty tworzące aplikację oraz modyfikacja klas dostarczonych przez standardową bibliotekę Javy do własnych celów. Podstawowy szkielet klasy wygląda następująco: specyfikator_dostepu class nazwa_klasy cialo_klasy; Rodzaje specyfikatorów dostępu: public specyfikator dla klas publicznych abstract specyfikator dla klas abstrakcyjnych final specyfikator zabraniający utworzenie podklasy 14. Klasa jako typ danych Klasa definiująca pewien obiekt jest jednoczesnie jego typem. W Javie traktując wszystko jako obiekt, uproszczono sposób dostępu do danych. Pracować na obiekcie można dopiero wtedy, gdy zostanie stworzony i określi się jego stan początkowy. W języku Java obiekt tworzy się za pomocą operatora new. Konstrukcja: nazwa_klasy nazwa_zmiennej_obiektowej = new nazwa_klasy(); Tak utworzony obiekt nazwa_klasy() przypisany do nazwy_zmiennej_obiektowej jest dostępny również poza klasą, w której został stworzony. Obiekty stworzone za pomocą operatora new są przechowywane w pamięci tak długo, jak długo sa potrzebne. Od tej pory nazwa_miennej_obiektowej zawiera odniesienie do przypisanego jej obiektu klasy nazwa_klasy i tylko za pomocą tej zmiennej możemy się odwołać do obiektu. W tym celu należy skorzystać z operatora.(kropka): nazwa_zmiennej_obiektowej.nazwa_pola_obiektu Przykład 14.1 class liczba int x; int y; public static void main(string[] args) 16

liczba wartosc=new liczba(); wartosc.x=5; wartosc.y=10; System.out.println("Wartosc x jest rowna "+wartosc.x); System.out.println("Wartosc y jest rowna "+wartosc.y); Przykład 14.2. Działania na liczbach zespolonych public class zespolone2 float x; float y; public static void main(string[] args) char dzialanie='*'; zespolone2 liczba1=new zespolone2(); zespolone2 liczba2=new zespolone2(); liczba1.x=3; liczba1.y=4; liczba2.x=6; liczba2.y=8; switch(dzialanie) case '+': System.out.print("Suma liczb "+liczba1.x +"+"+liczba1.y+ "i oraz "+liczba2.x+"+"+liczba2.y+"i wynosi: " +(liczba1.x+liczba2.x)+"+"+(liczba1.y+liczba2.y)+"i"); break; case '-': System.out.print("Roznica liczb "+liczba1.x +"+"+liczba1.y+ "i oraz "+liczba2.x+"+"+liczba2.y+"i wynosi: " +(liczba1.x-liczba2.x)+"+"+(liczba1.y-liczba2.y)+"i"); break; case '*': System.out.print("Iloczyn liczb "+liczba1.x+"+"+liczba1.y+ "i oraz "+liczba2.x+"+"+liczba2.y+"i wynosi: " +(liczba1.x*liczba2.x-liczba1.y*liczba2.y)+"+"+ (liczba1.x*liczba2.y+liczba1.y*liczba2.x)+"i"); break; case '/': System.out.print("Iloraz liczb "+liczba1.x+"+"+liczba1.y+ "i oraz "+liczba2.x+"+"+liczba2.y+"i wynosi: " +(liczba1.x*liczba2.x+liczba1.y*liczba2.y)/ (liczba2.x*liczba2.x+liczba2.y*liczba2.y)+"+"+ (liczba1.y*liczba2.x-liczba1.x*liczba2.y)/ 17

(liczba2.y*liczba2.y+liczba2.x*liczba2.x)+"i"); break; Przykład 14.3. Działania na zbiorach public class zbiory static int n=20; // definiowanie skladowych obiektu // każdy obiekt to tablica o wymiarze n int [] tab=new int[n]; public static void main(string[] args) // tworzenie obiektów (zbiorow) zbiory A = new zbiory(); zbiory B = new zbiory(); //wypelnianie zbiorow for(int i=0;i<=n-1;i++) // zbior A to zbior elementow postaci 2i-1, // gdzie i=0,1,...,n-1 A.tab[i]=2*i+1; // zbior B to zbior elementow postaci 3i-1, // gdzie i=0,1,...,n-1 B.tab[i]=3*i-1; //Wypisywanie elementow zbioru A System.out.print("A="); for(int i=0;i<=n-1;i++) if (i==0) System.out.print(A.tab[i]); else System.out.print(","+A.tab[i]); System.out.println(""); //Wypisywanie elementow zbioru B System.out.print("B="); for(int i=0;i<=n-1;i++) 18

wystarczy zbiorze B zbioru B, if (i==0) System.out.print(B.tab[i]); else System.out.print(","+B.tab[i]); System.out.println(""); //Wypisywanie elementow iloczynu zbiorow //Aby wypisac elementy nalezace do iloczynu zbiorow //wypisac te elementy zbioru A, ktore powtarzaja sie w System.out.print("Iloczyn zbiorow A i B to zbior "); t=0; for(int i=0;i<=n-1;i++) //Sprawdzanie, czy i-ty element zbioru A //występuje w zbiorze B for(int j=0;j<=n-1;j++) if(a.tab[i]==b.tab[j]) if(t==0) System.out.print(A.tab[i]); else System.out.print(","+A.tab[i]); t++; System.out.println(""); //Wypisywanie elementow sumy zbiorow //Aby wypisac elementy nalezace do sumy zbiorow wystarczy //wypisac wszystkie elementy zbioru A oraz te elementy //ktore nie powtarzaja sie w zbiorze A System.out.print("Suma zbiorow A i B to zbior "); t=0; //Wypisywanie elementow zbioru A for(int i=0;i<=n-1;i++) if(t==0) 19

else System.out.print(A.tab[i]); System.out.print(","+A.tab[i]); t++; //Wypisywanie elementow zbioru B, //ktore nie powtarzaja sie w biorze A //Jesli element zbioru B wystepuje w zbiorze A, to zmienna t //osiaga wartosc rozna od zera i taki element nie //zostanie wypisany for(int i=0;i<=n-1;i++) t=0; for(int j=0;j<=n-1;j++) if(b.tab[i]==a.tab[j]) t++; if (t==0) System.out.print(","+B.tab[i]); System.out.println(""); zbioru A zbioru B zmienna t //Wypisywanie elementow roznicy zbiorow A i B //Element nalezy do roznicy zbiorow A/B jesli nalezy do //i nie nalezy do zbioru B System.out.print("Roznica zbiorow A i B to zbior "); int k=0; for(int i=0;i<=n-1;i++) t=0; //Sprawdzanie, czy i-ty element zbioru A nalezy do //Jesli element zbioru A wystepuje w zbiorze B, to //osiaga wartosc rozna od zera i taki element nie //zostanie wypisany for(int j=0;j<=n-1;j++) if(a.tab[i]==b.tab[j]) 20

t++; if (t==0) if(k==0) System.out.print(A.tab[i]); else System.out.print(","+A.tab[i]); k++; System.out.println(""); //Wypisywanie elementow roznicy zbiorow B i A //Analogicznie jak wyzej System.out.print("Roznica zbiorow B i A to zbior "); k=0; for(int i=0;i<=n-1;i++) t=0; for(int j=0;j<=n-1;j++) if(b.tab[i]==a.tab[j]) t++; if (t==0) if(k==0) System.out.print(B.tab[i]); else System.out.print(","+B.tab[i]); k++; System.out.println(""); 15. Tablice 21

Tablica to struktura przechowująca dane tego samego typu. a) Tablice jednowymiarowe Deklaracja tablicy może odbywać sie na kilka sposobów: typ [] nazwa_tablicy; nazwa tablicy = new typ[wymiar]; typ [] nazwa_tablicy = new typ[wymiar]; typ mazwa_tablicy [] = new typ [wymiar]; Do stworzenia tablicy używamy słowa new. Przykład 15.1 public class tablica public static void main(string[] args) int [] tab=new int[4]; //lub int [] tab; //tab=new int[]; //lub int tab [] = new int[4] tab[0]=1; tab[1]=3; tab[2]=5; tab[3]=7; System.out.println("Elementy tablicy to: "); for(int i=0;i<=3;i++) System.out.println("tab["+i+"]="+tab[i]); Przykład 15.2 public class tablica2 public static void main(string[] args) int [] tab=1,2,3,4; System.out.println("Elementy tablicy to: "); for(int i=0;i<=tab.length;i++) System.out.println("tab["+i+"]="+tab[i]); 22

nazwa_tablicy.length zwraca wymiar tablicy b) Tablice wielowymiarowe Deklaracja tablicy wielowymiarowej odbywa się podobnie jak deklracja tablicy jednowymiarowej: typ [][] nazwa_tablicy; nazwa tablicy = new typ[wymiar1][wymiar2]; typ [][] nazwa_tablicy = new typ[wymiar1][wymiar2]; typ mazwa_tablicy [][] = new typ [wymiar1][wymiar2]; gdzie: wymiar1 ilość kolumn wymiar2 ilość elementów w kolumnie (wierszy) Przykład 15.3 public class tablica3 public static void main(string[] args) int [][] tab = 1,2,3,4,5,6; for(int i=0;i<=2;i++) for(int j=0;j<=1;j++) System.out.println("tab["+i+"]["+j+"]="+tab[i][j]); Przykład 15.4 public class tablica4 public static void main(string[] args) int [][] tab = 1,2,3,4,5,6,7,8,9; for(int i=0;i<tab.length;i++) for(int j=0;j<tab[i].length;j++) System.out.println("tab["+i+"]["+j+"]="+tab[i][j]); 23

tab[i].length zwraca wymiar i-tej składowej tablicy tab Przykład 15.5 public class tablica5 public static void main(string[] args) int [] [] tab = new int [4][2]; tab[0][0]=1; tab[0][1]=2; tab[1][0]=1; tab[1][1]=2; tab[2][0]=1; tab[2][1]=2; tab[3][0]=1; tab[3][1]=2; for(int i=0;i<=3;i++) for(int j=0;j<=1;j++) System.out.println("tab["+i+"]["+j+"]="+tab[i][j]); Przykład 15.6. Litera alfabetu public class tablica6 public static void main(string[] args) String [] [] tab = "a","1","b","2","c","3","d","4","e","5","f","6", "g","7","h","8","i","9","j","10","k","11","l","12 ", "m","13","n","14","o","15","p","16","q","17","r", "18","s","19","t","20","u","21","v","22","w","23","x","24","y","25","z","26"; for(int i=0;i<tab.length;i++) System.out.println(tab[i][1]+" litera alfabetu to "+tab[i][0]); 24

Przykład 15.7. Trójkąt Pascala public class trojkat_pascala public static void main(string[] args) int n=20; int [][] tab = new int [n][n]; for(int i=0;i<=n-1;i++) tab[i][0]=1; tab[i][i]=1; for(int i=2;i<=n-1;i++) for(int j=1;j<i;j++) tab[i][j]=tab[i-1][j-1]+tab[i-1][j]; for(int i=0;i<=n-1;i++) for(int j=0;j<=i;j++) System.out.print(tab[i][j]); System.out.print(" "); System.out.println(""); 16. Metody klasy Metody klasy (funkcje klasy) wykonują określone operacje na własnościach (składowych) klasy. Ogólny szkielet metody wygląda następująco: specyfikator_dostepu typ_zwracany nazwa(parametry) ciag_instrukcji; Typ_zwracany określa jaki typ danych zostanie zwrócony po wykonaniu metody. Parametry określają typ i nazwę danych jakie zostaną przekazane do metody. Metody mogą być tworzone tylko jako elementy składowe klasy, a wywołanie ich nastąpi na rzecz pewnego obiektu tej klasy. Wywołanie metody na rzecz obiektu wygląda następująco: nazwa_obiektu.nazwa_metody(); Przykład 16.1 25

public class metoda int x; int y; public static void main(string[] args) metoda liczba = new metoda(); liczba.x=5; liczba.y=10; liczba.wyswietl(); void wyswietl() System.out.println( Skladowe obiektu liczba maja wartosc: + x+ i +y); Przykład 16.2 class metoda2 int x; int y; int wyswietlx() return x; int wyswietly() return y; public static void main(string[] args) metoda2 liczba = new metoda2(); liczba.x=5; liczba.y=10; System.out.println("Liczba.x ma wartosc "+liczba.wyswietlx()); System.out.println("Liczba.y ma wartosc "+liczba.wyswietly()); Przykład 16.3 class metoda3 int x; int y; 26

void wstaw_liczbe(int newx, int newy) x=newx; y=newy; void wyswietl() System.out.println("Liczba.x ma wartosc "+x); System.out.println("Liczba.y ma wartosc "+y); public static void main(string[] args) metoda3 liczba = new metoda3(); liczba.wstaw_liczbe(5,10); liczba.wyswietl(); 17. Konstruktory Konstruktor to metoda klasy, która odpowiada za inicjowanie obiektu w chwili jego tworzenia. Konstruktor przyjmuje nazwę taką samą jak nazwa klasy. Tworząc konstruktor nie podajemy zwracanego przez konstruktor typu (tylko nazwę). Metoda klasy również może mieć taką samą nazwę jak klasa, jednak musi być poprzedzona zwracanym typem. Budowa konstruktora wygląda następująco: class nazwa_klasy nazwa_klasy(parametry) ciag_instrukcji; Każda klasa posiada konstruktor, nawet jeśli nie został on określony przez programistę (w takim przypadku kompilator automatycznie generuje bezparametrowy konstruktor). W klasie może występować wiele konstruktorów o różnej liczbie i rodzaju parametrów. Taką sytuację nazywamy przeciążeniem konstruktorów. Nazwa konstruktora może być poprzedzona specyfikatorem dostępu określający uprawnienia klas do wywołania konstruktora. Przykład 17.1 public class konstruktor String t; konstruktor() t="test konstruktora"; public static void main(string[] args) 27