Technologie cyfrowe semestr letni 2018/2019

Podobne dokumenty
Technologie cyfrowe semestr letni 2018/2019

Programowanie obiektowe

Dziedziczenie & W slajdach są materiały zapożyczone z

Technologie cyfrowe. Artur Kalinowski. Zakład Cząstek i Oddziaływań Fundamentalnych Pasteura 5, pokój 4.15

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Podstawy Programowania Obiektowego

wykład IV uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C, a C++. wykład IV dr Jarosław Mederski Spis Język C++ - wstęp

Opis zagadnieo 1-3. Iteracja, rekurencja i ich realizacja

Programowanie obiektowe język C++

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.

Mechanizm dziedziczenia

Programowanie i struktury danych

Wykład. Materiały bazują częściowo na slajdach Marata Dukhana

Język C++ wykład VIII

Szablon klasy std::vector

Programowanie Obiektowe i C++ Marcin Benke

Programowanie w C++ Wykład 3. Katarzyna Grzelak. 12 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 35

2.4 Dziedziczenie. 2.4 Dziedziczenie Przykłady programowania w C - kurs podstawowy

Programowanie w języku C++ Grażyna Koba

Składnia C++ Programowanie Obiektowe Mateusz Cicheński

Programowanie w C++ Wykład 14. Katarzyna Grzelak. 3 czerwca K.Grzelak (Wykład 14) Programowanie w C++ 1 / 27

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44

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

Zajęcia nr 1 Podstawy programowania. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

Programowanie w C++ Wykład 11. Katarzyna Grzelak. 13 maja K.Grzelak (Wykład 11) Programowanie w C++ 1 / 30

Wprowadzenie do języka Java

Języki programowania - podstawy

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++

Programowanie w C++ Wykład 12. Katarzyna Grzelak. 28 maja K.Grzelak (Wykład 12) Programowanie w C++ 1 / 27

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

Programowanie 2. Język C++. Wykład 3.

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 16 kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 27

Podstawy Programowania. Wykład 1

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

Wstęp do programowania obiektowego. WYKŁAD 3 Dziedziczenie Pola i funkcje statyczne Funkcje zaprzyjaźnione, this

Język C++ Różnice między C a C++

Wstęp do Programowania 2

Programowanie obiektowe. Wprowadzenie

Programowanie w C++ Wykład 8. Katarzyna Grzelak. 7 maja K.Grzelak (Wykład 8) Programowanie w C++ 1 / 31

Wykład 4. Algorytmy i programy. Algorytmy + struktury danych = programy. Niklaus Wirth. Algorytm = logika + sterowanie.

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

Pytania sprawdzające wiedzę z programowania C++

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

PARADYGMATY PROGRAMOWANIA Wykład 2

TEMAT : KLASY POLIMORFIZM

Wprowadzenie. Programowanie Obiektowe Mateusz Cicheński

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

Programowanie komputerowe. Zajęcia 1

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

Materiał Typy zmiennych Instrukcje warunkowe Pętle Tablice statyczne Wskaźniki Tablice dynamiczne Referencje Funkcje

Składnia C++ Programowanie Obiektowe Mateusz Cicheński

Wstęp do programowania. Wykład 1

Podstawy programowania w języku C

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

Programowanie obiektowe - 1.

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 5

Operacje wejścia/wyjścia (odsłona druga) - pliki

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

Wstęp do programowania

Prof. Danuta Makowiec Instytut Fizyki Teoretycznej i Astrofizyki pok. 353, tel danuta.makowiec at gmail.com

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

Język C++ wykład VII. uzupełnienie notatek: dr Jerzy Białkowski. Programowanie C/C++ Język C++ wykład VII. dr Jarosław Mederski. Spis.

Programowanie Obiektowe i C++

PARADYGMATY PROGRAMOWANIA Wykład 4

wykład V uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C++ klasy i obiekty wykład V dr Jarosław Mederski Spis Język C++ - klasy

Programowanie obiektowe w C++ Wykład 12

Wstęp do programowania

TEST KOŃCOWY DLA KLASY III GIMNAZJUM- POGRAMOWANIE. Szkoła Podstawowa Nr 5. im. Księcia Mazowieckiego Siemowita IV w Gostyninie.

1 Podstawy c++ w pigułce.

Programowanie w C++ Wykład 6. Katarzyna Grzelak. kwiecień K.Grzelak (Wykład 6) Programowanie w C++ 1 / 40

