Wykład 1 Informacje Podstawowe

Podobne dokumenty
Wykład 1 Informacje Podstawowe

Wykład 1 Informacje Podstawowe

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

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

Wykład 1 Wiadomości wstępne

Wykład 0 Informacje Podstawowe

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

Języki i paradygmaty programowania. I. Wprowadzenie

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

Programowanie w języku C++ Podstawowe paradygmaty programowania

Języki programowania deklaratywnego

Informatyka II stopień (I stopień / II stopień) Ogólnoakademicki (ogólno akademicki / praktyczny) Kierunkowy (podstawowy / kierunkowy / inny HES)

Paradygmaty programowania

Paradygmaty programowania

Języki programowania imperatywnego

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

Prolog 2 (Filip Wroński, Łukasz Betkowski, Paweł Świerblewski, Konrad Kosmatka)

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

KARTA PRZEDMIOTU. Języki i paradygmaty programowania C7. Programming languages and paradigms

Podstawy Programowania Obiektowego

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

Modelowanie i Programowanie Obiektowe

Programowanie obiektowe

PRZEWODNIK PO PRZEDMIOCIE

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

Programowanie obiektowe - 1.

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

Technologie i usługi internetowe cz. 2

Programowanie funkcyjne wprowadzenie Specyfikacje formalne i programy funkcyjne

Języki programowania deklaratywnego

Informatyczna Wieża Babel, czyli o różnych językach programowania. Informatyczna Wieża Babel, czyli o różnych językach programowania

Technologie informacyjne - wykład 12 -

SYLABUS DOTYCZY CYKLU KSZTAŁCENIA realizacja w roku akademickim 2016/2017

Wstęp do informatyki Paradygmaty programowania

Język programowania. Andrzej Bobyk

Paradygmaty Programowania dr inŝ. Cezary Bolek

ZMODYFIKOWANY Szczegółowy opis przedmiotu zamówienia

GUI - projektowanie interfejsów cz. II

Języki i metodyka programowania

Programowanie obiektowe

przedmiot kierunkowy (podstawowy / kierunkowy / inny HES) obowiązkowy (obowiązkowy / nieobowiązkowy) polski semestr I

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

Kierunek: Informatyka Poziom studiów: Studia I stopnia Forma studiów: Stacjonarne. audytoryjne. Wykład Ćwiczenia

Wstęp do programowania

Informatyka 1. Plan dzisiejszych zajęć. zajęcia nr 1. Elektrotechnika, semestr II rok akademicki 2008/2009

INFORMATYKA PLAN STUDIÓW NIESTACJONARNYCH. Podstawy programowania Systemy operacyjne

Programowanie Obiektowe i C++

Języki programowania wprowadzenie

Kierunek: Informatyka Poziom studiów: Studia I stopnia Forma i tryb studiów: Stacjonarne. Wykład Ćwiczenia

PRZEWODNIK PO PRZEDMIOCIE

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

SYLABUS DOTYCZY CYKLU KSZTAŁCENIA realizacja w roku akademickim 2016/2017

NAJLEPSZE STRATEGIE SKUTECZNYCH PROGRAMISTÓW. TECHNIKI PRACY Z KODEM KOD: NSKOD

INFORMATYKA. PLAN STUDIÓW NIESTACJONARNYCH 1-go STOPNIA STUDIA ROZPOCZYNAJĄCE SIĘ W ROKU AKADEMICKIM 2016/17. zajęć w grupach A K L S P

przedmiot kierunkowy (podstawowy / kierunkowy / inny HES) obowiązkowy (obowiązkowy / nieobowiązkowy) polski semestr I

Podstawy programowania w języku C

Jerzy Nawrocki, Wprowadzenie do informatyki

Informatyka I stopień (I stopień / II stopień) Ogólnoakademicki (ogólno akademicki / praktyczny) stacjonarne (stacjonarne / niestacjonarne)

INFORMATYKA. PLAN STUDIÓW STACJONARNYCH INŻYNIERSKICH 1-go STOPNIA STUDIA ROZPOCZYNAJĄCE SIĘ W ROKU AKADEMICKIM 2019/2020.

Sterowniki Programowalne (SP) Wykład 11

Informatyka I stopień ogólnoakademicki niestacjonarne Teleinformatyka Zakład Informatyki dr inż. Adam Krechowicz mgr inż.

Sterowniki Programowalne (SP)

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

K_W04 K_W04 K_W04. Opis

Prolog (Pro-Logic) Programowanie w Logice. Dr inż. Piotr Urbanek

INFORMATYKA PLAN STUDIÓW NIESTACJONARNYCH (W UKŁADZIE ROCZNYM) STUDIA ROZPOCZYNAJĄCE SIĘ W ROKU AKADEMICKIM

