Programowanie obiektowe C++

Save this PDF as:
 WORD  PNG  TXT  JPG

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

Download "Programowanie obiektowe C++"

Transkrypt

1 Programowanie obiektowe C++ Programowanie zorientowane obiektowo Wykład 1 Witold Dyrka 8/10/2012

2 Prawa autorskie itp. Wiele slajdów do tego wykładu powstało w oparciu o: slajdy Bjarne Stroustrupa do kursu Foundations of Engineering II (C++) prowadzonego w Texas A&M University przykładowe programy Jerzego Grębosza do książki Symfonia C++ Standard Dziękuję dr inż. lek. med. Marcinowi Masalskiemu za udostępnienie materiałów do wykładu w roku ak. 2010/11

3 Program wykładów 1. Wprowadzenie. Obsługa błędów. Klasy (8/10) 2. Abstrakcja i enkapsulacja: klasy i struktury. (15/10) 3. Polimorfizm: przeładowanie funkcji i operatorów. Konwersje (22/10) 4. Zarządzanie pamięcią: konstruktory, destruktory, pryzpisanie (29/10) 5. Dziedziczenie. Polimorfizm dynamiczny 6. Programowanie uogólnione: szablony (5/11) (12/11)

4 Materiały Literatura Bjarne Stroustrup. Programowanie: Teoria i praktyka z wykorzystaniem C++. Helion (2010) Jerzy Grębosz. Symfonia C++ standard. Edition 2000 (2008) Dowolny podręcznik programowania zorientowanego obiektowo w języku C++ w standardzie ISO 98 Środowisko programistyczne Microsoft Visual C++ (rekomendowane) Dowolne środowisko korzystające z GCC

5 Warunki zaliczenia Kolokwium zaliczeniowe 19/11/2012 w terminie wykładu jedno kolokwium poprawkowe w tyg /11/2012 zaliczenie od >50% Uwaga! jeśli ktoś ma braki z programowania zapraszam na wykład pt. Języki programowania w pt o do sali 322/A-1

6 Zasady Nie toleruję plagiatów Nie toleruję ściągania dot. programów na laboratorium dot. kolokwium i sprawdzianów na laboratorium Zachęcam do korzystania z konsultacji ze mną: PN 10-12, ŚR , PT pok. 118/D-1 z innymi Prowadzącymi pomiędzy sobą

7 Plan na dziś Błędy Źródła i rodzaje Mechanizm wyjątków Odrobaczanie Klasy

8 Błędy w programie Podstawowym celem programisty jest poprawność kodu uświadomiłem sobie, że od teraz dużą część mojego życia spędzę szukając i poprawiając moje własne błędy. Maurice Wilkes Przypuszczam, że unikanie, znajdowanie i poprawianie błędów stanowi 95% lub więcej wysiłku w poważnym tworzeniu oprogramowania. Bjarne Stroustrup

9 Błędy w programie Źródła błędów Rodzaje błędów Sprawdzanie argumentów funkcji Raportowanie błędów Wykrywanie błędów Wyjątki Debugowanie (odrobaczanie) Testowanie

10 Źródła błędów Słaba specyfikacja (80% dużych projektów wysypuje się przez złą specyfikację) Niekompletny program Nieoczekiwane argumenty funkcji (np. funkcja sqrt() nie przyjmie wartości -1) Niespodziewane dane wejściowe (np. uszkodzony plik z danymi) Niespodziewany stan Błędy logiczne

11 Rodzaje błędów Błędy kompilacji błędy typów błędy składni Błędy konsolidacji Błędy czasu wykonania (ang. run-time) wykryte przez system ( program się wysypał ) wykryte przez biblioteki (wyjątki) wykryte przez kod użytkownika Błędy logiczne wykryte przez programistę/testera

12 Oczekiwania Każdy program 1)Powinien wytworzyć pożądany wynik dla każdego poprawnego wejścia 2)Powinien zwrócić sensowny komunikat o błędzie dla niepoprawnych danych wejściowych Twój program 3)Nie musi przejmować się błędami sprzętu 4)Nie musi przejmować się błędami systemu 5)Może zakończyć działanie po znalezieniu błędu

13 Błędy argumentów funkcji Kompilator sprawdza liczbę i typy argumentów funkcji: int pole(int wysokosc, int szerokosc) { return wysokosc*szerokosc; } int x1 = pole(7); // błąd kompilacji: zła liczba argumentów int x2 = pole("siedem", 2); // błąd kompilacji: argument 1 ma zły typ int x3 = pole(7, 10); // ok int x5 = pole(7.5, 10); // działa, ale: 7.5 zostanie obcięte do 7; // większość kompilatorów zgłosi ostrzeżenie int x = pole(10, -7); // typy się zgadzają, ale wartość -7 nie ma sensu!!!

14 Obsługa błędów int a = 10; int b = -7; int x = pole(a, b); // typy się zgadzają, ale wartość -7 nie ma sensu!!! Tym błędem musi zająć się programista Dwie strategie sprawdzania poprawności argumentów sprawdza wywołujący funkcję + wie jak obsłużyć błąd - musi znać specyfikację funkcji, dłuższy i nieczytelny kod sprawdza funkcja wywoływana + prostszy, bardziej elegancki kod - nie wie co zrobić z błędem Pomysł: funkcja zwraca informacje o błędzie, a wywołujący decyduje co z tym zrobić

15 Raportowanie błedów (1) Zwracanie wartości błędu int pole(int wysokosc, int szerokosc) // zwraca -1 jeśli błędne dane { if(wysokosc <0 szerokosc < 0) return -1; return wysokosc*szerokosc; } Wywołujący musi (może?) sprawdzić wynik i podjąć działanie int z = pole(x,y); if (z<0) { cerr<<"problem z obliczaniem pola"; return; // Kolejny problem: jaką wartość błędu może zwracać funkcja max()?