Aby uzyskać zaliczenie w pierwszym terminie (do 30 stycznia 2018) rozliczyć trzeba co najmniej 8 projektów, po 4 z każdej z części: C++ oraz Python.

Spis treści WSTĘP CZĘŚĆ I. PASCAL WPROWADZENIE DO PROGRAMOWANIA STRUKTURALNEGO. Rozdział 1. Wybór i instalacja kompilatora języka Pascal

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 5 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41

1 Wskaźniki. 1.1 Główne zastosowania wskaźników

Programowanie w C++ Wykład 1. Katarzyna Grzelak. 26 luty K.Grzelak (Wykład 1) Programowanie w C++ 1 / 28

Język C++ wykład VI. uzupełnienie notatek: dr Jerzy Białkowski. Programowanie C/C++ Język C++ wykład VI. dr Jarosław Mederski.

Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego. Iwona Kochaoska

IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi

Techniki programowania INP001002Wl rok akademicki 2017/18 semestr letni. Wykład 4. Karol Tarnowski A-1 p.

W2 Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy :

Wprowadzenie do programowanie obiektowego w języku C++

Wstęp do Informatyki

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM

Wykład II Tablice (wstęp) Przykłady algorytmów Wstęp do języka C/C++

PARADYGMATY PROGRAMOWANIA Wykład 3

Zajęcia nr 2 Programowanie strukturalne. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

1 Podstawy c++ w pigułce.

Paradygmaty programowania

PROE wykład 4 pozostałe operatory, forward declaration, dziedziczenie. dr inż. Jacek Naruniec

Laboratorium nr 12. Temat: Struktury, klasy. Zakres laboratorium:

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

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6

Wstęp do programowania

Programowanie w C++ Wykład 1. Katarzyna Grzelak. 25 luty K.Grzelak (Wykład 1) Programowanie w C++ 1 / 38

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

Każdy z nich posiada swoje parametry. W przypadku silnika może to być moc lub pojemność, w przypadku skrzyni biegów można mówić o skrzyni

Wstęp do programowania

Wstęp do programowania obiektowego, wykład 7

Mechanizm dziedziczenia

Aplikacje w środowisku Java

Transkrypt:

Technologie cyfrowe semestr letni 2018/2019 Tomasz Kazimierczuk Wykład 7 (08.04.2019)

Wikipedia Programowanie komputerów proces projektowania, tworzenia, testowania i utrzymywania kodu źródłowego programów komputerowych ( )

Wikipedia Programowanie komputerów proces projektowania, tworzenia, testowania i utrzymywania kodu źródłowego programów komputerowych ( )

Schematy rozwoju

Język C++

Języki programowania Język programowania: zestaw symboli i gramatyka używane do tworzenia programów komputerowych. Języki wysokiego poziomu (np. C++, Python, Java) są skonstruowane tak, by ułatwić zrozumienie programu (kodu). Języki niskiego poziomu (np. assembler) używają konstrukcji możliwie najbliższych do wykonywanych rzeczywiście przez procesor. Wykład 7 6

Kompilacja Kompilacja programu (kodu): proces tłumaczenia kodu napisanego w wybranym języku na kod maszynowy, zrozumiały dla procesora. Wynikiem kompilacji jest program, który można uruchomić. W czasie kompilacji jest analizowany cały kod, co oznacza, że nie może w nim być nigdzie błędów językowych. Interpretacja: wykonywanie kodu programu krok po kroku, bez analizy poprawności językowej całości. Interpretacja jest prowadzona do napotkania błędu w kodzie, lub poprawnego zakończenia działania programu. Języki kompilowane: C++ Języki interpretowane: PHP, Java, Python Wykład 7 7

C++ jest językiem kompilowanym 1. Tworzymy kod źródłowy w pliku tekstowym #include <iostream> using namespace std; int main() { cout << "Hello world"; program.cpp return 0; 2. Kompilujemy program $ g++ program.cpp o program 3. Uruchamiamy program $./program Hello world

Paradygmaty programowania Imperatywne Deklaratywne Proceduralne Logiczne Obiektowe Funkcyjne

Przykład 2 function GreatestCommonDivisor(a, b: Int64): Int64; begin if (a < 0) then a := -a; if (b < 0) then b := -b; if (a = 0) then Exit(b); if (b = 0) then Exit(a); while not (a = b) do begin if (a > b) then a := a - b else b := b - a; end; Result := a; end;