Podstawy modelowania programów Kod przedmiotu

Język programowania PASCAL

Programowanie w Javie nazwa przedmiotu SYLABUS A. Informacje ogólne

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

INFORMATYKA P L AN S T U DIÓW ST AC J O N AR N Y C H ( W UKŁAD Z I E S EMESTR AL N Y M ) Podstawy programowania

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

Jerzy Nawrocki, Wprowadzenie do informatyki

INFORMATYKA. PLAN STUDIÓW STACJONARNYCH 1-go STOPNIA (W UKŁADZIE SEMESTRALNYM) STUDIA ROZPOCZYNAJĄCE SIĘ W ROKU AKADEMICKIM A K L S P

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),

Podstawy programowania

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

Wprowadzenie do programowania

Programowanie komputerów

Harmonogram INFORMATYKA ANALITYCZNA Rok akademicki 2016/17 semestr zimowy

Kierunek: Informatyka Poziom studiów: Studia I stopnia Forma i tryb studiów: Stacjonarne. Wykład Ćwiczenia

Przegląd języka Python. Łukasz Anwajler

Elektrotechnika I stopień (I stopień / II stopień) Ogólno akademicki (ogólno akademicki / praktyczny) Kierunkowy (podstawowy / kierunkowy / inny HES)

15 Edycja TOR POZNAŃ TRACK DAY

Wstęp do Informatyki dla bioinformatyków

Programowanie Obiektowe i C++ Marcin Benke

Język ludzki kod maszynowy

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

Programowanie obiektowe

Historia modeli programowania

Języki i paradygmaty programowania

Metody Metody, parametry, zwracanie wartości

Technologie Informacyjne

Terminy egzaminów dla I roku MATEMATYKI - studia stacjonarne I stopnia. semestr letni 2018/2019, spec. Nauczanie matematyki i Informatyki

INFORMATYKA. PLAN STUDIÓW STACJONARNYCH INŻYNIERSKICH 1-go STOPNIA STUDIA ROZPOCZYNAJĄCE SIĘ W ROKU AKADEMICKIM 2018/19.

Terminy egzaminów dla I roku MATEMATYKI - studia stacjonarne I stopnia. semestr letni 2018/2019, spec. Nauczanie matematyki i Informatyki

Programowanie od pierwszoklasisty do maturzysty. Grażyna Koba

lp. imię żeńskie liczba wystapień lp. imię męskie liczba wystapień JULIA JAKUB WIKTORIA MATEUSZ 10.

Podstawy Programowania. Języki programowania

przedmiot specjalnościowy obowiązkowy polski semestr V semestr zimowy nie

Transkrypt:

Paradygmaty i języki programowania Wykład 1 Informacje Podstawowe

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 2

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 3

Podział paradygmatów Programowanie Imperatywne Deklaratywne Strukturalne Proceduralne Logiczne Funkcyjne Obiektowe Generyczne SQL, XML Współbieżne Zdarzeniowe 4

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). 5

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 numbers = [1,2,3,4,5] var doubled = numbers.map(function(n) { return n * 2 }) console.log(doubled) //=> [2,4,6,8,10] 6

Cztery główne paradygmaty Paradygmat programowania Proceduralnego/Strukturalnego Paradygmat programowania Obiektowego Paradygmat programowania Funkcyjnego Paradygmat programowania Logicznego 7

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. 8

Programowanie Proceduralne/Strukturalne - przykład 9

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. 10

Programowanie Obiektowe - przykład 11

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. 12

Programowanie Funkcyjne przykład 1 13

Programowanie Funkcyjne przykład 2 14

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. 15

Programowanie w logice przykład 1 16

Programowanie w logice przykład 2 17

Popularność języków a cztery główne paradygmaty źródło: www.tiobe.com 18

Informacje Ogólne Zaliczenie ćwiczeń: referat + 3 projekty ocena z ćwiczeń = 40% referat + 60% (4*20) projekty Zaliczenie wykładu: zaliczone ćwiczenia + 60 min. egzamin w formie testu (15 pytań zamkniętych + 5 pytań otwartych) ocena z wykładu = 50% ćwiczenia + 50% egzamin Wykłady i Ćwiczenia na: www.math.uni.lodz.pl/~kowalcr/paradygmatyplock 19

Wykład 1 (27 luty 2014) Wprowadzenie (Robert Kowalczyk) 1. Ćwiczenie i wykład - informacje ogólne o charakterze zajęć 2. Podział referatów 3. Wiadomości wstępne i przedmiocie 4. Projekt (język proceduralno/strukturalny) 20

