Aplikacje w środowisku Java- wykład 3

Wielkość: px
Rozpocząć pokaz od strony:

Download "Aplikacje w środowisku Java- wykład 3"

Transkrypt

1 1 Aplikacje w środowisku Java- wykład 3 Wprowadzanie danych (okna dialogowe, Scanner) Tablice Klasa Scanner + podstawy wyrażeń regularnych Typ wyliczeniowy Treści prezentowane w wykładzie zostały oparte o: Barteczko, JAVA Programowanie praktyczne od podstaw, PWN, 2014 Barteczko, JAVA Uniwersalne techniki programowania, PWN, C. S. Horstmann, G. Cornell, Java. Podstawy, Helion, Gliwice 2013

2 2 Napisy Napisy (łańcuchy znakowe) są obiektami klasy String (zatem wszystko co mówiliśmy o obiektach, dotyczy również tej klasy). Dodatkowo jednak kompilator dostarcza nam pewnych udogodnień: Tworząc obiekty klasy String nie musimy używać wyrażenia new. Możemy napisać skrótowo String s = "Ala ma kota" zamiast String s = new String("Ala ma kota"); Możliwość użycia operatora + w znaczeniu konkatenacji (łączenia) łańcuchów String s1 = "Ala ma kota"; String s2 = " szarego "; int lata = 3; String s3 = s1 + s2 + "w wieku " + lata + " lat"; //wartość lata przekształcona w odpowiedni String

3 NAPISY Jeśli w wyrażeniu konkatenacji łańcuchów znakowych wystąpi referencja do obiektu jakiejś klasy, to dla obiektu zostanie wywołana metoda tostring() i otrzymany łańcuch zostanie dołączony do łańcucha Para p = new Para(10,11); String s = "Para = " + p;// Para = (10,12) UWAGA 1: Operator + traktowany jest jako operator konkatenacji łańcuchów znakowych, wtedy gdy jeden z jego argumentów jest klasy String: np. int a=1, b=3; String s=a+b;//błąd UWAGA 2: Pamiętajmy o kolejności opracowywania wyrażeń: String s="nr" ; //nr12 String s1="nr" + (1 + 2);//nr3 ==,!= porównanie referencji, equals() porównanie łańcuchów 3

