Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej
publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną,
fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym
powoduje naruszenie praw autorskich niniejszej publikacji.
Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi
ich właścicieli.
Autor oraz Wydawnictwo HELION dołożyli wszelkich starań, by zawarte w tej książce informacje
były kompletne i rzetelne. Nie biorą jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani
za związane z tym ewentualne naruszenie praw patentowych lub autorskich. Autor oraz
Wydawnictwo HELION nie ponoszą również żadnej odpowiedzialności za ewentualne szkody
wynikłe z wykorzystania informacji zawartych w książce.
Redaktor prowadzący: Ewelina Burska
Projekt okładki: Studio Gravite/Olsztyn
Obarek, Pokoński, Pazdrijowski, Zaprucki
Wydawnictwo HELION
ul. Kościuszki 1c, 44-100 GLIWICE
tel. 32 231 22 19, 32 230 98 63
e-mail: helion@helion.pl
WWW: http://helion.pl (księgarnia internetowa, katalog książek)
Drogi Czytelniku!
Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres
http://helion.pl/user/opinie?projaz
Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję.
Materiały do książki można znaleźć pod adresem:
ftp://ftp.helion.pl/przyklady/projaz.zip
ISBN: 978-83-246-4319-6
Copyright © Helion 2012
Printed in Poland.
•
Kup książkę
•
Poleć książkę
•
Oceń książkę
•
Księgarnia internetowa
•
Lubię to! » Nasza społeczność
Spis tre"ci
Od autora ......................................................................................... 5
Rozdzia! 1. Pierwszy krok — rozpoczynamy
nauk$ programowania w j$zyku Java ................................................. 7
1. Historia Javy i pierwsze zadania ................................................................................... 7
2. JDK, Notatnik i klasyczny przyk4ad „Hello World” ..................................................... 9
3. Znaki, tablice znaków i klasa String ........................................................................... 11
4. Klasa String — operacje na tekstach .......................................................................... 15
5. Tablica argumentów aplikacji ..................................................................................... 18
6. Prawda czy fa4sz — logiczny typ danych ................................................................... 19
7. Liczby ca4kowite typu int i klasa Integer .................................................................... 22
8. Inne typy liczb ca4kowitych w Javie ........................................................................... 25
9. Typy liczb zmiennoprzecinkowych ............................................................................ 27
Rozdzia! 2. Drugi krok — operacje wej%cia-wyj%cia
i instrukcje steruj&ce w Javie ......................................................... 31
10. WyHwietlanie sformatowanych wyników w konsoli.
Sta4e i metody z klasy Math ..................................................................................... 31
11. Wczytywanie danych — klasa Scanner .................................................................... 34
12. Operacje na tekstach — klasy StringBuffer i StringBuilder ..................................... 36
13. Instrukcje warunkowe i instrukcja selekcji ............................................................... 38
14. Instrukcja pMtli typu do-while ................................................................................... 41
15. Instrukcja pMtli typu while ........................................................................................ 42
16. Instrukcja pMtli typu for ............................................................................................ 44
Rozdzia! 3. Trzeci krok — budujemy w!asne metody i klasy ............................... 47
17. Obs4uga wyjRtków .................................................................................................... 47
18. Liczby pseudolosowe i tablice jednowymiarowe
— budujemy metody statyczne ................................................................................ 48
19. Dokumentacja klasy ................................................................................................. 53
20. Dzia4ania na u4amkach — budujemy klasM Fraction ................................................. 55
21. Klasa opakowujRca Angle — miara kRta i funkcje trygonometryczne ..................... 61
22. Liczby rzymskie i klasa Roman ................................................................................ 64
23. Trójmian kwadratowy i klasa QuadratPoly .............................................................. 66
24. Liczby zespolone — budujemy klasM Complex ........................................................ 69
Kup ksi
ąĪkĊ
Pole
ü ksiąĪkĊ
4
Programowanie w j!zyku Java
Rozdzia# 4. Czwarty krok — pliki, tablice i macierze ......................................... 77
25. Operacje na plikach tekstowych ............................................................................... 77
26. Tablice jednowymiarowe i wielomiany .................................................................... 80
27. Obliczenia statystyczne ............................................................................................ 82
28. Tablice wielowymiarowe i macierze ........................................................................ 87
29. Obliczanie wartoHci funkcji, rekurencja i inne zadania ............................................. 92
Rozdzia# 5. Rozwi%zania zada& z rozdzia#u 1 ...................................................... 97
1. Historia Javy i pierwsze zadania ................................................................................. 97
2. JDK, Notatnik i klasyczny przyk4ad „Hello World” ................................................. 101
3. Znaki, tablice znaków i klasa String ......................................................................... 104
4. Klasa String — operacje na tekstach ........................................................................ 111
5. Tablica argumentów aplikacji ................................................................................... 117
6. Prawda czy fa4sz — logiczny typ danych ................................................................. 120
7. Liczby ca4kowite typu int i klasa Integer .................................................................. 129
8. Inne typy liczb ca4kowitych w Javie ......................................................................... 135
9. Typy liczb zmiennoprzecinkowych .......................................................................... 140
Rozdzia# 6. Rozwi%zania zada& z rozdzia#u 2 .................................................... 147
10. WyHwietlanie sformatowanych wyników w konsoli.
Sta4e i metody z klasy Math ................................................................................... 147
11. Wczytywanie danych — klasa Scanner .................................................................. 152
12. Operacje na tekstach — klasy StringBuffer i StringBuilder ................................... 157
13. Instrukcje warunkowe i instrukcja selekcji ............................................................. 162
14. Instrukcja pMtli typu do-while ................................................................................. 179
15. Instrukcja pMtli typu while ...................................................................................... 187
16. Instrukcja pMtli typu for .......................................................................................... 193
Rozdzia# 7. Rozwi%zania zada& z rozdzia#u 3 .................................................... 201
17. Obs4uga wyjRtków .................................................................................................. 201
18. Liczby pseudolosowe i tablice jednowymiarowe
— budujemy metody statyczne .............................................................................. 206
19. Dokumentacja klasy ............................................................................................... 221
20. Dzia4ania na u4amkach — budujemy klasM Fraction ............................................... 237
21. Klasa opakowujRca Angle — miara kRta i funkcje trygonometryczne ................... 269
22. Liczby rzymskie i klasa Roman .............................................................................. 290
23. Trójmian kwadratowy i klasa QuadratPoly ............................................................ 301
24. RozwiRzania zada] — liczby zespolone ................................................................. 318
Rozdzia# 8. Rozwi%zania zada& z rozdzia#u 4 .................................................... 347
25. Operacje na plikach tekstowych ............................................................................. 347
26. Tablice jednowymiarowe i wielomiany .................................................................. 358
27. Obliczenia statystyczne .......................................................................................... 370
28. Tablice wielowymiarowe i macierze ...................................................................... 385
29. Obliczanie wartoHci funkcji, rekurencja i inne zadania ........................................... 420
Kup ksi
ąĪkĊ
Pole
ü ksiąĪkĊ
Rozdzia( 4.
Czwarty krok — pliki,
tablice i macierze
25. Operacje na plikach tekstowych
Zadanie 25.1.
KorzystajRc z obiektów i metod klasy
FileWriter
, napisz program zapisujRcy do pliku
tekstowego tekst.txt jeden wiersz tekstu: Programowanie obiektowe.
Zadanie 25.2.
Plik tekstowy tekst.txt zawiera jeden wiersz tekstu: Programowanie obiektowe. Ko-
rzystajRc z obiektu i metod klasy
FileWriter
, napisz program dopisujRcy do tego pli-
ku w pierwszym wierszu tekst: w j'zyku Java, a w kolejnym wierszu tekst: jest bardzo
interesuj*ce.
W systemie Windows koniec wiersza w pliku tekstowym sk(ada si9 z dwóch znaków
CR (ang. carriage return, warto?@ ASCII 13, znak '\r') i LF (ang. line feed warto?@
ASCII 10, znak '\n'). W systemach UNIX i Linux koKcem wiersza jest LF, a w sys-
temie Mac OS — znak CR.
Zadanie 25.3.
KorzystajRc z obiektu i metod klasy
FileWriter
, napisz program obliczajRcy i zapi-
sujRcy w pliku silnia.txt wartoHci
n!
(
n
silnia) dla
n
=
1
,
2
, …,
12
. Kacdy wynik zapisz
w odrMbnym wierszu, w postaci
12! = 479001600
.
Przypomnijmy znaczenie symbolu n!: 1! = 1, 2! = 1!·2 = 1·2, 3! = 2!·3 = 1·2·3 itd.
Kup ksi
ąĪkĊ
Pole
ü ksiąĪkĊ
78
Programowanie w j$zyku Java
W tym zadaniu i zadaniach podobnych starajmy si9, aby plik wyj?ciowy nie zawie-
ra( na koKcu pustego wiersza (je?li obecno?@ tego ostatniego wiersza nie jest za-
mierzona). Taki wiersz moVe nam sprawi@ róVne niespodzianki, gdy plik b9dzie od-
czytywany.
Zadanie 25.4.
Napisz program zapisujRcy w pliku pierwiastki.txt wartoHci pierwiastków kwadrato-
wych i szeHciennych dla liczb naturalnych od 2 do 15. Kacdy wiersz pliku powinien
zawierag trzy liczby oddzielone znakami tabulatora — liczbM naturalnR, pierwiastek
kwadratowy z tej liczby i pierwiastek szeHcienny. Pierwiastki podaj z precyzjR do 8
miejsc po przecinku.
Do formatowania wyników uVyj metody format() z klasy String.
Zadanie 25.5.
Napisz program zapisujRcy w pliku tekstowym sto.txt sto liczb ca4kowitych wyloso-
wanych z zakresu od 1 do 20. Liczby w pliku powinny byg oddzielone odstMpami.
Zadanie 25.6.
Napisz program zapisujRcy w pliku tekstowym dane.txt 50 par liczb. Kacda para liczb
powinna byg umieszczona w odrMbnym wierszu. Pierwsza liczba w parze powinna
byg rzeczywista, dodatnia i nie wiMksza od 10 oraz podana z dok4adnoHciR do dwóch
miejsc po przecinku, druga liczba powinna byg ca4kowita i ma naleceg do przedzia4u
8
,
2
. Liczby w wierszu oddzielamy odstMpem.
Po rozwiYzaniu zadaK 25.1 – 25.6 b9dziemy mieli w bieVYcym folderze pi9@ plików:
tekst.txt, silnia.txt, pierwiastki.txt, sto.txt i dane.txt. Zawarto?@ tych plików b9dziemy
odczytywali w kolejnych zadaniach.
Zadanie 25.7.
KorzystajRc z obiektu i metod klasy
FileReader
, napisz program odczytujRcy zawar-
toHg pliku tekstowego i wyHwietlajRcy jego zawartoHg w konsoli.
Bezparametrowa metoda read() z klasy FileReader odczytuje z pliku jeden znak
i zwraca jego kod, liczb9 typu int z zakresu od 0 do 65 535 lub liczb9 –1, gdy nie
moVna odczyta@ znaku. Metoda ready() zwraca warto?@ logicznY true, gdy z pliku
moVna odczyta@ kolejny znak, i false w przeciwnym wypadku.
Kup ksi
ąĪkĊ
Pole
ü ksiąĪkĊ
Rozdzia! 4.
Czwarty krok — pliki, tablice i macierze
79
Zadanie 25.8.
KorzystajRc z obiektu i metod klasy
FileReader
, utwórz metodM (
readLine()
) odczy-
tujRcR wiersz pliku tekstowego. Napisz program odczytujRcy i wyHwietlajRcy w kon-
soli wszystkie wiersze pliku tekstowego.
Klasa FileReader nie zawiera metody readLine(), wi9c musisz jY sam zbudowa@.
Plik tekstowy otwórz przed wywo(aniem metody, obiekt (klasy FileReader) skojarzo-
ny z plikiem przekaV jako parametr do metody readLine(), która przeczytany z pli-
ku wiersz tekstu zwróci w postaci (aKcucha znaków.
Zadanie 25.9.
Napisz program wyHwietlajRcy w konsoli kod hród4owy programu w jMzyku Java wraz
z numerami linii. NazwM pliku (bez rozszerzenia) ucytkownik powinien podawag z kla-
wiatury. JeHli w okreHlonej lokalizacji nie ma wskazanego pliku, to program powinien
wyHwietlig odpowiedni komunikat.
Do wprowadzenia nazwy pliku z konsoli oraz do odczytania wierszy tekstu z pliku
wykorzystaj obiekty klasy BufferedReader i metod9 readLine() z tej klasy. Obec-
no?@ pliku moVesz sprawdzi@, stosujYc metod9 exists() z klasy File.
Zadanie 25.10.
Napisz program zapisujRcy do pliku kod hród4owy programu w jMzyku Java wraz z nu-
merami linii. NazwM pliku (bez rozszerzenia) ucytkownik powinien podawag z kla-
wiatury. JeHli w okreHlonej lokalizacji nie ma wskazanego pliku, to program powinien
wyHwietlig odpowiedni komunikat. Nazwa pliku wyjHciowego powinna byg taka jak
nazwa pliku hród4owego, rozszerzenie java zamienimy na rozszerzenie txt.
Do wprowadzenia nazwy pliku z konsoli oraz do odczytania wierszy tekstu z pliku
wykorzystaj obiekty klasy Scanner. Do zapisania pliku wyj?ciowego uVyj metod kla-
sy PrintWriter.
Zadanie 25.11.
W pliku tekstowym wpisany jest ciRg liczb ca4kowitych oddzielonych odstMpami. Na-
pisz program, który odczyta i wyHwietli w konsoli liczby z pliku oraz obliczy ich sumM.
Do testów moVesz uVy@ pliku sto.txt (rozwiYzanie zadania 25.5). Nie wykorzystuj
jednak faktu, Ve znasz ilo?@ liczb zapisanych w tym pliku.
Kup ksi
ąĪkĊ
Pole
ü ksiąĪkĊ
80
Programowanie w j$zyku Java
Zadanie 25.12.
W pliku tekstowym wpisany jest ciRg liczb ca4kowitych oddzielonych odstMpami. Na-
pisz program, który znajdzie najmniejszR liczbM w tym pliku oraz obliczy, ile razy ta
liczba w tym pliku wystMpuje.
Do testów moVesz uVy@ pliku sto.txt (rozwiYzanie zadania 25.5). Nie wykorzystuj
jednak faktu, Ve znasz ilo?@ liczb zapisanych w pliku.
Zadanie 25.13.
W pliku tekstowym zapisane sR w kolejnych wierszach pary liczb — liczba zmienno-
przecinkowa i liczba ca4kowita. Napisz program, który odczytuje pary liczb z pliku,
oblicza iloczyn kacdej pary i sumuje iloczyny. Wynik oblicze] nalecy wypisag w kon-
soli i zapisag w ostatnim wierszu pliku z danymi.
Do testów moVesz uVy@ pliku dane.txt (rozwiYzanie zadania 25.6).
26. Tablice jednowymiarowe
i wielomiany
Jednym z zastosowa] tablic jednowymiarowych moce byg przechowywanie wspó4-
czynników wielomianu.
Wielomian n-tego stopnia jednej zmiennej
0
1
1
1
...
)
(
a
x
a
x
a
x
a
x
w
n
n
n
n
"
"
"
"
#
$
$
ma n+1
wspó4czynników, które mocemy zapisag w tablicy
double[] a = {a0, a1, ..., an};
.
Zadanie 26.1.
Napisz program obliczajRcy wartoHci wielomianu. Stopie] wielomianu, wspó4czynni-
ki i kolejne wartoHci argumentu ucytkownik bMdzie wprowadza4 z klawiatury. Podanie
argumentu
x = 0
bMdzie sygna4em do zako]czenia pracy programu.
Do obliczenia warto?ci wielomianu wykorzystaj schemat Hornera.
Zadanie 26.2.
Napisz program, który obliczy i zapisze w pliku tekstowym (wielomian.txt) tablicM
wartoHci wielomianu
3
5
2
)
(
2
3
"
$
"
#
x
x
x
x
w
w przedziale
3
,
2
$
z krokiem h = 0,125.
Plik powinien zawierag trzy wiersze z informacjami o rozwiRzywanym zadaniu, we-
d4ug schematu: stopie] wielomianu (pierwszy wiersz), wspó4czynniki wielomianu
oddzielone odstMpami w drugim wierszu (zaczynajRc od wyrazu wolnego) i kra]ce
Kup ksi
ąĪkĊ
Pole
ü ksiąĪkĊ
Rozdzia! 4.
Czwarty krok — pliki, tablice i macierze
81
przedzia4u oraz krok w trzecim wierszu. W kolejnych wierszach umieHcimy pary liczb
(argument i wartoHg) oddzielone odstMpem.
Zadanie 26.3.
Napisz program, który obliczy i wyHwietli w konsoli sumM dwóch wielomianów.
Skorzystaj z metod dost9pnych w klasie Arrays. Przyjmij, Ve wy?wietlajYc wynik
lub prezentujYc dane, wielomian
0
1
1
1
...
)
(
a
x
a
x
a
x
a
x
w
n
n
n
n
"
"
"
"
#
$
$
zapiszemy
w postaci (aKcucha znaków "w = [a0, a1, ... an]", gdzie a0, a1, …, an sY licz-
bami wyraVajYcymi wspó(czynniki wielomianu.
Zadanie 26.4.
Napisz program, który obliczy i wyHwietli w konsoli rócnicM dwóch wielomianów.
Zob. wskazówk9 do zadania 26.3.
Zadanie 26.5.
Napisz program, który obliczy i wyHwietli w konsoli iloczyn wielomianu przez liczbM.
Zadanie 26.6.
Napisz program, który obliczy i wyHwietli w konsoli iloczyn dwóch wielomianów.
Zadanie 26.7.
Napisz program, który obliczy i wyHwietli w konsoli pochodnR wielomianu.
Zadanie 26.8.
Napisz program, który obliczy i wyHwietli w konsoli ca4kM nieoznaczonR (funkcjM pier-
wotnR) wielomianu.
Zadanie 26.9.
Utwórz klasM
Polynomial
(plik Polynomial.java) umocliwiajRcR wykonywanie pod-
stawowych dzia4a] na wielomianach zapisanych w postaci tablicy wspó4czynników.
Napisz aplikacjM prezentujRcR mocliwoHci utworzonych metod i konstruktorów.
Zadanie 26.10.
Napisz program wykonujRcy dzielenie wielomianu
0
1
1
1
...
)
(
a
x
a
x
a
x
a
x
w
n
n
n
n
"
"
"
"
#
$
$
przez dwumian o postaci (x–c).
Kup ksi
ąĪkĊ
Pole
ü ksiąĪkĊ
82
Programowanie w j$zyku Java
Zadanie 26.11.
Do4Rcz do klasy
Polynomial
dwie metody —
division()
i
remainder()
— obliczajRce
iloraz i resztM z dzielenia wielomianu reprezentowanego przez obiekt wywo4ujRcy me-
todM przez dwumian (x-c), gdzie liczba
c
typu
double
jest parametrem wywo4ania me-
tody. Napisz program demonstrujRcy dzia4anie tych metod.
Zadanie 26.12.
Napisz program obliczajRcy ca4kM oznaczonR
%
#
b
a
dx
x
w
s
)
(
dla wielomianu
0
1
1
1
...
)
(
a
x
a
x
a
x
a
x
w
n
n
n
n
"
"
"
"
#
$
$
Wszystkie potrzebne dane ucytkownik powinien wprowadzig z klawiatury — najpierw
dane wielomianu (stopie] i wspó4czynniki), a póhniej granice ca4kowania.
Do wyznaczenia funkcji pierwotnej uVyj metody (integral()) opracowanej w rozwiYza-
niach zadaK 26.8 i 26.9, a nast9pnie skorzystaj ze wzoru
)
(
)
(
)
(
a
F
b
F
dx
x
w
b
a
$
#
%
.
Zadanie 26.13.
MajRc dane wszystkie pierwiastki rzeczywiste wielomianu (
n
x
x
x
...,
,
,
2
1
), napisz pro-
gram wyznaczajRcy wspó4czynniki wielomianu.
27. Obliczenia statystyczne
Zadania 27.1 – 27.19 wykonamy dla n-elementowej próbki zapisanej w tablicy:
double[] x = {1.35, 2.45, 2.05, 1.20, 2.15, 1.70, 1.45, 1.95, 2.00, 1.65, 1.65,
2.05, 1.75, 1.25, 2.25, 1.40};
Czytelnik moce samodzielnie zmienig zestaw danych lub sposób ich pobierania przez
program — wprowadzanie danych z klawiatury lub odczytywanie z pliku. Nalecy
zwrócig uwagM na rozbiecnoHci pomiMdzy zakresem indeksów. W tablicach w jMzyku
Java indeksowanie rozpoczynamy od 0 i ko]czymy na indeksie o 1 mniejszym od
rozmiaru tablicy, natomiast we wzorach statystyki opisowej indeksy wartoHci próbki
bMdR w granicach od 1 do n.
W zadaniach bardzo czMsto bMdziemy mieli do czynienia z obliczaniem sumy ciRgu
liczb x
1
, x
2
, …, x
n
(oznaczanej symbolem
&
#
n
i
i
x
1
) zapisanego w tablicy
x[0]
,
x[1]
, …,
x[n–1]
. Zrealizujemy to przy ucyciu instrukcji pMtli:
double suma = 0;
for(double xi: x)
suma += xi;
Kup ksi
ąĪkĊ
Pole
ü ksiąĪkĊ
Rozdzia# 4.
Czwarty krok — pliki, tablice i macierze
83
lub:
double suma = 0;
for(int i = 0; i < n; ++i))
suma += x[i];
Zadanie 27.1.
Dla podanej próbki n-elementowej x
1
, …, x
n
wyznacz najmniejszR i najwiMkszR war-
toHg w ciRgu oraz rozstMp badanej cechy.
Rozst&pem badanej cechy jest róVnica pomi9dzy warto?ciY maksymalnY i minimalnY
min
max
x
x
R
"
#
.
Zadanie 27.2.
Dla podanej próbki n-elementowej x
1
, …, x
n
wyznacz HredniR arytmetycznR.
3redni6 arytmetyczn6 liczb x
1
, …, x
n
nazywamy liczb9
$
#
#
n
i
i
x
n
x
1
1
.
Zadanie 27.3.
Dla podanej próbki n-elementowej x
1
, …, x
n
wyznacz HredniR geometrycznR.
3redni6 geometryczn6 dodatnich liczb x
1
, …, x
n
nazywamy liczb9
n
n
i
i
x
g
%
#
#
1
.
JeVeli wszystkie x
i
> 0, to
$
#
#
n
i
i
x
n
g
1
log
1
log
.
Zadanie 27.4.
Dla podanej próbki n-elementowej x
1
, …, x
n
wyznacz HredniR harmonicznR.
3redni6 harmoniczn6 róVnych od zera liczb x
1
, …, x
n
nazywamy liczb9
1
1
1
1
"
#
&&
'
(
))
*
+
#
$
n
i
i
x
n
h
, gdy
0
1
1
,
$
#
n
i
i
x
(odwrotno?@ ?redniej arytmetycznej
odwrotno?ci tych liczb).
Zadanie 27.5.
Dla podanej próbki n-elementowej x
1
, …, x
n
wyznacz HredniR potMgowR rzMdu r. Obli-
czenia wykonaj dla r = 2 i r = 3.
Kup ksi
ąĪkĊ
Pole
ü ksiąĪkĊ
84
Programowanie w j$zyku Java
=redni> pot?gow> rz?du r dodatnich liczb x
1
, …, x
n
nazywamy liczb9
r
n
i
r
i
r
x
n
p
&
#
#
1
)
(
1
. Dla
1
$
#
r
otrzymujemy ?redniY harmonicznY (
h
p
#
$ )
1
(
),
a dla
1
#
r
?redniY arytmetycznY (
x
p
#
)
1
(
).
Zadanie 27.6.
Dla podanej próbki n-elementowej x
1
, …, x
n
wyznacz medianM.
Posortuj tablic9 z danymi i wybierz element ?rodkowy, gdy n jest nieparzyste, lub
oblicz ?redniY arytmetycznY dwóch ?rodkowych liczb, gdy n jest parzyste:
'
'
(
''
)
*
++
,
-
..
/
0
"
#
"
"
parzyste
jest
gdy
,
2
1
e
nieparzyst
jest
gdy
,
1
2
2
2
1
n
x
x
n
x
m
n
n
n
e
NaleVy pami9ta@ o przesuni9ciu indeksu wynikajYcego z róVnicy pomi9dzy indeksa-
mi we wzorach a indeksami w tablicach.
Zadanie 27.7.
Wyznacz wartoHg modalnR (dominantM) n-elementowej próbki x
1
, …, x
n
.
WartoBci> modaln> (dominant>, mod>) próbki x
1
, …, x
n
o powtarzajYcych si9 war-
to?ciach nazywamy najcz9?ciej powtarzajYcY si9 warto?@, o ile taka istnieje. Po-
nadto warto?@ ta nie moVe by@ warto?ciY minimalnY lub maksymalnY.
Zadanie 27.8.
Oblicz wariancjM n-elementowej próbki x
1
, …, x
n
. Wykorzystaj wszystkie nicej poda-
ne wzory i porównaj uzyskane wyniki.
Wariancj> s
2
(dyspersj>) próbki x
1
, …, x
n
nazywamy ?redniY arytmetycznY kwadratów
odchyleK warto?ci
i
x
od ?redniej arytmetycznej
x
próbki:
1
2
&
#
$
#
n
i
i
x
x
n
s
1
2
2
1
.
MoVna zastosowa@ wzory równowaVne
&
#
$
#
n
i
i
x
x
n
s
1
2
2
2
1
lub
1
2 1
2
2
1
2
2
1
a
x
a
x
n
s
n
i
i
$
$
$
#
&
#
, gdzie a jest dowolnY sta(Y.
Kup ksi
ąĪkĊ
Pole
ü ksiąĪkĊ
Rozdzia! 4.
Czwarty krok — pliki, tablice i macierze
85
Zadanie 27.9.
Oblicz odchylenie standardowe n-elementowej próbki x
1
, …, x
n
.
Odchylenie standardowe s próbki x
1
, …, x
n
jest równe pierwiastkowi kwadratowe-
mu z wariancji s
2
(zob. zadanie 27.8).
Zadanie 27.10.
Oblicz odchylenie przeciMtne d próbki x
1
, …, x
n
od sta4ej a. Obliczenia wykonaj dla a = 2.
Odchyleniem przeci?tnym d od staEej a próbki x
1
, …, x
n
nazywamy ?redniY arytme-
tycznY warto?ci bezwzgl9dnych odchyleK poszczególnych warto?ci x
i
od sta(ej a:
&
#
$
#
n
i
i
a
x
n
d
1
1
.
Zadanie 27.11.
Oblicz odchylenie przeciMtne d
1
próbki x
1
, …, x
n
od wartoHci Hredniej x .
Zadanie 27.12.
Oblicz odchylenie przeciMtne d
2
próbki x
1
, …, x
n
od mediany
e
m .
Zadanie 27.13.
Wyznacz kwartyl dolny Q
1
i kwartyl górny Q
3
próbki x
1
, …, x
n
. Oblicz odchylenie
gwiartkowe Q.
Warto?ci uporzYdkowanej próbki dzielimy na dwie grupy: warto?ci mniejsze od me-
diany i median9 oraz median9 i warto?ci wi9ksze od mediany. Kwartylem dolnym
(Q
1
) jest mediana pierwszej grupy, a górnym (Q
3
) mediana drugiej grupy. Odchyle-
nie @wiartkowe Q obliczamy ze wzoru
2
1
3
Q
Q
Q
$
#
.
Zadanie 27.14.
Oblicz moment zwyk>y m
l
rz'du l próbki x
1
, …, x
n
. Obliczenia wykonaj dla l = 2, 3 i 4.
Wzór
N
l
x
n
m
n
i
l
i
l
3
#
&
#
,
1
1
.
Kup ksi
ąĪkĊ
Pole
ü ksiąĪkĊ
86
Programowanie w j$zyku Java
Zadanie 27.15.
Oblicz moment centralny M
l
rz'du l próbki x
1
, …, x
n
. Obliczenia wykonaj dla l = 2, 3 i 4.
Wzór
N
l
x
x
n
M
n
i
l
i
l
3
$
#
&
#
,
)
(
1
1
. Z w(asno?ci ?redniej arytmetycznej wynika, Ve
M
1
= 0, natomiast M
2
jest wariancjY.
Zadanie 27.16.
Oblicz moment absolutny zwyk>y a
l
rz'du l próbki x
1
, …, x
n
. Obliczenia wykonaj dla
l = 2, 3 i 4.
Wzór
N
l
x
n
a
n
i
l
i
l
3
#
&
#
,
|
|
1
1
.
Zadanie 27.17.
Oblicz moment absolutny centralny b
l
rz'du l próbki x
1
, …, x
n
. Obliczenia wykonaj
dla l = 2, 3 i 4.
Wzór
N
l
x
x
n
b
n
i
l
i
l
3
$
#
&
#
,
|
|
1
1
. Absolutny moment centralny rz9du pierwszego
jest odchyleniem przeci9tnym od ?redniej arytmetycznej.
Zadanie 27.18.
Oblicz wspó>czynnik zmiennoBci v próbki x
1
, …, x
n
.
Wzór
%
100
4
#
x
s
v
, gdzie s jest odchyleniem standardowym, a
x
?redniY arytme-
tycznY próbki.
Zadanie 27.19.
Oblicz wspó>czynnik nierównomiernoBci H próbki x
1
, …, x
n
.
Wzór
%
100
1
4
#
x
d
H
, gdzie d
1
jest odchyleniem przeci9tnym od ?redniej arytme-
tycznej
x
.
Kup ksi
ąĪkĊ
Pole
ü ksiąĪkĊ
Rozdzia# 4.
Czwarty krok — pliki, tablice i macierze
87
W zadaniach 27.1 – 27.19 przedstawiono podstawowe wzory zwiRzane z obliczenia-
mi statystyki opisowej dla pojedynczej próbki, zwykle nieprzekraczajRcej 30 elemen-
tów. Czytelnik moce samodzielnie na podstawie rozwiRza] tych zada] konstruowag
programy majRce na celu rozwiRzywanie problemów z zakresu statystyki.
Zadanie 27.20.
Na podstawie problemów zawartych w zadaniach 27.1 – 27.19 utwórz klasM
Stat
za-
wierajRcR metody statyczne do oblicze] statystycznych. Napisz aplikacjM konsolowR
pokazujRcR dzia4anie wybranych metod z klasy
Stat
. SporzRdh dokumentacjM tej klasy.
Zadanie 27.21.
Na podstawie problemów zawartych w zadaniach 27.1 – 27.19 utwórz klasM
Statpr
umocliwiajRcR utworzenie obiektu (próbki) zawierajRcego metody do rozwiRzywania
tych problemów. Napisz aplikacjM konsolowR pokazujRcR dzia4anie wybranych metod
z klasy
Statpr
. SporzRdh dokumentacjM tej klasy.
28. Tablice wielowymiarowe i macierze
Zadanie 28.1.
Utwórz dwuwymiarowR tablicM liczb ca4kowitych o trzech wierszach. W pierwszym
wierszu tablicy umieHg liczby od 1 do 10, w drugim kwadraty tych liczb, a w trzecim
szeHciany liczb z pierwszego wiersza. Napisz program tworzRcy i wyHwietlajRcy tM
tablicM w konsoli.
Zadanie 28.2.
W tablicy dwuwymiarowej nie wszystkie wiersze muszR mieg ten sam rozmiar. Napisz
program, który utworzy tablicM liczb ca4kowitych o dziesiMciu wierszach. Wype4nij
tablicM kolejnymi liczbami naturalnymi, zaczynajRc od liczby 1. W pierwszym wier-
szu umieHg jednR liczbM, w drugim dwie liczby, w trzecim trzy itd. — w dziesiRtym
dziesiMg liczb. Oblicz sumy liczb w kolejnych wierszach i sumM wszystkich liczb za-
pisanych w tablicy. WyHwietl w konsoli tablicM liczb oraz obliczone sumy.
Zadanie 28.3.
Utwórz klasM
TInt
, która bMdzie zawierag metody statyczne
input()
i
print()
umoc-
liwiajRce wprowadzanie danych z konsoli do tablicy lub wyHwietlanie danych z tabli-
cy w konsoli. Parametrem wywo4ania tych metod powinna byg tablica liczb ca4kowi-
tych jedno- lub dwuwymiarowa. Napisz program demonstrujRcy dzia4anie tych metod.
Zadanie 28.4.
Utwórz w klasie
TInt
metodM statycznR
setRandom()
, która wype4ni tablicM liczb ca4-
kowitych wartoHciami wylosowanymi z zakresu od 0 do n (liczba ca4kowita n > 0).
Kup ksi
ąĪkĊ
Pole
ü ksiąĪkĊ
88
Programowanie w j!zyku Java
TablicM oraz zakres wartoHci podaj jako parametry metody. Napisz program demon-
strujRcy dzia4anie tej metody.
Zadanie 28.5.
Dodaj do klasy
TInt
metodM statycznR
printf()
wyHwietlajRcR tablicM liczb ca4kowi-
tych w konsoli. Metoda ta powinna mieg dwa parametry: 4a]cuch formatujRcy i iden-
tyfikator tablicy. Napisz program demonstrujRcy dzia4anie tej metody.
Zadanie 28.6.
Na podstawie zada] 28.3, 28.4 i 28.5 utwórz klasM
TDouble
z metodami statycznymi
input()
,
print()
,
printf()
i
setRandom()
, u4atwiajRcymi pobieranie i wypisywanie
danych oraz losowe ustawianie wartoHci w jedno- i dwuwymiarowych tablicach liczb
zmiennoprzecinkowych typu
double
. Napisz program pokazujRcy dzia4anie wybranych
metod z tej klasy.
Macierz jest uporzRdkowanR prostokRtnR tablicR liczb, dla której zdefiniowane sR dzia-
4ania algebraiczne dodawania (odejmowania) i mnocenia:
Dodawanie (odejmowanie) dwóch macierzy jest mocliwe tylko dla macierzy
o jednakowych liczbach kolumn (n) i wierszy (m). Suma (rócnica) macierzy
A i B jest macierzR C takR, ce
ij
ij
ij
b
a
c
-
#
(
ij
ij
ij
b
a
c
"
#
).
Mnocenie macierzy jest mocliwe, gdy liczba kolumn pierwszej macierzy (m)
jest równa liczbie wierszy drugiej macierzy. Iloczyn macierzy A i B jest
macierzR C takR, ce
$
#
#
m
k
kj
ik
ij
b
a
c
1
. Mnocenie macierzy nie jest przemienne.
Zawsze okreHlone jest mnocenie macierzy przez liczbM
.
, polegajRce na
pomnoceniu kacdego elementu macierzy przez tM liczbM (
ij
ij
a
c
.
#
).
Macierze mocemy przedstawiag w programach jako tablice dwuwymiarowe. Nalecy
pamiMtag, ce tablice sR indeksowane od zera, a indeksy macierzy rozpoczynamy od
jedynki.
Zadanie 28.7.
Utwórz metodM
sum()
dodajRcR dwie macierze zapisane w postaci tablic dwuwymia-
rowych. Napisz program demonstrujRcy dzia4anie metody
sum()
.
W tym i kolejnych zadaniach do wprowadzania danych uVywaj metod z klasy TInt
lub TDouble.
Zadanie 28.8.
Utwórz metodM
difference()
obliczajRcR rócnicM dwóch macierzy zapisanych w po-
staci tablic dwuwymiarowych. Napisz program demonstrujRcy dzia4anie metody
dif-
ference()
.
Kup ksi
ąĪkĊ
Pole
ü ksiąĪkĊ
Rozdzia# 4.
Czwarty krok — pliki, tablice i macierze
89
Zadanie 28.9.
Utwórz metodM
product()
obliczajRcR iloczyn dwóch macierzy zapisanych w postaci
tablic dwuwymiarowych. Napisz program demonstrujRcy dzia4anie metody
product()
.
Zadanie 28.10.
Utwórz metodM
product()
obliczajRcR iloczyn macierzy zapisanej w postaci tablicy dwu-
wymiarowych przez liczbM. Napisz program demonstrujRcy dzia4anie metody
product()
.
Zadanie 28.11.
Zbuduj metodM
transp()
tworzRcR macierz transponowanR z macierzy podanej jako
parametr metody. Napisz program demonstrujRcy dzia4anie metody
transp()
.
Macierz transponowana (przestawiona) powstaje z danej macierzy poprzez zamia-
n9 jej wierszy na kolumny i kolumn na wiersze.
Zadanie 28.12.
Utwórz metodM statycznR
toDouble()
konwertujRcR macierz o elementach ca4kowi-
tych na macierz o elementach zmiennoprzecinkowych. Napisz program demonstrujR-
cy dzia4anie tej metody. Do4Rcz jR do klasy
TInt
.
Zadanie 28.13.
Do4Rcz do klasy
TDouble
metodM statycznR o nazwie
valueOf()
, zwracajRcR tablicM
(macierz) z elementami typu
double
o elementach odpowiadajRcych elementom tabli-
cy (macierzy) liczb ca4kowitych. Napisz program demonstrujRcy dzia4anie tej metody.
Zadanie 28.14.
W klasie
TDouble
utwórz statycznR metodM
toInt()
, która bMdzie zwracag tablicM (ma-
cierz) o wartoHciach ca4kowitych, odpowiadajRcych (zamiana przez rzutowanie) tablicy
liczb zmiennoprzecinkowych podanej jako parametr. Napisz program demonstrujRcy
dzia4anie tej metody.
Zadanie 28.15.
W klasie
TInt
utwórz statycznR metodM
valueOf()
, która bMdzie budowag tablicM (ma-
cierz) o wartoHciach ca4kowitych, odpowiadajRcych (zamiana przez rzutowanie) tabli-
cy liczb zmiennoprzecinkowych podanej jako parametr. Napisz program demonstru-
jRcy dzia4anie tej metody.
Macierze, w których liczba wierszy jest równa liczbie kolumn, nazywamy ma-
cierzami kwadratowymi. Z macierzami kwadratowymi zwiRzany jest szereg
pojMg, takich jak: Blad macierzy, wyznacznik macierzy, macierz diagonalna,
macierz trójk*tna, macierz jednostkowa i macierz odwrotna.
Kup ksi
ąĪkĊ
Pole
ü ksiąĪkĊ
90
Programowanie w j$zyku Java
Zadanie 28.16.
Utwórz statycznR metodM
trace()
wyznaczajRcR Hlad macierzy. Napisz program de-
monstrujRcy dzia4anie tej metody.
Zadanie 28.17.
Utwórz statycznR metodM
getI()
zwracajRcR macierz jednostkowR stopnia n (stopie]
podamy jako parametr wywo4ania metody). Napisz program demonstrujRcy dzia4anie
tej metody.
Zadanie 28.18.
Utwórz statycznR metodM
setI()
tworzRcR z macierzy kwadratowej podanej jako pa-
rametr macierz jednostkowR. Napisz program demonstrujRcy dzia4anie tej metody.
Zadanie 28.19.
Utwórz metodM statycznR
det()
obliczajRcR wyznacznik macierzy kwadratowej. Do
obliczenia wyznacznika ucyj rozwiniMcia Laplace’a. Napisz program demonstrujRcy
dzia4anie tej metody.
Zadanie 28.20.
Utwórz metodM statycznR
upperTriangular()
przekszta4cajRcR macierz kwadratowR
podanR jako parametr na macierz trójkRtnR górnR. Napisz program demonstrujRcy dzia-
4anie tej metody.
Zadanie 28.21.
Utwórz metodM statycznR
lowerTriangular()
przekszta4cajRcR macierz kwadratowR
podanR jako parametr na macierz trójkRtnR dolnR. Napisz program demonstrujRcy dzia-
4anie tej metody.
Zadanie 28.22.
Utwórz metodM statycznR
diagonal()
przekszta4cajRcR macierz kwadratowR podanR jako
parametr na macierz diagonalnR. Napisz program demonstrujRcy dzia4anie tej metody.
Zadanie 28.23.
Utwórz metodM statycznR
inverse()
obliczajRcR i zwracajRcR macierz odwrotnR do
macierzy kwadratowej podanej jako parametr. Napisz program demonstrujRcy dzia4a-
nie tej metody.
Zadanie 28.24.
Napisz program rozwiRzujRcy uk4ad n-równa] liniowych z n niewiadomymi (n < 10).
Uk4ad równa] rozwiRc, stosujRc metodM wyznaczników. Wszystkie niezbMdne metody
umieHg w klasie programu.
Kup ksi
ąĪkĊ
Pole
ü ksiąĪkĊ
Rozdzia! 4.
Czwarty krok — pliki, tablice i macierze
91
Zadanie 28.25.
Napisz program rozwiRzujRcy uk4ad n-równa] liniowych z n niewiadomymi. Uk4ad
równa] rozwiRc, stosujRc rachunek macierzy:
B
X
A
#
4
,
B
A
X
4
#
$1
, gdzie A — ma-
cierz podstawowa uk4adu, X — wektor niewiadomych, B — kolumna wyrazów wol-
nych. Wszystkie niezbMdne metody umieHg w klasie programu.
Zadanie 28.26.
Napisz program rozwiRzujRcy uk4ad n-równa] liniowych z n niewiadomymi. Uk4ad
równa] rozwiRc, stosujRc metodM eliminacji. Wszystkie niezbMdne metody umieHg
w klasie programu.
Zadanie 28.27.
Utwórz klasM
Matrix
, która na podstawie tablic dwuwymiarowych, podanych wymia-
rów macierzy lub innych obiektów klasy
Matrix
(konstruktor kopiujRcy) bMdzie umoc-
liwiag tworzenie obiektów reprezentujRcych macierze. Utwórz metody u4atwiajRce do-
stMp do elementów macierzy (pól obiektu), wprowadzanie i wyHwietlanie danych oraz
wype4nianie macierzy wartoHciami losowymi. Napisz program demonstrujRcy dzia4a-
nie metod klasy
Matrix
.
Zadanie 28.28.
Do4Rcz do klasy
Matrix
metody umocliwiajRce wykonywanie podstawowych dzia4a]
na macierzach: dodawanie, odejmowanie i mnocenie macierzy oraz mnocenie macie-
rzy przez skalar. Napisz program demonstrujRcy dzia4ania na macierzach.
Zadanie 28.29.
Do4Rcz do klasy
Matrix
metody umocliwiajRce przekszta4canie macierzy kwadratowych
na postag trójkRtnR lub diagonalnR. Napisz program demonstrujRcy dzia4anie tych metod.
Zadanie 28.30.
Do4Rcz do klasy
Matrix
metodM umocliwiajRcR obliczanie wyznacznika macierzy. Na-
pisz program demonstrujRcy dzia4anie tej metody.
Zadanie 28.31.
Do4Rcz do klasy
Matrix
metodM umocliwiajRcR obliczanie macierzy odwrotnej. Napisz
program demonstrujRcy obliczanie macierzy odwrotnej. Sprawdh uzyskany wynik, wy-
konujRc odpowiednie mnocenie.
Zadanie 28.32.
WykorzystujRc mocliwoHci klasy
Matrix
i obliczenia na macierzach, rozwiRc uk4ad
n-równa] liniowych z n niewiadomymi.
Kup ksi
ąĪkĊ
Pole
ü ksiąĪkĊ
92
Programowanie w j$zyku Java
Zadanie 28.33.
WykorzystujRc mocliwoHci klasy
Matrix
i metodM wyznaczników, rozwiRc uk4ad
n-równa] liniowych z n niewiadomymi.
Utwórz metod9 pomocniczY replaceCol(), która w macierzy wywo(ujYcej t9 meto-
d9 zastYpi wskazanY kolumn9 kolumnY przekazanY jako parametr (b9dzie to ko-
lumna wyrazów wolnych).
29. Obliczanie warto"ci funkcji,
rekurencja i inne zadania
Zadanie 29.1.
Napisz aplikacjM testujRcR dzia4anie podanej metody dla rócnych argumentów. OkreHl,
co oblicza ta metoda. Nadaj jej odpowiedniR nazwM.
static double f(double x) {
return (x > 0)?x:-x;
}
Zadanie 29.2.
OkreHlono dwie funkcje:
(
)
*
5
6
#
y
x
y
y
x
x
y
x
gdy
,
gdy
,
)
,
min(
oraz
(
)
*
7
8
#
y
x
y
y
x
x
y
x
gdy
,
gdy
,
)
,
max(
.
Utwórz klasM
MinMax
z metodami
min()
i
max()
obliczajRcymi i zwracajRcymi wartoHci
tych funkcji. Napisz aplikacjM pokazujRcR dzia4anie tych metod.
Zadanie 29.3.
OkreHlono funkcjM
'
(
'
)
*
5
#
7
$
#
0
gdy
,
1
0
gdy
,
0
0
gdy
,
1
)
(
x
x
x
x
f
. Co oblicza ta funkcja? Utwórz metodM ob-
liczajRcR wartoHg tej funkcji. Napisz aplikacjM pokazujRcR dzia4anie zbudowanej metody.
Zadanie 29.4.
OkreHlono funkcjM
'
(
'
)
*
9
#
#
0
,
0
,
0
)
(
x
gdy
x
x
x
gdy
x
f
. Co oblicza ta funkcja? Utwórz metodM ob-
liczajRcR wartoHg tej funkcji. Napisz aplikacjM pokazujRcR dzia4anie zbudowanej metody.
Kup ksi
ąĪkĊ
Pole
ü ksiąĪkĊ
Rozdzia! 4.
Czwarty krok — pliki, tablice i macierze
93
Zadanie 29.5.
Napisz aplikacjM testujRcR wartoHci funkcji okreHlonych wzorami:
a)
1
2
2
,
y
x
y
x
y
x
f
$
"
"
#
b)
1
2
2
,
y
x
y
x
y
x
g
$
$
"
#
c)
)
,
(
)
(
x
x
f
x
h
$
#
Co obliczajR te funkcje? Utworzonym metodom nadaj odpowiednie nazwy.
Zadanie 29.6.
Napisz definicje metod
square()
i
cube()
obliczajRcych kwadrat i szeHcian liczby
x
.
Zastosuj utworzone metody do obliczenia kwadratów i szeHcianów liczb:
a)
ca4kowitych od 1 do 15,
b)
rzeczywistych od 1 do 3 z krokiem 0,25.
Zadanie 29.7.
PotMgM o wyk4adniku ca4kowitym dodatnim okreHlamy wzorem
!
"
#
n
n
a
a
a
a
4
4
4
#
...
. Utwórz
metodM
adoen()
obliczajRcR a
n
. Napisz aplikacjM pokazujRcR dzia4anie tej metody.
Zadanie 29.8.
PotMgM o wyk4adniku ca4kowitym nieujemnym mocemy okreHlig wzorem rekurencyj-
nym:
(
)
*
5
4
#
#
$
0
dla
,
0
dla
,
1
1
n
a
a
n
a
n
n
. Napisz definicjM metody rekurencyjnej
adoen()
obli-
czajRcej a
n
oraz aplikacjM pokazujRcR dzia4anie tej metody.
Zadanie 29.9.
Szybkie pot'gowanie — innR wersjM metody rekurencyjnej obliczajRcej a
n
(szybszR ze
wzglMdu na mniejszR liczbM wywo4a] rekurencyjnych i zredukowanie liczby mnoce])
mocemy zrealizowag na podstawie wzoru:
'
'
'
'
(
''
'
'
)
*
5
+
,
-
.
/
0
5
+
,
-
.
/
0
4
#
#
$
)
0
(
parzystego
dla
)
0
(
ego
nieparzyst
dla
0
1
2
2
2
2
1
n
n
a
n
n
a
a
n
dla
a
n
n
n
.
Kup ksi
ąĪkĊ
Pole
ü ksiąĪkĊ
94
Programowanie w j$zyku Java
Utwórz metodM
adoen()
obliczajRcR a
n
. Napisz aplikacjM pokazujRcR dzia4anie tej metody.
Zadanie 29.10.
PotMgM o podstawie a rócnej od 0 i wyk4adniku ca4kowitym n mocemy zdefiniowag
w nastMpujRcy sposób:
'
'
(
'
'
)
*
7
#
5
4
4
4
#
0
dla
,
1
0
dla
,
1
0
dla
,
...
n
a
n
n
a
a
a
a
n
n
n
!
"
#
.
Napisz definicjM metody
power()
(prototyp:
double power(double a, int n)
) oblicza-
jRcej a
n
dla dowolnej liczby ca4kowitej oraz aplikacjM pokazujRcR dzia4anie tej funkcji.
Funkcj9 adoen (zob. zadanie 29.7, 29.8 lub 29.9) obliczajYcY a
n
dla n > 1 wykorzy-
stamy w funkcji power (do obliczania
n
a
lub
n
n
a
a
1
#
$
dla
...
,
3
,
2
,
1
#
n
).
Zadanie 29.11.
Pierwiastek drugiego stopnia z liczby dodatniej a mocemy obliczyg metodR iteracyjnR
na podstawie wzoru
+
,
-
.
/
0
"
#
x
a
x
x
2
1
, przyjmujRc jako pierwsze przyblicenie
1
#
x
. Ob-
liczenia kontynuujemy do chwili, gdy rócnica pomiMdzy dwoma kolejnymi przyblice-
niami pierwiastka bMdzie dostatecznie ma4a. Napisz metodM
sqrt()
(ang. square root)
obliczajRcR pierwiastek kwadratowy z podanej liczby dodatniej. Zbuduj aplikacjM po-
kazujRcR dzia4anie metody
sqrt()
i porównujRcR otrzymane wyniki z wynikami metody
bibliotecznej
Math.sqrt()
.
Zadanie 29.12.
Pierwiastek trzeciego stopnia z liczby dodatniej a mocemy obliczyg metodR iteracyjnR
na podstawie wzoru
+
,
-
.
/
0
"
#
2
2
3
1
x
a
x
x
, przyjmujRc jako pierwsze przyblicenie
1
#
x
. Ob-
liczenia kontynuujemy do chwili, gdy rócnica pomiMdzy dwoma kolejnymi przyblice-
niami pierwiastka bMdzie dostatecznie ma4a. Napisz metodM
cbrt()
(ang. cube root)
obliczajRcR pierwiastek trzeciego stopnia z podanej liczby dodatniej. Zbuduj aplikacjM
pokazujRcR dzia4anie metody
cbrt()
i porównujRcR otrzymane wyniki z wynikami me-
tody bibliotecznej
Math.cbrt()
.
Podany wzór wynika z metody Newtona-Raphsona — iteracyjnego algorytmu wy-
znaczania przybliVonej warto?ci pierwiastka funkcji. Dotyczy to równieV wzoru z za-
dania 29.11.
Kup ksi
ąĪkĊ
Pole
ü ksiąĪkĊ
Rozdzia# 4.
Czwarty krok — pliki, tablice i macierze
95
Zadanie 29.13.
Pierwiastek n-tego stopnia z liczby dodatniej a mocemy obliczyg metodR iteracyjnR
na podstawie wzoru
/
0
&
'
(
)
*
+
-
"
#
"1
1
1
n
x
a
x
n
n
x
, przyjmujRc jako pierwsze przyblicenie
1
#
x
. Obliczenia kontynuujemy do chwili, gdy rócnica pomiMdzy dwoma kolejnymi
przybliceniami pierwiastka bMdzie dostatecznie ma4a. Na podstawie podanego wzoru
napisz metodM
nRoot()
obliczajRcR pierwiastek n-tego stopnia z podanej liczby do-
datniej. Zbuduj aplikacjM pokazujRcR dzia4anie metody
nRoot()
i porównujRcR otrzy-
mane wyniki z wynikami uzyskanymi przy zastosowaniu funkcji bibliotecznej.
PoniewaV
n
n
a
a
1
#
, to warto?@ pierwiastka moVemy obliczy@ przy zastosowaniu
funkcji Math.pow(a, 1.0/n).
Skorzystaj z opracowanej w zadaniu 29.7 metody power() do obliczania warto-
?ci
1
"
n
x
.
Zadanie 29.14.
W klasie
Math
zdefiniowano metody obliczajRce funkcje hiperboliczne — sinus hiper-
boliczny (
Math.sinh()
) i cosinus hiperboliczny (
Math.cosh()
). Napisz program wyHwie-
tlajRcy na ekranie tablice wszystkich funkcji hiperbolicznych w przedziale
5
,
5
"
z krokiem 0,1. Wyniki oblicze] zapisz w pliku tekstowym FunkcjeHiperboliczne.txt.
Wyniki pracy programu moVna zapisa@ w pliku tekstowym, stosujYc w konsoli po-
lecenie:
java Z29_14 > FunkcjeHiperboliczne.txt
(przyjmujemy, Ve rozwiYzanie zadania zapisano w pliku iród(owym Z29_14.java).
Zadanie 29.15.
W klasie
Math
zdefiniowano metodM
Math.exp()
obliczajRcR wartoHg funkcji wyk4ad-
niczej
x
e . RozwiRc zadanie 29.14, nie korzystajRc z metod
Math.sinh()
i
Math.cosh()
.
Warto?ci funkcji moVna wyliczy@ na podstawie wzorów:
2
sinh
x
x
e
e
x
"
"
#
,
2
cosh
x
x
e
e
x
"
-
#
itp.
Kup ksi
ąĪkĊ
Pole
ü ksiąĪkĊ
96
Programowanie w j$zyku Java
Zadanie 29.16.
Zbuduj klasM
FH
(funkcje hiperboliczne) zawierajRcR metody statyczne obliczajRce war-
toHci wszystkich funkcji hiperbolicznych i funkcji do nich odwrotnych. Napisz aplika-
cjM pokazujRcR dzia4anie tych metod.
Zadanie 29.17.
Zbuduj klasM
FTD
, która bMdzie zawierag metody statyczne obliczajRce wartoHg szeHciu
funkcji trygonometrycznych i szeHciu funkcji do nich odwrotnych. Argumenty funkcji
trygonometrycznych i wartoHci funkcji odwrotnych powinny byg wyracane w stop-
niach. UdostMpnij równiec metody konwersji stopni na radiany i radianów na stopnie.
Napisz aplikacjM pokazujRcR mocliwoHci metod statycznych zawartych w tej klasie.
Zadanie 29.18.
Zbuduj klasM
FTR
, która bMdzie zawierag metody statyczne obliczajRce wartoHg szeHciu
funkcji trygonometrycznych i szeHciu funkcji do nich odwrotnych. Argumenty funkcji
trygonometrycznych i wartoHci funkcji odwrotnych powinny byg wyracane w radia-
nach. UdostMpnij równiec metody konwersji stopni na radiany i radianów na stopnie.
Napisz aplikacjM pokazujRcR mocliwoHci metod statycznych zawartych w tej klasie.
Kup ksi
ąĪkĊ
Pole
ü ksiąĪkĊ