 
Języki programowania obiektowego
Laboratorium nr 1
Akademia Górniczo-Hutnicza
Katedra Robotyki i Mechatroniki
 
Wstęp
Programowanie   w   języku   Java,   tak   samo   jak   w   innych   językach,   wymaga   posiadania 
zainstalowanych oraz odpowiednio skonfigurowanych narzędzi programistycznych. W przypadku 
języka   Java   konieczne   jest   posiadanie   co   najmniej   pakietu   Java   SDK   dystrybuowanego   na 
specjalnych warunkach poprzez firmę Sun Microsystems. Pakiet dostępny jest jest nieodpłatnie pod 
adresem: 
http://java.sun.com/javase/downloads/index.jsp
. Po zainstalowaniu pakiet zawiera między
innymi narzędzia:
•
javac – kompilator,
•
java - interpreter,
•
appletviewer – przeglądarka apletów,
•
javadoc - generator dokumentacji,
•
jdb – debuger,
•
jar – narzędzie do tworzenia archiwów.
Przykład 1
Pierwszą czynnością jaką należy wykonać przed przystąpieniem do tworzenia programów w danym 
języki jest sprawdzenie czy wszystkie elementy środowiska programistycznego którego chcemy 
używać działają poprawnie. W naszym przypadku konieczne jest sprawdzenie czy narzędzia są 
poprawnie zainstalowane w systemie. Można tego dokonać na kilka sposobów. Jeden z nich polega 
na:
–
uruchomieniu okna konsoli (Start -> Uruchom, wpisanie cmd)
–
w oknie konsoli wpisanie: javac -version
–
system powinien odpowiedzieć wypisując bieżącą wersję kompilatora jawy np:
Jeśli odpowiedź jest inna np:
„Nazwa 'javac' nie jest rozpoznawana jako polecenie wewnętrzne lub zewnętrzne,
program wykonywalny lub plik wsadowy.”
oznacza to iż środowisko jest skonfigurowane niepoprawnie. Jeśli mamy pewność iż instalacja 
przebiegła   poprawnie   problem   może   dotyczyć   braku   dodania   jawy   do   zmiennej   systemowej 
„PATH”. 
Tworzenie i uruchomienie programu
Utworzenie i uruchomienie programu za pomocą języka Java polega na:
•
utworzeniu dokumentu tekstowego za pomocą dowolnego dostępnego edytora tekstowego 
(np. notatnik w systemach Windows).
 
•
wypełnieniu utworzonego dokumentu treścią programu zgodnie z regułami i składnią języka 
programowania, przy czym należy pamiętać o tym że:
•
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".
•
klasa uruchomieniowa musi zawierać statyczną metodę „main” o postaci:
public static void main(String args[]) { ... }
•
zapisaniu treści dokumentu w postaci pliku dyskowego posiadającego rozszerzenie *.java 
(przy czym należy przestrzegać następującej konwencji dotyczącej nazewnictwa – nazwa 
klasy powinna być zgodna z nazwą pliku, który przechowuje program),
•
wykonaniu   kompilacji   kodu   źródłowego   do   postaci   kodu   bajtowego.   Kompilacja 
wykonywana  jest   za  pomocą  narzędzia   javac.exe.  Jej  wynikiem  jest  otrzymanie   plików 
skompilowanych o nazwach zawierających rozszerzenie *.class. 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".
•
uruchomienie programu za pomocą narzędzia java.exe. Przykładowe wywołanie pokazane 
jest poniżej: java nazwa_pliku arg1 arg2.
Przykład 2
Zgodnie   z   tradycją   każdego   z   kursów,   związanego   z   początkami   programowania   w   jakimś   z 
języków programowania, jest utworzenie najprostszego programu pozwalającego na wyświetlenie 
wiadomości tekstowej  w  oknie konsoli.  Do wykonania  tego zadania  konieczne  jest  wykonanie 
następujących kroków:
–
utworzenie
–
utworzenie nowego dokumenty tekstowego (np. w notatniku)
–
umieszczenie w dokumencie kodu programu np:
public class Test{
  public static void main(String[] arg){
System.out.println("To jest probny komunikat!");
  }
}
–
zapisanie utworzonego pliku. Nazwa pliku powinna być zgodna z nazwą definiowanej klasy 
oraz powinna mieć rozszerzenie .java. W tym konkretnym przypadku będzie to „Test.java”
–
skompilowanie programu za pomocą narzędzia javac. Np. javac Test.java
–
uruchomienie programu za pomocą narzędzia java. Np. java Test
 
