Paradygmaty i języki programowania

Slides:



Advertisements
Podobne prezentacje
C++ wykład 2 ( ) Klasy i obiekty.
Advertisements

Programowanie obiektowe
Wprowadzenie do C++ Zajęcia 2.
Języki programowania C++
PROGRAMOWANIE STRUKTURALNE
PROGRAMOWANIE STRUKTURALNE
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 7: Procedury i funkcje © Jan Kaczmarek.
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 8: Wykorzystanie procedur i funkcji © Jan Kaczmarek.
P O D S T A W Y P R O G R A M O W A N I A
Programowanie imperatywne i język C Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie.
Programowanie imperatywne i język C
Programowanie imperatywne i język C Copyright, 2005 © Jerzy R. Nawrocki Wstęp.
Programowanie imperatywne i język C Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie.
Kurs Pascala – spis treści
Praktyka Programowania Semestr I: –wykład - 1 godz. –laboratorium - 1 godz. –projekt - 1 godz.
Zasady zaliczenia Warunki uzyskania zaliczenia:
INFORMATYKA Wykładowca: mgr Tadeusz Ziębakowski p. 126 I piętro (naprzeciw dziekanatu)
Pakiety i ATD 1 Definicja. Pakietem albo jednostką programową nazywamy grupę logicznie powiązanych elementów, które mogą być typami, podtypami, obiektami.
Wstęp do programowania obiektowego
Project made by Bartosz Rumiński Kl. III i rok 2007/2008.
Java – programowanie obiektowe
Projektowanie i programowanie obiektowe II - Wykład IV
INFORMATYKA II Wykładowca: mgr Tadeusz Ziębakowski
Wykład 4 Analiza i projektowanie obiektowe
Bezpieczeństwo danych
Programowanie strukturalne i obiektowe
Źródła: podręcznikopracował: A. Jędryczkowski.
Podstawy Programowania
Programowanie strukturalne i obiektowe
Jakub Wołczko W obiektowym świecie… Jakub Wołczko
WPROWADZENIE W ŚWIAT OBIEKTÓW
Programowanie obiektowe Wykład 6 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/14 Dariusz Wardowski.
Koncepcja procesu Zadanie i proces. Definicja procesu Process – to program w trakcie wykonywania; wykonanie procesu musi przebiegać w sposób sekwencyjny.
Algorytmy.
POŚREDNIK Jak reprezentowana jest informacja w komputerze? liczby – komputer został wymyślony jako zaawansowane urządzenie służące do wykonywania.
Wybrane zagadnienia relacyjnych baz danych
Podstawy informatyki 2013/2014
Programowanie obiektowe – język C++
Programowanie obiektowe 2013/2014
Programowanie w języku C++
Analiza matematyczna i algebra liniowa
Podstawy języka Instrukcje - wprowadzenie
Podstawy programowania
Obliczalność czyli co da się policzyć i jak Model obliczeń maszyna licznikowa dr Kamila Barylska.
Programowanie strukturalne i obiektowe C++
Technologie internetowe Wykład 5 Wprowadzenie do skrytpów serwerowych.
1 Zagadnienia na egzamin. 2 Język C podsumowanie Struktura programu w języku C Zmienne, Stałe Operacje arytmetyczne Operatory logiczne Priorytety operatorów.
OOP, Desing Patterns … and more Michał Dubel
Programowanie proceduralne Podstawy Programowania dla geoinformatyków Wykład 3 Rafał Witkowski, 2015.
Projektowanie obiektowe. Przykład: Punktem wyjścia w obiektowym tworzeniu systemu informacyjnego jest zawsze pewien model biznesowy. Przykład: Diagram.
Programowanie imperatywne i język C Copyright, 2007 © Jerzy R. Nawrocki Wstęp do.
Podstawy programowania
Instrukcje warunkowe w php. Pętla FOR Czasem zachodzi potrzeba wykonania jakiejś czynności określoną ilość razy. Z pomocą przychodzi jedna z najczęściej.
Wstęp do programowania Wykład 10 Programowanie w logice.
Wstęp do programowania Wykład 2 Dane, instrukcje, program.
Pakiety numeryczne Operatory, instrukcje sterujące, operacje bitowe Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania.
C++ mgr inż. Tomasz Turba Politechnika Opolska 2016.
Algorytmy. Co to jest algorytm? Przepis prowadzący do rozwiązania zadania.
Algorytmy, sposoby ich zapisu.1 Algorytm to uporządkowany opis postępowania przy rozwiązywaniu problemu z uwzględnieniem opisu danych oraz opisu kolejnych.
Programowanie Obiektowe – Wykład 6
Informacje ogólne.
Programowanie Obiektowe – Epilog
Różnice między programowanie strukturalnym a obiektowym
(według:
Paradygmaty i języki programowania
Wprowadzenie do programowania obiektowego
NEMERLE Michał Maliszewski.
Programowanie w Javie 1 Dr Robert Kowalczyk
Paradygmaty i języki programowania
Zapis prezentacji:

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

dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ Czym jest paradygmat? 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. źródło: słownik języka polskiego, PWN dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ

dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ Czym jest paradygmat programowania? Paradygmat programowania (z ang. programming paradigm), to wzorzec programowania przedkładany w danym okresie rozwoju informatyki ponad inne lub szczególnie ceniony w pewnych okolicznościach lub zastosowaniach. Paradygmat programowania definiuje sposób patrzenia programisty na przepływ sterowania i wykonywanie programu komputerowego. źródło: www.wikipedia.pl dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ

dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ Podział paradygmatów Programowanie Imperatywne Deklaratywne Zdarzeniowe Obiektowe Strukturalne Generyczne Współbieżne Funkcyjne Logiczne SQL, XML Proceduralne dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ

dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ Skąd taki podział? Programowanie imperatywne to paradygmat programowania, który opisuje proces wykonywania jako sekwencję instrukcji zmieniających stan programu. Podobnie jak tryb rozkazujący w lingwistyce wyraża żądania jakichś czynności do wykonania, programy imperatywne składają się z ciągu komend do wykonania przez komputer. Programowanie deklaratywne to paradygmat programowania, w którym programista zamiast definiowania sposobu rozwiązania, czyli sekwencji kroków prowadzących do uzyskania wyniku, opisuje samo rozwiązanie. Innymi słowy programowanie w tych językach polega na opisywaniu tego co nas interesuje a nie jak to zrobić (brak opisu przepływu sterowania). dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ

Programowanie imperatywne vs. deklaratywne dr Robert Kowalczyk WMiI UŁ

dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ Przykład – programowanie imperatywne a deklaratywne Imperatywne programowanie: var numbers = [1,2,3,4,5] var doubled = [] for(var i = 0; i < numbers.length; i++) { var newNumber = numbers[i] * 2 doubled.push(newNumber) } console.write(doubled) //=> [2,4,6,8,10] Deklaratywne programowanie var doubled = numbers.map(function(n) { return n * 2 }) console.log(doubled) //=> [2,4,6,8,10] dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ

dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ Cztery główne paradygmaty Paradygmat programowania Proceduralnego/Strukturalnego Paradygmat programowania Obiektowego Paradygmat programowania Funkcyjnego Paradygmat programowania Logicznego dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ

dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ Programowanie Proceduralne/Strukturalne Paradygmat programowania proceduralnego (z ang. procedural programming), to paradygmat programowania zalecający dzielenie kodu na procedury, czyli fragmenty wykonujące ściśle określone operacje. Procedury nie powinny korzystać ze zmiennych globalnych (w miarę możliwości), lecz pobierać i przekazywać wszystkie dane (czy też wskaźniki do nich) jako parametry wywołania. Paradygmat programowania strukturalnego (z ang. structured programming), to paradygmat zalecający hierarchiczne dzielenie kodu na bloki, z jednym punktem wejścia i jednym lub wieloma punktami wyjścia. Chodzi przede wszystkim o nieużywanie (lub ograniczenie) instrukcji skoku (goto). Trzema kluczowy strukturami są: - sekwencja (instrukcja_1; instrukcja_2;…; instrukcja_n), - wybór (if, if...else, switch, case), - powtarzanie (while, repeat, for). Strukturalność zakłócają instrukcje typu: break, continue, które jednak w niektórych przypadkach znacząco podnoszą czytelność kodu i elastyczność kodu. Kluczowe koncepcje: zmienne, typy, procedury i dane abstrakcyjne. Zastosowania: oprogramowanie sieciowe, systemy operacyjne. Języki charakterystyczne dla tych paradygmatów, to m.in.: Fortran (lata 50. XX wieku), Cobol (lata 60. XX wieku), Pascal (lata 70. XX wieku), C (lata 70. XX wieku), C++ (lata 80. XX wieku), i inne. dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ

Programowanie Proceduralne/Strukturalne - przykład dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ

Programowanie Obiektowe Paradygmat programowania obiektowego (ang. object-oriented programming), to paradygmat programowania, w którym programy definiuje się za pomocą obiektów - elementów łączących stan (czyli dane, nazywane najczęściej polami) i zachowanie (czyli procedury, tu: metody). Obiektowy program komputerowy wyrażony jest jako zbiór takich obiektów, komunikujących się pomiędzy sobą w celu wykonywania zadań. Kluczowe koncepcje: klasy i obiekty, dziedziczenie, enkapsulacja, polimorfizm. Zastosowania: aplikacje WWW i aplikacje desktopowe – współczesny rynek oprogramowania. Języki charakterystyczne dla tego typu paradygmatu, to m.in.: Simula (lata 60. XX wieku), Smalltalk (lata 80. XX wieku), C++ (lata 90. XX wieku), C# (początek XXI wieku), Java (lata 90. XX wieku), i inne. dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ

Obcject-oriented programming - example dr Robert Kowalczyk WMiI UŁ

dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ Programowanie Funkcyjne Paradygmat programowania funkcyjnego lub paradygmat programowania funkcjonalnego (z ang. functional programming), to paradygmat programowanie będący odmianą programowania deklaratywnego, w której funkcje należą do wartości podstawowych, a nacisk kładzie się na wartościowanie (często rekurencyjnych) funkcji, a nie na wykonywanie poleceń. Podstawą teoretyczną programowania funkcyjnego był opracowany w latach 30. XX wieku przez Alonzo Churcha rachunek lambda, a dokładnie rachunek lambda z typami. Kluczowe koncepcje: funkcje, rachunek lambda, parametryczny polimorfizm. Zastosowania: teoretyczne, telekomunikacja, obliczenia finansowe. Języki charakterystyczne dla tego typu paradygmatu, to m.in.: Lisp (lata 50. XX wieku), ML (lata 70. XX wieku), Haskell (lata 80. XX wieku), H# (lata 80. XX wieku), Erlang (lata 80. XX wieku) i inne. dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ

dr Robert Kowalczyk WMiI UŁ Programowanie funkcyjne - przykład dr Robert Kowalczyk WMiI UŁ

dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ Programowanie funkcyjne - przykład dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ

dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ Programowanie w logice Paradygmat programowania logicznego lub paradygmat programowania w logice (z ang. logic programming), to będąca odmianą programowania deklaratywnego metoda programowania, w której program podawany jest jako pewien zestaw zależności, i relacji zachodzących między tymi zależnościami. Kluczowe koncepcje: fakty, relacje i zapytania. Zastosowania: teoretyczne, sztuczna inteligencja (przetwarzanie języka naturalnego, rozpoznawanie obrazów). Języki charakterystyczne dla tego typu paradygmatu, to m.in.: Gödel (lata 70. XX wieku), Fril (lata 70. XX wieku), Prolog (lata 70. XX wieku), i inne. dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ

dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ Programowanie w logice - przykład dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ

dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ Programowanie w logice – przykład dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ

dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ Popularność języków – index TIOBE źródło: www.tiobe.com dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ

dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ Informacje Ogólne Zaliczenie ćwiczeń: kolokwium + referat Zaliczenie wykładu: test (15 pytań zamkniętych + 4 pytania otwarte) Ocena z przedmiotu: 50% ćwiczenia + 50% wykład Wykłady i Ćwiczenia na: www.math.uni.lodz.pl/~kowalcr Dyżur: pokój A327, Środa 14.00-16.00 (ewentualnie po zajęciach) dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ

dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ Wprowadzenie Zajecia 1 (Robert Kowalczyk) Wiadomości wstępne i przedmiocie Podział referatów dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ

dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ Haskell 1 Zajęcia 2 (Robert Kowalczyk) Wprowadzenie do Haskella dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ

Haskell 2 Zajęcia 3 Rozdział 3 Types and Typeclasses (Chrześcijanek i Nems i Mroziewicz i Bojaczuk) Rozdział 3 Types and Typeclasses Rozdział 4 Syntax in Functions Rozdział 5 Recursion z książki Learn You a Haskell for Great Good! autorstwa Mirana Lipovaca dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ

Haskell 3 Zajęcia 4 Rozdział 6 Higher order functions (Kryś i Ślifirska i Erber i Guzy) Rozdział 6 Higher order functions Rozdział 7 Modules Rozdział 9 Input and Output z książki Learn You a Haskell for Great Good! autorstwa Mirana Lipovaca dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ

dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ Prolog 1 Zajęcia 5 (Robert Kowalczyk) Wprowadzenie do Prologa dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ

Prolog 2 Zajęcia 6 i 7 Rozdział 1 Tutorial Introduction (Skoczylas i Surma i Jabłoński i Kałużyński i Kruszyna) Rozdział 1 Tutorial Introduction Rozdział 2 A Closer Look z książki Programming in Prolog autorstwa William Clocksin, Christopher S. Mellish dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ

Prolog 2 Zajęcia 6 i 7 Rozdział 3 Using Data Structures (Hamerski i Opitz i Blaszczyk) Rozdział 3 Using Data Structures Rozdział 4 Backtracking and the ”Cut” z książki Programming in Prolog autorstwa William Clocksin, Christopher S. Mellish dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ

dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ Prolog 3 Zajęcia 6 i 7 (Kolodziej, Łuczak) Rozdział 5 Input and Output Rozdział 6 Built-in Predicates z książki Programming in Prolog autorstwa William Clocksin, Christopher S. Mellish dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ

dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ Zajęcia 8 (Robert Kowalczyk) Egzamin 0 dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ

dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ Literatura do przedmiotu Learn You a Haskell for Great Good! Miron Lipovaca Programming in Prolog William Clocksin, Christopher S. Mellish Strony i książki poświęcone językom programowania: Haskell i Prolog dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ

dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ Dziękuję za Uwagę!!!  dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