Wykład 1 Informacje Podstawowe

Podobne dokumenty
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 Informacje Podstawowe

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

Języki programowania deklaratywnego

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

Programowanie w języku C++ Podstawowe paradygmaty programowania

Paradygmaty programowania

Paradygmaty programowania

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

Języki programowania imperatywnego

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

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

Technologie i usługi internetowe cz. 2

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

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

Podstawy Programowania Obiektowego

Programowanie obiektowe - 1.

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

Programowanie obiektowe

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

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

Modelowanie i Programowanie Obiektowe

Języki programowania deklaratywnego

PRZEWODNIK PO PRZEDMIOCIE

Paradygmaty Programowania dr inŝ. Cezary Bolek

ZMODYFIKOWANY Szczegółowy opis przedmiotu zamówienia

Programowanie funkcyjne wprowadzenie Specyfikacje formalne i programy funkcyjne

GUI - projektowanie interfejsów cz. II

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

Wstęp do informatyki Paradygmaty programowania

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

Język programowania. Andrzej Bobyk

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

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

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

Programowanie Obiektowe i C++

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

Języki i metodyka programowania

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

Podstawy programowania w języku C

Wstęp do programowania

Technologie informacyjne - wykład 12 -

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

Języki programowania wprowadzenie

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

Programowanie obiektowe

INFORMATYKA PLAN STUDIÓW NIESTACJONARNYCH. Podstawy programowania Systemy operacyjne

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

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

Jerzy Nawrocki, Wprowadzenie do informatyki

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

Sterowniki Programowalne (SP)

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

Programowanie Obiektowe i C++ Marcin Benke

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

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

Kierunek:Informatyka- - inż., rok I specjalność: Grafika komputerowa i multimedia

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

Programowanie obiektowe

Języki i paradygmaty programowania

Sterowniki Programowalne (SP) Wykład 11

Technologie Informacyjne

Jerzy Nawrocki, Wprowadzenie do informatyki

Wstęp do Informatyki dla bioinformatyków

K_W04 K_W04 K_W04. Opis

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

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

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

Przegląd języka Python. Łukasz Anwajler

Podstawy Programowania Algorytmy i programowanie

Podstawy Programowania. Języki programowania

Języki programowania do zastosowań biomedycznych

WYKAZ PRZEDMIOTÓW I PLAN REALIZACJI

Język ludzki kod maszynowy

INSTYTUT NAUK EKONOMICZNYCH I INFORMATYKI Rozkład zajęć, Semestr zimowy, Kierunek INFORMATYKA PONIEDZIAŁEK

Rok I, semestr I (zimowy) Liczba godzin

Metodyka i Technika Programowania 1

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

Historia modeli programowania

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

InŜynieria oprogramowania. Język UML

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

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

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

Instrukcje sterujące. wer. 11 z drobnymi modyfikacjami! Wojciech Myszka :53:

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

Język programowania PASCAL

Podstawy programowania

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

Programowanie obiektowe

WYKAZ PRZEDMIOTÓW I PLAN REALIZACJI

Kierunek i poziom studiów: Chemia, pierwszy. Sylabus modułu: Technologia informacyjna (0310-CH-S1-003) 1. Informacje ogólne

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

Programowanie komputerów

Transkrypt:

Paradygmaty i języki programowania Wykład 1 Informacje Podstawowe Nieliniowej, WMiI UŁ 1

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 Nieliniowej, WMiI UŁ 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 Nieliniowej, WMiI UŁ 3

Podział paradygmatów Programowanie Imperatywne Deklaratywne Strukturalne Proceduralne Logiczne Funkcyjne Obiektowe Generyczne SQL, XML Współbieżne Zdarzeniowe Nieliniowej, WMiI UŁ 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). Nieliniowej, WMiI UŁ 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] Nieliniowej, WMiI UŁ 6

Cztery główne paradygmaty Paradygmat programowania Proceduralnego/Strukturalnego Paradygmat programowania Obiektowego Paradygmat programowania Funkcyjnego Paradygmat programowania Logicznego Nieliniowej, WMiI UŁ 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. Nieliniowej, WMiI UŁ 8

Programowanie Proceduralne/Strukturalne - przykład Nieliniowej, WMiI UŁ 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. Nieliniowej, WMiI UŁ 10

Programowanie Obiektowe - przykład Nieliniowej, WMiI UŁ 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. Nieliniowej, WMiI UŁ 12

Programowanie Funkcyjne - przykład Nieliniowej, WMiI UŁ 13

Programowanie Funkcyjne przykład inny Nieliniowej, WMiI UŁ 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. Nieliniowej, WMiI UŁ 15

Programowanie w logice - przykład Nieliniowej, WMiI UŁ 16