Zastosowanie zintegrowanego środowiska programistycznego
W  celu   ułatwienia   wykonywania   przedstawionych   powyżej   czynności   tworzone   są   środowiska 
programistyczne pomagające programistom na szybkie tworzenie programów. Obecnie istnieje całe 
mnóstwo narzędzi ułatwiających tworzenie programów. W sieci można znaleźć ponad 100 różnych 
narzędzi poprawiających komfort tworzenia oprogramowanie jedynie w Javie. Jednym z najbardziej 
popularnych   obecnie   środowisk   programistycznych   jest   Eclipse.   Narzędzie   to   dostępne   jest 
nieodpłatnie na zasadach wolnego oprogramowania na stronie: 
. Poniżej pokazane
jest   zastosowanie   programu   Eclipse   do   wykonania   podstawowych   kroków   tworzenia 
oprogramowania za pomocą języka Java.
1. Tworzenie projektu
W Eclipse najważniejszym pojęciem organizacji pracy jest projekt. Zajmiemy się utworzeniem 
projektu, który będzie zawierał program napisany w Javie.
Aby utworzyć nowy projekt:
•
Uruchom Eclipse
•
Wybierz File -> New -> Project
•
Z listy kategorii wybierz "Java"
•
Z listy projektów wybierz "Java Project"
•
Wpisz nazwę projektu, np. "Hello World"
•
Wciśnij "Finish"
2. Tworzenie klasy
Najprostszy program w Javie składa się z pojedynczej klasy i metody main().
Aby stworzyć klasę w projekcie:
•
W widoku Navigatora, kliknij prawym klawiszem na projekt i wybierz New->Class
•
W pole Name wpisz "HelloWorld"
•
zaznacz, że chcesz stworzyć metodę main() (checkbox na dole)
•
Wciśnij Finish
 
3. Uruchamianie programu
Wypełnijmy utworzoną klasę kodem. Wpiszmy na przykład w metodzie main():
System.out.println("To jest mój pierwszy program w jawie!!");
Następnie zapiszmy projekt (File->Save lub Ctrl+S). Zauważmy, że efektem zapisania jest również 
skompilowanie programu.
Na pasku zadań wciśnij przycisk Run (zielona strzałka).
Pokaże się okno konfiguracji uruchamiania. Wybierz "Java Application" i wciśnij "New".
Następnie wciśnij Run.
Na   dole,   w   widoku   Console,   otrzymasz   wynik   programu.   Gratulacje!   Właśnie   stworzyłeś, 
skompilowałeś i uruchomiłeś pierwszy projekt w Eclipse :)
4. Użycie perspektyw i widoków
Główne   okno   Eclipse'a   to   tak   zwany   Workbench.   W  Workbenchu   mogą   znajdować   się   różne 
Edytory   oraz   Widoki.   Każdy   układ   Edytorów   i   Widoków   stanowi   Perspektywę.   Pracując   nad 
 
