Java EE produkcja oprogramowania PPJ PODSTAWY PROGRAMOWANIA W JAVIE PODSTAWY JĘZYKA JAVA 4 Warszawa, 2016Z
2 Pętle, typ tablicowy, usługi czasu i kalendarza
3 Pętla while 1/3 Instrukcja pętli umożliwia wielokrotne wykonanie bloku kodu. while (warunek) { // instrukcje dopóki // warunek jest spełniony } Przykład: int i = 0; while (i < 3) { System.out.println(i++); // 0 1 2 }
4 Pętla for 2/3 for( inicjalizacja_jeden_raz; warunek; aktualizacja_w_kazdej_iteracji) { // instrukcje dopóki // warunek jest spełniony } Przykład: for (int i = 0; i < 3; ++i) { System.out.println(i); // 0 1 2 }
5 Pętla do while 3/3 do { // instrukcje dopóki // warunek jest spełniony } while (warunek) Przykład: int i = 0; do { System.out.println(i++); // 0 1 2 } while (i < 3);
6 Test Jaki będzie wynik działania programu? int i = 0; do { System.out.println("i=" + ++i); } while(i++ < 5); i=1 i=3 i=5
7 Test Jaki będzie wynik działania programu? int i = 0; do { System.out.println("i=" + ++i); } while(i++ < 5); i=1 i=3 i=5
8 Instrukcje przerwania pętli for (int i=0; i < 10; i++) { if(i == 5) break; System.out.println(i + ","); } // 0,1,2,3,4, for (int i=0; i < 10; i++) { if(i == 5) continue; System.out.println(i + ","); } // 0,1,2,3,4,6,7,8,9,
9 Pętle zagnieżdżone for(int i = 0; i < 2; i++) { for (int j = 2; j < 4; j++) { System.out.println (i + ":" + j); } } 0:2 0:3 1:2 1:3
10 Tablice Tablice są poindeksowaną listą wartości. Indeks pierwszego elementu 0, ostatniego n 1. Wartości mogą być dowolnego typu np. int, boolean, String. Wszystkie elementy tablicy muszą być tego samego typu. double[].. 0.5 2.5 4.0 12.1 3.41 0 1 2 3.. n-1
11 Deklarowanie i inicjalizacja double[] dblarr = new double[3]; dblarr[0] = 0.5; dblarr[1] = 2.5; dblarr[2] = 4.0; int[] intarr; // tablica typu int int[][] intarr2; // int[] jest typem W instrukcji deklaracji zmiennej można zainicjować wartości elementów tablicy: int[] intarr = { 1, 2, -3 };
12 Odwołania do elementów tablicy int[] intarr = { 1, 9, -7, 12 }; intarr[0] = 18; int x = intarr[3] / 2; // 6 int y = intarr[-1]; int z = intarr[4]; // błąd! // błąd!
13 Ćwiczenie 1. Napisz program, który w pętli wypisze w oknie konsoli parametry wywołania programu. Liczba parametrów od 0 do n. Podpowiedzi: a) public static void main (String[] args), b) args.length, c) args[i].
14 Ćwiczenie 2. Napisz program, który w pętli wypełni tabliczkę mnożenia i wypisze ją w oknie konsoli. Podpowiedzi: a) zastosuj zagnieżdżanie pętli, b) do wyświetlenia w oknie terminala zastosuj metodę printf.
15 Usługi daty i kalendarza W Java są dwa niezależne interfejsy programistyczne API (ang. Application Programming Interface) dostarczające usługi dotyczące daty i kalendarza. Pierwszy wprowadzony w połowie lat 90. ( stary ) i drugi w Java 8.
16 Stare API 1/2 W klasie Date większość metod nie jest już używana. W praktyce, konstruktor klasy może służyć do utworzenia obiektu odpowiadającego bieżącej dacie i godzinie. Date date = new Date(); System.out.println(date);
17 Stare API 2/2 import java.text.dateformat; import java.util.date; import java.util.gregoriancalendar; GregorianCalendar gregcal = new GregorianCalendar(2016,10,15); //0-stycz. gregcal.add(gregoriancalendar.month, -1); Date thedate = gregcal.gettime(); DateFormat dateformat = DateFormat.getDateInstance( DateFormat.MEDIUM, Locale.forLanguageTag("pl")); String strdate = dateformat.format(thedate);
18 API Java 8 java.time 1/2 import java.time.localdate; import java.time.localdatetime; import java.time.localtime; import java.time.format.datetimeformatter; LocalDateTime currldt = LocalDateTime.now(); System.out.println(currLDT); //UNIX format LocalDate someld = LocalDate.of(2016, 10, 15); LocalTime somelt = LocalTime.of(11,0,39); DateTimeFormatter dtf = DateTimeFormatter.ISO_DATE; DateTimeFormatter dtf = DateTimeFormatter.ofPattern("dd/MM/yyyy"); System.out.println(dtf.format(someLD));
19 API Java 8 java.time 2/2 import java.time.duration; import java.time.instant; Instant start = Instant.now(); for(int i = 1; i < 10000000; ++i) ; Instant end = Instant.now(); Duration time = Duration.between(start, end); System.out.printf("Początek %s\n", start); System.out.printf("Koniec %s\n", end); System.out.printf("Czas %d\n", time.tomillis());
20 Ćwiczenie 3. Napisz program, który obliczy pole koła o promieniu R bazując na technice Monte-Carlo. Do generacji liczb pseudolosowych użyj metody Math.random().
21 Ćwiczenie 4. 1/2 Napisz program wyszukujący wystąpienia słowa w podanym tekście. Przeszukiwany tekst zapisany jest w tablicy 2D, na przykład: String[][] arr = { {"Język", "programowania", "Java", "został", "opracowany", "przez", "firmę", "Sun", "Microsystems", "w", "1995"}, {"Java", "jest", "obiektowym", "językiem", "programowania"}, {"Java", "umożliwia", "programowanie", "współbieżne"}, {"Program", "napisany", "w", "języku", "Java", "jest", "kompilowany", "do", "kodu", "bajtowego", "i", "uruchamiany", "w", "maszynie", "wirtualnej", "JVM"} };
22 Ćwiczenie 4. 2/2 Przykładowy wynik działania programu: Szukane słowo 'Java'. Zdanie 1, słowo 3. Zdanie 2, słowo 1. Zdanie 3, słowo 1. Zdanie 4, słowo 5. Zdanie 5, słowo 5. Zdanie 5, słowo 12. Liczba wystąpień słowa 'Java' = 6.
23 Ćwiczenie 5. W urnie jest C kul w kolorze czarnym i B kul w kolorze białym. Napisz program, który obliczy prawdopodobieństwo wylosowania N kul w wybranym jednym kolorze. Założenie: N <= Min(C, B).