====== Programowanie obiektowe - Laboratorium 1 ======
===== 1.1 Kompilacja i uruchomienia Hello World =====
* Za pomocą swojego ulubionego edytora utwórz plik HelloWorld.java
* zadeklaruj w nim klasę HelloWorld
* Wpisz wewnątrz funkcję
public static void main(String[] args)
* W funkcji wypisz: tekst ''Hello World'' -- użyj instrukcji ''System.out.println("tekst")''
Sprawdź czy działają polecenia:
* ''javac'' - kompilator
* ''java'' - maszyna wirtualna
Skmpiluj program wywołując
javac HelloWorld.java
Co pojawiło się w wyniku kompilacji na dysku?
Uruchom program wywołując
java HelloWorld
===== 1.2 Klasa należąca do pakietu =====
* Utwórz podkatalog ''lab1''
* Skopiuj tam plik HelloWorld.java
* Dodaj na początku pliku
package lab1;
* Skompiluj za pomocą ''javac''
* Spróbuj uruchomić wywołując:
- ''java HelloWorld''
- ''java lab1/HelloWorld''
- ''java lab1.HelloWorld''
- ''java -cp .. lab1.HelloWorld''
Które rozwiązanie zadziałało i z jakiej lokalizacji względem pliku HelloWorld.class?
===== 1.3 Proste wejście wyjście =====
**Wyjście** - wypróbuj warianty:
System.out.print("...")
System.out.println("...")
System.out.printf("String %s int %d double %f",???)
**Wejście** - wczytywanie danych z konsoli:
Zaimportuj klasy ''Scanner'' i ''Locale''
import java.util.Scanner;
import java.util.Locale;
public class Main {
public static void main(String[] args) {
...
}
}
Zobacz, jak można wczytać dane
Scanner scan = new Scanner(System.in);
String s = scan.next();
int i = scan.nextInt();
double d = scan.nextDouble();
System.out.printf("Wczytano %s , %d, %f",s,i,d);
Wolisz stosować kropki, jako separator dziesiętny? Zmień locale na ''Locale.US''
Scanner scan = new Scanner(System.in).useLocale(Locale.US);
String s = scan.next();
int i = scan.nextInt();
double d = scan.nextDouble();
System.out.printf(Locale.US,"Wczytano %s , %d, %f",s,i,d);
''Locale.US'' to stała (zmienna statyczna) zdefiniowana wewnątrz klasy ''Locale''. Kropka ma takie znaczenie, jak operator zasięgu ''::'' w C++.
===== Wybór IDE =====
Netbeans :-) vs. InteliJ =) vs. Eclipse :-\
* Osobiście najczęściej używam Netbeans (sprawnie obsługuje kodowanie w Java, C/C++, SQL i PHP, usługi sieciowe, JavaScript, itp.). Rozwijane przez Oracle, bezpłatne.
* InteliJ ma podobną efektywność i funkcjonalność. Praktycznie ten sam produkt jest oficjalnym narzędziem budowy aplikacji dla systemu Android. Dostępna wersja community lub pełna (dla studentów bezpłatna)
* Eclipse jest rozpowszechnione, także jako platforma do budowy samodzielnych aplikacji z GUI. Mam jednak wrażenie, że działa wolno i często "zatyka się", zwłaszcza przy uzupełnianiu kodu (//code completion//). Bezpłatne.
===== 1.4 Tworzymy pierwszy projekt w IDE =====
* Utwórz projekt Lab1
* Utwórz w nim klasę ''SimpleIO'' umieszczoną w pakiecie ''lab1''. W zależności od IDE - może być konieczne wpierw utworzenie pakietu, a potem klasy
* Przekopiuj tam kod
* Obserwuj edytor - program jest kompilowany w locie, błędy są zaznaczane, część rutynowych działań mających na celu ich wyeliminowanie można wykonać automatycznie (klikając lub używając kombinacji klawiszy)
* Uruchom (możesz wybrać Run lub Run file)
===== 1.5 Druga funkcja main ? =====
Utwórz klasę o nazwie ''Fibo'' i utwórz w niej funkcję ''main()''
Zaimplementuj tam kod umieszczony w funkcji ''main()'', który
* wczytuje liczbę całkowitą ''n'' z zakresu 1 - 45 (dla liczb spoza zakresu wychodzi z funkcji ''main'')
* deklaruje tablicę (czytaj: deklaruje zmienną ''tab'' i tworzy tablicę na stercie) ''int[] tab = new int[n]''
* wypełnia ją wartościami ciągu Fibbonaciego
* Wypisuje elementy tablicy
Uruchom program za pomocą opcji Run File
===== 1.6 Trzecia funkcja main? Problem 610A =====
*Dodaj do projektu klasę ''Problem610A''
*Przeczytaj opis zadania na stronie [[http://codeforces.com/problemset/problem/610/A]]
*Zaimplementuj...
*Sprawdź działanie dla opublikowanych przykładów
*Opcjonalnie: załóż konto i prześlij kod do wykonania w chmurze. Sprawdź, czy przeszedł wszystkie testy?
===== 1.7 I jeszcze czwarta. Problem 115A =====
*Dodaj do projektu klasę ''Problem115A''
*Przeczytaj opis zadania na stronie [[http://codeforces.com/problemset/problem/115/A]]
* Podobnie, jak poprzednio zaimplementuj i przetestuj