Java Zadania z programowania z przykladowymi rozwiazaniami javaza


Java. Zadania
Idz do
z programowania
" Spis treści
z przykładowymi
" Przykładowy rozdział
rozwiÄ…zaniami
Katalog książek
Autor: Mirosław Kubiak
ISBN: 978-83-246-2944-2
" Katalog online
Format: 140×208, stron: 112
" Zamów drukowany
katalog
Java w analizie konkretnych przykładów
" Proste operacje wejścia/wyjścia
Twój koszyk
" Tablice oraz iteracje
" Programowanie obiektowe i pliki tekstowe
" Dodaj do koszyka
Java to jeden z najważniejszych używanych obecnie obiektowych języków programowania. Do
jego największych zalet należą łatwe przenoszenie programów między platformami i możliwość
stosowania na urządzeniach przenośnych. Dobry programista, student lub nauczyciel informatyki,
Cennik i informacje
a także każdy człowiek zainteresowany programowaniem powinien znać podstawy tego języka
i posiadać umiejętność rozwiązywania konkretnych problemów. Podobnie zresztą powinien
" Zamów informacje
opanować najważniejsze zagadnienia dotyczące programowania w językach C++ i Turbo Pascal 
o nowościach
i stosować je w praktyce. Trzyczęściowy zbiór, w którym zamieszczono te same lub bardzo
" Zamów cennik
zbliżone zadania wraz z rozwiązaniami w każdym z wyżej wymienionych języków, pozwala
sprawdzić i uzupełnić wiedzę poprzez analizę podanego kodu.
Czytelnia
Książka  Java. Zadania z programowania z przykładowymi rozwiązaniami to jedna z trzech części
zbioru zadań programistycznych, zawierająca zadania w języku Java. Będziesz mógł dokładnie
prześledzić, jak wyglądają w tym języku operacje wejścia/wyjścia i instrukcje warunkowe. Dowiesz
" Fragmenty książek
się, do czego potrzebne są iteracje oraz w jaki sposób używa się tablic. Zobaczysz, na czym polega
online
programowanie obiektowe i jak działa ono w Javie. Poznasz także zastosowania plików
tekstowych. Taki układ książki ułatwi Ci przyswojenie sobie najważniejszych zagadnień z języka
Java w najlepszy możliwy sposób  na prostych, konkretnych przykładach.
" Proste operacje wejścia/wyjścia
" Instrukcje warunkowe
" Iteracje
" Tablice  deklarowanie, dostęp do elementów, dwuwymiarowe
" Programowanie obiektowe
" Pliki tekstowe
Praktycznie opanuj podstawy języka Java
Kontakt
Helion SA
ul. Kościuszki 1c
44-100 Gliwice
tel. 32 230 98 63
e-mail: helion@helion.pl
© Helion 1991 2011
Spis tre ci
Od autora 5
Rozdzia 1. Proste operacje wej cia-wyj cia 7
Operacje wej cia-wyj cia  informacje ogólne 7
Rozdzia 2. Podejmujemy decyzje w programie 19
Instrukcje warunkowe w j zyku Java 19
Rozdzia 3. Iteracje 31
Iteracje  informacje ogólne 31
P tla for 32
P tla do ... while 33
P tla while 33
Rozdzia 4. Tablice 57
Deklarowanie tablic jednowymiarowych 57
Dost p do elementów tablicy 58
Tablice dwuwymiarowe 62
Rozdzia 5. Programowanie obiektowe 79
Programowanie obiektowe  informacje ogólne 79
Rekurencja 92
Rozdzia 6. Pliki tekstowe 97
Pliki tekstowe  informacje ogólne 97
1
Proste operacje
wej cia-wyj cia
W tym rozdziale zamieszczono proste zadania wraz z przyk adowymi
rozwi zaniami ilustruj ce, w jaki sposób komputer komunikuje si
z u ytkownikiem w j zyku Java.
Operacje wej cia-wyj cia
 informacje ogólne