Programowanie w logice przykład 2 Nieliniowej, WMiI UŁ 17

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

Informacje Ogólne Zaliczenie ćwiczeń: 2 kolokwia+referat Zaliczenie wykładu: test Ocena z przedmiotu: 50% ćwiczenia + 50% wykład Wykłady i Ćwiczenia na: www.math.uni.lodz.pl/~kowalcr/paradygmatydzienne Dyżur: pokój A327, Środa 14.00-16.00 Nieliniowej, WMiI UŁ 19

Wykład 1 Wprowadzenie 18 luty 2015 (Robert Kowalczyk) 1. Ćwiczenie i wykład - informacje ogólne o charakterze zajęć 2. Podział referatów 3. Wiadomości wstępne i przedmiocie Nieliniowej, WMiI UŁ 20

Wykład 2 Powtórzenie 25 luty 2015 (Robert Kowalczyk) 1. Ćwiczenia z C++ (oceny za aktywność) Nieliniowej, WMiI UŁ 21

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

Wykład 4 Haskell 1 11 marzec 2015 (Poniatowski, Reszczyński, Woźniczka) Rozdział 2 Starting Out Rozdział 3 Types and Typeclasses z książki Learn You a Haskell for Great Good! autorstwa Mirana Lipovaca Nieliniowej, WMiI UŁ 23

Rozdział 4 Syntax in Functions Rozdział 5 Recursion Wykład 5 Haskell 2 18 marzec 2015 (Ciołek) z książki Learn You a Haskell for Great Good! autorstwa Mirana Lipovaca Nieliniowej, WMiI UŁ 24

Wykład 6 Haskell 3 25 marzec 2015 (Bugajny, Antoszkiewicz,Rogulski) Rozdział 6 Higher order functions Rozdział 7 Modules z książki Learn You a Haskell for Great Good! autorstwa Mirana Lipovaca Nieliniowej, WMiI UŁ 25

Wykład 7 Haskell 4 1 kwiecień 2015 (Szamburski, Bocheński) Rozdział 8 Making Our Own Types and Typeclasses Rozdział 9 Input and Output z książki Learn You a Haskell for Great Good! autorstwa Mirana Lipovaca Nieliniowej, WMiI UŁ 26

Wykład 8 Powtórzenie Haskell 8 kwiecień 2015 (Robert Kowalczyk) Nieliniowej, WMiI UŁ 27

Wykład 9 Kolokwium Haskell 15 kwiecień 2015 (Robert Kowalczyk) Nieliniowej, WMiI UŁ 28

Wykład 9 Wprowadzenie do języków logiki 15 kwiecień 2015 (Robert Kowalczyk) 1. Programowanie w logice - wstęp 2. Przegląd języków logiki 3. Wprowadzenie do Prologa 4. Podstawy Prologa Nieliniowej, WMiI UŁ 29

Rozdział 1 Introducing Prolog Wykład 10 Prolog 1 22 kwiecień 2015 (Anglart, Juśkiewicz, Mikołajczyk) Rozdział 2 Constructing Prolog Programs z książki Prolog Programming in Depth autorstwa Michael A. Covington, Donald Nute, André Vellino Nieliniowej, WMiI UŁ 30

Wykład 11 Prolog 2 29 kwiecień 2015 (Przybylski, Podkowiński) Rozdział 3 Data Structures and Computation z książki Prolog Programming in Depth autorstwa Michael A. Covington, Donald Nute, André Vellino Nieliniowej, WMiI UŁ 31

Wykład 12 Prolog 3 6 maj 2015 (Gacek, Gajewski) Rozdział 4 Expressing Procedural Algorithms z książki Prolog Programming in Depth autorstwa Michael A. Covington, Donald Nute, André Vellino Nieliniowej, WMiI UŁ 32

Wykład 13 Prolog 4 13 maj 2015 (Jacek Jaskólski) Rozdział 5 Reading Data in Foreign Formats Rozdział 7 Advanced Techniques z książki Prolog Programming in Depth autorstwa Michael A. Covington, Donald Nute, André Vellino Nieliniowej, WMiI UŁ 33

Wykład 14 Powtórzenie Prolog 20 maj 2015 (Robert Kowalczyk) Nieliniowej, WMiI UŁ 34

Wykład 15 Kolokwium Prolog 27 maj 2015 (Robert Kowalczyk) Nieliniowej, WMiI UŁ 35

Literatura do przedmiotu 1. Learn You a Haskell for Great Good! Miron Lipovaca 2. Prolog Programming in Depth autorstwa Michael A. Covington, Donald Nute, André Vellino 3. Strony www i książki poświęcone językom programowania: Haskell i Prolog Nieliniowej, WMiI UŁ 36

Dziękuję za Uwagę!!! Nieliniowej, WMiI UŁ 37