MODU 3 STEROWANIE PRZEBIEGIEM WYKONANIA PROGRAMU 18 Modu 3 Sterowanie przebiegiem wykonania programu Zawarto tematyczna Po zrealizowaniu jednostki bdziesz w stanie: czy instrukcje programu w grupy tworzy kod programu wykonywany w zalenoci od zadanych warunków wielokrotnie wykonywa wybran instrukcj lub blok instrukcji efektywnie sterowa przebiegiem wykonania programu produkowa kod programu realizujcy zoone procesy obliczeniowe Wprowadzenie do zagadnie Instrukcje wchodzce w skad programu komputerowego wykonywane s najczciej sekwencyjnie, poczwszy od pierwszej, a sko$czywszy na ostatniej z nich. Jednake zoone zadania obliczeniowe wymagaj czstokro czenia instrukcji w grupy, warunkowego przetwarzania, czy te wielokrotnego ich powtarzania, dla realizacji zadania. Std prawie kady jzyk programowania zaopatrzony jest w zbiór instrukcji sterujcych, majcych za zadanie umoliwi skonstruowanie programu zgodnie z realizowanych algorytmem 36. Jzyk Java wyrónia 5 instrukcji sterujcych: while, do..while, for, if, switch, które maj za zadanie umoliwi rozwizywanie wielorakich problemów, przed którymi stoi twórca programu. BLOK INSTRUKCJI Zadaniem bloku instrukcji jest ich grupowanie, najczciej w celu pó-niejszego zbiorczego przetwarzania. Grupowanie instrukcji polega na ich ujciu w znaki nawiasów {: { instrukcje; Wewntrz bloku moliwe jest umieszczenie deklaracji zmiennych. Naley jednak zwróci uwag, i zmienne te widoczne bd wycznie wewntrz tego bloku nie bdzie moliwe odwoanie do zmiennych poza blokiem, w którym zostay zadeklarowane. Równie próba deklaracji zmiennej wewntrz bloku, której nazwa jest identyczna z istniejc zmienn poza blokiem spowoduje powstanie bdu kompilacji. { String nrtelefonu = "555 302 197"; System.out.println(nrTelefonu); System.out.println(nrTelefonu); // zmienna niedost+pna - poza blokiem instrukcji INSTRUKCJA WARUNKOWA Ten rodzaj instrukcji sterujcej umoliwia warunkowe wykonanie instrukcji programu w zalenoci od wartoci wyraenia logicznego. Jeli wyraenie logiczne jest prawdziwe (przyjmuje warto true) to wykonaniu podlega bd instrukcje programu wystpujce wewntrz bloku instrukcji 37 if. W przypadku, gdy wyraenie logiczne przyjmie warto false, adna z instrukcji umieszczonych w bloku instrukcji nie zostanie wykonana. 36 Algorytmem nazywamy sko$czony uporzdkowany cig czynnoci niezbdnych do realizacji zadania. 37 Gdy instrukcja warunkowa if zawiera wycznie jedn instrukcj programu, wtedy stosowanie bloku instrukcji (uycie pary nawiasów {) nie jest wymagane.
MODU 3 STEROWANIE PRZEBIEGIEM WYKONANIA PROGRAMU 19 if (wyra.enie_logiczne) { instrukcje; W poniszym przykadzie obie instrukcje programu umieszczone w bloku instrukcji zostan wykonane jedynie w przypadku, gdy warto zmiennej x bdzie róna od 0. int x = 5; if (x!= 0) { x *= 3; y = x + 4; // wyra.enie logiczne przyjmuje warto23 true // obydwie instrukcje zostan5 wykonane Dostpna jest równie wersja instrukcji warunkowej if uwzgldniajca sytuacj alternatywn. Dodatkowy blok instrukcji umieszczony po klauzuli else zostanie wykonany jedynie wtedy, gdy wyraenie logiczne przyjmie warto false. if (wyra.enie_logiczne) { instrukcje1; else { instrukcje2; Poniszy przykad demonstruje zastosowanie klauzuli else. Blok instrukcji wystpujcy po klauzuli else zostanie wykonany jedynie wtedy, gdy warto x bdzie wiksza od 0. int x = 0; if (x > 0) { x = 2*x+4; else { x = x 5; y = 2*x; // wyra.enie logiczne przyjmuje warto23 false // instrukcja nie zostanie wykonana // obydwie instrukcje zostan5 wykonane W przypadku, gdy liczba warunków podlegajcych sprawdzeniu jest dua, moliwe jest stosowanie zagniedania instrukcji warunkowych: int x = 5; if (x > 0) { System.out.println("Dodatnia warto23 x"); else if (x < 0) { System.out.println("Ujemna warto23 x"); else { System.out.println("Warto23 x wynosi 0"); INSTRUKCJA WIELOKROTNEGO WYBORU W przypadku, gdy liczba warunków podlegajcych sprawdzeniu jest znaczna, stosowanie instrukcji if else moe sta si nieporczne. W takim sytuacji moliwe jest uycie instrukcji wielokrotnego wyboru switch. Jej dziaanie polega na wyznaczeniu wartoci wyraenia, a nastpnie porównaniu tej wartoci z wymienionymi po klauzulach case wartociami staych. W przypadku równoci sterowanie przekazywane jest do instrukcji wystpujcej po klauzuli case, dla której warto staej jest zgodna z wartoci wyraenia. Jeli adna równo nie zachodzi, wykonywane s instrukcje wystpujce po sowie kluczowym default lub kolejne instrukcje programu, gdy klauzula ta nie zostaa uyta. Instrukcja break umoliwia przerwanie wykonywania instrukcji switch i przeniesienie sterowania do kolejnych instrukcji programu wystpujcych po instrukcji switch.
MODU 3 STEROWANIE PRZEBIEGIEM WYKONANIA PROGRAMU 20 switch (wyra.enie) { case warto231: instrukcje1; case warto232: instrukcje2; case warto23n: instrukcjen; default: instrukcje; // cz+23 opcjonalna instrukcji switch Poniszy przykad ilustruje uycie instrukcji wielokrotnego wyboru. W zalenoci od wartoci, jak przyjmuje zmienna poraroku, na konsol zostanie wyprowadzony stosowny napis. char poraroku = 'Z'; switch(poraroku) { case 'W': System.out.println("wiosna"); case 'L': System.out.println("lato"); case 'J': System.out.println("jesieE"); case 'Z': System.out.println("zima"); default: System.out.println("symbol nieprawidfowy"); // warto23 stafej zgodna z warto2ci5 wyra.enia // instrukcja zostanie wykonana // instrukcja zostanie wykonana P+TLE NIEOKRE,LONE Instrukcje iteracyjne (ptle) umoliwiaj wielokrotne wykonywanie pojedynczej instrukcji lub bloku instrukcji. W przypadku, gdy nie jest z góry znana liczba powtórze$, stosowane s ptle nieokrelone. Jedn z nich jest instrukcja while, której dziaanie polega na wyznaczeniu wartoci wyraenia logicznego. Jeli wyraenie to przyjmuje warto prawdy (true) wykonywany jest blok instrukcji wystpujcy po wyraeniu, a nastpnie ponownie obliczana jest warto wyraenia logicznego. Blok instrukcji bdzie wykonywany wielokrotnie do momentu, gdy wyraenie logiczne nie przyjmie wartoci false. Wtedy sterowanie zostanie przekazane do kolejnej instrukcji programu, wystpujcej po instrukcji while. while (wyra.enie_logiczne) { instrukcje; Poniszy kod programu przedstawia przykad uycia instrukcji iteracyjnej while. Blok instrukcji programu bdzie wykonywany do momentu, a zmienna x nie przyjmie wartoci mniejszej od 0 (w tym przypadku blok instrukcji zostanie wykonany omiokrotnie). Naley zwróci uwag, i zwykle konieczna jest modyfikacja wartoci wyraenia logicznego wewntrz bloku instrukcji, aby moliwe byo zako$czenie wykonywania instrukcji while w sko$czonej liczbie powtórze$. int x = 7; while (x >= 0) { x--; // obydwie instrukcje wchodz5ce w skfad bloku instrukcji System.out.println(x); // zostan5 wykonane o2miokrotnie Odmian instrukcji while jest ptla nieokrelona do..while, której dziaanie jest zblione. Jedyna rónica polega na wyznaczaniu wartoci wyraenia logicznego dopiero po wykonaniu bloku instrukcji. Zatem, w przeciwie$stwie do instrukcji while, blok instrukcji zostanie wykonany przynajmniej jeden raz.
MODU 3 STEROWANIE PRZEBIEGIEM WYKONANIA PROGRAMU 21 do { instrukcje; while (wyra.enie_logiczne); P+TLE OKRE,LONE Jeli znana jest z góry liczba powtórze$, moliwe jest uycie instrukcji iteracyjnej for. Jej dziaanie polega na ustaleniu wartoci pocztkowej, która wyznacza pocztek iteracji. Wykonanie bloku instrukcji jest uwarunkowane wartoci wyraenia logicznego. Jeli jest ono prawdziwe (warto true) blok instrukcji jest wykonywany, a nastpnie wykonywane jest wyraenie modyfikujce ustalon warto pocztkow. W kolejnym kroku ponownie sprawdzana jest warto wyraenia logicznego i w przypadku jego poprawnoci wykonywany blok instrukcji programu. Opisane czynnoci s powtarzane do momentu, gdy wyraenie logiczne przyjmie warto false. Wtedy sterowanie programu przekazane zostaje do kolejnych instrukcji wystpujcych po instrukcji for. for (warto23_pocz5tkowa; wyra.enie_logiczne; wyra.enie_modyfikuj5ce) { instrukcje; W poniszym przykadzie blok instrukcji programu wystpujcy w instrukcji iteracyjnej for zostanie wykonany omiokrotnie, wywietlajc kadorazowo na konsoli warto zmiennej i. for (int i=5; i<=12; i++) { System.out.print("Warto23 i="); System.out.println(i); Jedn z odmian instrukcji for jest konstrukcja programowa, umoliwiajca wykonanie bloku instrukcji programu dla kadego elementu tablicy 38. W kadej iteracji zmienna element przyjmuje warto kolejnego przetwarzanego elementu tablicy. Liczba iteracji jest równa w tym wypadku liczbie elementów przetwarzanej tablicy. for (element : tablica) { instrukcje Poniszy przykad wywietla na konsoli w oddzielnych wierszach wszystkie wartoci elementów tablicy poradnia. String[] poradnia = {"2wit","zmierzch","mrok"; for (String pora : poradnia) { System.out.println(pora); PRZERYWANIE DZIAANIA INSTRUKCJI STEROWANIA Jzyk Java umoliwia sterowanie wykonaniem instrukcji iteracyjnych. Instrukcja break umieszczona wewntrz bloku instrukcji powoduje zako$czenie wykonywania iteracji i przeniesienie sterowania do instrukcji programu wystpujcej po instrukcji iteracyjnej. Natomiast instrukcja continue przerywa biec iteracj, przekazujc sterowanie do miejsca, gdzie wyznaczana jest warto wyraenia logicznego kontrolujcego wykonywanie ptli. Poniszy przykad z uyciem instrukcji continue wywietla na konsoli wycznie cyfry z badanego cigu znaków. 38 Instrukcji for mona uy do wszystkich obiektów stanowicych kolekcj elementów.
MODU 3 STEROWANIE PRZEBIEGIEM WYKONANIA PROGRAMU 22 for (int i=0; i<liczba.length(); i++){ /* gdy znak nie jest cyfr5, pobierz kolejny znak */ if (!Character.isDigit(liczba.charAt(i))) continue; /* wy2wietl cyfr+ na konsoli */ System.out.print(liczba.charAt(i)); Pytania sprawdzajce 1. Wymie$ nazwy wszystkich instrukcji sterujcych moliwych do uycia w jzyku Java. 2. Podaj definicj algorytmu. Jakie wyróniamy sposoby jego zapisu. 3. Przedstaw algorytm wyznaczania silni wartoci N przy uyciu pseudokodu. 4. Narysuj lub odszukaj w sieci Internet schemat blokowy reprezentujcy algorytm wyznaczania pierwiastków równania kwadratowego postaci ax 2 +bx+c=0. 5. Czym jest blok instrukcji i jaki jest sposób jego notacji w jzyku programowania Java. 6. Jaki jest zasig widocznoci zmiennych zadeklarowanych wewntrz bloku instrukcji. 7. Wymie$ operatory logiczne moliwe do uycia w instrukcji warunkowej if. 8. Jak rol w instrukcji warunkowej peni sowo kluczowe else. 9. Jaki bdzie rezultat dziaania poniszego kodu programu: int i = 0; if (i++ > 0) { System.out.println(i); 10. Które z wymienionych typów danych moe przyjmowa wyraenie instrukcji switch. boolean byte short int long char float double 11. Jak funkcj peni klauzula default w instrukcji wyboru. Czy jej uycie jest kadorazowo wymagane. 12. Jaki bdzie rezultat dziaania poniszego kodu programu: int i = 2; switch (i) { case 1: System.out.println("jeden"); case 2: System.out.println("dwa"); case 3: System.out.println("trzy"); default: System.out.println("inna liczba"); 13. Wymie$ i scharakteryzuj skadowe instrukcji for. 14. Podaj skadni zapisu ptli okrelonej, zadaniem której bdzie wywietlenie na konsoli wszystkich parzystych liczb naturalnych z przedziau 50..100. 15. Jaki bdzie rezultat dziaania poniszego programu:
MODU 3 STEROWANIE PRZEBIEGIEM WYKONANIA PROGRAMU 23 int x = 5; for (int i=1; i<8; i+=4) { x += i; System.out.println(x); 16. Omów zasad funkcjonowania odmiany instrukcji for przeznaczonej do operacji na elementach tablicy. 17. Wymie$ zasadnicze rónice pomidzy ptl okrelon for, a ptl nieokrelon while. 18. Jak funkcj peni instrukcje break oraz continue uyte w instrukcji sterujcej. 19. Czym róni si instrukcje iteracyjne while oraz do.. while. Wska zasadnicze rónice. 20. Wymie$ instrukcje sterujce, w których moliwe jest uycie instrukcji break. Zadania do wykonania PRZETWARZANIE WARUNKOWE Zadanie 35 LiczbaParzysta.java Dokonaj weryfikacji, czy odczytana z konsoli liczba naturalna jest parzysta. public class LiczbaParzysta { int liczbanaturalna; // analizowana warto23 /* pobierz liczb+ z konsoli */ System.out.print("WprowadN dowoln5 liczb+ naturaln5: "); liczbanaturalna = sc.nextint(); /* sprawdn, czy liczba jest parzysta (podzielna przez 2 bez reszty) */ boolean liczbaparzysta = liczbanaturalna % 2 == 0? true : false; /* wy2wietl rezultat na konsoli */ if (liczbaparzysta) { System.out.printf("Liczba %d jest parzysta", liczbanaturalna); else { System.out.printf("Liczba %d jest nieparzysta", liczbanaturalna); Zadanie 36 PodatekDochodowy.java Podatek dochodowy jest obowizkowym wiadczeniem obywatela na rzecz pa$stwa. Warto podatku wyznaczana jest na podstawie osignitych dochodów oraz obowizujcej skali podatkowej. Napisz program, który dla wartoci dochodu odczytanej z konsoli wyznaczy warto nalenego podatku. Obowizujc skal podatkow odszukaj w sieci Internet. Zadanie 37 Równanie kwadratowe. Równanie kwadratowe jest równaniem algebraicznym z jedn niewiadom postaci ax 2 +bx+c=0. Napisz program, wyznaczajcy pierwiastki równania kwadratowego. Zwró uwag na metod sqrt() wyznaczajc warto pierwiastka kwadratowego (klasa java.lang.math) oraz sposób formatowania rezultatów zadania.
MODU 3 STEROWANIE PRZEBIEGIEM WYKONANIA PROGRAMU 24 public class RownanieKwadratowe { double x1,x2; // pierwiastki równania // odczytaj wspófczynniki równania z konsoli System.out.println("WspóFczynniki równania kwadratowego"); System.out.println("postaci ax2 + bx + c = 0"); System.out.print("a = "); double a = sc.nextdouble(); System.out.print("b = "); double b = sc.nextdouble(); System.out.print("c = "); double c = sc.nextdouble(); // wyznacz wyró.nik równania double delta = b*b-4*a*c; // wyznacz warto2ci pierwiastków równania if (delta > 0) { x1 = (-b-math.sqrt(delta))/(2*a); x2 = (-b+math.sqrt(delta))/(2*a); System.out.printf("Pierwiastki równania: x1 = %s, x2 = %s",x1,x2); else if (delta == 0) { x1 = -b/(2*a); System.out.printf("Pierwiastek równania: x = %s",x1); else { System.out.println("Brak pierwiastków równania!"); Zadanie 38 OcenaSlownie.java Ocena stanowi umowny sposób zakwalifikowania postpów ucznia lub studenta. Moe zosta przedstawiona w zapisie symbolicznym (np. cyfry od 1 do 6) lub sownym. Napisz program, który dla wartoci oceny odczytanej z konsoli wywietli jej sowny zapis (celujcy, bardzo dobry, dobry, dostateczny, mierny, niedostateczny). Kod programu powinien zawiera instrukcj wielokrotnego wyboru switch.
MODU 3 STEROWANIE PRZEBIEGIEM WYKONANIA PROGRAMU 25 public class OcenaSlownie { /* odczytaj dane z konsoli */ System.out.print("ocena (1..6): "); int n = sc.nextint(); /* wy2wietl ocen+ */ System.out.print("ocena " + n + " "); switch(n) { case 1: System.out.println("niedostateczny"); case 2: System.out.println("mierny"); case 3: System.out.println("dostateczny"); case 4: System.out.println("dobry"); case 5: System.out.println("bardzo dobry"); case 6: System.out.println("celuj5cy"); default: System.out.println("nieprawidFowa!"); Zadanie 39 ProstyKalkulator.java Kalkulator stanowi urzdzenie elektroniczne suce do wykonywania oblicze$ matematycznych. Napisz program symulujcy dziaanie prostego kalkulatora, który dla odczytanych z konsoli wartoci dwóch argumentów rzeczywistych oraz jednego z operatorów (+-*/) wyznaczy warto wyraenia. Format komunikacji z uytkownikiem przedstawiono poniej. KALKULATOR wprowadn argument 1: 17 wprowadn argument 2: 29 wprowadn operator: + rezultat: 17 + 29 = 46 PRZETWARZANIE ITERACYJNE Zadanie 40 Silnia.java Silni liczby naturalnej N nazywamy iloczyn wszystkich liczb naturalnych nie wikszych ni N. Napisz program wyznaczajcy warto silni dla zadanego N, odczytanego z konsoli.
MODU 3 STEROWANIE PRZEBIEGIEM WYKONANIA PROGRAMU 26 public class Silnia { long silnia = 1; /* odczytaj dane z konsoli */ System.out.print("Liczba naturalna (1..20): "); int n = sc.nextint(); /* oblicz warto23 silni */ for (int i=1; i<=n; i++) { silnia *= i; /* wy2wietl rezultaty */ System.out.println(n + "! = " + silnia); Zadanie 41 CiagArytmetyczny.java Napisz program wywietlajcy na konsoli N pocztkowych wyrazów cig arytmetycznego o rónicy równej 3. Warto N odczytaj z konsoli. Przykadowy rezultat podano poniej. Ci5g arytmetyczny o ró.nicy 3: 1, 4, 7, 10, 13, Zadanie 42 TabliczkaMnozenia.java Stosujc ptle okrelone, napisz program wywietlajcy na konsoli tabliczk mnoenia z zakresu od 1 do 12. Przedstaw rezultat jak pokazano poniej. Dla sformatowania wyników uyj metody klasy java.text.messageformat (metoda format()) lub lub java.util.formatter (metoda printf()). 1 2 3 4 5 6 7 8 9 10 11 12 2 4 6 8 10 12 14 16 18 20 22 24 3 6 9 12 15 18 21 24 27 30 33 36 4 8 12 16 20 24 28 32 36 40 44 48 5 10 15 20 25 30 35 40 45 50 55 60 6 12 18 24 30 36 42 48 54 60 66 72 7 14 21 28 35 42 49 56 63 70 77 84 8 16 24 32 40 48 56 64 72 80 88 96 9 18 27 36 45 54 63 72 81 90 99 108 10 20 30 40 50 60 70 80 90 100 110 120 11 22 33 44 55 66 77 88 99 110 121 132 12 24 36 48 60 72 84 96 108 120 132 144 Zadanie 43 LiczbyPierwsze.java Liczb naturaln wiksz od 1 nazywamy liczb pierwsz jeli ma ona dokadnie 2 dzielniki naturalne o wartociach 1 oraz tej liczby. Napisz program znajdujcy N pocztkowych liczb pierwszych. Wywietl rezultaty na konsoli w formacie, jak poniej. Warto N odczytaj z konsoli. Liczby pierwsze: 2 3 5 7 11 Wykorzystujc instrukcje iteracyjne sprawd-, czy liczba N jest podzielna przez 1 oraz przez N. Zadanie 44 PoprawnaLiczbaNaturalna.java Jedn z podstawowych funkcji programu jest zapewnienie poprawnoci wprowadzanych informacji. Napisz program, który sprawdza, czy wprowadzony z konsoli cig znaków jest poprawn liczb naturaln (skada si wycznie z cyfr). Odszukaj w dokumentacji, jak funkcj peni metoda isdigit() zawarta w klasie java.util.character. Sprawd-, jakie inne metody zawiera ta klasa.
MODU 3 STEROWANIE PRZEBIEGIEM WYKONANIA PROGRAMU 27 public class PoprawnaLiczba { char znak; /* wprowadzenie ci5gu znaków */ System.out.print("liczba naturalna: "); String liczba = sc.nextline(); /* sprawdzenie, czy ka.dy znak ci5gu jest cyfr5 */ boolean liczbaok = true; for (int i=0; i<liczba.length(); i++) { znak = liczba.charat(i); if (!Character.isDigit(znak)) liczbaok = false; /* podanie rezultatów */ if (liczbaok) { System.out.printf("ci5g \'%s\' jest liczb5",liczba); else { System.out.printf("ci5g \'%s\' nie jest liczb5",liczba); Zadanie 45 PoprawnaLiczbaCalkowita.java Dokonaj takiej modyfikacji programu PoprawnaLiczbaNaturalna.java, aby weryfikowa on, czy wprowadzony cig znaków jest poprawn liczb cakowit (skada si wycznie z cyfr oraz opcjonalnie ze znaku - poprzedzajcego cyfry). Zadanie 46 Sumator.java Wyznacz sum dowolnej liczby wartoci rzeczywistych. Napisz program, który odczytuje kolejne wartoci rzeczywiste z konsoli do momentu, gdy uytkownik nie wprowadzi wartoci 0. Rezultatem dziaania programu jest wyznaczenie sumy wprowadzonych wartoci. Zadanie 47 WeryfikacjaPesel.java Numer Pesel, skadajcy si dokadnie z 11 cyfr stanowi identyfikator pozycji w rejestrze, w systemie ewidencji ludnoci Polski. Ostatnia cyfra numeru Pesel jest cyfr kontroln, pozwalajc na sprawdzenie poprawnoci numeru. Napisz program, który pozwoli na sprawdzanie poprawnoci numerów Pesel. Naley sprawdzi: dugo cigu (11 znaków), jego zawarto (wycznie cyfry) oraz zweryfikowa poprawno cyfry kontrolnej. Algorytm sprawdzania poprawnoci cyfry kontrolnej odszukaj w sieci Internet. Zadanie 48 ZdanieWspak.java Wywietl na konsoli dowolny cig znaków wspak (od znaku ostatniego, do pierwszego). public class ZdanieWspak { String zdanie = "Pierwsze koty za pfoty"; System.out.println("Zdanie: " + zdanie); System.out.print("Zdanie wspak: "); for (int i=zdanie.length()-1; i>=0; i--) { System.out.print(zdanie.charAt(i)); Zadanie 49 LiczbaSlownie.java Napisz program, który wywietl na konsoli zapis sowny dowolnej liczby naturalnej. Format rezultatu przedstawiono poniej.
MODU 3 STEROWANIE PRZEBIEGIEM WYKONANIA PROGRAMU 28 38227 trzy osiem dwa dwa siedem Zadanie 50 Alfabet.java Wywietl na konsoli kolejne wielkie litery alfabetu aci$skiego A..Z rozdzielone znakiem odstpu. Typ char jest typem porzdkowym (mona wyznaczy poprzedni i nastpny element), std moliwe jest jego uycie w ptli okrelonej for. public class Alfabet { System.out.print("Ci5g wielkich liter alfabetu FaciEskiego: "); for (char litera='a'; litera <= 'Z'; litera++) { System.out.print(litera+" "); Zadanie 51 PismoRozstrzelone.java Wywietl na konsoli dowolny cig znaków wprowadzony przez uytkownika jako tekst rozstrzelony. Dodaj znak odstpu pomidzy kad par wywietlonego cigu znaków. Zadanie 52 AnalizaWyrazow.java Zapoznaj si z dokumentacj dotyczc metody split() klasy java.lang.string. Nastpnie napisz program, który dowolny tekst odczytany z konsoli podzieli na poszczególne wyrazy, kady z nich wywietlajc w odrbnej linii. Zadanie 53 LiczbyPseudolosoweUjemne.java Dokonaj modyfikacji zadania generujcego liczby pseudolosowe. Wywietl na konsoli 20 cakowitych liczb pseudolosowych z przedziau -20..-5. Zadanie 54 SymulatorRzutuKostka.java Napisz program, który zasymuluje N rzutów kostk do gry o liczbie oczek 1..6. Oblicz czsto wyrzucenia poszczególnych liczb oczek. Rezultaty wywietl na konsoli w formacie, jak przedstawiono poniej. Wykorzystaj tablice. Rezultat 10 rzutów kostk5 ========================= Liczba oczek Liczebno23 ------------------------- 1 3 2 0 3 1 4 2 5 4 6 0 Zadanie 55 Monety.java W obiegu s monety 1, 2 i 5 z. Napisz program przedstawiajcy dowoln kwot (liczb naturaln) za pomoc jak najmniejszej liczby monet.
MODU 3 STEROWANIE PRZEBIEGIEM WYKONANIA PROGRAMU 29 public class Monety { int kwota; /* pobierz kwot+ z konsoli */ do { System.out.print("Podaj kwot+ w zf (1..1000): "); kwota = sc.nextint(); while (kwota < 1 kwota > 1000); /* wyznacz najmniejsz5 mo.liw5 liczb+ monet */ System.out.println("-----------------------"); System.out.println("monety 5zF: " + kwota/5); System.out.println("monety 2zF: " + (kwota%5)/2); System.out.println("monety 1zF: " + (kwota%5)%2); Zadanie 56 QuickSort.java Napisz program, który utworzy, uporzdkuje i wywietli na konsoli dowoln liczb wartoci naturalnych. z przedziau [a,b]. W celu uporzdkowania wartoci skorzystaj z jednej z metod klasy java.util.arrays. Jak funkcj peni w poniszym programie metoda println() bez parametrów? import java.util.arrays; public class QuickSort { // okre2l dopuszczalne warto2ci liczbowe System.out.println("Generator n liczb pseudolosowych z przedziafu [a,b]"); System.out.println("==================================================="); System.out.print("ilo23 liczb (n): "); int n = sc.nextint(); System.out.print("warto23 minimalna (a): "); int a = sc.nextint(); System.out.print("warto23 maksymalna (b): "); int b = sc.nextint(); // utwórz zbiór liczb naturalnych z przedziafu [a,b] long[] zbiorliczb = new long[n]; for (int i=0; i<zbiorliczb.length; i++) { zbiorliczb[i] = a + (int)(math.random()*(b-a+1)); // wy2wietl liczby nieuporz5dkowane System.out.printf("liczby nieuporz5dkowane (%d..%d): ",a,b); for (long x : zbiorliczb) { System.out.print(x+" "); System.out.println(); // uporz5dkuj liczby Arrays.sort(zbiorLiczb); // wy2wietl liczby uporz5dkowane System.out.printf("liczby uporz5dkowane (%d..%d): ",a,b); for (long x : zbiorliczb) { System.out.print(x+" "); System.out.println(); Zadanie 57 KartotekaPersonalna.java Napisz program umoliwiajcy utworzenie kartoteki zawierajcej dane personalne pracownika. Wprowad- dane do kartoteki, a nastpnie wywietl jej zawarto na konsoli.
MODU 3 STEROWANIE PRZEBIEGIEM WYKONANIA PROGRAMU 30 Typ wyliczeniowy enum jest w rzeczywistoci typem obiektowym, posiadajcym metod values() zwracajc tablic typu String zawierajc nazwy egzemplarzy typu. Metoda ordinal() umoliwia okrelenie numeru porzdkowego egzemplarza (numeracja od 0). enum DaneOsobowe {NAZWISKO,IMIE,ADRES,KOD_POCZTOWY,MIEJSCOWOab; public class KartotekaPersonalna { /* zakfadanie kartoteki */ // metoda values() tworzy tablic+ egzemplarzy typu DaneOsobowe int liczbaelementowkartoteki = DaneOsobowe.values().length; String[] kartoteka = new String[liczbaElementowKartoteki]; /* wprowadzanie danych do kartoteki */ System.out.println("WprowadN dane personalne"); for (DaneOsobowe poledanych: DaneOsobowe.values()){ System.out.print(poleDanych+": "); kartoteka[poledanych.ordinal()] = sc.nextline(); /* wy2wietlanie danych z kartoteki */ System.out.println("\nDANE PERSONALNE"); System.out.printf("%s %s, %s %s, %s\n", kartoteka[daneosobowe.imie.ordinal()], kartoteka[daneosobowe.nazwisko.ordinal()], kartoteka[daneosobowe.kod_pocztowy.ordinal()], kartoteka[daneosobowe.miejscowoab.ordinal()], kartoteka[daneosobowe.adres.ordinal()]); Zadanie 58 SymulatorLottomatu.java Duy Lotek jest jedn z gier liczbowych, polegajc na prawidowym wytypowaniu 6 liczb z 49 moliwych. Klient moe wskaza dowolne liczby, moe te zda si na metod chybi-trafi, gdzie maszyna (lottomat) generuje dla niego losow kombinacj 6 rónych liczb. Napisz program symulujcy funkcj lottomatu. Klient zamawia pewn liczb zakadów (1..8). Program generuje liczby, uporzdkowane rosnco. Wyniki prezentowane s na konsoli w formacie przedstawionym poniej. ZAKcADY DUdEGO LOTKA ==================== 1/ 5 12 23 28 45 48 2/ 17 34 35 38 41 44 3/ 2 5 14 27 28 49 4/ Zadanie 59 AlternatywnaTabliczkaMnozenia.java Zmodyfikuj kod programu z zadania TabliczkaMnozenia.java. Uyj wycznie ptli nieokrelonych. Zadanie 60 CiagFibonacciego.java Cig Fibonnacciego to cig liczb naturalnych, w którym kady wyraz cigu jest sum dwóch poprzednich (z wyjtkiem wyrazu pierwszego i drugiego): F(0) = 0 F(1) = 1 F(n) = F(n-1) + F(n-2) dla n>=2 Napisz program, który wyznaczy N pocztkowych wyrazów cigu Fibonacciego. Warto N odczytaj z konsoli. Przykadowe pocztkowe wartoci cigu: 0, 1, 1, 2, 3, 5, 8, 13, 21, Zadanie 61 AlgorytmEuklidesa.java Algorytm Euklidesa to metoda wyznaczania najwikszego wspólnego podzielnika (NWD) dla dwóch dowolnych liczb naturalnych. Napisz program wyznaczajcy wspólnych dzielnik dla liczb naturalnych P i Q wprowadzonych z konsoli. Opis algorytmu odszukaj w sieci Internet.
MODU 3 STEROWANIE PRZEBIEGIEM WYKONANIA PROGRAMU 31 Zadanie 62 GeneratorHasel.java Napisz program generujcy 6-cio literowe hasa. Kade z nich skada si dokadnie z trzech spógosek, wystpujcych na pozycjach nieparzystych oraz 3 samogosek wystpujcych na pozostaych pozycjach wyrazu. Haso skada si wycznie z maych liter alfabetu aci$skiego. Przykadowe hasa podano poniej. hulapi, banano, geruna, wileta, Zadanie 63 SitoEratostenesa.java Grecki matematyk Eratostenes, yjcy ok. 200 lat p.n.e. poda sposób znajdowania liczb pierwszych znany pod nazw Sito Eratostenesa. Napisz program znajdujcy liczby pierwsze mniejsze bd- równe N. Warto N odczytaj z konsoli. Opis algorytmu odszukaj w sieci Internet.