16 Raportowanie błędów (2) Ustawianie znacznika błędu: int errno = 0; int pole(int wysokosc, int szerokosc) { if(wysokosc <0 szerokosc < 0) errno = 7; return wysokosc*szerokosc; } Wywołujący musi (może?) sprawdzić wynik i podjąć działanie int z = pole(x,y); if (errno==7) { cerr<<"problem z obliczaniem pola"; return; // Te same problemy co poprzednio nie używaj!!

17 Raportowanie błedów (3) Zgłaszanie wyjątków: int pole(int wysokosc, int szerokosc) { if (wysokosc <0 szerokosc < 0) throw 1; // wyrzucamy wyjątek nr 1 return wysokosc*szerokosc; } Wywołujący próbuje czy we fragmencie kodu nie zgłoszono wyjątku, chwyta go i decyduje co zrobić try { int z = pole(x,y); // jeżeli pole() nie zgłosiło wyjątku } // wykonuje przypisanie i idzie dalej catch(int& wyjatek) { // jeżeli pole() zgłosiło wyjątek typu int, obsługuje go: if (wyjatek==1) cerr << "Ups! Problem z obliczaniem pola"; }

18 Raportowanie błedów (3) Zgłaszanie wyjątków: int pole(int wysokosc, int szerokosc) { if (wysokosc <0 szerokosc < 0) throw string("zle pole"); // wyrzucamy wyjątek return wysokosc*szerokosc; // Zle pole } Wywołujący próbuje czy we fragmencie kodu nie zgłoszono wyjątku, chwyta go i decyduje co zrobić try { int z = pole(x,y); // jeżeli pole() nie zgłosiło wyjątku } // wykonuje przypisanie i idzie dalej catch(string& wyjatek) { // jeżeli pole() zgłosiło wyjątek typu string, obsługuje go: cerr << "Ups! Problem z obliczaniem pola: " << wyjatek; }

19 Raportowanie błedów (3) Zgłaszanie wyjątków: class Zle_pole { }; // Tak w C++ definiujemy typ użytkownika, tutaj typ błędu int pole(int wysokosc, int szerokosc) { if (wysokosc <0 szerokosc < 0) throw Zle_pole(); // wyrzucamy obiekt typu Zle_pole return wysokosc*szerokosc; } Wywołujący próbuje czy we fragmencie kodu nie zgłoszono wyjątku, chwyta go i decyduje co zrobić try { int z = pole(x,y); // jeżeli pole() nie zgłosiło wyjątku } // wykonuje przypisanie i idzie dalej catch(zle_pole&) { // jeżeli pole() zgłosiło wyjątek Zle_pole(), obsługuje go: cerr << "Ups! Problem z obliczaniem pola"; }

20 Wyjątki - idea Program, czyli grupa funkcji przybywa na dzikie i niebezpieczne tereny. Jedna z nich wyrusza na rekonesans Sygnalizuje go rzucając wyjątek: Wtem, napotyka problem: msw-pttk.org.pl Reszta chwyta, że żółta flara oznacza misia i podejmuje dalsze działania artofmanliness.com

21 Dlaczego wyjątki? Obsługa wyjątków jest uniwersalna Nie można o nich zapomnieć: wystarczy, że umieścisz całość programu w bloku try catch, a program zakończy działanie, jeśli wyjątek pojawi się i nie zostanie obsłużony Prawie każdy typ błędu można zgłosić wyjątkiem Jednak to wciąż programista musi zastanowić się co zrobić z każdym wyjątkiem

22 Wyjątki błąd poza zakresem int main() try { vector<int> v(10); // wektor 10-ciu int-ów for (int i = 0; i<v.size(); ++i) v.at(i) = i; // ustawiamy wartości // at(i) = [i] + wyjątek zakresu for (int i = 0; i<=10; ++i) // drukujemy 10 wartości (???) cout << "v[" << i << "] == " << v.at(i) << endl; } catch (out_of_range&) { // wyjątek out_of_range cerr << "ups któryś indeks wektora poza zakresem\n"; } catch ( ) { cerr << "ups jakiś błąd\n"; } // wszystkie inne wyjątki

23 Odrobaczanie Na proces debugowania składa się: 1) Zauważenie, że coś działa inaczej niż oczekiwano 2) Sprawdzenie co tak na prawdę się dzieje 3) Poprawienie A jak tego nie robić? dopóki (program nie sprawia wrażenia działającego) { zaglądam tu i tam, szukając czegoś co wygląda dziwnie; zmieniam to, aby wyglądało lepiej ; }

24 Krok 1: Zadbaj o strukturę programu Jeżeli masz znaleźć błąd program musi być łatwy do czytania 1) Komentuj wyjaśniaj swoje pomysły 2) Używaj znaczących nazw 3) Rób wcięcia trzymaj się jednego stylu 4) Podziel kod na małe funkcje - unikaj funkcji dłuższych niż strona kodu 5) Jeśli to możliwe, unikaj skomplikowanego kodu, np. zagnieżdżonych pętli i instrukcji warunkowych 6) Używaj funkcji bibliotecznych są sprawdzone