Ka da aplikacja powinna posiada mo liwo komunikowania si
z u ytkownikiem. Wykorzystuj c proste przyk ady, poka emy, w jaki
sposób program napisany w j zyku Java komunikuje si z nim poprzez
standardowe operacje wej cia-wyj cia.
Operacje wej cia-wyj cia w Javie s realizowane poprzez strumienie.
Strumie jest poj ciem abstrakcyjnym. Mo e on wysy a i pobiera
informacje i jest po czony z fizycznym urz dzeniem (np. klawiatura,
ekran) poprzez system wej cia-wyj cia. W j zyku tym zdefiniowano
dwa typy strumieni: bajtowe i znakowe. Standardowy strumie wyj-
ciowy w Javie jest reprezentowany przez obiekt1 out znajduj cy si
1
Obiekty zostan omówione w rozdziale 5.
8 Java. Zadania z programowania z przyk adowymi rozwi zaniami
w klasie System. Jest to obiekt statyczny klasy PrintStream zawieraj cy
metody print() i println().
Metoda println() wy wietla argumenty podane w nawiasach (), a na-
st pnie przechodzi do pocz tku nowej linii. Pewn jej odmian jest me-
toda print(). Jej dzia anie polega na wy wietlaniu argumentów poda-
nych w nawiasach () bez przemieszczania kursora do nowego wiersza.
Z A D A N I E
1.1 Napisz program, który oblicza pole prostok ta. Warto ci boków
a i b wprowadzamy z klawiatury. W programie nale y przyj ,
e zmienne a, b oraz pole s typu double (rzeczywistego).
Przyk adowe rozwi zanie  listing 1.1
package zadanie11; // Zadanie 1.1
import java.io.*;
public class Main
{
public static void main(String[] args)
throws IOException
{
double a, b, pole;
BufferedReader br = new BufferedReader(new
InputStreamReader(System.in));
System.out.println("Program oblicza pole prostok ta.");
System.out.println("Podaj bok a.");
a = Double.parseDouble(br.readLine());
System.out.println("Podaj bok b.");
b = Double.parseDouble(br.readLine());
pole = a*b;
System.out.print("Pole prostok ta o boku a = " + a + "
i boku b = " + b);
System.out.println(" wynosi " + pole + ".");
}
}
Klasy w Javie grupowane s w jednostki zwane pakietami (ang. packa-
ge). Pakiet to zestaw powi zanych ze sob tematycznie klas. Do jego
utworzenia s u y s owo kluczowe package, po którym nast puje nazwa
pakietu zako czona rednikiem, co ilustruje linijka kodu poni ej:
Rozdzia 1. " Proste operacje wej cia-wyj cia 9
package zadanie11; // Zadanie 1.12
Linijka kodu
double a, b, pole;
umo liwia deklaracj zmiennych a, b i pole (wszystkie s typu rze-
czywistego  double) w programie. Instrukcja
System.out.println("Program oblicza pole prostok ta.");
wy wietla na ekranie komputera komunikat Program oblicza pole
prostok ta.
W celu czytania z klawiatury liter i cyfr nale y skorzysta z dwóch
klas: InputStreamReader oraz BufferedReader. Najpierw tworzymy nowy
obiekt klasy InputStreamReader, przekazuj c jej konstruktorowi obiekt
System.in. Mo na go nast pnie wykorzysta w konstruktorze klasy
BufferedReader. Tak opisana konstrukcja ma nast puj cy zapis:
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
Powsta y obiekt klasy BufferedReader mo emy przypisa do zmiennej
referencyjnej br i dalej, poprzez metod readLine(), mo emy wykorzy-
sta go do wczytywania zmiennej a typu double ze strumienia wej-
ciowego. Ilustruje to nast puj ca linijka kodu:
a = Double.parseDouble(br.readLine());
Wczytywanie liczb odbywa si tak samo jak wczytywanie tekstu,
musimy jednak dokona odpowiedniej konwersji, tzn. zamiany ci gu
znaków na odpowiadaj c mu warto liczbow . S u y do tego jedna
z poni szych metod statycznych:
parseByte z klasy Byte do odczytu bajtów,
parseDouble z klasy Double do odczytu liczb typu double,
parseFloat z klasy Float do odczytu liczb typu float,
parseInt z klasy Int do odczytu liczb typu int,
parseLong z klasy Long do odczytu liczb typu long.
Aby nasz program móg zosta skompilowany, musimy do niego do-
da nast puj ce dwie linijki kodu:
import java.io.*;
2
Komentarze w programie oznaczamy dwoma uko nikami //; // to jest komentarz.
10 Java. Zadania z programowania z przyk adowymi rozwi zaniami
oraz
throws IOException
S one niezb dne do obs ugi b dów wej cia-wyj cia. S owo kluczowe
import oznacza, e do programu zaimportowano wszystkie (po kropce *)
pakiety java.io.
Pole prostok ta zostaje obliczone w instrukcji
pole = a*b;
Za wy wietlenie warto ci zmiennych a i b oraz pole wraz z odpo-
wiednim opisem s odpowiedzialne nast puj ce linijki kodu:
System.out.print("Pole prostok ta o boku a = " + a + " i boku b = " + b);
System.out.println(" wynosi " + pole + ".");
Rezultat dzia ania programu mo na zobaczy na rysunku 1.1.
Program oblicza pole prostok ta.
Podaj bok a.
1
Podaj bok b.
2
Pole prostok ta o boku a = 1.0 i boku b = 2.0 wynosi 2.0.
Rysunek 1.1. Efekt dzia ania programu Zadanie 1.1
Z A D A N I E
1.2 Napisz program, który wy wietla na ekranie komputera warto
predefiniowanej sta ej = 3,14& Nale y przyj format wy wie-
tlania tej sta ej z dok adno ci do pi ciu miejsc po przecinku.
Wskazówka
J zyk Java umo liwia formatowanie wy wietlanych danych w podobny
sposób jak w j zyku C. S u y do tego metoda printf. Jej sk adnia jest
nast puj ca:
String format;
System.out.printf(format, arg_1, arg_2, ..., arg_n); .
Rozdzia 1. " Proste operacje wej cia-wyj cia 11
Przyk adowe rozwi zanie  listing 1.2
package zadanie12; // Zadanie 1.2
public class Main
{
public static void main(String[] args)
{
System.out.println("Program wy wietla liczb pi z zadan
dok adno ci .");
System.out.printf("Pi = " + "%6.5f\n", Math.PI);
}
}
Specyfikatory typów mog by nast puj ce:
%d  integer,
%e  double,
%f  float.
Pomi dzy znakiem % i liter przyporz dkowan danemu typowi mo na
okre li ilo pól, na których ma zosta wy wietlona liczba, np.:
%7.2f  oznacza przyznanie siedmiu pól na liczb typu float,
w tym dwóch pól na jej cz u amkow ;
%4d  oznacza przyznanie czterech pól na liczb typu ca kowitego.
W programie zapis
System.out.printf("Pi = " + "%6.5f\n", Math.PI);
powoduje, e na wydruk liczby przeznaczonych zostaje sze pól,
w tym pi na cz u amkow . Znak specjalny "...\n" (ang. new line)
oznacza przej cie na pocz tek nowego wiersza. Math jest standardow
klas Javy, która umo liwia obliczenia matematyczne.
Rezultat dzia ania programu mo na zobaczy na rysunku 1.2.
Program wy wietla liczb pi z zadan dok adno ci .
Pi = 3,14159
Rysunek 1.2. Efekt dzia ania programu Zadanie 1.2
12 Java. Zadania z programowania z przyk adowymi rozwi zaniami
Z A D A N I E
1.3 Napisz program, który wy wietla na ekranie komputera pier-
wiastek kwadratowy z warto ci predefiniowanej = 3,14&
Nale y przyj format wy wietlania pierwiastka kwadratowego
ze sta ej z dok adno ci do dwóch miejsc po przecinku.
Przyk adowe rozwi zanie  listing 1.3
package zadanie13; // Zadanie 1.3
public class Main
{
public static void main(String[] args)
{
System.out.println("Program wy wietla pierwiastek kwadratowy ");
System.out.println("z liczby pi z dok adno ci dwóch miejsc po
przecinku.");
System.out.printf("Sqrt(Pi) = " + "%2.2f\n", Math.sqrt(Math.PI));
}
}
Metoda sqrt() pozwala na obliczenie pierwiastka kwadratowego. Jest
ona metod standardowej klasy Math.
Rezultat dzia ania programu mo na zobaczy na rysunku 1.3.
Program wy wietla pierwiastek kwadratowy
z liczby pi z dok adno ci dwóch miejsc po przecinku.
Sqrt(Pi) = 1,77
Rysunek 1.3. Efekt dzia ania programu Zadanie 1.3
Z A D A N I E
1.4 Napisz program, który oblicza obj to kuli o promieniu r.
Warto promienia wprowadzamy z klawiatury. W programie
nale y przyj , e zmienne: promie r i objetosc, s typu double
(rzeczywistego). Dla tych zmiennych nale y przyj format
wy wietlania na ekranie z dok adno ci do dwóch miejsc po
przecinku.
Rozdzia 1. " Proste operacje wej cia-wyj cia 13
Przyk adowe rozwi zanie  listing 1.4
package zadanie14; // Zadanie 1.4
import java.io.*;
public class Main
{
public static void main(String[] args)
throws IOException
{
double r, objetosc;
BufferedReader br = new BufferedReader(new
InputStreamReader(System.in));
System.out.println("Program oblicza obj to kuli.");
System.out.println("Podaj promie r.");
r = Double.parseDouble(br.readLine());
objetosc = 4.0*Math.PI*r*r*r/3;
System.out.print("Obj to kuli o promieniu r = ");
System.out.printf("%2.2f", r);
System.out.print(" wynosi ");
System.out.printf("%2.2f.", objetosc);
}
}
Obj to kuli o promieniu r oblicza nast puj ca linijka kodu:
objetosc = 4.0*Math.PI*r*r*r/3;
gdzie pot gowanie zamieniono na mno enie.
Rezultat dzia ania programu mo na zobaczy na rysunku 1.4.
Program oblicza obj to kuli.
Podaj promie r.
1
Obj to kuli o promieniu r = 1,00 wynosi 4,19.
Rysunek 1.4. Efekt dzia ania programu Zadanie 1.4
14 Java. Zadania z programowania z przyk adowymi rozwi zaniami
Z A D A N I E
1.5 Napisz program, który oblicza wynik dzielenia ca kowitego
bez reszty dwóch liczb ca kowitych: a = 37 i b = 11.
Wskazówka
W j zyku Java w przypadku zastosowania operatora dzielenia / dla liczb
ca kowitych reszta wyniku jest pomijana (tak samo jest w C i C++).
W Turbo Pascalu nale y zastosowa operator dzielenia ca kowitego
bez reszty div.
Przyk adowe rozwi zanie  listing 1.5
package zadanie15; // Zadanie 1.5
public class Main
{
public static void main(String[] args)
{
int a = 37;
int b = 11;
System.out.println("Program wy wietla wynik dzielenia ca kowitego");
System.out.println("bez reszty dwóch liczb ca kowitych.");
System.out.println("Dla liczb a = " + a + ", b = " + b);
System.out.println(a + "/" + b + " = "+ a/b + ".");
}
}
Rezultat dzia ania programu mo na zobaczy na rysunku 1.5.
Program wy wietla wynik dzielenia ca kowitego
bez reszty dwóch liczb ca kowitych.
Dla liczb a = 37, b = 11
37/11 = 3.
Rysunek 1.5. Efekt dzia ania programu Zadanie 1.5
Rozdzia 1. " Proste operacje wej cia-wyj cia 15
Z A D A N I E
1.6 Napisz program, który oblicza reszt z dzielenia ca kowitego
dwóch liczb ca kowitych: a = 37 i b = 11.
Wskazówka
Nale y zastosowa operator reszty z dzielenia ca kowitego modulo, który
oznaczamy w j zyku Java symbolem %. Podobnie jak w j zykach C i C++,
operator ten umo liwia uzyskanie tylko reszty z dzielenia, natomiast
warto ca kowita jest odrzucana.
Przyk adowe rozwi zanie  listing 1.6
package zadanie16; // Zadanie 1.6
public class Main
{
public static void main(String[] args)
{
int a = 37;
int b = 11;
System.out.println("Program oblicza reszt z dzielenia
ca kowitego");
System.out.println("dwóch liczb ca kowitych.");
System.out.println("Dla liczb a = " + a + ", b = " + b);
System.out.println(a + "%" + b + " = " + a%b + ".");
}
}
Rezultat dzia ania programu mo na zobaczy na rysunku 1.6.
Program oblicza reszt z dzielenia ca kowitego
dwóch liczb ca kowitych.
Dla liczb a = 37, b = 11
37%11 = 4.
Rysunek 1.6. Efekt dzia ania programu Zadanie 1.6
16 Java. Zadania z programowania z przyk adowymi rozwi zaniami
Z A D A N I E
1.7 Napisz program, który oblicza sum , ró nic , iloczyn i iloraz
dla dwóch liczb x i y wprowadzanych z klawiatury. W pro-
gramie nale y za o y , e zmienne x i y s typu float (rze-
czywistego). Dla zmiennych x, y, suma, roznica, iloczyn i iloraz
nale y przyj format ich wy wietlania na ekranie z dok ad-
no ci do dwóch miejsc po przecinku.
Przyk adowe rozwi zanie  listing 1.7
package zadanie17; // Zadanie 1.7
import java.io.*;
public class Main
{
public static void main(String[] args)
throws IOException
{
float x, y, suma, roznica,iloczyn, iloraz;
BufferedReader br = new BufferedReader(new
InputStreamReader(System.in));
System.out.println("Program oblicza sum , ró nic , iloczyn
i iloraz ");
System.out.println("dla dwóch liczb x i y wprowadzonych
z klawiatury.");
System.out.println("Podaj x.");
x = Float.parseFloat(br.readLine());
System.out.println("Podaj y.");
y = Float.parseFloat(br.readLine());
suma = x+y;
roznica = x-y;
iloczyn = x*y;
iloraz = x/y;
System.out.printf("Dla liczb x = " + "%2.2f",x);
System.out.printf(" i y = " + "%2.2f",y);
System.out.println(); // wy wietlenie pustej linii
System.out.printf("suma = " + "%2.2f,\n", + suma);
System.out.printf("ró nica = " + "%2.2f,\n", + roznica);
System.out.printf("iloczyn = " + "%2.2f,\n", + iloczyn);
System.out.printf("iloraz = " + "%2.2f.\n", + iloraz);
}
}
Rozdzia 1. " Proste operacje wej cia-wyj cia 17
Rezultat dzia ania programu mo na zobaczy na rysunku 1.7.
Program oblicza sum , ró nic , iloczyn i iloraz
dla dwóch liczb x i y wprowadzonych z klawiatury.
Podaj x.
3
Podaj y.
2
Dla liczb x = 3,00 i y = 2,00
suma = 5,00,
ró nica = 1,00,
iloczyn = 6,00,
iloraz = 1,50.
Rysunek 1.7. Efekt dzia ania programu Zadanie 1.7


Wyszukiwarka