Przykład: programowanie deklaratywne SELECT Student.Imie, Student.Nazwisko, Ocena.Ocena FROM Student JOIN Ocena ON Student.id = Ocena.StudentId WHERE Ocena.Przedmiot = Mechanika kwantowa AND Ocena.Ocena > 2;

(define (sieve n) (define (aux u v) (let ((p (car v))) (if (> (* p p) n) (let rev-append ((u u) (v v)) Przykład 2: programowanie funkcyjne (if (null? u) v (rev-append (cdr u) (cons (car u) v)))) (aux (cons p u) (let wheel ((u '()) (v (cdr v)) (a (* p p))) (cond ((null? v) (reverse u)) ((= (car v) a) (wheel u (cdr v) (+ a p))) ((> (car v) a) (wheel u v (+ a p))) (else (wheel (cons (car v) u) (cdr v) a)))))))) (aux '(2) (let range ((v '()) (k (if (odd? n) n (- n 1)))) (if (< k 3) v (range (cons k v) (- k 2))))))

Programowanie imperatywne Kolejne instrukcje zmieniają stan (np. wartości zmiennych) Podstawowe typy zmiennych: int liczba całkowita, np. 2235 double liczba rzeczywista, np. 3.14 char pojedynczy znak ASCII (litera) bool wartość logiczna (prawda lub fałsz)

Język Python Struktury danych: elementy algorytmu przechowujące informacje. zmienna: miejsce na konkretne dane. Zmienna ma swoją nazwę, typ i wartość. Wykład 7 14

Język Python Wyrażenia: operacje na zmiennych, wzory. Wykład 7 15

Język Python Struktury danych: elementy algorytmu przechowujące informacje. lista (macierz jednowymiarowa): zestaw podstawowych elementów, np. liczb. Wykład 7 16

Prześledźmy program (C++): #include <iostream> using namespace std; Standardowy początek int main() { int a = 0; int b = 0; a = 8; b = 9 + a; b = b + b; Wypisywanie wartości zmiennych cout << a << " " << b << "\n"; return 0; Standardowy koniec

Prześledźmy program (Python): a = 8 b = 9 + a b = b + b print (a, " ", b)

Wyrażenia Operator: + (np. a + b) Wynik: suma wartości a i b Efekt uboczny: brak Operator: = (np. a = b) Wynik: wartość b Efekt uboczny: zmienna a przyjmuje wartość b Operator: ++ (np. a++) Wynik: wartość a [jest w C++, nie ma w Pythonie] Efekt uboczny: zmienna a zwiększa się o 1

Porównywanie ==,!=, >, <, >=, <= Wykorzystywane głównie w instrukcjach kontrolnych, np. if (a == b) cout << "Zmienne a i b sa rowne"; while (a > b) { b++; a--;

Pętle Blok instrukcji Blok instrukcji Warunek sprawdzany przed lub po iteracji

Pętle w różnych językach programowania (1) cout << a: " << a << endl; while number>0 do begin Pascal sum := sum + number; number := number - 2; end; while( a < 20 ) C++ { a++; while (count < 9): print 'The count is:', count count = count + 1 Python

Pętle w różnych językach repeat sum := sum + number; number := number - 2; until number<0; programowania (2) Pascal C++ do { cout << "a: " << a << endl; a++; while ( a < 20 ) Python brak odpowiednika

Pętle for for i:=0 to 10 do begin writeln('a: ', a); end; Pascal C++ int sum = 0; for (int i = 1; i < 6; i++) { sum += i;

Pętle for int sum = 0; for (int i = 1; i < 6; i++) { sum = sum + i; int sum = 0; int i = 1; while (i < 6) { sum = sum + i; i++;

int sum = 0; int i = 1; cout << "Podaj 2 liczby: "; cin >> i; cin >> j; cout << i + j; i = 0; while (i < 6) { sum = sum + i; i++; Niejednoznaczność roli zmiennej i

Pętle for dla zakresu for i in range(1,10): print(i) Python PHP for (int i : tablica ) { cout << i << endl; $tablica = array(1, 2, 3, 4); foreach ($tablica as $i) { print($i); C++

Dwie zmienne o tej samej nazwie int i = 0; double i = 0.5; cout << i << endl; int i = 0; { double i = 0.5; cout << i << endl; Cout << i << endl;

Zmienna lokalna dla zakresu int i; for(i = 0; i < 3; i++) { for(i = 0; i < 5; i++) { cout << i << endl; for(int i = 0; i < 3; i++) { for(int i = 0; i < 5; i++) { cout << i << endl;

Zmienna lokalna dla zakresu int i; for(i = 0; i < 3; i++) { for(i = 0; i < 5; i++) { cout << i << endl; for(int i = 0; i < 3; i++) { for(int j = 0; j < 5; j++) { cout << j << endl;

Funkcja Argumenty zmienne lokalne Wynik double srednia(double x, double y) { return (x+y) / 2;

Programowanie obiektowe

Przykład wykorzystania obiektu Obiekt X jest instancją klasy Y Obiekt = tożsamość + stan + zachowanie vector<int> v; v.push.back(5); v.push_back(6); v.push_back(3); Obiekt = dane + metody cout << "Aktualnie w wektorze jest " << v.size() << " elementow" << endl; cout << "Pierwszym elementem jest" << v.front() << endl;

Przykład class A{ private: int x, y; public: void setvaluex(int a) { x = a; void setvaluey(int b); ; int main(){ A obj; obj.x = 3; obj.setvaluey(3);... niedozwolone

Koncepcja Abstrakcja Enkapsulacja Ochrona informacji Polimorfizm Dziedziczenie Realizacja w C++ Klasy Klasy public/protected/private Przeładowanie operatorów, wzorce, metody wirtualne Dziedziczenie klas

Dziedziczenie Dziedziczenie pozwala stworzyć nową klasę przy wykorzystaniu już istniejącej klasy. Dziedziczenie to modyfikacja typu polegająca na jego przystosowaniu do określonych warunków jest to więc rodzaj specjalizacji. Tekst zapożyczony z https://www.ii.uni.wroc.pl/~prz/2012lato/cpp/slajdy/cpp5.ppt

Dziedziczenie Nomenklatura: klasa bazowa (podstawowa albo nadklasa) to klasa, z której dziedziczą inne klasy; klasa pochodna (podklasa) to nowa klasa, która dziedziczy strukturę informacyjną i funkcjonalność z innej klasy. Rysunek schematyczny: klasa bazowa klasa pochodna

Przykład Klasa bazowa Macierz Klasa pochodna - MacierzKwadratowa

class Macierz { public: Macierz(int n, int m); int liczba_wierszy(); int liczba_kolumn(); void wypisz(); void ustaw_wartosc(int wiersz, int kolumna, double wartosc); double wartosc(int wiersz, int kolumna); void pomnoz_przez(double r); private: int w, k; vector< vector<double> > dane; ;

class MacierzKwadratowa : public Macierz { public: MacierzKwadratowa(int n); ; double wyznacznik();

Zasada podstawienia Liskov Funkcje które używają wskaźników lub referencji do klas bazowych, muszą być w stanie używać również obiektów klas dziedziczących po klasach bazowych, bez dokładnej znajomości tych obiektów Kontrprzykład: void przetwarzajfigurę(figura& ifigura) { if(typeid(ifigura) == typeid(prostokąt)) przetwarzajprostokąt(static_cast<prostokąt&>(ifigura)); else if(typeid(ifigura) == typeid(okrąg)) przetwarzajokrąg(static_cast<okrąg&>(ifigura)); else if(typeid(ifigura) == typeid(kwadrat)) przetwarzajkwadrat(static_cast<kwadrat&>(ifigura));

Dostęp do składników W klasie pochodnej nie ma dostępu do odziedziczonych składników prywatnych (czyli private). W klasie pochodnej jest dostęp do odziedziczonych składników nieprywatnych (czyli protected i public). Składniki chronione (czyli protected) są dostępne tylko w klasie bieżącej i w klasach pochodnych ale nie na zewnątrz.

Dostęp do składników Klasa pochodna też decyduje o zakresie widoczności odziedziczonych składników nieprywatnych poprzez sposób dziedziczenia (public, protected, private): przy dziedziczeniu publicznym odziedziczone składniki nieprywatne zachowują swój zakres widoczności; przy dziedziczeniu chronionym odziedziczone składniki nieprywatne stają się chronione; przy dziedziczeniu prywatnym odziedziczone składniki nieprywatne stają się prywatne. Domyślny sposób dziedziczenia to private.

Hierarchia klas Dziedziczenie może mieć wiele poziomów. Jedna klasa może być klasą bazową dla wielu innych klas. klasa A klasa B klasa D klasa C klasa E klasa F klasa G klasa D