(c) Krzysztof Barteczko 2014

Slides:



Advertisements
Podobne prezentacje
Tablice 1. Deklaracja tablicy
Advertisements

Programowanie w Java.
Wstęp do strumieni danych
Mgr inż.Marcin Borkowski Podstawy Java Część II
Mgr inż.Marcin Borkowski Podstawy Java Krótkie wprowadzenie dla studentów Wyższej Szkoły Ekologii i Zarządzania
Programowanie obiektowe PO PO - LAB 4 Wojciech Pieprzyca.
1 Dzisiejszy wykład Wzorce funkcji Wzorce klas Tablica asocjacyjna Składowe statyczne.
Klasy i obiekty.
Programowanie w środowisku sieciowym
Języki programowania C++
formatowanie kodu źródłowego
Nguyen Hung Son Uniwersytet Warszawski
Podstawy języka Java Nguyen Hung Son Uniwersytet Warszawski.
Programowanie imperatywne i język C Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie.
Programowanie imperatywne i język C
Programowanie imperatywne i język C Copyright, 2005 © Jerzy R. Nawrocki Wstęp.
Programowanie imperatywne i język C Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie.
Programowanie wielowątkowe
1 Dygresja: cztery płyty główne…. 2 Dygresja: osobliwości C /* cos o nieistniejacym typie Boolean */ /* oraz o operatorze przecinkowym */ #include int.
Java – technologie zaawansowane Wykład 8 (9 maja 2011)
Funkcje znakowe, liczbowe i obsługa dat Kolejny krok w poznaniu SQL-a.
Funkcje znakowe, liczbowe i obsługa dat Kolejny krok w poznaniu SQL-a.
Funkcje agregujące Funkcja Opis Minimum Maksimum Średnia arytmetyczna
Typy standardowe Typ Boolean Typ Integer Typ Float Typ Character Operacje wejścia-wyjścia.
Wykład 2 struktura programu elementy języka typy zmienne
Czytanie, pisanie i rysowanie – cd.. Jeszcze jeden strumyk PrintStream działa jak PrintWriter, ale: Używa domyślnego (systemowego) kodowania Nie wyrzuca.
Project made by Bartosz Rumiński Kl. III i rok 2007/2008.
Temat: Działania na datach autor: Damian Brűckner.
dr Anna Kwiatkowska Instytut Informatyki
Tablice tablica jest sekwencją elementów tego samego typu (prostego lub obiektowego) w Javie tablice są obiektami, a zmienne tablicowe przechowują referencję
Visual Basic for Application
Polsko – Japońska Wyższa Szkoła Technik Komputerowych
Programowanie imperatywne i język C Copyright, 2006 © Jerzy R. Nawrocki Wstęp do.
Podstawy C# Grupa .NET PO.
Java 3 MPDI Programowanie obiektowe W7. import java.io.*; public class X { // kontrukcja throws – określenie jakie wyjątki może dana metoda // sygnalizować
JAVA – wstęp.
Programowanie Windows na przykładzie C# część 1
JAVA.
JAVA c.d.. Instrukcji wyboru SWITCH używamy, jeśli chcemy w zależności od wartości pewnego wyrażenia wykonać jeden z kilku fragmentów kodu. Jest to w.
Programowanie obiektowe III rok EiT
Inicjalizacja i sprzątanie
Seminarium problemowe
Programowanie strukturalne i obiektowe
C# Platforma .NET CZ.3 Kuba Ostrowski.
Programowanie baz danych
Visual Basic for Applications Poziom podstawowy Zajęcia 2
1 Strumienie Hierarchie klas strumieniowych, strumienie bajtowe - klasy InputStream i OutputStream i ich metody, klasa File, strumienie plikowe, strumienie.
PWSZ Gniezno // codefly 2009 Łukasz Tomczak
  ELEMENTY JĘZYKA JAVA komentarze w Javie, słowa kluczowe i operatory, proste typy danych, tablice, podstawowy zestaw instrukcji.
Zmienne i typy danych w C#
Typy danych, klucz podstawowy, klucz obcy
Wybrane aspekty programowania w C++ (i nie tylko)
Programowanie sieciowe w Javie Michał Kuciapski
Programowanie imperatywne i język C Copyright, 2007 © Jerzy R. Nawrocki Wstęp do.
Wstęp do programowania Wykład 2 Dane, instrukcje, program.
Kolekcje (3) Zbiory. Porównywanie i porządkowanie elementów kolekcji. (c) Krzysztof Barteczko 2014.
Elementy programowania funkcyjnego w Javie 8. Pragmatyczny przegląd. (c) Krzysztof Barteczko 2014.
Typy i metody sparametryzowane (generics) (c) Krzysztof Barteczko 2014.
do programowania obiektowego w języku Groovy
Refaktoryzacja „Any fool can write a code that computer understands. Good programers write code that human can understand” – Martin Fowler.
InMoST, Java – przykładowa aplikacja Bartosz.Michalik
Podstawowe konstrukcje języka Java Bartosz Walter InMoST Wielkopolska sieć współpracy w zakresie innowacyjnych metod wytwarzania oprogramowania Termin.
Przypomnienie wiadomości – kilka zadań
Akademia C# - Lab2 Zmienne, instrukcje warunkowe, pętle, debugger,
(c) Krzysztof Barteczko 2014
(c) Krzysztof Barteczko 2014
Klasy wewnętrzne. Praktyka użycia interfejsów i klas wewnętrznych
Dane, zmienne, instrukcje
Projekt Zespołowy w Javie
Excel Informacje różne.
Zapis prezentacji:

(c) Krzysztof Barteczko 2014 Klasy narzędziowe (2) (c) Krzysztof Barteczko 2014

(c) Krzysztof Barteczko 2014 Autoboxing Klasy, opakowujące typy proste: Integer, Short, Byte, Long, Float, Double, Character, Boolean (c) Krzysztof Barteczko 2014

Specyfika działań na liczbach rzeczywistych double liczba = 3 * 0.2; double wynik = 0.6; if (liczba != wynik) System.out.println("Nie równe. Różnica wynosi: " + (liczba - wynik)); else System.out.println("Równe");  Nie równe. Różnica wynosi: 1.1102230246251565E-16 ULP (Unit in the last place) pokazuje odległość pomiędzy dwoma sąsiednimi liczbami  - mówiąc dokładniej: ULP(x) to odległość między x a pierwszą dostępną liczbą większą od x i pierwszą dostępną liczbą mniejszą od x. double d1 = 1e16, d2 = d1; for(int i = 1; i<=1000000; i++) d2++; System.out.println("Różnica: " + (d2 - d1)); System.out.println("ULP = " + Math.ulp(d1)); Poza tym problem dostępnej precyzji: double licz2 = 0.1111111111111111, licz3 = 1111 + licz2, licz4 = licz3 - 1111; System.out.println(licz4 - licz2);  wynik różny od 0 Różnica: 0.0 ULP = 2.0 (c) Krzysztof Barteczko 2014

BigDecimal dla dokładnych obliczeń BigDecimal liczbaA = new BigDecimal("3"); BigDecimal liczbaB = new BigDecimal("0.2"); BigDecimal wynik = liczbaA.multiply(liczbaB); if (!wynik.equals(new BigDecimal("0.6"))) System.out.println("Nie równe"); else System.out.println("Równe"); BigDecimal licz2 = new BigDecimal("0.111111111111111111111111111111111"), licz1111 = new BigDecimal("1111"), licz3 = licz1111.add(licz2), licz4 = licz3.subtract(licz1111); System.out.println(licz3); System.out.println(licz4); System.out.println(licz4.subtract(licz2).toPlainString()); Równe 1111.111111111111111111111111111111111 0.111111111111111111111111111111111 0.000000000000000000000000000000000 (c) Krzysztof Barteczko 2014

(c) Krzysztof Barteczko 2014 Daty - Calendar (c) Krzysztof Barteczko 2014

Operacje na kalendarzu (c) Krzysztof Barteczko 2014

(c) Krzysztof Barteczko 2014 Wprowadzanie dat String data = "2014-10-30"; // "2014-10-32" @SuppressWarnings("resource") Scanner s = new Scanner(data).useDelimiter("-"); Calendar c = Calendar.getInstance(); c.setLenient(false); try { c.set(s.nextInt(), s.nextInt() - 1, s.nextInt()); System.out.println(c.getTime()); } catch (Exception exc) { System.out.println("Wadliwa data: " +exc); } SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); df.setLenient(false); Date d = null; d = df.parse(data); c.setTime(d); } catch (ParseException exc) { System.out.println("Wadliwa data: " + exc); Thu Oct 30 03:35:33 CET 2014 Thu Oct 30 00:00:00 CET 2014 Wadliwa data: java.lang.IllegalArgumentException: DAY_OF_MONTH Wadliwa data: java.text.ParseException: Unparseable date: "2014-10-32" (c) Krzysztof Barteczko 2014

(c) Krzysztof Barteczko 2014 Nowe API dla dat i czasu (c) Krzysztof Barteczko 2014

(c) Krzysztof Barteczko 2014 Przykład static void show(Object o) { System.out.println(o.getClass().getSimpleName() + " -> " + o); } //... LocalDate data; LocalTime czas; LocalDateTime dacza; ZonedDateTime zdt; show( data = LocalDate.of(2014, OCTOBER, 16) ); show( czas = LocalTime.of(10, 30) ); show( LocalDateTime.of(2013, 5, 1, 0, 0) ); show( dacza = LocalDateTime.of(data, czas)); show( ZonedDateTime.now() ); show( zdt = ZonedDateTime.of(dacza, ZoneId.of("Asia/Nicosia"))); show( LocalDate.from(zdt) ); show( LocalTime.from(zdt) ); show( dacza.toLocalDate() ); show( dacza.toLocalTime() ); show( data.withDayOfMonth(10)); show( data.withMonth(8) ); show( data.withYear(2014)); LocalDate -> 2014-10-16 LocalTime -> 10:30 LocalDateTime -> 2013-05-01T00:00 LocalDateTime -> 2014-10-16T10:30 ZonedDateTime -> 2014-12-01T03:16:04.710+01:00[Europe/Belgrade] ZonedDateTime -> 2014-10-16T10:30+03:00[Asia/Nicosia] LocalDate -> 2014-10-10 LocalDate -> 2014-08-16 (c) Krzysztof Barteczko 2014

Uzyskiwanie informacji static void info(Object ... args) { for (Object o : args) { System.out.println(o); } // ... LocalDate d = LocalDate.of(2014, OCTOBER, 16); info( d, "Rok ma dni: " + d.lengthOfYear(), "Miesiąc ma dni: " + d.lengthOfMonth(), "Rok: " + d.getYear(), "Czy jest przestępny: " +d.isLeapYear(), "Miesiąc: " + d.getMonth(), "Nr miesiąca: " + d.getMonthValue(), "Dzień miesiąca: " + d.getDayOfMonth(), "Dzień tygodnia: " + d.getDayOfWeek() ); 2014-10-16 Rok ma dni: 365 Miesiąc ma dni: 31 Rok: 2014 Czy jest przestępny: false Miesiąc: OCTOBER Nr miesiąca: 10 Dzień miesiąca: 16 Dzień tygodnia: THURSDAY (c) Krzysztof Barteczko 2014

(c) Krzysztof Barteczko 2014 Wybrane operacje (1) (c) Krzysztof Barteczko 2014

(c) Krzysztof Barteczko 2014 Operacje (2) (c) Krzysztof Barteczko 2014

Formatowanie liczb i dat (c) Krzysztof Barteczko 2014

(c) Krzysztof Barteczko 2014 Formatowanie (c) Krzysztof Barteczko 2014

(c) Krzysztof Barteczko 2014 Elementy formatu (c) Krzysztof Barteczko 2014

Wybrane symbole konwersji (c) Krzysztof Barteczko 2014

(c) Krzysztof Barteczko 2014 Przykład double cena = 1.52; double ilosc = 3; double koszt = cena * ilosc; System.out.printf("Koszt wynosi %.2f zł", koszt); System.out.printf("\nData: %tF", Calendar.getInstance()); Koszt wynosi 4.56 zł Data: 2014-12-01 Dla lokalizacji polskiej liczba pokazywana jest z przecinkiem jako separatorem miejsc dziesiętnych. Aby uzyskać kropkę można napisać: System.out.printf(Locale.ROOT, "Koszt wynosi %.2f zł", koszt); W tym przypadku stała statyczna Locale.ROOT oznacza neutralną lokalizację (bez wybranego kraju i języka). (c) Krzysztof Barteczko 2014

(c) Krzysztof Barteczko 2014 Przykład 2 import static java.lang.System.*; // ... out.println("Wyrównany wydruk tablicy"); int[] arr = { 1, 100, 200, 4000 }; for (int i = 0; i < arr.length; i++) { out.printf("%5d", arr[i]); if (i%2!=0) System.out.println(); } // Zastosowanie znaku formatu <"); out.println("Zaokraglenia"); out.printf("%.3f %<.2f %<.1f", 1.256 ); // Znak < szczególnie przydatny w datach/czasie Calendar c = Calendar.getInstance(); c.set(2013, 1, 1); out.printf("\nW roku %tY i miesiącu %<tm mamy %d dni", c, c.getActualMaximum(Calendar.DATE) ); // Oczywiście możemy formatować do Stringów String dateNow = String.format("%td-%<tm-%<tY", currentTimeMillis()); JOptionPane.showMessageDialog(null, dateNow); Wyrównany wydruk tablicy 1 100 200 4000 Zaokraglenia 1.256 1.26 1.3 W roku 2013 i miesiącu 02 mamy 28 dni (c) Krzysztof Barteczko 2014

(c) Krzysztof Barteczko 2014 Formatowanie dat Calendar cal = Calendar.getInstance(); String[] daty = { "2014-09-01", "2013-09-06", "1999-02-05" }; String patt = "d MMMM yyyy (EEEE)"; for (String s : daty) { SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); cal.setTime(df.parse(s)); cal.add(Calendar.DATE, 1); df.applyLocalizedPattern(patt); String outd = df.format(cal.getTime()); System.out.println(outd); // Prościej w Java 8 LocalDate dat = LocalDate.parse(s).plusDays(1); String old = dat.format( DateTimeFormatter.ofPattern(patt, new Locale("pl"))); System.out.println(old); } 2 września 2014 (wtorek) 7 września 2013 (sobota) 6 lutego 1999 (sobota) (c) Krzysztof Barteczko 2014