Wykład 2 (6 marzec 2014) Instalacja środowisk Haskell i Prolog (Robert Kowalczyk) Instalacja i testowanie najprostszych programów 21

Wykład 3 (13 marzec 2014) Wprowadzenie do języków funkcyjnych (Robert Kowalczyk) 1. Programowanie funkcyjne - wstęp 2. Przegląd języków funkcyjnych 3. Wprowadzenie do Haskella 4. Podstawy Haskella 22

Wykład 4 (20 marzec 2014) Haskell 1 (Paweł Różański, Wiesław Mosakowski, Adrian Długołęcki, Andrzej Sompoliński) Rozdział 2 Starting Out Rozdział 3 Types and Typeclasses z książki Learn You a Haskell for Great Good! autorstwa Mirana Lipovaca 23

Wykład 5 (27 marzec 2014) Haskell 2 (Natalia Zmysłowska, Piotr Podgórski, Michał Witkowski, Przemek Cyliński) Rozdział 4 Syntax in Functions Rozdział 5 Recursion z książki Learn You a Haskell for Great Good! autorstwa Mirana Lipovaca 24

Wykład 6 (3 kwiecień 2014) Haskell 3 (Grzegorz Pisarczyk, Damian Adamczyk, Krzysztof Ochociński, Filip Marek) Rozdział 6 Higher order functions Rozdział 7 Modules z książki Learn You a Haskell for Great Good! autorstwa Mirana Lipovaca 25

Wykład 7 (10 kwiecień 2014) Haskell 4 (Sebastian Maciejewski, Wojciech Sikorski, Adam Jabłoński, Kamil Jastrzębski) Rozdział 8 Making Our Own Types and Typeclasses z książki Learn You a Haskell for Great Good! autorstwa Mirana Lipovaca 26

Wykład 8 (17 kwiecień 2014) Haskell 5 (Magda Dzięcielewska, Kamil Pajek) Rozdział 9 Input and Output z książki Learn You a Haskell for Great Good! autorstwa Mirana Lipovaca Projekt (język funkcyjny) 27

Wykład 9 (24 kwiecień 2014) Wprowadzenie do języków logiki (Robert Kowalczyk) 1. Programowanie w logice - wstęp 2. Przegląd języków logiki 3. Wprowadzenie do Prologa 4. Podstawy Prologa 28

Wykład 10 (8 maj 2014) Prolog 1 (Rafał Rutkowski, Rafał Denkiewicz, Kacper Rękawiecki) Rozdział 1 Introducing Prolog z książki Prolog Programming in Depth autorstwa Michael A. Covington, Donald Nute, André Vellino 29

Wykład 11 (15 maj2014) Prolog 2 (Filip Wroński, Łukasz Betkowski, Paweł Świertlewski, Konrad Kosmatka) Rozdział 2 Constructing Prolog Programs z książki Prolog Programming in Depth autorstwa Michael A. Covington, Donald Nute, André Vellino 30

Wykład 12 (22 maj 2014) Prolog 3 (Marcin Zawadzki, Tomasz Golacik, Michał Rzepecki, Patryk Dzięgielewski) Rozdział 3 Data Structures and Computation z książki Prolog Programming in Depth autorstwa Michael A. Covington, Donald Nute, André Vellino Projekt (język logiki) 31

Wykład 13 (29 maj 2014) Prolog 4 (Akadiusz Radkowski, Marcin Stańczak, Krzysztof Bednarczak) Rozdział 4 Expressing Procedural Algorithms z książki Prolog Programming in Depth autorstwa Michael A. Covington, Donald Nute, André Vellino 32

Wykład 14 (5 czerwiec 2014) Prolog 5 (Michał Gołębiowski, Adam Olejniczak, Malwina Krajewska, Marta Drążkiewicz) Rozdział 5 Reading Data in Foreign Formats z książki Prolog Programming in Depth autorstwa Michael A. Covington, Donald Nute, André Vellino 33

Wykład 15 (12 czerwiec 2014) Rozwiązywanie zadań Prolog i Haskell (Robert Kowalczyk) 34

Egzamin (Robert Kowalczyk) 1. Test 60 minut 2. 15 pytań zamkniętych 3. 5 pytań otwartych 35

Literatura do przedmiotu 1. http://docs.oracle.com/javase/tutorial/ 2. Learn You a Haskell for Great Good! Miron Lipovaca 3. Prolog Programming in Depth autorstwa Michael A. Covington, Donald Nute, André Vellino 4. Strony www i książki poświęcone językom programowania: Java, Haskell i Prolog 36

Dziękuję za Uwagę!!! 37