projektem, możemy przełączać się między uruchomionymi perspektywami, a także dodawać nowe.
•
Przełącz   się   z   perspektywy   Java   na   perspektywę   Resource.   Możesz   to   zrobić,   klikając 
zakładkę Resource w prawym górnym rogu ekranu. 
•
Zauważ, że niektóre widoki zniknęły, a na ich miejsce pojawiły się inne.
•
Wróć do perspektywy Javy, klikając zakładkę Java tuż obok Resource.
W ramach każdej perspektywy można przełączać się między widokami.
•
Wybierz z menu Window -> Show View -> Javadoc
•
Zauważ, jak na dole pojawił się widok Javadoc.
•
Możesz przetestować działania tego widoku. Kliknij na nazwę klasy HelloWorld w edytorze 
lub w widoku Outline. 
•
W   widoku   Javadoc   pojawi   się   Javadoc   odpowiadający   wybranej   klasie   (został   on 
automatycznie wygenerowany przez Eclipse podczas tworzenia klasy, należy go oczywiście 
zmienić). 
5. Autopoprawianie
Jedną z licznych zalet Eclipse'a jest ogromne ułatwienie dla użytkownika, jakim jest wykrywanie 
błędów składniowych jeszcze przed próbą kompilacji oraz ich automatyczne poprawianie.
Zmodyfikuj kod metody main(), aby wyglądała tak:
public static void main(String[] args) {
        ArrayList n;            
        System.out.println("Hello World");
}
Zauważ, że słowo ArrayList zostało podkreślone na czerwono. To znaczy, że Eclipse znajduje w 
tym miejscu błąd składni.
Wciśnij Ctrl+S - faktycznie, podczas kompilacji pojawił się błąd. 
Jeśli spojrzymy na widok "Problems" (na dole ekranu), to zauważymy czerwony X i opis problemu: 
nigdzie nie zdefiniowaliśmy typu ArrayList. Dodatkowo, Eclipse może automatycznie poprawić 
błąd.
•
Wciśnij żarówkę z iksem po lewej stronie błędnej linii w edytorze. Możesz również kliknąć 
prawym klawiszem na wpis w widoku Problems i wybrać QuickFix 
•
Pojawi się lista sugerowanych przez Eclipse poprawek.
•
Wybierz "Import ArrayList (java.util)"
•
Zauważ, że na górze kodu pojawiła się nowa linijka, importująca odpowiedni moduł.
Eclipse   potrafi   wykrywać   również   bardziej   wyrafinowane   błędy,   np.   brak   obsługi   wyjątków 
rzucanych przez wywołaną metodę.
6. Autouzupełnianie
Oprócz poprawiania błędów, edytor Eclipse'a wspomaga również pisanie kodu. Sprawdzimy to, 
tworząc pętlę wypisującą 10 liczb, zaczynając od 1.
Dopisz do metody main() następujące linijki:
int limit = 10;
for
Następnie po for, zamiast spacji, naciśnij Ctrl+Space.
 
Pojawi się okienko z listą możliwych uzupełnień sugerowanych przez Eclipse. Wybierz "iterate 
over   array".   Zauważ,   że   po   pojedynczym   kliknięciu   myszki   na   wybraną   opcję   pojawia   się   jej 
podgląd.
Do   kodu   został   dodany  szablon   ze   zmiennymi   do   uzupełnienia.   Zauważ,   że   Eclipse   próbował 
zgadnąć, jaki będzie warunek końcowy pętli.
Każde obramowane na zielono pole szablonu możemy zmieniać, a zmiany zostaną odzwierciedlone 
w szablonie.
Wciśnij TAB, aby przejść do warunku końca pętli. Zmień go na x < 10.
Do ciała pętli wpisz coś w rodzaju:
System.out.println("Liczba: " + i);
Zauważ,   że   jeśli   napiszesz   tylko   System.out.   i   wciśniesz   Ctrl+Space   lub   poczekasz   chwilę,   to 
również pojawi się okno z podpowiedziami.
Zapisz (Ctrl+S) i wykonaj program. 
7. Debugowanie kodu
Ponownie zmodyfikujmy treść głównej metody main(), aby wyglądała tak:
public static void main(String[] args) {
                ArrayList n;
                int x = 1;
                System.out.println("Hello World");
                x = 2;
                System.out.println("Oto liczba: " + 2);
        }
