tablica

advertisement
Programowanie w Javie
Literatura
• podstawowa:
1.
2.
3.
4.
5.
Cay S. Horstmann, Gary Cornell. Java Podstawy.
Bruce Eckel. Thinking in Java. (biblioteka Wilno)
Herbert Schildt. Java - Kompendium Programisty.
Rogers Cadenhead. Java w 21 dni. Wydanie VII
Marcin Lis. Praktyczny kurs Java. Wydanie III
• materiały online:
http://docs.oracle.com/javase/tutorial/
http://docs.oracle.com/javase/8/docs/api/
http://javastart.pl/static/darmowy-kurs-java/
http://naukajavy.pl/
Egzamin
• egzamin pisemny bez komputerów: zestaw
otwartych pytań teoretycznych
• dopuszczenie do egzaminu: zaliczenie
laboratorium
Wykład 1: Podstawy języka Java
1. Struktura, kompilacja i uruchomienie
programu
2. Typy danych, operatory, instrukcje sterujące,
tablice
Cechy języka Java (1)
• zorientowany obiektowo język programowania
• oparty na C/C++, wiele podobieństw, ale są też
istotne różnice:
–
–
–
–
nie ma wskaźników
nie ma wielokrotnego dziedziczenia
nie ma przeciążania operatorów
jest automatyczne zarządzanie wykorzystaniem pamięci
(garbage collector)
Cel: z C/C++ usunięto mechanizmy będące przyczyną
częstych błędów programistów
Cechy języka Java (2)
• przenośność: raz napisany program można
uruchamiać na różnych urządzeniach i różnych
systemach operacyjnych (hasło reklamowe: "Write
once, run anywhere”)
• mniejsza wydajność w porównaniu do C/C++
• obszerna biblioteka klas (API - Application
Programming Interface) do programowania m.in.:
–
–
–
–
interfejsu graficznego (aplikacji okienkowych)
aplikacji sieciowych
aplikacji korzystających z baz danych
aplikacji wielowątkowych
• JavaScript nie jest uproszczoną wersją Javy
Pierwszy program
class PierwszyProgram{
public static void main(String args[]){
System.out.println("Witamy na zajęciach");
//inne instrukcje do wykonania
}
}
Program zapisujemy w pliku o rozszerzeniu .java
•
•
•
•
•
•
•
•
klasy to opisy obiektów, nie można pisać programu poza klasą
metoda main - od tej metody zaczyna się wykonanie programu
metoda println wyprowadza tekst na ekran
plik z kodem źródłowym trzeba nazwać tak jak nazwa klasy: PierwszyProgram.java
public - modyfikator dostępu metody main (dostęp publiczny)
static - nie musi być utworzony obiekt, aby użyć metody
void - metoda nie zwraca wartości w sensie arytmetycznym
args[] - zmienna tablicowa typu String – możliwość wywołania programu z parametrami
Kompilacja i uruchomienie programu
•
kompilacja:
javac PierwszyProgram.java
•
wynik kompilacji: plik z kodem pośrednim (kodem bajtowym - bytecode), a nie z
kodem maszynowym czyli nie jest to plik wykonywalny:
PierwszyProgram.class
•
uruchomienie programu: poprzez wirtualną maszynę Javy (JVM)
java PierwszyProgram
Kod bajtowy jest interpretowany przez wirtualną maszynę Javy (JVM) do postaci
programu wykonywalnego dla danego systemu operacyjnego
•
Wirtualna Maszyna Javy (Java Virtual Machine): rodzaj wirtualnego
(programowego) komputera , który ma swój zestaw rejestrów, zestaw instrukcji,
stos i pamięć dla programów
Przykład: PierwszyProgram.java
Pierwszy program używając NetBeans
1.
2.
3.
4.
File - New Project
Z panelu "Categories" wybrać "Java".
Z panelu "Projects" wybrać "JavaApplication".
Next
Project Name: np. PierwszyProgram
Project Location: wskazać katalog, gdzie będzie przechowywany projekt
Opcja "Create Class Main" powinna być zaznaczona
Finish
W ciele metody main wpisać:
System.out.println("Witamy na zajęciach");
Uruchomienie programu:
Run - Run Project
Wykonanie programu:
Okienko Output u dołu ekranu
Utworzone katalogi:
Jeśli Project Name nazwaliśmy PierwszyProgram, to tam gdzie wskazaliśmy Project
Location zostanie utworzony katalog PierwszyProgram i w nim będzie przechowywany
cały projekt. M.in:
•
•
Plik źródłowy: PierwszyProgram/src/pierwszyprogram/PierwszyProgram.java
Kod bajtowy: PierwszyProgram/build/classes/pierwszyprogram/PierwszyProgram.class
Narzędzia programistyczne (1)
Firma Oracle udostępnia bezpłatnie wszystkie narzędzia do programowania w Javie.
Jeżeli chcemy pisać programy w Javie musimy zainstalować JDK - Java Development Kit. Jest to
pakiet programów zawierający:
– narzędzia do budowania, kompilacji i uruchamiania programu,
– JRE - Java Runtime Environment czyli środowisko uruchomieniowe Javy. JRE zawiera
m.in. : wirtualną maszynę Javy i biblioteki (pakiety klas standardowych)
– przykłady aplikacji i apletów,
– narzędzia do dokumentowania i archiwizacji programów
– dokumentację
JDK jest dostępne pod adresem: http://www.oracle.com/technetwork/java/javase/downloads/
Instalacja jest intuicyjna. Wykonujemy instrukcje wyświetlane na ekranie.
Pakiet JDK jest dostępny na różne systemy operacyjne i jest bezpłatny
Jeżeli chcemy tylko uruchamiać programy napisane w Javie wystarczy zainstalować samo JRE
Narzędzia programistyczne (2)
Po zainstalowaniu pakietu JDK otrzymujemy następującą strukturę katalogów:
bin - programy usługowe:
• javac - kompilator
• java - interpreter bajtkodu (JVM)
• appletviewer – przeglądarka apletów,
• javadoc - generator dokumentacji,
• jdb – debuger,
• jar – narzędzie do tworzenia archiwów
jre - środowisko uruchomieniowe:
• wirtualna maszyna javy,
• biblioteka klas,
lib - dodatkowe biblioteki klas
demo - aplety i aplikacje demonstracyjne
docs - dokumentacja pakietu w postaci stron HTML.
Zmienne środowiskowe, polskie znaki, edytory kodu źródłowego
1.
Ustawienie zmiennych środowiskowych (Windows):
– Zmienna: PATH
– Wartość: sciezka_do_folderu_jdk\bin
2.
Polskie znaki w konsoli Windows:
– we Właściwościach konsoli zmienić czcionkę na Lucida Console
– aby w konsoli była używana strona kodowa Windows 1250
wykonujemy polecenie:
chcp 1250
– aby w konsoli była używana strona kodowa strona kodowa UTF-8
wykonujemy polecenie:
chcp 65001
3.
Tworzenie kodu źródłowego
– dowolny edytor tekstu np. Notepad++
– zintegrowane środowisko programistyczne: NetBeans, Eclipse
Komentarze
• liniowy
// to jest komentarz
• blokowy
/* to jest komentarz
to jest ciąg dalszy komentarza*/
Typy danych
•
•
proste:
– znakowy (char). Znak jest reprezentowany przez 16 bitową liczbę. Znaki
kodowane w UTF-16.
– logiczny (boolean, 1 bit). Wartości: false, true.
– arytmetyczny:
• liczby całkowite:
byte (8 bitów), zakres: od -28 do 28 -1
short (16 bitów), zakres od -216 do 216 -1
int (32 bity), zakres od -232 do 232 -1
long (64 bity), zakres od -264 do 264 -1
• rzeczywiste (zmiennopozycyjne):
float (32 bity), zakres: -3,4*1038 do +3,4*1038
double (64 bity), zakres: -1,8*10308 do +1,8*10308
Uwaga: zakres liczb jest z góry ustalony, nie zależy od systemu operacyjnego na
jakim uruchamiany program w Javie (32 bitowy, 64 bitowy), z jakiego kompilatora
korzystamy
referencyjne: String (łańcuchy), tablice, inne obiekty
Deklaracje zmiennych, przypisanie wartości
•
•
•
•
•
•
•
•
•
•
•
•
•
int liczba;
liczba = 100;
int liczba = 100;
int liczba1 = 100, liczba2, liczba3 = 300;
double wartoscKredytu = 1.234;
float wartoscKredytu = 1.234f;
char znak = 'a';
boolean zaplacone = true;
String miasto = "Wilno";
String miasto = new String("Wilno");
String jest obiektem a nie tablicą znaków
nazwy zmiennych: duże i małe litery, cyfry, znak podkreślenia, można znaki
diakrytyczne, ale się w praktyce nie stosuje
nazwa zmiennej nie może zaczynać się od cyfry
Kilka przykładów
• int a=10,b;
b = a / 4;
kompilator nie zgłosi błędu. Wynik zostanie zaokrąglony w dół
do liczby całkowitej. Wartość b będzie 2.
• int b = 2.5;
kompilator zgłosi błąd, kompilacja się nie powiedzie
• byte a = 127;
a += 3;
Kompilator nie zgłosi błędu. Nastąpi zawinięcie liczby. Wartość
a będzie -126.
Przykład: Program.java
Wyprowadzenie danych na ekran
• metoda println po wyprowadzeniu znaków
następuje przejście do nowego wiersza
• metoda print przejście nie następuje
• łączenie ciągów znaków (operacja konkatenacji): +
• nie dzielimy ciągu znaków ujętych w cudzysłów
Przykład: Program.java
Wyprowadzenie znaków specjalnych
nowa linia
\n
tabulator
\t
cudzysłów
\”
apostrof
\’
backslash
\\
Przykład: Program.java
Operatory
arytmetyczne:
przypisania:
+
dodawanie
x += y
x = x + y
-
odejmowanie
x -= y
x = x - y
*
mnożenie
x *= y
x = x * y
/
dzielenie
x /= y
x = x / y
%
reszta z dzielenia
x %= y
x = x % y
inkrementacja, dekrementacja: ++, -int x = 1, y = 2;
x += ++y; // wartość x to 4, wartość y to 3
x += y++; // wartość x to 7, wartość y to 4
Operatory (cd)
porównania:
logiczne:
==
równe
&&
i
!=
różne
||
lub
<
mniejsze
!
nieprawda, że
>
większe
<=
mniejsze lub równe
bitowe:
>=
większe lub równe
&
AND
|
OR
~
NOT
^
XOR
>>
przesunięcie w bitów prawo
<<
przesunięcie bitów w lewo
>>>
przesunięcie w prawo
z wypełnieniem zerami
byte a = 4; // 4 = 1002
a = a >> 1; // wartość a to 2 = 0102
Instrukcje sterujące
• warunkowa
if (warunek) {
...
}
else {
...
}
• wyrażenie warunkowe
warunek ? wartość1 : wartość2;
int a, b;
...
a < b ? a += b : b += a;
if (warunek1) {
...
}
else if (warunek2) {
...
}
else {
...
}
Instrukcje sterujące
Instrukcja wyboru
switch (wyrażenie) {
case wartosc1: ...;
break;
case wartosc2: ...;
break;
case wartosc3: ...;
break;
default: ...;
}
•
•
"break" nie jest obowiązkowy, jeśli będzie pominięty to po dopasowaniu
zostaną wykonane wszystkie pozostałe przypadki
„default” nie jest obowiązkowe
Instrukcje sterujące
pętla FOR
for (wyrażenie_początkowe; warunek;
...
}
for (int i=1;i<=10;i++) { a *= 2; }
wyrażenie_modyfikujące) {
przeniesienie wyrażenia początkowego i modyfikującego
for (int i=1;i<=10;) {
a *= 2;
i++;
}
int i=1;
for (;i<=10;) {
a *= 2;
i++;
}
Instrukcje sterujące
• pętla WHILE i DO WHILE
while (warunek) {
...
}
do {
...
} while (warunek);
int i = 1;
while (i<=10) {
a *= 2;
i++;
}
int i = 1;
do {
a *= 2;
i++;
} while (i<=10);
Instrukcje sterujące
• break - przerwanie bieżącej pętli
przesunięcie warunku:
for (int i=1; ;i++) {
a *= 2;
if (i == 3) {break;}
}
pominięcie przebiegu pętli wewnętrznej dla i = 3:
for (int i=0;i<=10;i++) {
for (int j=0;j<=10;j++) {
if (i == 3) {break;}
...
}
}
Instrukcje sterujące
• continue - przerwanie bieżącej iteracji i przejście do
kolejnej
pominięcie parzystych przebiegów:
for (int i = 1; i<=10; i++) {
if (i % 2 == 0) {continue;}
...
}
Instrukcje sterujące
• etykietowanie pętli
– break przerwie blok etykietowanej pętli
– continue przerwie bieżącą iterację etykietowanej pętli i przejdzie do
następnej iteracji
etykieta: for (int i=0;i<=2;i++) {
for (int j=0;j<=2;j++) {
if (i ==2) break etykieta;
...
}
}
Przykład: Program.java
Tablice
Tablica jest obiektem.
1.
deklaracja zmiennej tablicowej
typ_tablicy nazwa_tablicy[];
lub
typ_tablicy[] nazwa_tablicy;
int tablica[];
int[] tablica;
Uwaga: powstaje tylko zmienna referencyjna, za pomocą której będziemy odwoływać się do tablicy, a nie
tablica
2.
utworzenie tablicy (rezerwacja pamięci) i przypisanie jej do zmiennej tablicowej
zmienna_tablicowa = new typ_tablicy[liczba_elementów]; tablica
tablica = new int[10]; //powstanie tablica 10-elementowa
Można jednocześnie zadeklarować i utworzyć tablicę:
int[] tablica = new tablica[10];
Tablice
•
Przypisanie wartości elementom tablicy (elementy są indeksowane od 0).
nazwa_tablicy[numer_elementu];
tablica[5] = 20;
//dla elementu szóstego przypisano wartość 20
•
Deklaracja tablicy i utworzenie tablicy z jednoczesnym przypisaniem wartości
int[] tablica = {1,2,3}; // powstanie tablica 3 elementowa, pierwszy element to 1
char[] tablica = {'a','b','c'}; // powstanie 3 elementowa tablica znaków
•
odwołanie się do nieistniejącego elementu tablicy
Kompilator nie zgłosi błędu. Błąd (wyjątek) zgłosi maszyna wirtualna.
Przykład: Program.java
Tablice
• rozmiar tablicy jest zapisany w polu length
int[] tablica = new tablica[10];
Wypełnienie tablicy:
for (int i=1;i<tablica.length;i++) {
tablica[i] = 2*i;
}
Nowa konstrukcja w porównaniu z C/C++ pętla
"foreach", przebiega elementy tablicy a nie indeksy:
for (int i:tablica) {
System.out.println(i);
}
Powyższa pętla wypisze elementy tablicy
Tablice wielowymiarowe
1.
deklaracja zmiennej tablicowej
int tablica[][]; lub
int[][] tablica;
2.
utworzenie tablicy i przypisanie jej do zmiennej tablicowej
tablica = new int[10][5]; //powstanie tablica 10x5
Można łącznie: int[][] tablica = new int[10][5];
•
•
odwołanie się do elementu tablicy.
tablica[0][0] = 20; //dla elementu (0,0) przypisano 20
inny sposób przypisania wartości elementom tablicy
int[][] tablica = {{1,2,3},{4,5,6}};
// powstanie tablica 2x3
0
1
2
0
1
2
3
1
4
5
6
Tablice wielowymiarowe
1.
tablica dwuwymiarowa to tablica jednowymiarowa, której elementami są tablice jednowymiarowe
2.
pole length
int[][] tablica = {{1,2,3},{4,5,6}};
Pole tablica.length ma wartość 2, bo tablica ma 2 elementy, które są tablicami,
pierwszy to tablica z elementami 1,2,3, drugi to tablica z elementami 4,5,6
Pole tablica[0].length ma wartość 3, bo tablica[0] jest tablicą składającą się z trzech
elementów: 1,2,3
Pole tablica[1].length ma wartość 3, bo tablica[1] jest tablicą składającą się z trzech
elementów: 4,5,6
3.
wypełnienie tablicy dwuwymiarowej z użyciem pola length
int[][] tablica = new int[2][3];
int k=1;
for (int i=0;i<tablica.length;i++) {
for (int j=0;j<tablica[i].length;j++) {
tablica[i][j] = k;
k++;
}
}
Tablice wielowymiarowe-nieregularne
0
1
0
1
2
1
3
4
2
6
2
2-elementowa tablica
5
3-elementowa tablica
1-elementowa tablica
int[][] tablica = new int[3][]; //potrzebuję 3 tablic
tablica[0]=new int[2];
tablica[1]=new int[3];
tablica[2]=new int[1];
int k=1;
for (int i=0;i<tablica.length;i++) {
for (int j=0;j<tablica[i].length;j++) {
tablica[i][j] = k;
k++;
}
}
Trochę historii
• 1991 - zespół Sun Microsystems projektuje język o
nazwie Oak (Dąb), później (1995) przemianowany na
Java
Motywacja: język do tworzenia niezależnego od
platformy sprzętowo-systemowej oprogramowania
do sterowania urządzeniami elektronicznymi np.
kuchenkami mikrofalowymi, pilotami do zdalnego
sterowania.
Trochę historii (cd)
• 1995 - Język Java zyskał na popularności dopiero
wraz z rozwojem internetu i WWW.
Pokaz na SunWorld ’95: napisana w Javie
przeglądarka HotJava. Obsługiwała programy
osadzone na stronie www (aplety)
• 1996 - wersja 1.0, bardzo ograniczone możliwości
• 1998 - wersja 1.2 (nazwa nadana przez dział
marketingu: Java 2 Standard Edition - J2SE),
biblioteka do tworzenia interfejsu graficznego
Trochę historii (cd)
• 1999 - oddzielne edycje Javy:
– J2EE (Enterprise Edition) - platforma przeznaczona głównie do
tworzenia rozbudowanych i zaawansowanych aplikacji biznesowych
opartych na architekturze wielowarstwowej (aplikacje serwerowe).
– J2ME (Micro Edition) - uproszczona wersja platformy Javy do
programowania urządzeń elektronicznych o bardzo ograniczonych
zasobach, takich jak telefony komórkowe.
• 2006 - Sun udostępnia Javę na zasadzie wolnego
oprogramowania - licencja GNU GPL; wersja Java SE 6
(rezygnacja z nazewnictwa Java2 SE)
• 2009 - Oracle wykupuje Sun
• najnowsza wersja: Java SE 8
Download