4 Wprowadzanie danych: okna dialogowe 4 Do wprowadzania danych możemy użyć skanera (klasy Scanner z pakietu java.util) dialogów wejściowych (statycznych metod showinputdialog z klasy JOptionPane z pakietu javax.swing. Zapis: String s=joptionpane.showinputdialog("tekst:"); spowoduje otwarcie okna dialogowego z komunikatem "Tekst:", w którym będzie można wprowadzić tekst. Po kliknięciu przycisku OK wprowadzony łańcuch będzie dostępny za pomocą zmiennej s, natomiast jeśli zamkniemy dialog przyciskiem Cancel, to zmienna s będzie mieć wartość null.

5 Wprowadzanie danych: okna dialogowe 5 Do pokazania wyników w okienku komunikatów możemy użyć statycznej metody showmessagedialog z klasy JOptionPane z pakietu javax.swing. Zapis: JOptionPane.showMessageDialog(null,"Komunikat"); pokaże okno z komunikatem "Komunikat"(null mówi m.in., że okno ma być wycentrowane) Przykład. import static javax.swing.joptionpane.*; public class Powitanie { public static void main(string[] args) { String imie = showinputdialog("podaj swoje imię"); if (imie==null) imie=""; showmessagedialog(null, "Witaj "+ imie);

6 Wprowadzanie danych: klasa Scanner Standardowe wejście jest reprezentowane przez publiczną stałą z klasy System: System.in. Wygodnym sposobem czytania ze standardowego wejścia jest użycie klasy Scanner z pakietu java.util: import java.util.*; public class ScanString{ public static void main(string[] args){ Scanner scan = new Scanner(System.in); //parametr konstruktora - źródło danych System.out.println("Podaj imię:"); String name = scan.next(); //metoda next() wczytuje napis //niezawierający białych znaków System.out.println("Witaj " + name); 6

7 Wprowadzanie danych: klasa Scanner 7 Wprowadzanie liczb z konsoli za pomocą skanera metody przekształcające postać znakową liczb w ich kod binarny: nextint()- dla liczb całkowitych, nextdouble()- dla liczb rzeczywistych. Uwaga: używamy, jako separatora miejsc dziesiętnych, ze względu na domyślnie polskie ustawienia regionalne - tzw. locale. Aby je zmieniać: Scanner scan=new Scanner(System.in).useLocale(new Locale("en")); import java.util.*; public class ScanNumbers{ public static void main(string[] args){ Scanner scan = new Scanner(System.in); System.out.print("Podaj liczbę całkowitą: "); int i = scan.nextint(); System.out.print("A teraz rzeczywistą: "); double d = scan.nextdouble(); System.out.println("Wprowadzono " + i + " " + d);

8 Wprowadzanie danych: klasa Scanner Metody klasy Scanner: hasnextint(), hasnextdouble(), itd. pozwalają na sprawdzenie czy w strumieniu wejściowym kolejny element jest odpowiednio liczbą całkowitą, rzeczywistą, itd. Przykład. Pętla zaporowa wymuszająca podanie przez użytkownika liczby rzeczywistej: //import java.text.numberformat; import java.util.scanner; public class ScannerTest { public static void main(string[] args) { System.out.print("Podaj liczbę rzeczywistą: "); Scanner scan = new Scanner(System.in); while (!scan.hasnextdouble()) { scan.next();//czytamy ta "nie liczbe" System.out.print("Podaj jeszcze raz: "); double d = scan.nextdouble(); System.out.println("Podałeś: " + d); //Aby sformatować liczbę zgodnie z Locale: //NumberFormat.getInstance().format(d) 8

9 Wprowadzanie liczb - okna dialogowe Gdy w polu tekstowym podamy jakąś liczbę, to będzie ona dostępna jako napis String. Do przekształcania łańcuchów na liczby całkowite używamy metody: int liczba=integer.parseint(napis); Jeśli przekształcany napis nie reprezentuje liczby całkowitej, to zostanie wyrzucony wyjątek NumberFormatException. import static javax.swing.joptionpane.*; public class ParseIntTest { public static void main(string[] args) { String s1 = showinputdialog("podaj liczbę: "); if (s1!=null) { int i=integer.parseint(s1); showmessagedialog(null,"kwadrat = " + (i*i)); //if //main //class 9

10 Wprowadzanie liczb - okna dialogowe Podobnie, stosując metodę double Double.parseDouble(String s); możemy przekształcić znakową reprezentację liczb rzeczywistych w ich postać binarną. Metoda ta nie uwzględnia lokalizacji i zawsze za separator miejsc dziesiętnych przyjmuje.. import java.lang.*; public class DoubleDemo { public static void main(string[] args) { String str = "50"; double retval = Double.parseDouble(str); System.out.println("Value = " + retval); //Value =

11 11 Wprowadzanie liczb - okna dialogowe + skaner Skaner możemy łączyć z oknami dialogowymi, może on bowiem pobierać dane m.in. z napisów: import java.util.*; import static javax.swing.joptionpane.*; public class ScanNumsFromString { public static void main(string[] args) { String s = showinputdialog("podaj 2 liczby "+ "rozdzielone spacjami"); if (s!=null) { Scanner scan = new Scanner(s); int suma=scan.nextint()+scan.nextint(); showmessagedialog(null,"suma = " + suma);

12 TABLICE 12 Tablice są zestawami elementów (wartości) tego samego typu, ułożonych na określonych pozycjach. Do elementów tablicy odwołujemy się za pomocą nazwy tablicy oraz indeksu umieszczonego w nawiasach kwadratowych, np. tab[0], tab[1] W Javie tablice są obiektami, a nazwa tablicy jest nazwą zmiennej, będącej referencją do obiektu-tablicy. Obiekt-tablica zawiera elementy tego samego typu. Może to być dowolny z typów pierwotnych lub referencyjnych. Zatem, w szczególności elementami tablic mogą być referencje do innych tablic. Mamy wtedy do czynienia z odpowiednikiem tablic wielowymiarowych. Deklaracja tablicy składa się z: nazwy typu elementów tablicy, pewnej liczby par nawiasów kwadratowych (liczba par określa liczbę wymiarów tablicy), nazwy zmiennej, która identyfikuje tablicę.

13 TABLICE 13 Przykładowa deklaracja zmiennych tablicowych: String[] s; // jest deklaracją tablicy referencji do obiektów // klasy String, s jest referencją double[][] d; // jest deklaracją dwuwymiarowej tablicy liczb // rzeczywistych Taka deklaracja nie alokuje pamięci dla tablicy. Pamięć jest alokowana dynamicznie albo w wyniku inicjacji za pomocą nawiasów klamrowych albo w wyniku użycia wyrażenia new. Inicjacja tablicy za pomocą nawiasów klamrowych może wystąpić wyłącznie w wierszu deklaracji tablicy i ma postać: { element_1, element_2,... element_n

14 TABLICE - TWORZENIE 14 Np. int[] arr = { 1, 2, 7, 21 ; deklaruje tablicę o nazwie arr, tworzy ją i inicjuje jej elementy; kolejno: Wydzielana jest pamięć dla zmiennej arr, która będzie przechowywać referencję do obiektu-tablicy. Wydzielana jest pamięć (dynamicznie, na stercie) potrzebna do przechowania 4 liczb całkowitych (typu int), a następnie wartości 1,2,7,21 są zapisywane kolejno w tym obszarze pamięci. Adres tego obszaru (referencja) jest przypisywany zmiennej arr. Tworzenie tablicy za pomocą wyrażenia new ma postać new Typ[n]; gdzie: Typ - typ elementów tablicy n - rozmiar tablicy (liczba elementów tablicy) Np. int[] arr = new int[4];

15 TABLICE - INDEKSY 15 Rozmiar tablicy może być ustalony dynamicznie, w fazie wykonania programu. Np. int n; //... n uzyskuje wartość np. na skutek obliczeń //opartych na wprowadzonych przez użytkownika danych int[] tab = new int[n]; Ale po ustaleniu rozmiar nie może być zmieniony. Indeksy tablicy mogą być wyłącznie wartościami typu int. Mogą one być dowolnymi wyrażeniami, których wyliczenie daje wartość typu int. Ze względu na to, że wartości typu byte, char i short są w wyrażeniach "promowane" (przekształcane do typu int), to również wartości tych typów możemy używać przy indeksowaniu tablic. Niedopuszczalne natomiast jest użycie wartości typu long. Tablice zawsze indeksowane są poczynając od 0. Czyli pierwszy element n-elementowej tablicy ma indeks 0, a ostatni - indeks n-1.

16 TABLICE - INDEKSY Odwołanie do i-go elementu tablicy o nazwie tab ma postać: tab[i] Ta konstrukcja składniowa traktowana jest jako zmienna, stanowi nazwę zmiennej - zatem możemy tej zmiennej przypisywać wartości innych wyrażeń oraz możemy używać jej wartości w innych wyrażeniach. Odwołania do elementów tablic są przez JVM sprawdzane w trakcie wykonania programu pod względem poprawności indeksów. Java nie dopuści do odwołania się do nieistniejącego elementu tablicy lub podania indeksu mniejszego od 0. Próba takiego odwołania spowoduje powstanie wyjątku ArrayIndexOutOfBoundsException, na skutek czego zostanie wyprowadzony odpowiedni komunikat i wykonanie programu zostanie przerwane (ew. taki wyjątek możemy obsłużyć). Informacje o rozmiarze (liczbie elementów) tablicy możemy uzyskać za pomocą odwołania: nazwa_tablicy.length W Javie length nie jest nazwą metody (lecz pola niejawnie stworzonej klasy, opisującej tablicę), dlatego NIE STAWIAMY po nim nawiasów okrągłych 16

17 17 TABLICE - PRZYPISANIA Pętla przebiegająca przez wszystkie elementy tablicy tab: for (int i = 0; i < tab.length; i++)... tab[i]... ; Zmiennej tablicowej typu typa[] można przypisać wartość zmiennej tablicowej typu typb[] pod warunkiem, że dopuszczalne jest przypisanie wartości typb zmiennej typa. Każdej zmiennej tablicowej - jak każdej zmiennej zawierającej referencję - można przypisać wartość null Tak samo jak w przypadku innych obiektów - nie należy mylić przypisania zmiennych tablicowych (czyli referencji) z kopiowaniem zawartości tablic Na jedną tablicę może wskazywać kilka zmiennych tablicowych. Za pomocą każdej z nich (i operacji indeksowania) możemy zmieniać wartości elementów tej jednej tablicy, a odwołania do tej tablicy poprzez inne zmienne będą - oczywiście - uwzględniać te zmiany (np. pokazywać zmienione wartości).

18 TABLICE JAKO ARGUMENTY I WYNIKI METOD Metody mogą działać na tablicach, do których referencje otrzymują w postaci parametrów i mogą zwracać wyniki - referencje do tablic. W nagłówku metod - parametry (które mają oznaczać tablice; są referencjami do tablic) deklarujemy za pomocą T[], gdzie T - nazwa typu elementów tablicy. Oczywiście, gdy wywołujemy metodę - to na liście argumentów podajemy nazwy zmiennych tablicowych (już bez nawiasów kwadratowych). Jeśli metoda zwraca wynik - referencję do tablicy, to typem wyniku jest również odpowiedni typ tablicowy T[]. Dla uproszczenia dalej będziemy mówić, że metoda otrzymuje jako argument - tablicę i zwraca jako wynik - tablicę. Jest to skrót myślowy: pamiętajmy, że zawsze chodzi o referencje do tablic Np. metoda o nazwie dblval, która zwraca referencję do nowo utworzonej tablicy liczb całkowitych, wartości elementów której są podwojonymi wartościami elementów tablicy liczb całkowitych, do której referencja przekazana została metodzie jako argument, może być zdefiniowana i użyta następująco 18

19 TABLICE JAKO ARGUMENTY I WYNIKI METOD public class Test { static int[] dblval(int[] tab) { int[] w = new int[tab.length];//tablica for (int i=0; i < w.length; i++) w[i] = tab[i]*2; return w; public static void main(string[] args) { int[] a = {1, 2, 3, 4 ; int[] wynik = dblval(a); //for (int i=0; i < wynik.length; i++) //System.out.print(" " + wynik[i]) for(int el : wynik) System.out.print(" " + el); 19

20 TABLICE OBIEKTÓW 20 Pamiętamy, że w Javie argumenty przekazywane są metodom przez wartość. Gdy argumentem jest zmienna tablicowa - przekazywana jest referencja do tablicy - i tej oczywiście w metodzie nie jesteśmy w stanie efektywnie zmienić. Nic jednak nie stoi na przeszkodzie, by zmienić elementy przekazanej tablicy. Elementami tablicy mogą być referencje do dowolnych obiektów, np. String[] miasta = {"Warszawa", "Poznań", "Kraków"; Stwórzmy tablicę obiektów np. klasy Para Para[] tabpar = new Para[10]; Samo stworzenie tablicy nie tworzy jednak obiektów, do których referencje są elementami tablicy. Zatem elementy tablicy na początku będą miały domyślne wartości null - a dopiero po stworzeniu obiektów i przypisaniu referencji (ich adresów) elementom tablicy będziemy mogli używać elementów tablicy w operacjach na obiektach.

21 TABLICE OBIEKTÓW 21 Np. public class TabPar { public static void main(string[] args) { Para[] tabpar = new Para[10]; for (int i=0; i < tabpar.length; i++) tabpar[i] = new Para(i+1, i+2); // for-each for (Para par : tabpar) System.out.println(par); Button tabb = new Button[10]; for (int i=0; i<tabb.length; i++) tabb[i] = new Button(); //lub równoważnie: //for (Button b : tabb) // b = new Button();

22 TABLICE OBIEKTÓW 22 W przypadku tablic referencji do obiektów możemy użyć inicjatorów klamrowych Para[] tabpara = {new Para(1,1),new Para(2,3), new Para(4,5) ; Button[] b = {new Button("A"),new Button("B") ; Przypomnijmy, że obiektowe konwersje rozszerzające pozwalają przypisywać zmiennym oznaczającym obiekty klasy bazowej referencje do obiektów klas pochodnych. Zatem elementy tablicy mogą zawierać referencje wskazujące na obiekty różnych klas, pod warunkiem, że klasy te mają tę samą klasę bazową- określającą ogólny, niejako wspólny dla wszystkich, typ elementów tablicy. Np. dla nadklasy Zwierze i podklasy Pies z poprzedniego wykładu: Zwierze[] tabz = { new Zwierze(..), new Pies(...), new Pies() ;

23 TABLICE OBIEKTÓW Wygodną konstrukcją składniową Javy jest wyrażenie ad hoc tworzące i inicjujące tablicę referencji do obiektów: new klasaa[] { refb, refc,... Wyrażenie to tworzy tablicę typu klasaa[] i inicjuje ją referencjami podanymi w nawiasach klamrowych, przy czym każda z tych referencji może wskazywać obiekt klasy klasaa lub dowolnej klasy pochodnej od klasy klasaa. Wynikiem wyrażenia jest referencja do zmiennej tablicowej typu klasaa[]. Najczęściej wyrażenie to ma zastosowanie na liście argumentów wywołania metody, której parametrem jest tablica. W ten sposób możemy uzyskać efekt wywołania metody ze zmienną liczbą i (do pewnego stopnia) zmiennymi typami argumentów. Np., metodę xyz, której parametrem jest tablica zwierząt, możemy wywołać ze zmienną liczbą i typami zwierząt: xyz( new Zwierze[] {new Pies(...), new Pies(...), new Zwierze(...) ); xyz( new Zwierze[] {new Pies(...), new Pies(...) ); Pies p1 = new Pies(...),p2 = new Pies(...); xyz( new Zwierze[] { p1, p2 ); 23

24 TABLICE WIELOWYMIAROWE Tablice wielowymiarowe w Javie realizowane są jako tablice elementów, będących referencjami do tablic. Liczba wymiarów określana jest przez liczbę nawiasów [ ]. Przykładowe sposoby deklaracji i inicjacji: inicjalizacja w nawiasach klamrowych int[][] mac1 = { { 1, 2, 3, { 4, 5, 6, 7 ; dynamicznie int[][] mac2 = new int[n][m]; tablica składa się z wektorów o różnych rozmiarach, zadawanych przez tablicę w,np. dla int w[] = { 2, 3, 4 ; int n = 3; int[][] m3 = new int[n][]; //rozmiarami wierszy będą // zmienne dynamicznie for(int i = 0; i < m3.length; i++) { m3[i] = new int[w[i]]; Rozmiar 0-go wiersza tablicy m3 wynosi 2, 1-go wiersza 3, 2-go wiersza 4 24

25 TABLICE WIELOWYMIAROWE public class MultiArr { public static void main(string[] arg) { int w[] = { 2, 3, 4 ; int n = 3; //rozmiary wierszy będą ustalane dynamicznie: int[][] m3 = new int[n][]; for(int i = 0; i < m3.length; i++) { m3[i] = new int[w[i]]; for (int j = 0; j < m3[i].length; j++) m3[i][j] = i + j; for (int i = 0; i < m3.length; i++) { System.out.println("Rozmiar " + i + "-go wiersza " + m3[i].length); String out = " "; for(int j = 0; j < m3[i].length; j++) out += " " + m3[i][j]; System.out.println(out); 25

26 varargs Możemy również korzystać z konstrukcji zwanej "varargs" do przekazania dowolnej liczby wartości (parametrów aktualnych) do metody. Używamy "varargs", gdy nie wiemy jak wiele argumentów określonego typu będziemy przekazywać do metody. Jest to szybsze niż tworzenie tablic ręcznie. Aby użyć "varargs" należy po typie, a przed nazwą ostatniego parametru napisać trzy kropki " ". Taka metoda może być wywołana z dowolną liczbą parametrów, w tym bez żadnego parametru. public static void show(string... tab) { for (int i=0; i<tab.length; i++) System.out.println(tab[i]); Przykładowe wywołania funkcji show: show(); show("hello"); show("jak", "się", "masz"); show(new String[]{"A","B"); 26

27 KLASA Arrays 27 Klasa Arrays z pakietu java.util zawiera wiele użytecznych metod statycznych ułatwiających działania na tablicach wszelkich typów. Np. wypełnianie tablic pojedynczą wartością fill(tab, wartość) kopiowanie tablic copyof(tab, newlen) zwraca nową tablicę, przy czym jeżeli newlen==tab.length, mamy dokładną kopię tablicy, jeśli newlen>tab.length, to w nowej tablicy pojawią się na końcu dodatkowe elementy z wartościami zero ( 0, false lub null) jeśli newlen<tab.length, to zostanie skopiowane pierwsze newlen elem. tablicy tab kopiowania fragmentów tablic copyofrange(tab, fromindex, toindex) metoda tostring(tab), która wyprowadza napisową reprezentację tablicy

28 TYP WYLICZENIOWY enum 28 Definiowanie typu wyliczeniowego polega na umieszczeniu po słowie enum w nawiasach klamrowych elementów el wyliczenia, rozdzielonych przecinkami: [public] enum NazwaTypu { el1, el2,..., eln Typ wyliczeniowy jest rodzajem typu referencyjnego pochodnego od typu Enum. Przykład enum Pora {ZIMA, WIOSNA, LATO, JESIEN Pora-nazwa typu ZIMA, WIOSNA, LATO, JESIEN - stałe tego typu. Zmienna Pora p może przyjmować wartości Pora.ZIMA, Pora.WIOSNA, Pora.LATO, Pora.JESIEN oraz null. Zauważmy, że wartości te to stałe statyczne typu referencyjnego Pora.

29 TYP WYLICZENIOWY enum 29 Dla danych typów wyliczeniowych możemy stosować różne metody, np.: tostring() - zwraca wartość zmiennej w postaci napisu, np. Pora p = Pora.ZIMA; System.out.println(p); wypisze na konsoli napis ZIMA valueof(string s) statyczna metoda zwracająca wartość typu wyliczeniowego, odpowiadającą argumentowi s, np. Pora.valueOf( LATO ); zwróci wartość Pora.LATO ordinal() zwraca pozycję zmiennej w wyliczeniu (pozycje numerowane są od 0) np. Pora p=pora.wiosna; to p.ordinal()zwróci 1 values() - metoda statyczna zwracająca tablicę wszystkich elementów typu wyliczeniowego (Pora.ZIMA, Pora.WIOSNA, Pora.LATO, Pora.JESIEŃ) ==,!= dla porównania wartości typów wyliczeniowych

30 30 TYP WYLICZENIOWY enum Aby używać skróconych nazw np. ZIMA, zamiast Pora.Zima, należy statycznie zaimportować nazwy z wyliczenia (przypomnijmy, że import statyczny jest możliwy z klas umieszczonych w nazwanych pakietach) np. package enums; import static enums.pora.*; enum Pora{ZIMA, WIOSNA, LATO, JESIEŃ; public class PoryRoku{ public static void main(string[] args) { Pora p=zima; System.out.println(p);//wyprowadzi napis ZIMA Wyliczenia (enum) to klasy, o pewnych określonych właściwościach. Dla enum konstruktor jest prywatny i wywołuje się go poprzez użycie nawiasów () przy definiowaniu elementów wyliczenia. Nie można go wywołać spoza klasy i używać wyrażenia new do tworzenia wyliczeń.

31 TYP WYLICZENIOWY enum 31 Przykład. Enum z konstruktorem i metodami w osobnym pliku package enumtest; public enum PoraRoku{ ZIMA("pada śnieg", 5), WIOSNA("wszystko kwitnie", 2), LATO("wakacje", 3), JESIEŃ("deszcz", 2); private String opis;//pola private int ilemies; private PoraRoku(String opis, int ilemies){//konstruktor this.opis=opis; this.ilemies=ilemies; public String getopis(){return opis;//gettery public int getilemies() {return ilemies;

32 TYP WYLICZENIOWY enum Wykorzystanie tak zdefiniowanego wyliczenia PoraRoku package enumtest; import static enumtest.poraroku.*; import static javax.swing.joptionpane.*; public class EnumTest { public static void main(string[] args) { String nazwa = showinputdialog("podaj porę roku kapitalikami"); PoraRoku p = valueof(nazwa); System.out.println(p + " trwa " + p.getilemies() + " miesiecy, " + p.getopis()); System.out.println(JESIEŃ + " i " + ZIMA + " trwają" + (JESIEŃ.getIleMies() + ZIMA.getIleMies()) + " miesięcy."); for (PoraRoku pr : PoraRoku.values()) { System.out.println(pr + ": " + pr.getopis()); 32

33 Klasa Scanner - podsumowanie 33 Klasa java.util.scanner pozwala na łatwy rozbiór informacji tekstowej zawierającej napisy i dane typów prostych. Możliwości: działa na klasie String, plikach (File), strumieniach, kanałach, np. Scanner sc = new Scanner(System.in); Scanner sc1 = new Scanner(new File("myNumbers")); String input = "1 fish 2 fish red fish blue fish"; Scanner s = new Scanner(input).useDelimiter("\\s*fish\\s*"); do parsowania używa wyrażeń regularnych (w tym prostych separatorów, ale również dowolnych złożonych wyrażeń), łatwo rozbija teksty na wiersze (String nextline(), boolean hasnextline()), umie wyróżnić i skonwertować dane typów prostych (a także BigDecimal), pozwala na rozbiór, polegający nie tylko na wyróżnianiu symboli rozdzielonych separatorami, ale również na wyróżnianiu symboli pasujących do podanego wyrażenia regularnego (metoda findintext(...), metoda skip(...)), sposób rozbioru można zmieniać w trakcie skanowania tekstu, m.in. stosując rozliczne metody next...(), w tym takie, które pozwalają podawać różne wyrażenia regularne. pozwala na zlokalizowany rozbiór danych.

34 Scanner 34 Wybrane metody: String next() - pobieranie kolejnych elementów (ang. token) (napisów rozdzielonych separatorem domyślnie białe znaki) boolean hasnext() - sprawdza czy jest dostępny kolejny element String nextline() - pobieranie kolejnych wierszy boolean hasnextline() - sprawdza czy jest kolejna linia int nextint() - pobieranie kolejnego elementu jako liczbę całkowitą boolean hasnextint() - sprawdzanie czy następny element jest liczbą całkowitą int nextdouble() - pobieranie kolejnego elementu jako liczbę rzeczywistą boolean hasnextdouble() - sprawdzanie czy następny element jest liczbą rzeczywistą Scanner usedelimiter(string regex) - ustawia separator skanera na separator skonstruowany na podstawie parametru wyrażenia regularnego

35 35 Skaner - przykład import java.util.*; class Employee { String name; double salary; Employee(String n, double s) { name = n; salary = s; public double getsalary() { return salary; public String tostring() { return name + " " + salary;

36 Skaner - przykład 36 public class Skaner1{ public static void main(string[] args) { String s1 = "1 2 3"; Scanner scan1 = new Scanner(s1); int suma = 0; while (scan1.hasnextint()) suma += scan1.nextint(); System.out.println("Suma = " + suma);

37 Skaner - przykład String s2 = "Jan Kowalski\t1200\nA. Grabowski\t1500"; Employee[] tabempl = new Employee[2]; Scanner scan2 = new Scanner(s2); int i=0; //indeks tablicy while (scan2.hasnextline()) { String line = scan2.nextline(); //czytamy linie Scanner scan3 = new Scanner(line).useDelimiter("\\t"); String name = scan3.next(); double salary = scan3.nextdouble(); tabempl[i++]= new Employee(name, salary); double value = 0; //suma zarobków for (Employee emp : tabempl) { value += emp.getsalary(); System.out.println(emp); System.out.println("Suma zarobków: " + value); 37

38 Skaner wyrażenia regularne Klasa Skaner często korzysta z wyrażeń regularnych. zestaw separatorów, na których skaner rozkłada teksty metodą next()jest wyrażeniem regularnym. Domyślnie jest to wyrażenie określające białe znaki, ale możemy go zmienić metodą usedelimiter(string regex) lub usedelimiter(pattern p). Metoda reset() przywraca domyślny wzorzec separatorów. Co więcej separatory można zmieniać w trakcie skanowania metody next(string regex)i next(pattern p) zwracają kolejny symbol ograniczony separatorami oraz pasujący do wzorca podanego w wyrażeniu i ustawiają pozycje skanera zaraz za nim lub gdy kolejny symbol nie pasuje do wzorca zwracany jest wyjątek NoSuchElementException. Odpowiednie metody hasnext(wyr_regularne) pozwalają stwierdzić, czy symbol jest dostępny. Niejako odwrotnością metod next( ) są metody skip( ), które pomijają separatory i kolejny symbol pasujący do wzorca i ustawiają pozycję skanera za nim, lub przy braku dopasowania zwracany jest wyjątek NoSuchElementException. Metody findinline(wyr_reg) i findwithinhorizon(wyr_reg) wyszukuja w tekście i zwracają napis pasujący do wzorca ignorując separatory. można używać wyrażeń przy pobieraniu liczb nextint(), nextdouble()(przy pobieraniu liczb rzeczywistych skaner uwzględnia lokalizację) Użycie wyrażeń regularnych w klasie Scanner jest podobnie jak w klasie String oparte na odwołaniach do klas Pattern i Matcher, ale jest to wykorzystanie efektywne, bo stosowane wzorce są kompilowane jednokrotnie i przechowywane do ponownego użycia. 38

39 Wyrażenia regularne 39 Wyrażenie regularne stanowi opis wspólnych cech (składni) zbioru łańcuchów znakowych. Możemy sobie wyobrażać, że wyrażenie regularne jest pewnym wzorcem, który opisuje jeden lub wiele napisów, pasujących do tego wzorca. Wzorzec taki zapisujemy za pomocą specjalnej składni wyrażeń regularnych. Najprostszym wzorcem jest po prostu sekwencja znaków, które nie mają specjalnego znaczenia (sekwencja literałów). Np. wyrażenie regularne abc stanowi wzorzec opisujący trzy występujące po sobie znaki: a, b i c. Wzorzec ten opisuje jeden napis "abc". We wzorcach możemy stosować znaki specjalne (tzw. metaznaki) oraz tworzone za ich pomocą konstrukcje składniowe. Do znaków specjalnych należą: $ ^. * +? [ ] ( ) { \ Uwagi: jeśli chcemy traktować znaki specjalne jako literały - poprzedzamy je odwrotnym ukośnikiem \. w niektórych konstrukcjach składniowych metaznaki tracą specjalne znaczenie i są traktowane literalnie.

40 Wyrażenia regularne- podstawy 40 Za pomocą znaków specjalnych i tworzonych za ich pomocą bardziej rozbudowanych konstrukcji składniowych opisujemy m.in. wystąpienie jednego z wielu znaków - odpowiednie konstrukcje składniowe noszą nazwę klasy znaków (np. litery lub cyfry) : prosta klasa znaków stanowi ciąg znaków ujętych w [] np. [123abc] określa dowolny ze znaków 1,2,3,a,b,c zakres znaków (zapisywany z użyciem -), np. [0-9]- dowolna cyfra, [a-za-z] - dowolna mała i duża litera alfabetu angielskiego, [a-za-z0-9] - dowolna cyfra lub litera negacja klasy znaków jeśli pierwszym znakiem jest ^to dopasowanie nastąpi da każdego znaku oprócz wymienionych, np. do wzorca [^abc] będzie pasował każdy znak oprócz a,b,c klasy predefiniowane:. Dowolny znak (w zależności od opcji kompilacji wzorca może pasować lub nie do znaku końca wiersza) \d Cyfra: [0-9], \D Nie-cyfra: [^0-9] \s "Biały" znak: [ \t\n\x0b\f\r], \S Każdy znak, oprócz "białego": [^\s] \w Jeden ze znaków: [a-za-z0-9], znak "dopuszczalny w słowie", \W Znak nie będący literą lub cyfrą [^\w] \p{punct Znak punktuacji: [! "#$%&'()*+,-./:;<=>?@[\]^_`{ ~] \p{l Dowolna litera (Unicode) Ogólna reguła - klasy wprowadzane przez duże litery stanowią negację klas definiowanych przez małe litery. Przykład: wzorzec który dopasowuje teksty składające się z trzech dowolnych cyfr, następujących po nich trzech dowolnych znaków i dwóch znaków, nie będących cyframi: "\d\d\d...\d\d

41 Wyrażenia regularne- podstawy 41 logiczne kombinacje wyrażeń regularnych, np. a+ b jedno lub więcej wystąpień znaku a lub znak b; powtórzenia w składni wyrażeń regularnych opisywane przez kwantyfikatory, np. kwantyfikator * oznacza wystąpienie 0 lub więcej razy, a kwantyfikator + wystąpienie co najmniej raz: jeśli kwantyfikator następuje po literale, wymagane jest wystąpienie tego literału (liczba wystąpień zależy od kwantyfikatora, w szczególności może być 0), np. "12a+" oznacza 1, potem 2, następnie wystąpienie znaku 'a' jeden lub więcej razy (uwaga:"12a+" nie oznacza wystąpienia ciągu znaków 12a jeden lub więcej razy gdy kwantyfikator występuje po klasie znaków dotyczy dowolnego znaku z tej klasy,np. [abc]+ oznacza wystąpienie jeden lub więcej razy znaku a lub b, lub c jeśli kwantyfikator ma dotyczyć dowolnego wyrażenia regularnego X, należy zastosować konstrukcję składniową (X)symbol_kwantyfikatora albo (?:X)symbol_kwantyfikatora. Przykład. Wyrażenie regularne a.*z (a, kropka, gwiazdka, z) opisuje dowolną sekwencję znaków, zaczynających się od litery a i kończących się literą z. Do wzorca tego pasują np. następujące napisy: "az", "abz", "a x y z". Przykład: (?:12a)+ jedno lub więcej wystąpień napisu 12a.

42 Wyrażenia regularne- podstawy 42 Wyrażeń regularnych możemy użyć m.in. do: stwierdzenia czy dany napis pasuje do podanego przez wyrażenie wzorca, stwierdzenia czy dany napis zawiera podłańcuch znakowy pasujący do podanego wzorca i ew. uzyskania tego podnapisu i/lub jego pozycji w napisie, zamiany części napisu, pasujących do wzorca na inne napisy, wyróżniania części napisu, które są rozdzielane ciągami znaków pasującymi do podanego wzorca. W Javie służą do tego klasy pakietu java.util.regex: Pattern i Matcher. Przed zastosowaniem wyrażenia regularnego do składniowej analizy jakiegoś napisu musi ono być skompilowane. Obiekty klasy Pattern reprezentują skompilowane wyrażenia regularne, a obiekty te uzyskujemy za pomocą statycznych metod klasy Pattern - compile(...), mających za argument wyrażenie regularne. Obiekty klasy Matcher wykonują operacje wyszukiwania w tekście za pomocą interpretacji skompilowanego wyrażenia regularnego i dopasowywania go do tekstu lub jego częsci.

JAVA- wykład 3 Wprowadzanie danych Typ wyliczeniowy Tablice

JAVA- wykład 3 Wprowadzanie danych Typ wyliczeniowy Tablice JAVA- wykład 3 1 Wprowadzanie danych Typ wyliczeniowy Tablice Treści prezentowane w wykładzie zostały oparte o: Barteczko, JAVA Programowanie praktyczne od podstaw, PWN, 2014 http://docs.oracle.com/javase/8/docs/

Bardziej szczegółowo

Programowanie w środowisku graficznym- wykład 3

Programowanie w środowisku graficznym- wykład 3 1 Programowanie w środowisku graficznym- wykład 3 Wprowadzanie danych (okna dialogowe, Scanner) Tablice Klasa Scanner + podstawy wyrażeń regularnych Typ wyliczeniowy Treści prezentowane w wykładzie zostały

Bardziej szczegółowo

Programowanie w Javie - wykład 4

Programowanie w Javie - wykład 4 Klasy dziedziczenie Programowanie w Javie - wykład 4 Treści prezentowane w wykładzie zostały oparte o: Barteczko, JAVA Programowanie praktyczne od podstaw, PWN, 2014 http://docs.oracle.com/javase/8/docs/

Bardziej szczegółowo

Tablice i łańcuchy znakowe jako obiektowe typy danych. dr Jarosław Skaruz

Tablice i łańcuchy znakowe jako obiektowe typy danych. dr Jarosław Skaruz Tablice i łańcuchy znakowe jako obiektowe typy danych dr Jarosław Skaruz http://jareks.ii.uph.edu.pl jaroslaw@skaruz.com O czym będzie? Klasy String, StringBuffer, StringBuilder Tablice jednowymiarowe

Bardziej szczegółowo

Programowanie w Javie wykład 5

Programowanie w Javie wykład 5 Programowanie w Javie wykład 5 Pobieranie danych (skaner, okna dialogowe) Operacje na napisach (klasy String, StringTokenizer, StringBuffer, StringBuilder ) Podstawy wyrażeń regularnych Treści prezentowane

Bardziej szczegółowo

2. Tablice. Tablice jednowymiarowe - wektory. Algorytmy i Struktury Danych

2. Tablice. Tablice jednowymiarowe - wektory. Algorytmy i Struktury Danych 2. Tablice Tablica to struktura danych przechowująca elementy jednego typu (jednorodna). Dostęp do poszczególnych elementów składowych jest możliwy za pomocą indeksów. Rozróżniamy następujące typy tablic:

Bardziej szczegółowo

Podstawy i języki programowania

Podstawy i języki programowania Podstawy i języki programowania Laboratorium 2 - wprowadzenie do zmiennych mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 23 października 2017 1 / 26 mgr inż. Krzysztof Szwarc Podstawy i

Bardziej szczegółowo

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static), Tworzenie obiektów Dostęp do obiektów jest realizowany przez referencje. Obiekty w języku Java są tworzone poprzez użycie słowa kluczowego new. String lan = new String( Lancuch ); Obszary pamięci w których

Bardziej szczegółowo

Rozdział 4 KLASY, OBIEKTY, METODY

Rozdział 4 KLASY, OBIEKTY, METODY Rozdział 4 KLASY, OBIEKTY, METODY Java jest językiem w pełni zorientowanym obiektowo. Wszystkie elementy opisujące dane, za wyjątkiem zmiennych prostych są obiektami. Sam program też jest obiektem pewnej

Bardziej szczegółowo

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016 Wykład 1 3 marca 2016 Słowa kluczowe języka Java abstract, break, case, catch, class, const, continue, default, do, else, enum, extends, final, finally, for, goto, if, implements, import, instanceof, interface,

Bardziej szczegółowo

Podstawowe części projektu w Javie

Podstawowe części projektu w Javie Podstawowe części projektu w Javie Pakiet w Javie to grupa podobnych typów klas, interfejsów i podpakietów. Pakiet w Javie może być wbudowany lub zdefiniowany przez użytkownika. Istnieje wiele wbudowanych

Bardziej szczegółowo

Metody Metody, parametry, zwracanie wartości

Metody Metody, parametry, zwracanie wartości Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.com Metody Metody, parametry, zwracanie wartości Metody - co to jest i po co? Metoda to wydzielona część klasy, mająca

Bardziej szczegółowo

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki Informatyka I Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2019 1 Plan wykładu

Bardziej szczegółowo

Podstawy programowania skrót z wykładów:

Podstawy programowania skrót z wykładów: Podstawy programowania skrót z wykładów: // komentarz jednowierszowy. /* */ komentarz wielowierszowy. # include dyrektywa preprocesora, załączająca biblioteki (pliki nagłówkowe). using namespace

Bardziej szczegółowo

Tablice (jedno i wielowymiarowe), łańcuchy znaków

Tablice (jedno i wielowymiarowe), łańcuchy znaków Tablice (jedno i wielowymiarowe), łańcuchy znaków wer. 8 z drobnymi modyfikacjami! Wojciech Myszka Katedra Mechaniki i Inżynierii Materiałowej 2017-04-07 09:35:32 +0200 Zmienne Przypomnienie/podsumowanie

Bardziej szczegółowo

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h] 1. Typy. Java jest językiem programowania z silnym systemem kontroli typów. To oznacza, że każda zmienna, atrybut czy parametr ma zadeklarowany typ. Kompilator wylicza typy wszystkich wyrażeń w programie

Bardziej szczegółowo

Wykład 3 Składnia języka C# (cz. 2)

Wykład 3 Składnia języka C# (cz. 2) Wizualne systemy programowania Wykład 3 Składnia języka C# (cz. 2) 1 dr Artur Bartoszewski -Wizualne systemy programowania, sem. III- WYKŁAD Wizualne systemy programowania Metody 2 Metody W C# nie jest

Bardziej szczegółowo

Programowanie w Internecie. Java

Programowanie w Internecie. Java Programowanie w Internecie Java Autor: dr inż. Zofia Kruczkiewicz Literatura: L. Lemay, R. Cadenhead P. Naughton Krzysztof Barteczko Boone Barry Java 2 dla każdego Podręcznik Języka Programowania Java

Bardziej szczegółowo

Podstawy i języki programowania

Podstawy i języki programowania Podstawy i języki programowania Laboratorium 6 - klasa BigDecimal i String oraz tablice mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 16 listopada 2018 1 / 27 mgr inż. Krzysztof Szwarc Podstawy

Bardziej szczegółowo

Definiowanie własnych klas

Definiowanie własnych klas Programowanie obiektowe Definiowanie własnych klas Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski @ pwr.wroc.pl Definiowanie własnych klas Autor:

Bardziej szczegółowo

Pascal typy danych. Typy pascalowe. Zmienna i typ. Podział typów danych:

Pascal typy danych. Typy pascalowe. Zmienna i typ. Podział typów danych: Zmienna i typ Pascal typy danych Zmienna to obiekt, który może przybierać różne wartości. Typ zmiennej to zakres wartości, które może przybierać zmienna. Deklarujemy je w nagłówku poprzedzając słowem kluczowym

Bardziej szczegółowo

Wykład 2: Podstawy Języka

Wykład 2: Podstawy Języka Wykład 2: Podstawy Języka 1.wprowadzenie 2.podstawy języka 3.sterowanie 4.inicjacja i sprzątanie 5.kontrola dostępu 6.dziedziczenie 7.polimorfizm 8.obsługa błędów 9.kolekcje obiektów 10.wejście i wyjście

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Laboratorium 1. Wstęp do programowania w języku Java. Narzędzia 1. Aby móc tworzyć programy w języku Java, potrzebny jest zestaw narzędzi Java Development Kit, który można ściągnąć

Bardziej szczegółowo

Wykład 4: Klasy i Metody

Wykład 4: Klasy i Metody Wykład 4: Klasy i Metody Klasa Podstawa języka. Każde pojęcie które chcemy opisać w języku musi być zawarte w definicji klasy. Klasa definiuje nowy typ danych, których wartościami są obiekty: klasa to

Bardziej szczegółowo

MATERIAŁY POMOCNICZE DO ĆWICZENIA 3 Klasy i obiekty; atrybuty i metody

MATERIAŁY POMOCNICZE DO ĆWICZENIA 3 Klasy i obiekty; atrybuty i metody MATERIAŁY POMOCNICZE DO ĆWICZENIA 3 Klasy i obiekty; atrybuty i metody Java jest językiem obiektowym. Wartości typów innych niż proste są obiektami określonych klas. Obiekty stanowią instancje klas, których

Bardziej szczegółowo

Wykład 2 Składnia języka C# (cz. 1)

Wykład 2 Składnia języka C# (cz. 1) Wizualne systemy programowania Wykład 2 Składnia języka C# (cz. 1) 1 dr Artur Bartoszewski -Wizualne systemy programowania, sem. III- WYKŁAD Wizualne systemy programowania Budowa projektu 2 Struktura programu

Bardziej szczegółowo

Programowanie, algorytmy i struktury danych

Programowanie, algorytmy i struktury danych 1/44 Programowanie, algorytmy i struktury danych materiały do wykładu: http://cez.wipb.pl/moodle/ email: m.tabedzki@pb.edu.pl strona: http://aragorn.pb.bialystok.pl/~tabedzki/ Marek Tabędzki Wymagania

Bardziej szczegółowo

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02 METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się

Bardziej szczegółowo

Wprowadzanie danych: klasa Scanner

Wprowadzanie danych: klasa Scanner Aplikacje w środowisku Java - wykład 2 Tablice, Klasy String, Scanner, wyjątki, polimorfizm, klasy abstrakcyjne klasy wewnętrze, klasy anonimowe bloki inicjalizacyjne Treści prezentowane w wykładzie zostały

Bardziej szczegółowo

Dokumentacja do API Javy.

Dokumentacja do API Javy. Dokumentacja do API Javy http://java.sun.com/j2se/1.5.0/docs/api/ Klasy i obiekty Klasa jest to struktura zawierająca dane (pola), oraz funkcje operujące na tych danych (metody). Klasa jest rodzajem szablonu

Bardziej szczegółowo

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 26 marca kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 26 marca kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40 Programowanie w C++ Wykład 5 Katarzyna Grzelak 26 marca 2018 9 kwietnia 2018 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40 Pojęcia z poprzedniego wykładu Podział programu na funkcje podział na niezależne

Bardziej szczegółowo

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak Java język programowania obiektowego Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak 1 Język Java Język Java powstał w roku 1995 w firmie SUN Microsystems Java jest językiem: wysokiego

Bardziej szczegółowo

Programowanie w Javie Lista nr 1. Wybieramy kategorię Java, a wśród Projektów Java Application i [NEXT]

Programowanie w Javie Lista nr 1. Wybieramy kategorię Java, a wśród Projektów Java Application i [NEXT] Programowanie w Javie Lista nr 1 1. Jak uruchomić pierwszy program w Javie? Przykład przy wykorzystaniu NetBeans: File->New Project Wybieramy kategorię Java, a wśród Projektów Java Application i [NEXT]

Bardziej szczegółowo

Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni. Wykład 6. Karol Tarnowski A-1 p. Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni Wykład 6 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Wskaźnik do pliku Dostęp do pliku: zapis, odczyt,

Bardziej szczegółowo

Języki programowania obiektowego Nieobiektowe elementy języka C++

Języki programowania obiektowego Nieobiektowe elementy języka C++ Języki programowania obiektowego Nieobiektowe elementy języka C++ Roman Simiński roman.siminski@us.edu.pl www.programowanie.siminskionline.pl Przetwarzanie tablic znaków Łańcuchy znakowe jako tablice znaków

Bardziej szczegółowo

Język JAVA podstawy. wykład 2, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Język JAVA podstawy. wykład 2, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna Język JAVA podstawy wykład 2, część 1 1 Język JAVA podstawy Plan wykładu: 1. Rodzaje programów w Javie 2. Tworzenie aplikacji 3. Tworzenie apletów 4. Obsługa archiwów 5. Wyjątki 6. Klasa w klasie! 2 Język

Bardziej szczegółowo

Wykład 8: klasy cz. 4

Wykład 8: klasy cz. 4 Programowanie obiektowe Wykład 8: klasy cz. 4 Dynamiczne tworzenie obiektów klas Składniki statyczne klas Konstruktor i destruktory c.d. 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD

Bardziej szczegółowo

Java Podstawy. Michał Bereta

Java Podstawy. Michał Bereta Prezentacja współfinansowana przez Unię Europejską ze środków Europejskiego Funduszu Społecznego w ramach projektu Wzmocnienie znaczenia Politechniki Krakowskiej w kształceniu przedmiotów ścisłych i propagowaniu

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Java P. L. Krzysztof Lemay, Naughton Barteczko R. Cadenhead JAVA, Java Podręcznik 2 wykłady dla kaŝdego Języka i ćwiczenia Programowania

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 2: Wstęp do języka Java 3/4/2013 S.Deniziak: Programowanie obiektowe - Java 1 Cechy języka Java Wszystko jest obiektem Nie ma zmiennych globalnych Nie ma funkcji globalnych

Bardziej szczegółowo

Klasy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 13

Klasy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java   1 / 13 Klasy Klasa to grupa obiektów, które mają wspólne właściwości, a obiekt jest instancją klasy. Klasa w języku Java może zawierać: pola - reprezentują stan obiektu (odniesienie do pola z kropką), methods

Bardziej szczegółowo

Aplikacje w środowisku Java

Aplikacje w środowisku Java Aplikacje w środowisku Java Materiały do zajęć laboratoryjnych Klasy i obiekty - wprowadzenie mgr inż. Kamil Zieliński Katolicki Uniwersytet Lubelski Jana Pawła II 2018/2019 Klasa zbiór pól i metod Obiekt

Bardziej szczegółowo

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Programowanie obiektowe Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Java P. L. Lemay, Naughton R. Cadenhead Java Podręcznik 2 dla kaŝdego Języka Programowania Java Linki Krzysztof Boone oprogramowania

Bardziej szczegółowo

Języki i metody programowania Java. Wykład 2 (część 2)

Języki i metody programowania Java. Wykład 2 (część 2) Języki i metody programowania Java INF302W Wykład 2 (część 2) Autor Dr inż. Zofia Kruczkiewicz 1 Struktura wykładu 1. Identyfikacja danych reprezentowanych przez klasy podczas opracowania koncepcji prostego

Bardziej szczegółowo

PARADYGMATY PROGRAMOWANIA Wykład 4

PARADYGMATY PROGRAMOWANIA Wykład 4 PARADYGMATY PROGRAMOWANIA Wykład 4 Metody wirtualne i polimorfizm Metoda wirualna - metoda używana w identyczny sposób w całej hierarchii klas. Wybór funkcji, którą należy wykonać po wywołaniu metody wirtualnej

Bardziej szczegółowo

Niezwykłe tablice Poznane typy danych pozwalają przechowywać pojedyncze liczby. Dzięki tablicom zgromadzimy wiele wartości w jednym miejscu.

Niezwykłe tablice Poznane typy danych pozwalają przechowywać pojedyncze liczby. Dzięki tablicom zgromadzimy wiele wartości w jednym miejscu. Część XIX C++ w Każda poznana do tej pory zmienna może przechowywać jedną liczbę. Jeśli zaczniemy pisać bardziej rozbudowane programy, okaże się to niewystarczające. Warto więc poznać zmienne, które mogą

Bardziej szczegółowo

Platformy Programistyczne Podstawy języka Java

Platformy Programistyczne Podstawy języka Java Platformy Programistyczne Podstawy języka Java Agata Migalska 6 maja 2014 Plan wykładu 1 Sztuka wysławiania się w języku Java 2 Cały świat jest obiektem 3 Kolekcje 4 Zmienne i metody statyczne 5 Słowo

Bardziej szczegółowo

Wykład 4. Tablice. Pliki

Wykład 4. Tablice. Pliki Informatyka I Wykład 4. Tablice. Pliki Dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2017 Tablice Tablica uporządkowany zbiór elementów określonego typu Każdy element tablicy posiada

Bardziej szczegółowo

Wykład 4 Delegat (delegate), właściwości indeksowane, zdarzenie (event) Zofia Kruczkiewicz

Wykład 4 Delegat (delegate), właściwości indeksowane, zdarzenie (event) Zofia Kruczkiewicz Wykład 4 Delegat (delegate), właściwości indeksowane, zdarzenie (event) Zofia Kruczkiewicz Zagadnienia 1. Delegaty wiązane, właściwości indeksowane 2. Delegaty niewiązane 3. Nowa wersja kalkulatora, delegaty

Bardziej szczegółowo

Języki programowania. Przetwarzanie tablic znaków. Część druga. Autorzy Tomasz Xięski Roman Simiński

Języki programowania. Przetwarzanie tablic znaków. Część druga. Autorzy Tomasz Xięski Roman Simiński Języki programowania Część druga Przetwarzanie tablic znaków Autorzy Tomasz Xięski Roman Simiński Niniejsze opracowanie zawiera skrót treści wykładu, lektura tych materiałów nie zastąpi uważnego w nim

Bardziej szczegółowo

Podstawy programowania. Podstawy C# Tablice

Podstawy programowania. Podstawy C# Tablice Podstawy programowania Podstawy C# Tablice Tablica to indeksowany zbiór elementów Tablica jest typem referencyjnym (deklaracja tworzy tylko referencję, sama tablica musi być utworzona oddzielnie, najprościej

Bardziej szczegółowo

JDK można pobrać ze strony http://www.oracle.com/technetwork/java/javase/downloads/jdk-7u2-download-1377129.html

JDK można pobrać ze strony http://www.oracle.com/technetwork/java/javase/downloads/jdk-7u2-download-1377129.html Program napisany w języku Java, w wyniku kompilacji da kod bajtowy, plik z rozszerzeniem.class. Nie jest to plik wykonywalny samodzielnie w systemie operacyjnym tak jak pliki.exe. Uruchomienie gotowego

Bardziej szczegółowo

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość 1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość 2. Poprawna definicja wskażnika b to: a) float *a, **b = &a; b) float

Bardziej szczegółowo

Podstawy programowania

Podstawy programowania Podstawy programowania Część siódma Przetwarzanie tablic znaków Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.programowanie.siminskionline.pl Niniejsze opracowanie zawiera skrót treści wykładu,

Bardziej szczegółowo

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1 Podstawy programowania. Wykład Funkcje Krzysztof Banaś Podstawy programowania 1 Programowanie proceduralne Pojęcie procedury (funkcji) programowanie proceduralne realizacja określonego zadania specyfikacja

Bardziej szczegółowo

Część 4 życie programu

Część 4 życie programu 1. Struktura programu c++ Ogólna struktura programu w C++ składa się z kilku części: część 1 część 2 część 3 część 4 #include int main(int argc, char *argv[]) /* instrukcje funkcji main */ Część

Bardziej szczegółowo

Podstawy i języki programowania

Podstawy i języki programowania Podstawy i języki programowania Laboratorium 8 - wprowadzenie do obsługi plików tekstowych i wyjątków mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 11 grudnia 2017 1 / 34 mgr inż. Krzysztof

Bardziej szczegółowo

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre) Uwagi dotyczące notacji kodu! Wyrazy drukiem prostym -- słowami języka VBA. Wyrazy drukiem pochyłym -- inne fragmenty kodu. Wyrazy w [nawiasach kwadratowych] opcjonalne fragmenty kodu (mogą być, ale nie

Bardziej szczegółowo

JAVA W SUPER EXPRESOWEJ PIGUŁCE

JAVA W SUPER EXPRESOWEJ PIGUŁCE JAVA W SUPER EXPRESOWEJ PIGUŁCE Obiekt Obiekty programowe to zbiór własności i zachowań (zmiennych i metod). Podobnie jak w świecie rzeczywistym obiekty posiadają swój stan i zachowanie. Komunikat Wszystkie

Bardziej szczegółowo

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018 Informatyka I Klasy i obiekty. Podstawy programowania obiektowego dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2018 Plan wykładu Pojęcie klasy Deklaracja klasy Pola i metody klasy

Bardziej szczegółowo

Programowanie obiektowe zastosowanie języka Java SE

Programowanie obiektowe zastosowanie języka Java SE Programowanie obiektowe zastosowanie języka Java SE Wstęp do programowania obiektowego w Javie Autor: dr inŝ. 1 Java? Java język programowania obiektowo zorientowany wysokiego poziomu platforma Javy z

Bardziej szczegółowo

Podstawy Programowania C++

Podstawy Programowania C++ Wykład 3 - podstawowe konstrukcje Instytut Automatyki i Robotyki Warszawa, 2014 Wstęp Plan wykładu Struktura programu, instrukcja przypisania, podstawowe typy danych, zapis i odczyt danych, wyrażenia:

Bardziej szczegółowo

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej Programowanie obiektowe Interfejsy Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski pwr.wroc.pl Interfejsy Autor: Paweł Rogaliński Instytut Informatyki,

Bardziej szczegółowo

Aplikacje w Javie- wykład 11 Wątki-podstawy

Aplikacje w Javie- wykład 11 Wątki-podstawy 1 Aplikacje w Javie- wykład 11 Wątki-podstawy Treści prezentowane w wykładzie zostały oparte o: Barteczko, JAVA Programowanie praktyczne od podstaw, PWN, 2014 http://docs.oracle.com/javase/8/docs/ http://docs.oracle.com/javase/9/docs/

Bardziej szczegółowo

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 12. Karol Tarnowski A-1 p.

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 12. Karol Tarnowski A-1 p. Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy Wykład 12 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji (1) Obsługa łańcuchów znakowych getchar(), putchar()

Bardziej szczegółowo

JAVA. Platforma JSE: Środowiska programistyczne dla języka Java. Wstęp do programowania w języku obiektowym. Opracował: Andrzej Nowak

JAVA. Platforma JSE: Środowiska programistyczne dla języka Java. Wstęp do programowania w języku obiektowym. Opracował: Andrzej Nowak JAVA Wstęp do programowania w języku obiektowym Bibliografia: JAVA Szkoła programowania, D. Trajkowska Ćwiczenia praktyczne JAVA. Wydanie III,M. Lis Platforma JSE: Opracował: Andrzej Nowak JSE (Java Standard

Bardziej szczegółowo

Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane

Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane Stałe Oprócz zmiennych w programie mamy też stałe, które jak sama nazwa mówi, zachowują swoją wartość przez cały czas działania programu. Można

Bardziej szczegółowo

Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut.

Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut. Konstruktory Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut. Rozpatrzmy przykład przedstawiający klasę Prostokat: class

Bardziej szczegółowo

MATERIAŁY DO ZAJĘĆ II

MATERIAŁY DO ZAJĘĆ II MATERIAŁY DO ZAJĘĆ II Zmienne w C# Spis treści I. Definicja zmiennej II. Hierarchia typów (CTS) III. Typy wbudowane IV. Deklaracja zmiennych V. Literały VI. Pobieranie i wypisywanie wartości zmiennych

Bardziej szczegółowo

Programowanie w Javie wykład 6

Programowanie w Javie wykład 6 Programowanie w Javie wykład 6 Wyjątki Operacje na napisach cd (klasy StringBuffer, StringBuilder ) Podstawy wyrażeń regularnych Treści prezentowane w wykładzie zostały oparte o: Barteczko, JAVA Programowanie

Bardziej szczegółowo

W powyższym kodzie utworzono wyliczenie dni tygodnia.

W powyższym kodzie utworzono wyliczenie dni tygodnia. Typ wyliczeniowy (zwane również enumeration lub enum) jest to typ danych składający się z zestawu nazwanych wartości. Do zmiennej, która została zadeklarowana jako typ wyliczeniowy może być przypisane

Bardziej szczegółowo

Programowanie w Javie - wykład 3

Programowanie w Javie - wykład 3 Pakiety import Klasy dziedziczenie Programowanie w Javie - wykład 3 Treści prezentowane w wykładzie zostały oparte o: Barteczko, JAVA Programowanie praktyczne od podstaw, PWN, 2014 http://docs.oracle.com/javase/8/docs/

Bardziej szczegółowo

Laboratorium 3: Tablice, tablice znaków i funkcje operujące na ciągach znaków. dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski

Laboratorium 3: Tablice, tablice znaków i funkcje operujące na ciągach znaków. dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski Laboratorium 3: Tablice, tablice znaków i funkcje operujące na ciągach znaków dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski 7 kwietnia 2014 1. Wprowadzenie Pierwsza część instrukcji zawiera informacje

Bardziej szczegółowo

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Polimorfizm, metody wirtualne i klasy abstrakcyjne Programowanie obiektowe Polimorfizm, metody wirtualne i klasy abstrakcyjne Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski pwr.wroc.pl Polimorfizm,

Bardziej szczegółowo

1 Podstawy c++ w pigułce.

1 Podstawy c++ w pigułce. 1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,

Bardziej szczegółowo

Typy danych, zmienne i tablice. Tomasz Borzyszkowski

Typy danych, zmienne i tablice. Tomasz Borzyszkowski Typy danych, zmienne i tablice Tomasz Borzyszkowski Silne typy Javy Java jest językiem wyposażonym w silny system typów. Wywodzi się stąd siła i bezpieczeństwo tego języka. Co to znaczy silny system typów?

Bardziej szczegółowo

Java Programowanie Obiektowe Ćwiczenie 1- wprowadzenie

Java Programowanie Obiektowe Ćwiczenie 1- wprowadzenie Java Programowanie Obiektowe Ćwiczenie 1- wprowadzenie 1. Cel ćwiczenia i zakres Poznanie środowiska IntelliJ IDEA Maven narzędzie do budowanie projektów typy podstawowe i tablice, instrukcje warunkowe,

Bardziej szczegółowo

Java EE produkcja oprogramowania

Java EE produkcja oprogramowania Java EE produkcja oprogramowania PPJ PODSTAWY PROGRAMOWANIA W JAVIE PODSTAWY JĘZYKA JAVA 1 Warszawa, 2016Z 2 Ogólna charakterystyka języka Java 3 Java 1/2 Język programowania Java został opracowany przez

Bardziej szczegółowo

Wprowadzenie do języka Java

Wprowadzenie do języka Java WSNHiD, Programowanie 2 Lab. 1 [ część 1 ] Wprowadzenie do języka Java Wprowadzenie Język programowania Java jest obiektowym językiem programowania. Powstał w 1995 i od tej pory był intensywnie rozwijany.

Bardziej szczegółowo

Lab 9 Podstawy Programowania

Lab 9 Podstawy Programowania Lab 9 Podstawy Programowania (Kaja.Gutowska@cs.put.poznan.pl) Wszystkie kody/fragmenty kodów dostępne w osobnym pliku.txt. Materiały pomocnicze: Wskaźnik to specjalny rodzaj zmiennej, w której zapisany

Bardziej szczegółowo

Kurs programowania. Wykład 3. Wojciech Macyna. 22 marca 2019

Kurs programowania. Wykład 3. Wojciech Macyna. 22 marca 2019 Wykład 3 22 marca 2019 Klasy wewnętrzne Klasa wewnętrzna class A {... class B {... }... } Klasa B jest klasa wewnętrzna w klasie A. Klasa A jest klasa otaczajac a klasy B. Klasy wewnętrzne Właściwości

Bardziej szczegółowo

Podejście obiektowe. Tablice obiektów Przykład 1 metody i atrybuty statyczne oraz niestatyczne

Podejście obiektowe. Tablice obiektów Przykład 1 metody i atrybuty statyczne oraz niestatyczne Podejście obiektowe. Tablice obiektów Przykład 1 metody i atrybuty statyczne oraz niestatyczne import javax.swing.*; import java.util.*; public class Napis4 { String wynik = ""; static int ile_obiektow

Bardziej szczegółowo

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna Język JAVA podstawy Wykład 3, część 3 1 Język JAVA podstawy Plan wykładu: 1. Konstrukcja kodu programów w Javie 2. Identyfikatory, zmienne 3. Typy danych 4. Operatory, instrukcje sterujące instrukcja warunkowe,

Bardziej szczegółowo

Kompilacja javac prog.java powoduje wyprodukowanie kilku plików o rozszerzeniu.class, m.in. Main.class wykonanie: java Main

Kompilacja javac prog.java powoduje wyprodukowanie kilku plików o rozszerzeniu.class, m.in. Main.class wykonanie: java Main Język obiektowy Wykład 13 Programowanie obiektowe z lotu ptaka, str 1 James Gosling, Mike Sheridan, Patrick Naughton Sun Microsystems 1995(20latmłodszyodC) C jest językiem proceduralnym Java jest językiem

Bardziej szczegółowo

Programowanie obiektowe Wykład 3. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/21

Programowanie obiektowe Wykład 3. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/21 Dariusz Wardowski dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/21 Przydzielanie pamięci Poniżej przedstawiono w C++ dwie klasy obrazujące sposób rezerwacji pamięci. class Osoba char imie[30];

Bardziej szczegółowo

dziedziczenie - po nazwie klasy wystąpią słowa: extends nazwa_superklasy

dziedziczenie - po nazwie klasy wystąpią słowa: extends nazwa_superklasy PODSTAWOWE ELEMENTY JĘZYKA JAVA TYPY DANYCH, OPERATORY I INSTRUKCJE 1. Definicja klasy, dziedziczenie, implementowanie metod interfejsów class nazwa_klasy //ciało klasy Klasa: przed słowem class moŝe wystąpić

Bardziej szczegółowo

Informacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost;

Informacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost; Klasy w C++ są bardzo ważnym narzędziem w rękach programisty. Klasy są fundamentem programowania obiektowego. Z pomocą klas będziesz mógł tworzyć lepszy kod, a co najważniejsze będzie on bardzo dobrze

Bardziej szczegółowo

Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków

Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków mgr inż. Maciej Lasota Version 1.0, 13-05-2017 Spis treści Wyjątki....................................................................................

Bardziej szczegółowo

Zasady programowania Dokumentacja

Zasady programowania Dokumentacja Marcin Kędzierski gr. 14 Zasady programowania Dokumentacja Wstęp 1) Temat: Przeszukiwanie pliku za pomocą drzewa. 2) Założenia projektu: a) Program ma pobierać dane z pliku wskazanego przez użytkownika

Bardziej szczegółowo

Języki i metody programowania Java INF302W Wykład 2 (część 1)

Języki i metody programowania Java INF302W Wykład 2 (część 1) Języki i metody programowania Java INF302W Wykład 2 (część 1) Autor Dr inż. Zofia Kruczkiewicz Autor: Zofia Kruczkiewicz, Języki i metody programowania Java, wykład 2, część 1 1 Struktura wykładu 1. Identyfikacja

Bardziej szczegółowo

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

Java - tablice, konstruktory, dziedziczenie i hermetyzacja Java - tablice, konstruktory, dziedziczenie i hermetyzacja Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak PLAN WYKŁADU zmienne tablicowe konstruktory klas dziedziczenie hermetyzacja

Bardziej szczegółowo

Języki Programowania II Wykład 3. Java podstawy. Przypomnienie

Języki Programowania II Wykład 3. Java podstawy. Przypomnienie Języki Programowania II Wykład 3 Java podstawy Przypomnienie Analiza, projektowanie, programowanie, testowanie, wdrażanie Iteracyjnie nie kaskadowo Przypadki użycia = opowiastki o używaniu systemu = wymagania

Bardziej szczegółowo

C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów

C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów Operatory są elementami języka C++. Istnieje zasada, że z elementami języka, takimi jak np. słowa kluczowe, nie można dokonywać żadnych zmian, przeciążeń, itp. PRZECIĄŻANIE OPERATORÓW Ale dla operatorów

Bardziej szczegółowo

Tablice. Monika Wrzosek (IM UG) Podstawy Programowania 96 / 119

Tablice. Monika Wrzosek (IM UG) Podstawy Programowania 96 / 119 Tablice Tablica to struktura danych, która może przechowywać wiele wartości tego samego typu. Na przykład tablica może zawierać: 10 wartości typu int opisujących liczbę studentów przyjętych na kierunek

Bardziej szczegółowo

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU Inicjalizacja agregatowa zmiennej tablicowej int a[5] = 1,2,3,4,5 INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU Struktury są również agregatami, dlatego: struct X double f; char c; X x1 = 1, 2.2, 'c' Ale

Bardziej szczegółowo

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p. Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni Wykład 3 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Abstrakcja funkcyjna Struktury Klasy hermetyzacja

Bardziej szczegółowo

> C++ dynamiczna alokacja/rezerwacja/przydział pamięci. Dane: Iwona Polak. Uniwersytet Śląski Instytut Informatyki

> C++ dynamiczna alokacja/rezerwacja/przydział pamięci. Dane: Iwona Polak. Uniwersytet Śląski Instytut Informatyki > C++ dynamiczna alokacja/rezerwacja/przydział pamięci Dane: Iwona Polak iwona.polak@us.edu.pl Uniwersytet Śląski Instytut Informatyki 1429536600 > Dzisiejsze zajęcia sponsorują słówka: new oraz delete

Bardziej szczegółowo

Wykład 5: Klasy cz. 3

Wykład 5: Klasy cz. 3 Programowanie obiektowe Wykład 5: cz. 3 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD - podstawy Konstruktor i destruktor (część I) 2 Konstruktor i destruktor KONSTRUKTOR Dla przykładu

Bardziej szczegółowo

Moduł 4 - Tworzenie obiektów i metod

Moduł 4 - Tworzenie obiektów i metod MODUŁ 4 - TWORZENIE OBIEKTÓW I METOD 32 Moduł 4 - Tworzenie obiektów i metod Zawartość jednostki Po zrealizowaniu jednostki będziesz w stanie: wskazać różnice między zmienną typu prostego, a obiektem (zmienną

Bardziej szczegółowo

Język ludzki kod maszynowy

Język ludzki kod maszynowy Język ludzki kod maszynowy poziom wysoki Język ludzki (mowa) Język programowania wysokiego poziomu Jeśli liczba punktów jest większa niż 50, test zostaje zaliczony; w przeciwnym razie testu nie zalicza

Bardziej szczegółowo