Spróbujemy dodać breakpoint w linii Hello World i sprawdzić, jaka jest wartość zmiennej x.
•
Kliknij dwukrotnie lewym klawiszem myszki po lewej stronie od linii wypisującej Hello 
World, na pierwszym pionowym pasku edytora (powinien być zacieniony na niebiesko). 
Pojawi   się   niebieska   kropka,   oznaczająca   ustawienie   breakpointu.
Możesz również wybrać z menu Run -> Toggle Line Breakpoint. 
•
Jeśli klikniesz prawym klawiszem na kropkę i wybierzesz Breakpoint Properties, możesz 
ustawić  dodatkowe  właściwości  breakpointu,  takie  jak warunek  zatrzymania  czy  licznik 
wywołań. Teraz jednak nie będzie to nam potrzebne. 
•
Zapisz projekt (Ctrl+S) i wybierz z menu Run -> Debug..., po czym wciśnij Debug w oknie, 
które się pojawi. 
•
Eclipse zapyta, czy przełączyć się na Perspektywę Debugowania. Potwierdź.
•
Zauważ, że układ widoków zmienił się i jest dużo wygodniejszy do obsługi debugowania 
niż zwykła perspektywa Java. 
•
Program zatrzymał się przed wykonaniem zaznaczonej linii.
•
Spójrz w prawy górny róg, na widok Variables. Możemy stwierdzić, że x ma wartość 1, a 
metoda main dostała pustą listę argumentów. 
•
Na   belce   na   górze   mamy   podstawowe   przyciski   obsługi   debugowania:   Kontynuacja, 
Zatrzymanie, Step Into oraz Step Over. 
•
Wciśnij Step Over. Zauważ, że w Console wypisał się "Hello World"
•
Ponownie wciśnij Step Over. Wartość x zmieniła się na 2. Eclipse dodatkowo podkreśla 
zmianę, zaznaczając zmienną kolorem czerwonym w widoku Variables. 
•
Wciśnij Resume, aby dokończyć działanie programu.
•
Wróć do widoku Java (klikając fiszkę "Java" w prawym górnym rogu ekranu")
•
Wyłącz breakpoint, dwukrotnie klikając lewym klawiszem myszki na niebieską kulkę.
 
Inne przydatne funkcje
Importowanie już napisanego programu do Eclipse'a
Jeżeli zaczęliśmy tworzyć jakiś projekt w innym środowisku niż Eclipse, możesz importować ten 
projekt do Eclipse'a. W tym celu należy stworzyć nowy projekt w Eclipse a następnie:
•
użyć polecenia File->Import...
•
lub skopiować pliki ręcznie do utworzonego przez Eclipse katalogu projektu, a następnie 
kliknąć prawym klawiszem na nazwę projektu w widoku i wybrać Refresh From Local. 
Uzyskiwanie pomocy
Eclipse   posiada   duże   możliwości   związane   z   podpowiadaniem   składni   poprawianiem   błędnie 
wprowadzonego kodu. Część z tych możliwości pokazana została w poprzednich częściach tego 
dokumentu. Wszystkie informacje zawarte w podpowiedziach mogą być dostępne także z poziomu 
menu Help środowiska. 
Inną możliwością uzyskania pomocy dotyczącej klas dostarczanych wraz z pakietem Java SDK jest 
wykorzystanie   dokumentacji   dostarczanej   bezpośrednio   przez   Sun.  API   (Application   Program 
Interface)   bibliotek   dostarczanych   wraz   z   SDK   dostępne   jest   on-line   na   stronie 
http://java.sun.com/javase/6/docs/api/
Tworzenie dokumentacji wykonywanego programu
Do   opisu   fragmentów   kodu   źródłowego   programu   używa   się   komentarzy.   Na   ich   podstawie, 
używając programu javadoc można później wygenerować dokumentację. Najczęściej opisuje się 
elementy takie jak klasy, metody, interfejsy czy obiekty. Komentarze powinny być krótkie oraz 
precyzyjne. Należy je umieszczać bezpośrednio przed dokumentowanym elementem programu.
•
Aby tekst komentarza został rozpoznany przez javadoc, musi być umieszczony pomiędzy 
sekwencjami znaków  /**  i   */.
•
Początkowe znaki * w kolejnych wierszach są pomijane.
•
Każdy wiersz zawierający znak @, po którym następuje jeden ze znaczników
 
dokumentacyjnych, powoduje utworzenie w dokumentacji oddzielnego paragrafu.
•
Polecenie wygenerowania dokumentacji ma postać:
•
javadoc nazwa_pliku.java
•
Jego wynikiem jest zbiór plików z opisem w formacie HTML.
Wybrane znaczniki dokumentacyjne Javy:
•
@author
– informacje o autorze programu,
•
@version
– informacje o wersji programu,
•
@return
– opis wyniku zwracanego przez metodę,
•
@serial
– opis typu danych i możliwych wartości przyjmowanych przez zmienną,
•
@see
– tworzy łącze do innego tematu,
•
@since
– opis wersji, od której zaistniał określony fragment kodu,
•
@deprecated
– informacje o elementach zdeprecjonowanych (które nie są zalecane),
•
@param
– opis parametru wywołania metody,
•
@exception
– identyfikator wyjątku.
Wybrane pakiety klas dostarczanych razem z Java SDK
Klasa System
Jest  jedną  z  częściej   wywoływanych   klas   w   programach   Javy.   Zawiera   ona  kilka  użytecznych 
metod związanych z dostępem do ustawień środowiska zmiennych środowiskowych, posiada środki 
do   wczytywania   plików   i   bibliotek.   Posiada   także   narzędzia   do   szybkiego   kopiowania   części 
zmiennych tablicowych. Najczęściej używanym składnikiem klasy system jest jednak możliwość 
dostępu do strumieni wejściowych, wyjściowych oraz strumienia błędów. Najczęstsze użycie klasy 
System   związane   jest   z   wypisaniem   danych   wynikowych   związanych   z   działaniem   danego 
programu. W tym celu konieczne jest wykorzystanie składni:
System.out.println(„String do wypisania”). 
W   powyższym   przykładzie   out   reprezentuje   strumień   wyjściowy   którego   metoda   println() 
powoduje wypisanie zmiennej typu String na konsoli.
Możliwe jest także wykorzystanie klasy System do pobierania danych ze standardowego wejścia 
(najczęściej jest nim klawiatura). 
Klasa String
Klasa String jest wbudowaną klasą Javy. Jej obiekty używane są do przechowywania łańcuchów 
znaków. Obiekty klasy String tworzy się bardzo łatwo, np.:
String s;
//utworzenie zmiennej referencyjnej
s =
"abc"
;
//utworzenie obiektu zawierającego napis abc
Instrukcje te można połączyć, pisząc: 
String s = "abc";
Nazwa typu String zaczyna się od dużej litery, ponieważ  jest to nazwa typu obiektowego.  Raz 
utworzone obiekty klasy String nie mogą ulegać  zmianom – ich zawartość jest tylko do odczytu. 
Operacje przeprowadzane na stringach tworzą nowe  obiekty klasy String. Nieużywane stringi są 
automatycznie usuwane z pamięci.
Operacje jakie mogą być wykonywane są dostępne poprzez:
 
–
operatory konkatenacji (łączenia)
–
metody klasy String
Operatory  konkatenacji  + oraz +=  są jedynymi  operatorami  przeciążonymi  w  Javie - oprócz 
sklejania  łańcuchów,  pozwalają również na  ich łączenie z liczbami  lub obiektami  innych klas. 
Przykłady ich wykorzystania pokazane są poniżej:
int
n = 10;
String str, str1, str2, str3, str4;
str = 
"napis"
;
str1 = str + n;
// napis10
str2 = str + n + n;
// napis1010
str3 = str + (n + n);
// napis20
str4 = n + n + str;
// 20napis
Metody klasy String pozwalają na wykonanie dodatkowych operacji np:
String s=
"aBCDe"
, s1, s2;
//obiekty
int
dl=s.length();
//dl=5
int
k=s.indexOf('C');
//k=2
int
l=s.indexOf('Z');
//l=-1
s1=s.toLowerCase();
//s1=abcde
s2=s.toUpperCase();
//s2=ABCDE
boolean
b1=s1.equals(s2);
//b1=false
boolean
b2=s1.equals(s1);
//b2=true
String s3=s.substring(0,2);
//s3=aB
char
znak=s.charAt(2);
//znak=C
Porównywanie   Stringów   -  do   porównywania   zawartości   dwóch   obiektów   typu   String   służy 
metoda equals(). Zwraca ona wartość true w przypadku gdy zawartość porównywanych obiektów 
jest identyczna  oraz false  w przeciwnym przypadku.  Do porównywania  można też zastosować 
metodę compareTo() jednak ona zwraca zero, gdy stringi są równe. Użycie operatora  „==” może 
prowadzić do błędów ponieważ operator ten pozwala jedynie stwierdzić, czy zmienne referencyjne 
odwołują się do tego samego obiektu. 
Przykłady użycia:
     String s = 
"abc"
;
     s = s+12;
     String s1 = 
"abc12"
;
boolean
b1 = s==s1;
//false
boolean
b2 = s.equals(s1);
// true
int
k = s.compareTo(s1);
// 0
Przekształcanie liczb na łańcuchy:
●
Konwersję liczb do postaci łańcuchów znakowych przeprowadza się za pomocą metody 
valueOf() klasy String. Na przykład:
double x = 12.31;
int n = 100;
String s1 = String.valueOf(x);
String s2 = String.valueOf(n);
●
Innym (bardziej kosztownym) rozwiązaniem jest użycie operatorów konkatenacji, np:
double
x = 12.31;
int
n = 100;
 
String s1 =
""
+ x;
String s2 =
""
+ n;
Przekształcanie łańcuchów na liczby:
●
Do przekształcania łańcuchów w liczby stosuje się metodę parseInt():
String t="125";
int i = Integer.parseInt(t);
●
Można też posłużyć się starszą metodą valueOf() klasy Double lub Integer. Na przykład:
String s="3.14", t="10";
double x;
int i;
x=Double.valueOf(s);
i=Integer.valueOf(t);
Przykład:
package
agh.krim.jpo;
public
class
Konwersja {
/**
*
@param
args
*/
public
static
void
main(String[] args) {
//
TODO
Auto-generated method stub
String s1 =
"11.1"
;
String s2 =
"6.6"
;
double
a=Double.parseDouble(s1);
double
b=Double.parseDouble(s2);
double
suma=a+b;
String wynik = String.valueOf(suma);
System.
out
.println(a);
System.
out
.println(b);
System.
out
.println(wynik);
}
}
Klasa Math
Klasa Math grupuje instrukcje matematyczne pozwalające na wykonanie podstawowych operacji na 
wartościach   liczbowych.  Wszystkie   funkcje   zadeklarowane   są   jako   statyczne,   więc   można   ich 
używać bez tworzenia egzemplarza obiektu. Funkcje matematyczne – metody klasy Math -zwykle 
operują na liczbach rzeczywistych typu double i zwracają wartości typu double. Poniżej pokazana 
jest tabela grupująca składnię typowych operacji matematycznych:
Metoda
Opis
abs(x)
Wartość bezwzględną liczby x
min(a, b)
Mniejsza z liczb a i b
max(a, b)
Większą z liczb a i b
ceil(double x)
Najmniejszą liczba całkowita większą lub równa x
floor(double x)
Największa liczba całkowita mniejsza lub równa x
exp(double x)
Liczba e podniesiona do potęgi x
 
log(double x)
Logarytm naturalny liczby x
pow(double x, double n) Liczba x podniesiona do potęgi n
random()
Generuje liczbę losową z zakresu od 0.0 do 1.0
round(float x)
Zwraca liczbę całkowitą powstałą z zaokrąglenia liczby typu float
sqrt(double x)
pierwiastek kwadratowy z liczby x
sin(double alfa)
sinus kąta alfa (podanego w radianach)
cos(double alfa)
cosinus kąta alfa (w radianach)
tan(double alfa)
tangens kąta alfa (w radianach)
toRadians(double alfa)
Zamienia stopnie na radiany
toDegrees(double alfa)
Zamienia radiany na stopnie
Przykład użycia
Napisz program obliczający wartość wyrażenia określonego wzorem:
Wynik ma być podany z dokładnością do trzech miejsc po przecinku.
Rozwiązanie:
class
Liczby{
public
static
void
main(String args[]){
double
a = Math.cos(Math.toRadians(15));
double
b = 1+Math.sqrt(17.681);
double
w = 2*a*b*b;
w=Math.round(w*1000)/1000.0;
System.out.println(
"w= "
+ w);
   }
}
Zadania do wykonania
1. Napisz program, który znajduje wszystkie trzycyfrowe liczby, których suma sześcianów
poszczególnych   cyfr   jest   równa   danej   liczbie.   (Wskazówki:   Skorzystaj     z   operatorów 
arytmetycznych % i / dla argumentów całkowitych, gdzie:
–
% - operator modulo - reszta z dzielenia. Na przykład wartością wyrażenia 937%10 jest 
liczba 7;
–
/ -  operator dzielenia całkowitego. Na przykład wartością wyrażenia 937/10 jest liczba 
93 (ale wartością 937/10.0 jest liczba 93.7).
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 parametrami 8 i 3 powinniśmy otrzymać:
* * * * * * * *
* * * * * * * *
* * * * * * * *
Oto nagłówek funkcji 
public static void rysuj_prostokat( int a, int b )
3. Napisz program obliczający wartość wyrażenia:
2
0
)
681
.
17
1
(
15
cos
2
+
=
w
 
3
422
128
750000000
521
log
2
⋅
+
=
w
Wskazówki:
●
Liczbę 750000000 można zapisać w postaci: double x = 7.5e8;
●
W klasie Math nie ma funkcji log10x. Można obliczyć jej wartość, stosując wzór:
10
log
log
log
10
e
e
x
x
=