Programowanie w języku C++ Podstawowe paradygmaty programowania

Podobne dokumenty
Programowanie obiektowo zorientowane. Mirosław Głowacki Wykład w języku C++

Języki i paradygmaty programowania. I. Wprowadzenie

Wstęp do Programowania Obiektowego. Wykład 13 Paradygmaty. Składnia i semantyka.

Wstęp do informatyki Paradygmaty programowania

Paradygmaty Programowania dr inŝ. Cezary Bolek

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

InŜynieria oprogramowania. Język UML

Paradygmaty programowania

Języki programowania deklaratywnego

Podstawy Programowania Obiektowego

Wykład 1 Informacje Podstawowe

Programowanie obiektowe

Wstęp do programowania obiektowego. Wykład 1 Algorytmy i paradygmaty Podstawowe pojęcia PO

Języki i paradygmaty programowania

Paradygmaty programowania

Programowanie Obiektowew języku C++ Zadania L4

Wykład 1 Informacje Podstawowe

Paradygmaty i języki programowania. Wprowadzenie. dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ 1

GUI - projektowanie interfejsów cz. II

Języki programowania deklaratywnego

Programowanie funkcyjne wprowadzenie Specyfikacje formalne i programy funkcyjne

Wykład 8: klasy cz. 4

Programowanie Obiektowew języku C++ Zadania L2

Języki programowania imperatywnego

Technologie cyfrowe semestr letni 2018/2019

Język programowania PASCAL

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

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

Programowanie obiektowe - 1.

Modelowanie i Programowanie Obiektowe

Kurs programowania. Wykład 12. Wojciech Macyna. 7 czerwca 2017

Technologie cyfrowe semestr letni 2018/2019

4 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.01 Rok akad. 2011/ / 24

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

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.

Programowanie Obiektowo Zorientowane w języku c++ Przestrzenie nazw

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Podstawy programowania w języku C++ Zadania - dziedziczenie i polimorfizm

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

Programowanie komputerów

INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE

Historia modeli programowania

Wykład V. Rzut okiem na języki programowania. Studia Podyplomowe INFORMATYKA Podstawy Informatyki

Pierwsze kroki. Algorytmy, niektóre zasady programowania, kompilacja, pierwszy program i jego struktura

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

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

Podstawy programowania w języku C++ Zadania

Programowanie Obiektowew języku C++ Zadania L4

Technologie i usługi internetowe cz. 2

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

REKURENCJA W JĘZYKU HASKELL. Autor: Walczak Michał

Programowanie obiektowe

Programowanie Obiektowew języku C++ Zadania L2

Technologie obiektowe

Algorytm - pojęcie algorytmu, sposób zapisu, poziom szczegółowości, czynności proste i strukturalne. Pojęcie procedury i funkcji.

Wstęp do Informatyki dla bioinformatyków

Podstawy programowania. Wprowadzenie

Języki programowania zasady ich tworzenia

Programowanie w Javie 1 Wykład i Ćwiczenia 3 Programowanie obiektowe w Javie cd. Płock, 16 października 2013 r.

Podstawy programowania. Wykład 7 Tablice wielowymiarowe, SOA, AOS, itp. Krzysztof Banaś Podstawy programowania 1

Podstawy programowania. Wykład PASCAL. Wstęp do programowania obiektowego. dr Artur Bartoszewski - Podstawy programowania, sem.

Podstawy Informatyki Systemy sterowane przepływem argumentów

PARADYGMATY PROGRAMOWANIA

Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu.

Programowanie Obiektowe i C++

Podstawy programowania komputerów

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

Paradygmaty i języki programowania. Wprowadzenie. dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ 1

Języki i metodyka programowania

Szablony funkcji i klas (templates)

Programowanie obiektowe. Wprowadzenie

Programowanie Obiektowo Zorientowane w języku C++ Klasy, pola, metody

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

Komputer nie myśli. On tylko wykonuje nasze polecenia. Nauczmy się więc wydawać mu rozkazy

Czym są właściwości. Poprawne projektowanie klas

Wykład 5: Klasy cz. 3

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

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

Programowanie obiektowe

Programowanie II. Lista 3. Modyfikatory dostępu plik TKLientBanku.h

PROLOG WSTĘP DO INFORMATYKI. Akademia Górniczo-Hutnicza. Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej.

Programowanie w logice

Podstawy programowania. Wykład 6 Złożone typy danych: struktury, unie. Krzysztof Banaś Podstawy programowania 1

Paweł Kurzawa, Delfina Kongo

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