25 Krok 2: Skompiluj program Jeśli program się nie kompiluje - sprawdź: 1) Czy zakończyłeś literały łańcuchowe ('') i znakowe (')? 2) Czy zakończyłeś każdy blok ({ }) 3) Czy zamknąłeś wszystkie nawiasy? 4) Czy każda nazwy została zadeklarowana? 5) Czy każda nazwa została zadeklarowana przed użyciem? 6) Czy zakończyłeś każdą instrukcję średnikiem?

26 Krok 3: Prześledź program Podejdź do tego jakbyś był komputerem Czy dane na wyjściu spełniają Twoje oczekiwania? Warto wyrzucić wartości paru zmiennych na wyjście błędu: cerr << "x == " << x << ", y == " << y << '\n'; Uważaj musisz zobaczyć to co programu rzeczywiście robi, nie to co uważasz, że powinien robić: for (int i=0; 0<month.size(); ++i) { // błąd! for( int i = 0; i<=max; ++j) { Gdzie szukać błędu? // podwójny błąd!

27 Krok 3: Gdzie szukać błędu? Wprowadź testy poczytalności (ang. sanity checks), if (liczba_elementow<0) throw runtime_error("ujemna liczba elementow"); if (maksymalny_sensowny<liczba_elementow) throw runtime_error("nieoczekiwanie wielka liczba elementow"); if (x<y) throw runtime_error("niemozliwosc: x<y"); Napisz je tak, aby nie trzeba było ich usuwać z kodu w momencie, gdy program będzie wyglądał na ukończony

28 Krok 3: Gdzie szukać błędu? Warunki początkowe i końcowe class Zly_argument { }; class Zle_pole { }; int pole(int wysokosc, int szerokosc) { if (wysokosc <0 szerokosc < 0) throw Zly_argument(); int p = wysokosc*szerokosc; if (p<0) throw Zle_pole(); return p; } Zasady Zawsze przemyśl warunki początkowe i końcowe Zapisz je przynajmniej w postaci komentarza Sprawdzaj, gdy szukasz błędu Kiedy w przykładzie warunek początkowy będzie spełniony, a końcowy nie?

29 Krok 3: Gdzie szukać błędu? Sprawdź przypadki brzegowe Czy zainicjowałeś każdą zmienną sensowną wartością? Czy funkcja dostała prawidłowe argumenty? Czy funkcja zwróciła prawidłową wartość? Czy poprawnie obsłużyłeś pierwszy i ostatni element? (np. pętli) Czy poprawnie obsłużyłeś przypadki puste? (brak elementów, brak wejścia) Czy poprawnie otworzyłeś plik? Czy rzeczywiście wczytałeś wejście i zapisałeś wyjście?

30 Kilka ogólnych zasad Jeżeli nie możesz znaleźć błędu, szukasz w złym miejscu Nie dowierzaj swojemu przekonianiu, że wiesz gdzie jest błąd Nie zgaduj, kieruj się danymi na wyjściu: Szukaj od miejsca, gdzie wiesz, że jest ok Co się dzieje dalej, dlaczego? Szukaj przed miejscem, gdzie dostałeś zły wynik Co mogło się wydarzyć? Znalezłeś robaka? Zastanów się, czy naprawienie go rozwiązuje cały problem Często szybka poprawka wprowadza nowe błędy Jeśli programista mówi: znalazłem ostatni błąd, to żartuje;-)

31 Plan na dziś Obsługa błędów Klasy Dane i funkcje składowe Implementacja i interfejs Konstruktory

32 Klasy Klasa bezpośrednio reprezentuje pojęcie w programie Jeśli o czymś można myśleć jako o oddzielnym bycie, to prawdopodobnie może to być klasą lub obiektem klasy Np. wektor, macierz, strumień wejściowy, łańcuch znakowy, szybka transformata Fouriera, kontroler zaworu, ramię robota, sterownik urządzenia, obraz na ekranie, okno dialogowe, wykres, okno, odczyt temperatur, zegar Klasa jest typem zdefiniowanym przez użytkownika, który określa jak tworzyć i używać obiekty tego typu Klasy po raz pierwszy wprowadzono w języku Simula67

33 Klasa, obiekt, zmienna class Pralka { // ta klasa nazywa się Pralka // Ciało klasy //... }; Pralka czerwona; // definicja zmiennej czerwona typu Pralka // powstaje nowy obiekt, który otrzymuje nazwę czerwona int numer; // definicja zmiennej numer typu int // powstaje nowy obiekt, który otrzymuje nazwę numer Pralka *wskaznik; // definicja wskaznika na typ Pralka Pralka &ruda = czerwona; // definicja referencji ruda do zmiennej czerwona Słowniczek: Klasa typ danych użytkownika Obiekt miejsce w pamięci przechowujące dane określonego typu Zmienna nazwany obiekt

34 ` string model int nr_programu float temperatura_prania

35 Dane składowe klasy class Pralka { public: // ta klasa nazywa się Pralka // int nr_programu; // dane składowe (przechowują informacje) float temperatura_prania; string model; // }; Pralka czerwona; czerwona.model = Frania ; // dostęp do danej składowej model zmiennej czerwona cout << czerwona.model; // Frania Pralka& ruda = czerwona; ruda.model = Frania ; Pralka *wskaznik = &czerwona; wskaznik->model = Frania ; // dostęp przez referencję // ustawienie wskaznika na zmiennej czerwona // dostęp przez wskaźnik

36 ` int pierz(int program) int pierz(int program) { void wiruj(int minuty); }

37 Funkcje składowe klasy (metody) class Pralka { // ta klasa nazywa się Pralka public: int pierz(int program); // funkcje składowe (robią coś z danymi składowymi) void wiruj(int minuty); int nr_programu; // dane składowe (przechowują informacje) float temperatura_prania; string model; float krochmalenie(void); // znowu funkcja składowa }; int x = czerwona.pierz(1); // wywołanie funkcji składowej pierz() dla zmiennej czerwona int y = ruda.pierz(2); // wywołanie funkcji składowej pierz() dla referencji ruda wskaznik = &czerwona; int z = wskaznik->pierz(3); // wywołanie funkcji składowej pierz() dla wskaznika

38 Definiowanie funkcji składowych wewnątrz ciała funkcji inline class osoba { public: string nazwisko; int wiek; // Definicje funkcji składowych: ==================================== void zmien(const string &napis, int lata) { if (napis.length()==0 lata<0) throw runtime_error("niepoprawne dane"); nazwisko = napis; wiek = lata; } // void wypisz() { cout << "\t" << nazwisko << ", lat: " << wiek << endl; } }; Kiedy? - Tylko krótkie funkcje, których ciało zajmuje do 2 linijek. - Kompilator (jeśli zechce) potraktuje je jako funkcje w linii, czyli inline

39 Definiowanie funkcji składowych na zewnątrz ciała funkcji class osoba { public: string nazwisko; int wiek; // Deklaracje funkcji składowych: ================================ void zmien(const string &napis, int lata); void wypisz(); }; // Definicje funkcji składowych: ==================================== void osoba::zmien(const string &napis, int lata) { if (napis.length()==0 lata<0) throw runtime_error("niepoprawne dane"); nazwisko = napis; wiek = lata; } // void osoba::wypisz() { cout << "\t" << nazwisko << ", lat: " << wiek << endl; }

40 Inicjowanie obiektu typu użytkownika konstruktor Tworząc własny typ danych określamy sposób inicjowania obiektów tego typu: służy do tego konstruktor Konstruktor zawsze nazywa się tak samo jak klasa Nie podajemy zwracanego typu class osoba { public: string nazwisko; int wiek; // Deklaracje konstruktorów: =================================== osoba(const string &napis, int lata) : nazwisko(napis), wiek(lata) { if (napis.length()==0 lata<0) throw runtime_error("niepoprawna inicjalizacja"); }; osoba(int lata) : nazwisko("nn"), wiek(lata) { if (lata<0) throw runtime_error("niepoprawna inicjalizacja"); }; // Deklaracje funkcji składowych: ================================ void zmien(const string &napis, int lata); void wypisz(); };

41 Inicjowanie obiektu typu użytkownika konstruktor (2) class osoba { public: string nazwisko; int wiek; // Deklaracje konstruktorów: =================================== osoba(const string &napis, int lata) : nazwisko(napis), wiek(lata) { if (napis.length()==0 lata<0) throw runtime_error("niepoprawna inicjalizacja"); }; osoba(int lata) : nazwisko("nn"), wiek(lata) { if (lata<0) throw runtime_error("niepoprawna inicjalizacja"); }; //... }; osoba os1("nowak", 22); osoba os1 = osoba("nowak", 22); // ok: os1.nazwisko = "Nowak", os1.wiek = 22 // ok: dokładnie to samo co wyżej osoba os2(25); // ok: os2.nazwisko = "NN", os2.wiek = 25 osoba os3("kowalski"); // błąd: nie ma konstruktora o składni osoba(const string&) osoba os4; // błąd: klasa nie ma konstruktora bezargumentowego osoba os5("nowak", -22); // błąd wyjątek: Niepoprawna inicjalizacja

42 Konstruktor domyślny class osoba { public: string nazwisko; int wiek; // Deklaracje funkcji składowych: ================================ void zmien(const string &napis, int lata); void wypisz(); }; Klasa MUSI posiadać konstruktor jeśli nie zdefiniowany tworzony jest konstruktor domyślny: osoba os6; bezargumentowy: osoba() nie robi nic // ok: os6.nazwisko= "", os6.wiek =

43 Dziś najważniejsze było to, że... Mechanizm wyjątków - efektywne narzędzie obsługi błędów Jeśli programista mówi: znalazłem ostatni błąd, to żartuje;-) Klasa reprezentuje pojęcie Obiekt jest ucieleśnieniem tej klasy Zmienna jest nazwanym obiektem Każda klasa posiada konstruktor

44 A za tydzień... Abstrakcja i enkapsulacja

Programowanie obiektowe C++

Programowanie obiektowe C++ Programowanie obiektowe C++ Programowanie zorientowane obiektowo Wykład 1 Witold Dyrka witold.dyrka@pwr.wroc.pl 10/10/2011 Prawa autorskie itp. Wiele slajdów do tego wykładu powstało w oparciu o: slajdy

Bardziej szczegółowo

Programowanie obiektowe, wykład nr 6. Klasy i obiekty

Programowanie obiektowe, wykład nr 6. Klasy i obiekty Dr hab. inż. Lucyna Leniowska, prof. UR, Zakład Mechatroniki, Automatyki i Optoelektroniki, IT Programowanie obiektowe, wykład nr 6 Klasy i obiekty W programowaniu strukturalnym rozwój oprogramowania oparto

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

Wykład I. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Wykład I. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej Wykład I - semestr II Kierunek Informatyka Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2015 c Copyright 2015 Janusz Słupik Zaliczenie przedmiotu Do zaliczenia przedmiotu niezbędne jest

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

Szablony funkcji i szablony klas

Szablony funkcji i szablony klas Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2011 Bogdan Kreczmer Niniejszy dokument

Bardziej szczegółowo

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta 16.09.2006. Strona 1 z 26. Powrót. Full Screen. Zamknij.

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta 16.09.2006. Strona 1 z 26. Powrót. Full Screen. Zamknij. Programowanie Sobera Jolanta 16.09.2006 Strona 1 z 26 1 Wprowadzenie do programowania 4 2 Pierwsza aplikacja 5 3 Typy danych 6 4 Operatory 9 Strona 2 z 26 5 Instrukcje sterujące 12 6 Podprogramy 15 7 Tablice

Bardziej szczegółowo

Programowanie obiektowe C++

Programowanie obiektowe C++ Programowanie obiektowe C++ Programowanie zorientowane obiektowo Wykład 5 Witold Dyrka witold.dyrka@pwr.wroc.pl 5/11/2012 Prawa autorskie itp. Niektóre slajdy do tego wykładu powstało w oparciu o: książkę

Bardziej szczegółowo

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main. Część XVI C++ Funkcje Jeśli nasz program rozrósł się już do kilkudziesięciu linijek, warto pomyśleć o jego podziale na mniejsze części. Poznajmy więc funkcje. Szybko się przekonamy, że funkcja to bardzo

Bardziej szczegółowo

dr inż. Jarosław Forenc

dr inż. Jarosław Forenc Informatyka 2 Politechnika Białostocka - Wydział Elektryczny semestr III, studia stacjonarne I stopnia Rok akademicki 2015/2016 Pracownia nr 1 (21/23.09.2015) Rok akademicki 2015/2016, Pracownia nr 1 2/22

Bardziej szczegółowo

Języki i paradygmaty programowania Wykład 2. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/18

Języki i paradygmaty programowania Wykład 2. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/18 Dariusz Wardowski dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/18 Literatura Języki i paradygmaty programowania Wykład 2 1. C. S. Horstman, G. Cornell, core Java 2 Podstawy, Helion 2003

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

Wyjątki. Streszczenie Celem wykładu jest omówienie tematyki wyjątków w Javie. Czas wykładu 45 minut.

Wyjątki. Streszczenie Celem wykładu jest omówienie tematyki wyjątków w Javie. Czas wykładu 45 minut. Wyjątki Streszczenie Celem wykładu jest omówienie tematyki wyjątków w Javie. Czas wykładu 45 minut. Wydaje się, że żaden użytkownik oprogramowania nie lubi, kiedy stosowany program nagle zawiesza się,

Bardziej szczegółowo

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

Programowanie obiektowe Wykład 1. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/20 Dariusz Wardowski dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/20 O mnie prowadzący wykład: Dariusz Wardowski pokój: A334 dyżur: środa, godz. 10.00 12.00 e-mail: wardd@math.uni.lodz.pl

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

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

Wykład VII. Programowanie. dr inż. Janusz Słupik. Gliwice, 2014. Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

Wykład VII. Programowanie. dr inż. Janusz Słupik. Gliwice, 2014. Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik Wykład VII Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2014 c Copyright 2014 Janusz Słupik Kompilacja Kompilator C program do tłumaczenia kodu źródłowego na język maszynowy. Preprocesor

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

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

1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami

1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami 1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami Celem tych zajęć jest zrozumienie i oswojenie z technikami programowania przy pomocy wskaźników w języku C++. Proszę przeczytać rozdział 8.

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 2 Marcin Młotkowski 4 marca 2015 Plan wykładu 1 2 3 4 5 Marcin Młotkowski Programowanie obiektowe 2 / 47 Krótki opis C Obiektowy, z kontrolą typów; automatyczne odśmiecanie;

Bardziej szczegółowo

C++ - [4-7] Polimorfizm

C++ - [4-7] Polimorfizm Slajd 1 z 14 C++ - [4-7] Polimorfizm Nysa 2004-2013. Autor: Wojciech Galiński. wersja dnia 20 maja 2013 r. Slajd 2 z 14 Polimorfizm i klasa polimorficzna POLIMORFIZM (cytat z Wikipedii) (wielopostaciowość)

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

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

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

Informatyka II Laboratorium 3 : Programowania obiektowe C++ - dziedziczenie

Informatyka II Laboratorium 3 : Programowania obiektowe C++ - dziedziczenie Materiały: Informatyka II Laboratorium : Programowania obiektowe C++ - dziedziczenie Książka: Symfonia C++, Jerzy Grębosz. Wykład: www.materialy.prz-rzeszow.pl, Informatyka II, dr Wojciech Rząsa. Zasoby

Bardziej szczegółowo

PROE wykład 1. dr inż. Jacek Naruniec

PROE wykład 1. dr inż. Jacek Naruniec PROE wykład 1 dr inż. Jacek Naruniec Informacje o przedmiocie Prowadzący: dr inż. Jacek Naruniec, J.Naruniec@ire.pw.edu.pl, pokój 11, konsultacje w poniedziałki w godzinach 14-16 Strona przedmiotu: ztv.ire.pw.edu.pl/proe

Bardziej szczegółowo

Politechnika Krakowska im. Tadeusza Kościuszki. Karta przedmiotu. obowiązuje w roku akademickim 2012/2013. Przedmioty kierunkowe

Politechnika Krakowska im. Tadeusza Kościuszki. Karta przedmiotu. obowiązuje w roku akademickim 2012/2013. Przedmioty kierunkowe Wydział Fizyki, Matematyki i Informatyki Politechnika Krakowska im. Tadeusza Kościuszki Karta przedmiotu obowiązuje w roku akademickim 01/013 Kierunek studiów: Informatyka Forma studiów: Stacjonarne Profil:

Bardziej szczegółowo

Część XVII C++ Funkcje. Funkcja bezargumentowa Najprostszym przypadkiem funkcji jest jej wersja bezargumentowa. Spójrzmy na przykład.

Część XVII C++ Funkcje. Funkcja bezargumentowa Najprostszym przypadkiem funkcji jest jej wersja bezargumentowa. Spójrzmy na przykład. Część XVII C++ Funkcje Funkcja bezargumentowa Najprostszym przypadkiem funkcji jest jej wersja bezargumentowa. Spójrzmy na przykład. 2 3 Tworzymy deklarację i definicję funkcji o nazwie pobierzln() Funkcja

Bardziej szczegółowo

Obiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody

Obiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody Obiektowy PHP Czym jest obiekt? W programowaniu obiektem można nazwać każdy abstrakcyjny byt, który programista utworzy w pamięci komputera. Jeszcze bardziej upraszczając to zagadnienie, można powiedzieć,

Bardziej szczegółowo

Efekty uboczne błędów

Efekty uboczne błędów Obsługa wyjątków Efekty uboczne błędów Fragment kodu programu jest bezpieczny (ang. exception-safe) jeżeli błędy, które wystąpią w trakcie przetwarzania tego kodu nie będą powodowały niepożądanych efektów

Bardziej szczegółowo

Wprowadzenie w dziedziczenie. Klasa D dziedziczy klasę B: Klasa B klasa bazowa (base class), klasa D klasa pochodna (derived class).

Wprowadzenie w dziedziczenie. Klasa D dziedziczy klasę B: Klasa B klasa bazowa (base class), klasa D klasa pochodna (derived class). Wprowadzenie w dziedziczenie Klasa D dziedziczy klasę B: B klasa bazowa D klasa pochodna Klasa B klasa bazowa (base class), klasa D klasa pochodna (derived class). Najpierw jest tworzona klasa bazowa,

Bardziej szczegółowo

Podstawy programowania (1)

Podstawy programowania (1) Podstawy programowania (1) doc. dr inż. Tadeusz Jeleniewski Konsultacje pokój 19 Poniedziałki, godz. 9:45 11:20 e-mail: tadeusz.jeleniewski@neostrada.pl Podstawy programowania (1) - wykład 1. Wprowadzenie

Bardziej szczegółowo

Wprowadzenie do projektu QualitySpy

Wprowadzenie do projektu QualitySpy Wprowadzenie do projektu QualitySpy Na podstawie instrukcji implementacji prostej funkcjonalności. 1. Wstęp Celem tego poradnika jest wprowadzić programistę do projektu QualitySpy. Będziemy implementować

Bardziej szczegółowo

Politechnika Krakowska im. Tadeusza Kościuszki. Karta przedmiotu. obowiązuje studentów rozpoczynających studia w roku akademickim 2012/2013

Politechnika Krakowska im. Tadeusza Kościuszki. Karta przedmiotu. obowiązuje studentów rozpoczynających studia w roku akademickim 2012/2013 Politechnika Krakowska im. Tadeusza Kościuszki Karta przedmiotu obowiązuje studentów rozpoczynających studia w roku akademickim 01/013 Wydział Fizyki, Matematyki i Informatyki Kierunek studiów: Informatyka

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

Laboratorium 1 - Programowanie proceduralne i obiektowe

Laboratorium 1 - Programowanie proceduralne i obiektowe Laboratorium 1 - Programowanie proceduralne i obiektowe mgr inż. Kajetan Kurus 4 marca 2014 1 Podstawy teoretyczne 1. Programowanie proceduralne (powtórzenie z poprzedniego semestru) (a) Czym się charakteryzuje?

Bardziej szczegółowo

int suma; pralka czerwona; // definicja egzemplarza obiektu pralka * wskaŝ; // definicja wskaźnika pralka & ruda = czerwona; // definicja referencji

int suma; pralka czerwona; // definicja egzemplarza obiektu pralka * wskaŝ; // definicja wskaźnika pralka & ruda = czerwona; // definicja referencji Pojęcie klasy Typ zmiennych informuje: o ich rozmiarze w pamięci, jaki rodzaj informacji mogą zawierać, jakie działania moŝna na nich wykonywać. W C++ dane mogą zostać powiązane z funkcjami - znaczy to,

Bardziej szczegółowo

Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach?

Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach? Część XVIII C++ Funkcje Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach? Umiemy już podzielić nasz

Bardziej szczegółowo

KARTA PRZEDMIOTU. Egzamin / zaliczenie. Egzamin / zaliczenie. ocenę*

KARTA PRZEDMIOTU. Egzamin / zaliczenie. Egzamin / zaliczenie. ocenę* WYDZIAŁ PODSTAWOWYCH PROBLEMÓW TECHNIKI Zał. nr 4 do ZW 33/01 KARTA PRZEDMIOTU Nazwa w języku polskim: Programowanie w języku C Nazwa w języku angielskim C language programming Kierunek studiów (jeśli

Bardziej szczegółowo

C++ - [1-3] Debugowanie w Qt Creator

C++ - [1-3] Debugowanie w Qt Creator Slajd 1 z 10 C++ - [1-3] Debugowanie w Qt Creator Nysa 2004-2013. Autor: Wojciech Galiński. wersja dnia 15 maja 2013 r. Slajd 2 z 10 Pojęcia związane z debugowaniem DEBUGOWANIE (z ang. debugging odrobaczanie)

Bardziej szczegółowo

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. 1. Rodzaje pamięci używanej w programach Pamięć komputera, dostępna dla programu,

Bardziej szczegółowo

Multimedia JAVA. Historia

Multimedia JAVA. Historia Multimedia JAVA mgr inż. Piotr Odya piotrod@sound.eti.pg.gda.pl Historia 1990 rozpoczęcie prac nad nowym systemem operacyjnym w firmie SUN, do jego tworzenia postanowiono wykorzystać nowy język programowania

Bardziej szczegółowo

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016 Wykład 2 17 marca 2016 Dziedziczenie Klasy bazowe i potomne Dziedziczenie jest łatwym sposobem rozwijania oprogramowania. Majac klasę bazowa możemy ja uszczegółowić (dodać nowe pola i metody) nie przepisujac

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

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje. Podstawowe elementy proceduralne w C++ Program i wyjście Zmienne i arytmetyka Wskaźniki i tablice Testy i pętle Funkcje Pierwszy program // Niezbędne zaklęcia przygotowawcze ;-) #include using

Bardziej szczegółowo

Konwersje napis <-> liczba Struktury, unie Scanf / printf Wskaźniki

Konwersje napis <-> liczba Struktury, unie Scanf / printf Wskaźniki Konwersje napis liczba Struktury, unie Scanf / printf Wskaźniki Konwersje liczba napis Ćwiczenia 1. Napisz aplikację, która na wejściu dostaje napis postaci W Roku Pańskim 1345, władca Henryk 12,

Bardziej szczegółowo

Pytania sprawdzające wiedzę z programowania C++

Pytania sprawdzające wiedzę z programowania C++ Pytania sprawdzające wiedzę z programowania C++ Wstęp 1. Zaprezentuj mechanikę tworzenia programu napisanego w języku C++. 2. Co to jest kompilacja? 3. Co to jest konsolidacja? 4. Co to jest kod wykonywalny?

Bardziej szczegółowo

DYNAMICZNE PRZYDZIELANIE PAMIECI

DYNAMICZNE PRZYDZIELANIE PAMIECI DYNAMICZNE PRZYDZIELANIE PAMIECI Pamięć komputera, dostępna dla programu, dzieli się na cztery obszary: kod programu, dane statyczne ( np. stałe i zmienne globalne programu), dane automatyczne zmienne

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

Nowe słowa kluczowe. Komentarze. Wskaźniki typu void. class, delete, new, friend,... /* Komentarz w C i C++ */ // Komentarz w C++ (do końca wiersza)

Nowe słowa kluczowe. Komentarze. Wskaźniki typu void. class, delete, new, friend,... /* Komentarz w C i C++ */ // Komentarz w C++ (do końca wiersza) Różnice między C i C++ (Rozszerzenia C++) Nowe słowa kluczowe class, delete, new, friend,... Komentarze /* Komentarz w C i C++ */ // Komentarz w C++ (do końca wiersza) Wskaźniki typu void W C wskaźniki

Bardziej szczegółowo

Warunek wielokrotnego wyboru switch... case

Warunek wielokrotnego wyboru switch... case Warunek wielokrotnego wyboru switch... case Działanie instrukcji switch jest zupełnie inne niż w przypadku instrukcji if o czym będziesz mógł się przekonać w niniejszym rozdziale. Różnice pomiędzy instrukcjami

Bardziej szczegółowo

Podstawy programowania - 1

Podstawy programowania - 1 Podstawy programowania - 1 doc. dr inż. Tadeusz Jeleniewski Wykład: sobota B, godz. 10.30 12.55 sala 12 Laboratorium: sobota B, godz. 13.00 15.25 sala 2 sobota B, godz. 15.30-17.55 sala 2 e-mail: tadeusz.jeleniewski@pwr.wroc.pl

Bardziej szczegółowo

Wprowadzenie do programowanie obiektowego w języku C++

Wprowadzenie do programowanie obiektowego w języku C++ Wprowadzenie do programowanie obiektowego w języku C++ Część czwarta Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu, lektura

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 i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych Obiekty reprezentują pewne pojęcia, przedmioty, elementy rzeczywistości. Obiekty udostępniają swoje usługi: metody operacje,

Bardziej szczegółowo

Języki i paradygmaty programowania

Języki i paradygmaty programowania Języki i paradygmaty programowania WYDZIAŁ ELEKTRONIKI i INFORMATYKI dr inż. Robert Arsoba Politechnika Koszalińska Wydział Elektroniki i Informatyki POLITECHNIKA KOSZALIŃSKA 2009/2010 Materiały do wykładu

Bardziej szczegółowo

1 Dziedziczenie. 1.1 Koncepcja dziedziczenia. Ćwiczenie 3

1 Dziedziczenie. 1.1 Koncepcja dziedziczenia. Ćwiczenie 3 Ćwiczenie 3 1 Dziedziczenie Ćwiczenie to poświęcone jest poznaniu podstawowych zagadnień związanych dziedziczeniem procesem budowania nowych klas, w oparciu o klasy istniejące. Obejmuje m.in. ćwiczenia

Bardziej szczegółowo

Typy klasowe (klasy) 1. Programowanie obiektowe. 2. Założenia paradygmatu obiektowego:

Typy klasowe (klasy) 1. Programowanie obiektowe. 2. Założenia paradygmatu obiektowego: Typy klasowe (klasy) 1. Programowanie obiektowe Programowanie obiektowe (ang. object-oriented programming) to metodologia tworzenia programów komputerowych, która definiuje programy za pomocą obiektów

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

Podstawy języka C++ Maciej Trzebiński. Praktyki studenckie na LHC IFJ PAN. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. M. Trzebiński C++ 1/16

Podstawy języka C++ Maciej Trzebiński. Praktyki studenckie na LHC IFJ PAN. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. M. Trzebiński C++ 1/16 M. Trzebiński C++ 1/16 Podstawy języka C++ Maciej Trzebiński Instytut Fizyki Jądrowej Polskiej Akademii Nauk Praktyki studenckie na LHC IFJ PAN 6lipca2015 Uruchomienie maszyny w CC1 M. Trzebiński C++ 2/16

Bardziej szczegółowo

Wstęp do Programowania, laboratorium 02

Wstęp do Programowania, laboratorium 02 Wstęp do Programowania, laboratorium 02 Zadanie 1. Napisać program pobierający dwie liczby całkowite i wypisujący na ekran największą z nich. Zadanie 2. Napisać program pobierający trzy liczby całkowite

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

Laboratorium 1. Programowanie II - Kierunek Informatyka. dr inż. Janusz Słupik. Gliwice, 2015. Wydział Matematyki Stosowanej Politechniki Śląskiej

Laboratorium 1. Programowanie II - Kierunek Informatyka. dr inż. Janusz Słupik. Gliwice, 2015. Wydział Matematyki Stosowanej Politechniki Śląskiej Laboratorium 1 - Kierunek Informatyka Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2015 c Copyright 2015 Janusz Słupik Punkty Na laboratorium można zdobyć 60 punktów. Ocena ogólna z zajęć:

Bardziej szczegółowo

Programowanie (C++) NI 5

Programowanie (C++) NI 5 Forma kształcenia i sposób weryfikacji efektów kształcenia Efekty kształcenia WYDZIAŁ FIZYKI UwB kierunek studiów: FIZYKA specjalność: FIZYKA KOD USOS: 0900 FS1 2 PRO Karta przedmiotu Przedmiot moduł ECTS

Bardziej szczegółowo

Informatyka 2. Informatyka 2. Wykład nr 1 (04.10.2008) Dane podstawowe. - Wydział Elektryczny. Politechnika Białostocka. Program wykładu (1/2)

Informatyka 2. Informatyka 2. Wykład nr 1 (04.10.2008) Dane podstawowe. - Wydział Elektryczny. Politechnika Białostocka. Program wykładu (1/2) Rok akademicki 2008/2009, Wykład nr 1 2/25 Dane podstawowe Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia niestacjonarne I stopnia (zaoczne) Rok akademicki

Bardziej szczegółowo

Kurs WWW. Paweł Rajba. pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/

Kurs WWW. Paweł Rajba. pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/ Paweł Rajba pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/ Spis treści Wprowadzenie Automatyczne ładowanie klas Składowe klasy, widoczność składowych Konstruktory i tworzenie obiektów Destruktory i

Bardziej szczegółowo

Praktyka Programowania

Praktyka Programowania Praktyka Programowania Dariusz Dereniowski Materiały udostępnione przez Adriana Kosowskiego Katedra Algorytmów i Modelowania Systemów Politechnika Gdańska deren@eti.pg.gda.pl Gdańsk, 2010 strona przedmiotu:

Bardziej szczegółowo

PARADYGMATY PROGRAMOWANIA Wykład 3

PARADYGMATY PROGRAMOWANIA Wykład 3 PARADYGMATY PROGRAMOWANIA Wykład 3 Definiowanie operatorów i ich przeciążanie Przykłady zastosowania operatorów: a) operator podstawienia ( = ) obiektów o złożonej strukturze, b) operatory działania na

Bardziej szczegółowo

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016 Wstęp - wykład 0 22 lutego 2016 Historia Simula 67 język zaprojektowany do zastosowan symulacyjnych; Smalltalk 80 pierwszy język w pełni obiektowy; Dodawanie obiektowości do języków imperatywnych: Pascal

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

Część I Programowanie niskiego poziomu w języku C 19

Część I Programowanie niskiego poziomu w języku C 19 Spis treści Przedmowa 13 Wstęp 15 Część I Programowanie niskiego poziomu w języku C 19 Wprowadzenie 21 1 Typy 23 1.1 Fundamentalne typy danych...................... 23 1.2 Typy pochodne.............................

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

Programowanie obiektowe W1 Wprowadzenie. Dr hab. inż. Lucyna Leniowska, prof. UR Zakład Mechatroniki, Automatyki i Optoelektroniki

Programowanie obiektowe W1 Wprowadzenie. Dr hab. inż. Lucyna Leniowska, prof. UR Zakład Mechatroniki, Automatyki i Optoelektroniki Programowanie obiektowe W1 Wprowadzenie Dr hab. inż. Lucyna Leniowska, prof. UR Zakład Mechatroniki, Automatyki i Optoelektroniki Ogólna charakterystyka języka C++ C++ jest obiektowym językiem programowania,

Bardziej szczegółowo

Zadania z podstaw programowania obiektowego

Zadania z podstaw programowania obiektowego Zadania z podstaw programowania obiektowego 1. Napisać klasę Lista, której zadaniem będzie przechowywanie listy liczb całkowitych. Klasa ta ma mieć następujące pola prywatne: int* liczby; tablica, w której

Bardziej szczegółowo

Java: otwórz okienko. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Java: otwórz okienko. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak Java: otwórz okienko Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak PLAN WYKŁADU klasy wewnętrzne, lokalne i anonimowe biblioteka AWT zestaw Swing JFrame JPanel komponenty obsługa zdarzeń

Bardziej szczegółowo

Abstrakcyjny typ danych

Abstrakcyjny typ danych Abstrakcyjny typ danych Abstrakcyjny Typ Danych (abstract data type-adt): zbiór wartości wraz z powiązanymi z nimi operacjami; operacje są zdefiniowane w sposób niezależny od implementacji; operacje są

Bardziej szczegółowo

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016 Wykład 9 28 kwiecień 2016 Java Collections Framework (w C++ Standard Template Library) Kolekcja (kontener) Obiekt grupujacy/przechowuj acy jakieś elementy (obiekty lub wartości). Przykładami kolekcji sa

Bardziej szczegółowo

I - Microsoft Visual Studio C++

I - Microsoft Visual Studio C++ I - Microsoft Visual Studio C++ 1. Nowy projekt z Menu wybieramy File -> New -> Projekt -> Win32 Console Application w okienku Name: podajemy nazwę projektu w polu Location: wybieramy miejsce zapisu i

Bardziej szczegółowo

#include int main( ) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); }

#include <stdio.h> int main( ) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); } OPERACJE WEJŚCIA / WYJŚCIA Funkcja: printf() biblioteka: wysyła sformatowane dane do standardowego strumienia wyjściowego (stdout) int printf ( tekst_sterujący, argument_1, argument_2,... ) ;

Bardziej szczegółowo

WYKŁAD. Jednostka prowadząca: Wydział Techniczny. Kierunek studiów: Elektronika i telekomunikacja. Nazwa przedmiotu: Język programowania C++

WYKŁAD. Jednostka prowadząca: Wydział Techniczny. Kierunek studiów: Elektronika i telekomunikacja. Nazwa przedmiotu: Język programowania C++ Jednostka prowadząca: Wydział Techniczny Kierunek studiów: Elektronika i telekomunikacja Nazwa przedmiotu: Język programowania C++ Charakter przedmiotu: podstawowy, obowiązkowy Typ studiów: inŝynierskie

Bardziej szczegółowo

Podstawy Programowania Podstawowa składnia języka C++

Podstawy Programowania Podstawowa składnia języka C++ Podstawy Programowania Podstawowa składnia języka C++ Katedra Analizy Nieliniowej, WMiI UŁ Łódź, 3 października 2013 r. Szablon programu w C++ Najprostszy program w C++ ma postać: #include #include

Bardziej szczegółowo

Laboratorium Wstawianie skryptu na stroną: 2. Komentarze: 3. Deklaracja zmiennych

Laboratorium Wstawianie skryptu na stroną: 2. Komentarze: 3. Deklaracja zmiennych 1. Wstawianie skryptu na stroną: Laboratorium 1 Do umieszczenia skryptów na stronie służy znacznik: //dla HTML5 ...instrukcje skryptu //dla HTML4 ...instrukcje

Bardziej szczegółowo

Smarty PHP. Leksykon kieszonkowy

Smarty PHP. Leksykon kieszonkowy IDZ DO PRZYK ADOWY ROZDZIA SPIS TREœCI KATALOG KSI EK KATALOG ONLINE ZAMÓW DRUKOWANY KATALOG Smarty PHP. Leksykon kieszonkowy Autor: Daniel Bargie³ ISBN: 83-246-0676-9 Format: B6, stron: 112 TWÓJ KOSZYK

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Laboratorium z przedmiotu Programowanie obiektowe - zestaw 02 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami projektowania oraz implementacji klas i obiektów z wykorzystaniem dziedziczenia.

Bardziej szczegółowo

Wprowadzenie do środowiska Qt Creator

Wprowadzenie do środowiska Qt Creator 1.Instalacja środowiska Qt Creator Qt Creator jest wygodnym środowiskiem programistycznym przeznaczonym do tworzenia projektów, czyli aplikacji zarówno konsolowych, jak i okienkowych z wykorzystaniem biblioteki

Bardziej szczegółowo

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki Turbo Pascal jest językiem wysokiego poziomu, czyli nie jest rozumiany bezpośrednio dla komputera, ale jednocześnie jest wygodny dla programisty,

Bardziej szczegółowo

Klasy abstrakcyjne i interfejsy

Klasy abstrakcyjne i interfejsy Klasy abstrakcyjne i interfejsy Streszczenie Celem wykładu jest omówienie klas abstrakcyjnych i interfejsów w Javie. Czas wykładu 45 minut. Rozwiązanie w miarę standardowego zadania matematycznego (i nie

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

Delphi Laboratorium 3

Delphi Laboratorium 3 Delphi Laboratorium 3 1. Procedury i funkcje Funkcja jest to wydzielony blok kodu, który wykonuje określoną czynność i zwraca wynik. Procedura jest to wydzielony blok kodu, który wykonuje określoną czynność,

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Laboratorium z przedmiotu Programowanie obiektowe - zestaw 07 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami tworzenia aplikacji okienkowych w C#. Wprowadzenie teoretyczne. Rozważana w

Bardziej szczegółowo

Instrukcja laboratoryjna cz.0

Instrukcja laboratoryjna cz.0 Algorytmy i Struktury Danych 2012/2013 Instrukcja laboratoryjna cz.0 Wprowadzenie Prowadzący: Tomasz Goluch Wersja: 2.0 Warunki zaliczenia Cel: Zapoznanie studentów z warunkami zaliczenia części laboratoryjnej

Bardziej szczegółowo

Język programowania. Andrzej Bobyk http://www.alfabeta.lublin.pl. www.alfabeta.lublin.pl/jp/

Język programowania. Andrzej Bobyk http://www.alfabeta.lublin.pl. www.alfabeta.lublin.pl/jp/ Język programowania Andrzej Bobyk http://www.alfabeta.lublin.pl www.alfabeta.lublin.pl/jp/ Literatura K. Reisdorph: Delphi 6 dla każdego. Helion, Gliwice 2001 A. Grażyński, Z. Zarzycki: Delphi 7 dla każdego.

Bardziej szczegółowo

Metodyki i techniki programowania

Metodyki i techniki programowania Metodyki i techniki programowania dr inż. Maciej Kusy Katedra Podstaw Elektroniki Wydział Elektrotechniki i Informatyki Politechnika Rzeszowska Elektronika i Telekomunikacja, sem. 2 Plan wykładu Sprawy

Bardziej szczegółowo

Spis treści PROGRAMOWANIE OBIEKTOWE W JĘZYKU C++: FUNKCJE ZAPRZYJAŹNIONE Z KLASĄ, PRZEŁADOWANIE OPERATORÓW. Informatyka 2

Spis treści PROGRAMOWANIE OBIEKTOWE W JĘZYKU C++: FUNKCJE ZAPRZYJAŹNIONE Z KLASĄ, PRZEŁADOWANIE OPERATORÓW. Informatyka 2 Politechnika Białostocka Wydział Elektryczny Katedra Elektrotechniki Teoretycznej i Metrologii Instrukcja do pracowni specjalistycznej z przedmiotu Informatyka 2 Kod przedmiotu: ES1C300 016 (studia stacjonarne)

Bardziej szczegółowo

Wstęp do programowania INP003203L rok akademicki 2016/17 semestr zimowy. Laboratorium 1. Karol Tarnowski A-1 p.

Wstęp do programowania INP003203L rok akademicki 2016/17 semestr zimowy. Laboratorium 1. Karol Tarnowski A-1 p. Wstęp do programowania INP003203L rok akademicki 2016/17 semestr zimowy Laboratorium 1 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Na podstawie: G. Perry, D. Miller, Język C Programowanie dla

Bardziej szczegółowo

Języki programowania

Języki programowania Języki programowania Nowoczesne techniki programowania Wykład 1 Witold Dyrka witold.dyrka@pwr.wroc.pl 5/10/2011 Prawa autorskie Slajdy do wykładu powstały w oparciu o slajdy Bjarne Stroustrupa do kursu

Bardziej szczegółowo

PRYWATNA WYŻSZA SZKOŁA BUSINESSU, ADMINISTRACJI I TECHNIK KOMPUTEROWYCH S Y L A B U S

PRYWATNA WYŻSZA SZKOŁA BUSINESSU, ADMINISTRACJI I TECHNIK KOMPUTEROWYCH S Y L A B U S PRYWATNA WYŻSZA SZKOŁA BUSINESSU, ADMINISTRACJI I TECHNIK KOMPUTEROWYCH ZATWIERDZAM Prorektor ds. dydaktyki i wychowania S Y L A B U S 1 Tytuł (stopień) naukowy oraz imię i nazwisko wykładowcy: dr hab.,

Bardziej szczegółowo

Podstawy programowania obiektowego

Podstawy programowania obiektowego Podstawy programowania obiektowego Technologie internetowe Wykład 5 Program wykładu Podejście obiektowe kontra strukturalne do tworzenie programu Pojęcie klasy i obiektu Składowe klasy: pola i metody Tworzenie

Bardziej szczegółowo