Program napisany w języku Java, w wyniku kompilacji da kod

advertisement
Program napisany w języku Java, w wyniku kompilacji da kod bajtowy, plik z rozszerzeniem .class. Nie jest
to plik wykonywalny samodzielnie w systemie operacyjnym tak jak pliki .exe.
Uruchomienie gotowego kodu bajtowego wymaga, aby w systemie była zainstalowana JVM – Java Virtual
Machine, wirtualna maszyna Javy. Ten sam kod bajtowy można uruchamiać w różnych systemach
operacyjnych: Windows, Linux, Solaris, pod warunkiem że jest na nich zainstalowana JVM.
JVM można pobrać ze strony http://www.java.com/pl/download/
Do tworzenia kodu bajtowego potrzebny jest kompilator języka Java, nie wystarczy JVM. Najlepiej pobrać
i zainstalować pakiet JDK – Java Development Kit, który zawiera także JVM, nie trzeba wówczas instalować
jej osobno.
JDK można pobrać ze strony
http://www.oracle.com/technetwork/java/javase/downloads/jdk-7u2-download-1377129.html
Po zakończeniu instalacji JDK, trzeba ręcznie dodać do zmiennych środowiskowych systemu ścieżkę
dostępu do katalogu \bin Javy, np.:
Start / Panel sterowania / System i zabezpieczenia / System / Zaawansowane ustawienia systemu /
przycisk: Zmienne środowiskowe, okno: Zmienne systemowe
wybierz Path, przycisk Edytuj
na końcu ścieżki (bez żadej spacji!)dodaj średnik i dostęp do do katalogu \bin Javy, np.:
C:\Program Files\Microsoft SQL Server\90\Tools\binn\; C:\Program Files\Java\jdk1.7.0_02\bin
Można sprawdzić czy kompilator javac jest widziany z dowolnego katalogu, wywołując go w oknie konsoli:
javac
Kod źródłowy programu w języku Java pisze się w Notatniku i zapisuje w pliku tekstowym. Nazwa pliku
musi być identyczna z nazwą klasy (wielkość liter też jest istotna!), z rozszerzeniem .java
Nastepnie kod źródłowy kompiluje się w oknie konsoli poleceniem:
javac
nazwa_pliku.java
Jeżeli w kodzie były błędy, należy je poprawić w Notatniku, ponownie zapisać plik i ponowić próbę
kompilacji. W wyniku kompilacji powstanie plik kodu bajtowego, o nazwie identycznej jak nazwa klasy
i rozszerzeniu .class
Kod bajtowy można uruchomić na maszynie wirtualnej Javy, poleceniem w oknie konsoli:
java nazwa_klasy
Praca z oknem konsoli jest może uciążliwa, łatwiej uruchomić program „dwuklikiem” na ikonie.
W tym celu można utworzyć plik wsadowy .bat, w którym zostaną zawarte powyższe polecenia.
Najprostszy program który wyświetla jakiś napis, plik Pierwsza.java
class Pierwsza {
public static void main(String[] a) {
System.out.println("Hello World");
}
}
Pierwsza.bat
@echo off
javac Pierwsza.java
java Pierwsza
pause
Program źródłowy w języku Java jest więc definicją klasy.
Klasa ta (w aplikacji konsolowej) musi zawierać statyczną metodę o nazwie main().
Program może pobierać parametry. Wartości parametrów podaje się w linii poleceń przy uruchomianiu
kodu bajtowego. Umieszczane są one w tablicy, której nazwa jest parametrem metody main()
Parametry są pobierane jako teksty, wartości typu String.
Jeżeli potrzebna jest wartość liczbowa parametru, trzeba go przekonwertować metodą:
• Integer.parseInt( String s)
• Double.parseDouble(String s)
Druga.bat
@echo off
Przykład:
javac Druga.java
class Druga {
java Druga Jasiu 5
public static void main(String[] a) {
java Druga Ania 7
System.out.println("Hello "+a[0]);
System.out.println("Let's play!");
pause
int n = Integer.parseInt(a[1]);
for (int i=1; i<=n; i++) System.out.println("Game "+i);
}
}
----------------------------------------------------------------------------------- -
ECLIPSE
Środowisko programistyczne ECLIPSE = edytor i debuger zintegrowany z kompilatorem Javy (uprzednio
zainstalowanym w komputerze). Ogromnie ułatwia pracę programisty.
Pakiet .zip Eclipse IDE for Java Developers można pobrać ze strony http://www.eclipse.org/downloads/
Należy go tylko rozpakować i uruchomić plik eclipse.exe, nie trzeba nic instalować.
Po uruchomieniu program zapyta o Workspace, czyli o folder w którym będzie przechowywać projekty.
Programowanie w środowisku Eclipse należy zacząć od utworzenia nowego projektu:
File /New / Java project, w polu Name wpisać nazwę projektu i zakończyć przyciskiem Finish.
W istniejącym projekcie należy utworzyć nową klasę:
File / New / Class lub kliknąć ikonę
W polu Source folder powinna zjawić się nazwa projektu,
W polu Name trzeba wpisać nazwę klasy
i zaznaczyć opcję utworzenia metody main()
W pozostałe pola można pozostawić domyślną
zawartość.
Przyciskiem Finish kończy się tworzenie nowej klasy.
W folderze projektu zostaną utworzone dwa podfoldery
src – dla plików źródłowych .java
bin – dla plików skompilowanych .class
Okno programu Eclipse, uruchomienie programu:
Eclipse sygnalizuje błędy w kodzie źródłowym. Gdy umieścisz kursor nad błędnym zapisem, wyświetli
propozycje naprawy kodu. Wystarczy wybrać myszą właściwą podpowiedź, a Eclipse naprawi błąd.
Przykładowe programy – podaję tylko kod metody main(), należy ją umiecić w jakiejś klasie, a niezbędne
pakiety zaimportować, korzystając z podpowiedzi Eclipse’a
1 - Obliczanie pola i obwod koła o promieniu podanym z klawiatury.
public static void main(String[] args) {
System.out.println("Oblicze ci pole i obwod kola");
System.out.print("Podaj promien ");
double r;
Scanner s = new Scanner(System.in); // klasa Scanner do czytania danych, tu: z konsoli
r = s.nextDouble();
//podaj daną z przecinkiem dziesiętnym, jak ustawienia regionalne systemu
double pole = Math.PI*r*r;
double obwod = Math.PI*2*r;
DecimalFormat f = new DecimalFormat("0.00"); // sformatowanie dokładności 2 miejsc po przecinku
System.out.println("Pole = "+f.format(pole)+" a obwod = "+f.format(obwod));
}
2 - Obliczanie zapotrzebowania na paliwo i ilości niezbędnych tankowań na trasie o podanej długości.
public static void main(String[] args) {
System.out.print("Podaj długość trasy podróży w km ");
Scanner s = new Scanner(System.in);
int km = s.nextInt();
System.out. print("Ile litrów spalasz na 100 km ? ");
double nasto = s.nextDouble();
double paliwo = nasto/100*km;
DecimalFormat f = new DecimalFormat("0.00");
// formatowanie z dokładnoscią 2 miejsc dziesiętnych
System.out.println("Na całej trasie spalisz "+f.format(paliwo)+" litrów");
System.out.println("Podaj pojemność baku w litrach ");
int bak = s.nextInt();
int t = (int) Math.ceil(paliwo/bak);
System.out.println("Musisz tankować "+t+" razy");
}
3 – teścik: treści pytań, do każdego pytania 3 odpowiedzi: A B C, oraz poprawna odpowiedź, z pliku txt
public static void main(String[] args) {
int suma=0;
// liczba poprawnych odpowiedzi
try {
Scanner plik = new Scanner(new File("tescik.txt")); // jeden skaner czyta z pliku
Scanner gracz = new Scanner(System.in); // drugi skaner do pobrania odpowiedzi z konsoli
while(plik.hasNext()) {
// dopóki w pliku jest jeszcze jakieś pytanie…
for (int i = 0; i < 4; i++)
System.out.println ( plik.nextLine() );
// czytaj I wyświetl
String poprawna = plik.nextLine(); // przeczytaj z pliku poprawną odpowiedź
System.out.println ("która odpowiedź jest poprawna? ");
String odp = gracz.next();
// pobierz odpowiedź z konsoli
odp= odp.toUpperCase();
// odpowiedź z konsoli przerób na duże litery
if (odp.length()>1) odp=odp.substring(0, 1);
// i skróć do jednego znaku
if (odp.equals(poprawna)) {
suma++;
System.out.println ("OK !\n");
}
else System.out.println ("niestety nie :(\n");
// porównaj odpowiedzi
}
System.out.println ("\nKoniec testu, "+suma+" poprawnych odpowiedzi");
}
catch (FileNotFoundException e) { System.out.println ("brak pytań"); }
}
Klasa Scanner jest zdefiniowana w pakiecie java.util.Scanner. Trzeba ten pakiet zaimportować do swojego
pakietu (na początku programu, przed definicją klasy aplikacji) poleceniem:
Import java.util.Scanner;
Wewnątrz klasy aplikacji trzeba zadeklarować nową zmienną typu Scanner i przyłączyć ją do wybranego
wejścia: konsoli, pliku lub zmiennej typu String. Nowa zmienna będzie obiektem, trzeba ją tworzyć
używając operatora new. Na przykład do czytania z konsoli (z klawiatury):
Scanner s = new Scanner(System.in);
Klasa Scanner ma wbudowane wiele metod przydatnych w różnych sytuacjach:
•
•
•
•
•
•
•
•
next() - pobiera tekst
nextLine() - pobiera wiersz danych i przechodzi na początek następnego wiersza
nextInt() - pobiera liczbę całkowitą
nextFloat() i nextDouble() - pobiera liczbę rzeczywistą
nextBoolean() - pobiera wartość logiczną
hasNext() - zwraca true gdy skaner ma jeszcze jakieś dane na wejściu. Mozna badać szczegółowo
jaka dana znajduje się na wejściu: hasNextInt(), hasNextDouble(), hasNextLine(),
hasNext("konkretny łańcuch znaków")
useDelimiter("łańcuch znaków") domyślnie skaner używa białych znaków (spacja) jako
separatorów, ale można to zmienić
useRadix(n) - ustawia na n podstawę systemu liczbowego czytanych danych liczbowych
(może być 10,2,16...)
Dostęp do metod uzyskasz przy pomocy notacji kropki: nazwa_zmiennej_obiektowej.nazwa_metody,
na przykład: s.nextInt()
Gdy typ danej na wejściu nie jest zgodny z typem oczekiwanym, skaner wyrzuca wyjątek
InputMismatchException.
Zawartość pliku tekstowego tescik.txt do czytania przez nasz program:
Jak nazywa się twórca języka Java?
A - James Gosling
B - Linus Thorvalds
C - Niklas Wirth
A
Historia Javy zaczyna się w roku...?
A - 1990
B - 1993
C - 1996
C
Java jest językiem programowania:
A - proceduralnym
B - obiektowym
C - proceduralno-obiektowym
B
Program napisany w Javie jest kompilowany do:
A - samodzielnego pliku wykonywalnego pod systemem operacyjnym
B - kodu bajtowego przeznaczonego do uruchomienia na wirtualnej maszynie Javy
C - skryptu dla strony internetowej
B
Download