PRZEWODNIK PO PRZEDMIOCIE

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

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

Język ludzki kod maszynowy

Podczas dziedziczenia obiekt klasy pochodnej może być wskazywany przez wskaźnik typu klasy bazowej.

Wstęp do programowania

zmienne stanowią abstrakcję komórek pamięci: programista może przechowywać dane w pamięci, nie martwiąc się o techniczne szczegóły (np.

Tworzenie programów równoległych cd. Krzysztof Banaś Obliczenia równoległe 1

Metodyka i Technika Programowania 1

Modelowanie procesów współbieżnych

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

Rok akademicki: 2012/2013 Kod: ZIE s Punkty ECTS: 3. Poziom studiów: Studia I stopnia Forma i tryb studiów: -

Lab 10. Funkcje w argumentach funkcji metoda Newtona. Synonimy nazw typów danych. Struktury. Tablice struktur.

Teoretyczne podstawy informatyki

Diagram klas UML jest statycznym diagramem, przedstawiającym strukturę aplikacji bądź systemu w paradygmacie programowania obiektowego.

Transkrypt:

Programowanie w języku C++ Podstawowe paradygmaty programowania Mirosław Głowacki 1 1 Akademia Górniczo-Hutnicza im. Stanisława Staszica w Ktrakowie Wydział Inżynierii Metali i Informatyki Stosowanej Katedra Informatyki Stosowanej i Modelowania Wrzesień 2015 Mirosław Głowacki (AGH) Programowanie w C++ 2015 1 / 24

Spis treści 1 Pojęcie paradygmatu 2 Podstawowe paradygmaty programowania 3 Programowanie imperatywne 4 Programowanie funkcyjne 5 Programowanie w logice 6 Programowanie obiektowo zorientowane 7 Paradygmaty a języki programowania Mirosław Głowacki (AGH) Programowanie w C++ 2015 2 / 24

Spis treści 1 Pojęcie paradygmatu 2 Podstawowe paradygmaty programowania 3 Programowanie imperatywne 4 Programowanie funkcyjne 5 Programowanie w logice 6 Programowanie obiektowo zorientowane 7 Paradygmaty a języki programowania Mirosław Głowacki (AGH) Programowanie w C++ 2015 3 / 24

lub Pojęcie paradygmatu Powinniśmy zapewne zacząć od wyjaśnienia, o czym będzie mowa w niniejszym wykładzie. Istnieje pojęcie paradygmaty programowania i na początek warto przyjrzeć się znaczeniu słowa "paradygmat", często nadużywanemu przez filozofów, lingwistów i informatyków Otóż, jak podaje Słownik Języka Polskiego PWN, paradygmat to: przyjęty sposób widzenia rzeczywistości w danej dziedzinie, doktrynie itp. zespół form fleksyjnych (deklinacyjnych lub koniugacyjnych), właściwy danemu typowi wyrazów; wzorzec, model deklinacyjny lub koniugacyjny. Mirosław Głowacki (AGH) Programowanie w C++ 2015 4 / 24

Pojęcie paradygmatu Jak te definicje mają się do programowania? Trudno powiedzieć - sięgnijmy jeszcze do greckich korzeni słowa. Greckie παραδειγμα oznacza wzorzec bądź przykład. Czyżby chodziło więc o typowy, wzorcowy sposób pisania programów? Niezupełnie chodzi raczej o zbiór mechanizmów, jakich programista używa, pisząc program, i o to, jak ów program jest następnie wykonywany przez komputer. Zatem Paradygmat programowania Paradygmat programowania to ogół oczekiwań programisty wobec języka programowania i komputera, na którym będzie działał program. Mirosław Głowacki (AGH) Programowanie w C++ 2015 5 / 24

Spis treści 1 Pojęcie paradygmatu 2 Podstawowe paradygmaty programowania 3 Programowanie imperatywne 4 Programowanie funkcyjne 5 Programowanie w logice 6 Programowanie obiektowo zorientowane 7 Paradygmaty a języki programowania Mirosław Głowacki (AGH) Programowanie w C++ 2015 6 / 24

Cztery najważniejsze paradygmaty Przyjrzyjmy się czterem zasadniczym przykładom. Przykłady te, obejmujące najbardziej powszechne paradygmaty programowania. Programowanie imperatywne Programowanie funkcyjne Programowanie w logice Programowanie obiektowo orientowane Mirosław Głowacki (AGH) Programowanie w C++ 2015 7 / 24

Spis treści 1 Pojęcie paradygmatu 2 Podstawowe paradygmaty programowania 3 Programowanie imperatywne 4 Programowanie funkcyjne 5 Programowanie w logice 6 Programowanie obiektowo zorientowane 7 Paradygmaty a języki programowania Mirosław Głowacki (AGH) Programowanie w C++ 2015 8 / 24

Programowanie imperatywne Programowanie imperatywne to najbardziej pierwotny sposób programowania, w którym program postrzegany jest jako ciąg poleceń dla komputera. Ściślej, obliczenia rozumiemy tu jako sekwencję poleceń zmieniających krok po kroku stan maszyny, aż do uzyskania oczekiwanego wyniku. Stan maszyny należy z kolei rozumieć jako zawartość całej pamięci oraz rejestrów i znaczników procesora. Ten sposób patrzenia na programy związany jest ściśle z budową sprzętu komputerowego o architekturze von Neumanna. Mirosław Głowacki (AGH) Programowanie w C++ 2015 9 / 24

Programowanie imperatywne Poszczególne instrukcje (w kodzie maszynowym) to właśnie polecenia zmieniające ów globalny stan. Przykładowo, instrukcje podstawienia działają na danych pobranych z pamięci i umieszczają wynik w tejże pamięci. Abstrakcją komórek pamięci są zmienne. Języki wysokiego poziomu takie jak Fortran, Algol, Pascal, Ada lub C posługują się pewnymi abstrakcjami, ale wciąż odpowiadają paradygmatowi programowania imperatywnego. Mirosław Głowacki (AGH) Programowanie w C++ 2015 10 / 24

Programowanie imperatywne Przykładowy program w języku imperatywnym - Pascal program silnia; var i, n, s: integer; begin end. read(n); s := 1; for i := 2 to n do s := s * i; write (s) Mirosław Głowacki (AGH) Programowanie w C++ 2015 11 / 24

Spis treści 1 Pojęcie paradygmatu 2 Podstawowe paradygmaty programowania 3 Programowanie imperatywne 4 Programowanie funkcyjne 5 Programowanie w logice 6 Programowanie obiektowo zorientowane 7 Paradygmaty a języki programowania Mirosław Głowacki (AGH) Programowanie w C++ 2015 12 / 24

Programowanie funkcyjne Tutaj program to po prostu złożona funkcja (w sensie matematycznym), która otrzymawszy dane wejściowe wylicza pewien wynik Zasadniczą różnicą w stosunku do poprzednich paradygmatów jest brak stanu maszyny: nie ma zmiennych, a co za tym idzie nie ma żadnych efektów ubocznych. Nie ma też imperatywnych z natury, tradycyjnie rozumianych pętli (te wymagają np. zmiennych do sterowania ich przebiegiem). Konstruowanie programów to składanie funkcji, zazwyczaj z istotnym wykorzystaniem rekurencji. Charakterystyczne jest również definiowanie funkcji wyższego rzędu, czyli takich, dla których argumentami i których wynikami mogą być funkcje (a nie tylko proste dane jak liczby lub napisy). Mirosław Głowacki (AGH) Programowanie w C++ 2015 13 / 24

Przykładowy program w języku funkcyjnym Jako przykład może tu posłużyć implementacja algorytmu szybkiego sortowania quicksort w języku Haskel : quicksort :: (Ord a) => [a] -> [a] quicksort [] = [] quicksort (x:xs) = let smallersorted = quicksort [a a <- xs, a <= x] biggersorted = quicksort [a a <- xs, a > x] in smallersorted ++ [x] ++ biggersorted Jeszcze bardziej zwięzły program wg tego samego algorytmu: quicksort [] = [] quicksort (x:xs) = quicksort [b b<-xs, b<=x] ++ [x] ++ quicksort [b b<-xs, b>x] Mirosław Głowacki (AGH) Programowanie w C++ 2015 14 / 24

Spis treści 1 Pojęcie paradygmatu 2 Podstawowe paradygmaty programowania 3 Programowanie imperatywne 4 Programowanie funkcyjne 5 Programowanie w logice 6 Programowanie obiektowo zorientowane 7 Paradygmaty a języki programowania Mirosław Głowacki (AGH) Programowanie w C++ 2015 15 / 24

Programowanie w logice Na program składa się zbiór zależności (przesłanki) i pewne stwierdzenie (cel). Wykonanie programu to próba udowodnienia celu w oparciu o podane przesłanki. Obliczenia wykonywane są niejako przy okazji dowodzenia celu. Podobnie jak w programowaniu funkcyjnym, nie wydajemy rozkazów, a jedynie opisujemy, co wiemy i co chcemy uzyskać. Mirosław Głowacki (AGH) Programowanie w C++ 2015 16 / 24

Przykładowy program w języku PROLOG ojciec(jan, jerzy). ojciec(jerzy, janusz). ojciec(jerzy, jozef). dziadek(x, Z) :- ojciec(x, Y), ojciec(y, Z).?- dziadek(x, janusz). :- oznacza jeśli lub wtedy gdy?- oznacza czy. Stałe: rozpoczynają się z małej litery, a zmienne z dużej. Mirosław Głowacki (AGH) Programowanie w C++ 2015 17 / 24

Spis treści 1 Pojęcie paradygmatu 2 Podstawowe paradygmaty programowania 3 Programowanie imperatywne 4 Programowanie funkcyjne 5 Programowanie w logice 6 Programowanie obiektowo zorientowane 7 Paradygmaty a języki programowania Mirosław Głowacki (AGH) Programowanie w C++ 2015 18 / 24

Programowanie obiektowo zorientowane W programowaniu obiektowym program to zbiór porozumiewających się ze sobą obiektów, czyli jednostek zawierających pewne dane i umiejących wykonywać na nich pewne operacje. Dane składowe klasy obiektów stanowią o stanie obiektów będących ich instancjami, a funkcje składowe klasy umożliwiają zmianę tego stanu. Ważną cechą jest tu powiązanie danych (czyli stanu) z operacjami na nich (czyli poleceniami) w całość, stanowiącą odrębną jednostkę obiekt. Cechą nie mniej ważną jest mechanizm dziedziczenia, czyli możliwość definiowania nowych, bardziej złożonych obiektów, na bazie obiektów już istniejących. Mirosław Głowacki (AGH) Programowanie w C++ 2015 19 / 24

Programowanie obiektowo zorientowane Myślenie obiektowe Zwolennicy programowania obiektowego uważają, że ten paradygmat dobrze odzwierciedla sposób, w jaki ludzie myślą o świecie. Nawet jeśli pogląd ten uznamy za przejaw pewnej egzaltacji, to niewątpliwie programowanie obiektowe zdobyło ogromną popularność i wypada je uznać obecnie za paradygmat dominujący. Mirosław Głowacki (AGH) Programowanie w C++ 2015 20 / 24

Programowanie obiektowo zorientowane Przykładowa definicja klasy w języku obiektowym - C++ Klasa jest zdefiniowanym przez użytkownika typem macierz, analogicznym do typów predefiniowanych int, double, itp. class macierz { static int nrmac; int n, m; double* mac; public: macierz(int = 1, int = 1, double = 0); ~macierz(); }; Dostępem domnienamym do składników klasy jest dostęp prywatny, więc nie ma potrzeby umieszczania słowa kluczowego private na początku definicji klasy. Mirosław Głowacki (AGH) Programowanie w C++ 2015 21 / 24

Programowanie obiektowo zorientowane Analogiczny fragment kodu z użyciem struktury struct macierz { private: static int nrmac; int n, m; double* mac; public: macierz(int = 1, int = 1, double = 0); ~macierz(); }; Jak widać struktura jest w języku C++ konstrukcją analogiczną do klasy. Tym razem dostępem domnienamym jest dostęp publiczny - stąd słowo kluczowe private na początku definicji. Mirosław Głowacki (AGH) Programowanie w C++ 2015 22 / 24

Spis treści 1 Pojęcie paradygmatu 2 Podstawowe paradygmaty programowania 3 Programowanie imperatywne 4 Programowanie funkcyjne 5 Programowanie w logice 6 Programowanie obiektowo zorientowane 7 Paradygmaty a języki programowania Mirosław Głowacki (AGH) Programowanie w C++ 2015 23 / 24

Paradygmaty a języki programowania Konkretny język programowania ucieleśnia jeden lub więcej paradygmatów Fortran, Pascal i C to języki pozwalające stosować paradygmat programowania imperatywnego. Mówi się wręcz, że są to języki imperatywne. Java bądź C# to z kolei języki obiektowe, w których typowe programowanie imperatywne zostało mocno ograniczone. Natomiast C++ jest językiem zarówno obiektowym, jak i imperatywnym. Do pewnego stopnia można zresztą uznać, że programowanie imperatywne to szczególny, wynaturzony przypadek programowania obiektowego, gdzie wszystko rozgrywa się wewnątrz jednego superobiektu. Mirosław Głowacki (AGH) Programowanie w C++ 2015 24 / 24