• Nie Znaleziono Wyników

Języki i paradygmaty programowania wykład 1

N/A
N/A
Protected

Academic year: 2021

Share "Języki i paradygmaty programowania wykład 1"

Copied!
76
0
0

Pełen tekst

(1)

Wydział Matematyki i Informatyki Uniwersytetu Łódzkiego

Języki i paradygmaty programowania wykład 1

Dariusz Wardowski

24 lutego 2012

dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 1 / 25

(2)

Wykład 1 Wiadomości wstępne

Kontakt

Dariusz Wardowski pokój: A334

e-mail: wardd@math.uni.lodz.pl www: www.math.uni.lodz.pl/˜wardd

dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 2 / 25

(3)

Wykład 1 Wiadomości wstępne

Zasady zaliczenia wykładu i laboratorium

Laboratorium

2 projekty Kolokwium

Ocena: 0,5*(średnia z projektów)+ 0,5*(ocena z kolokwium), przy czym obowiązuje zasada:

do 3,25 - dostateczny 3,26 - 3,75 - dostateczny plus 3,76 - 4,25 - dobry

4,26 - 4,75 - dobry plus 4,76 i powyżej - bardzo dobry

Wykład

Brak egzaminu

dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 3 / 25

(4)

Wykład 1 Wiadomości wstępne

Zasady zaliczenia wykładu i laboratorium

Laboratorium 2 projekty

Kolokwium

Ocena: 0,5*(średnia z projektów)+ 0,5*(ocena z kolokwium), przy czym obowiązuje zasada:

do 3,25 - dostateczny 3,26 - 3,75 - dostateczny plus 3,76 - 4,25 - dobry

4,26 - 4,75 - dobry plus 4,76 i powyżej - bardzo dobry

Wykład

Brak egzaminu

dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 3 / 25

(5)

Wykład 1 Wiadomości wstępne

Zasady zaliczenia wykładu i laboratorium

Laboratorium 2 projekty Kolokwium

Ocena: 0,5*(średnia z projektów)+ 0,5*(ocena z kolokwium), przy czym obowiązuje zasada:

do 3,25 - dostateczny 3,26 - 3,75 - dostateczny plus 3,76 - 4,25 - dobry

4,26 - 4,75 - dobry plus 4,76 i powyżej - bardzo dobry

Wykład

Brak egzaminu

dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 3 / 25

(6)

Wykład 1 Wiadomości wstępne

Zasady zaliczenia wykładu i laboratorium

Laboratorium 2 projekty Kolokwium

Ocena: 0,5*(średnia z projektów)+ 0,5*(ocena z kolokwium), przy czym obowiązuje zasada:

do 3,25 - dostateczny 3,26 - 3,75 - dostateczny plus 3,76 - 4,25 - dobry

4,26 - 4,75 - dobry plus 4,76 i powyżej - bardzo dobry

Wykład

Brak egzaminu

dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 3 / 25

(7)

Wykład 1 Wiadomości wstępne

Zasady zaliczenia wykładu i laboratorium

Laboratorium 2 projekty Kolokwium

Ocena: 0,5*(średnia z projektów)+ 0,5*(ocena z kolokwium), przy czym obowiązuje zasada:

do 3,25 - dostateczny 3,26 - 3,75 - dostateczny plus 3,76 - 4,25 - dobry

4,26 - 4,75 - dobry plus 4,76 i powyżej - bardzo dobry

Wykład

Brak egzaminu

dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 3 / 25

(8)

Wykład 1 Wiadomości wstępne

Zasady zaliczenia wykładu i laboratorium

Laboratorium 2 projekty Kolokwium

Ocena: 0,5*(średnia z projektów)+ 0,5*(ocena z kolokwium), przy czym obowiązuje zasada:

do 3,25 - dostateczny 3,26 - 3,75 - dostateczny plus 3,76 - 4,25 - dobry

4,26 - 4,75 - dobry plus 4,76 i powyżej - bardzo dobry

Wykład

Brak egzaminu

dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 3 / 25

(9)

Wykład 1 Wiadomości wstępne

Literatura

1 R. W. Sebesta, Concepts of Programming languages, Addison-Wesley 2004

2 M. L. Scott, Programming Language Pragmatics, Morgan Kaufmann 2009.

3 B. C. Pierce, Types and Programming Languages, The MIT Press 2002.

4 P. Van-Roy, S. Haridi, Concepts, Techniques, and Models of Computer Programming, The MIT Press 2004.

5 L. B. Wilson, R. G. Clark, Comparative Programming Languages, Addison Wesley 2000.

6 M. Ben-Ari, Understanding Programming Languages, John Wiley and Sons 1996.

7 M. Abadi, L. Cardelli, A Theory of Objects, Springer 1996.

8 G. E. Revesz, Lambda-calculus, Combinators and Functional Programming, Cambridge University Press 1998.

9 G. Hutton, Programming in Haskell, Cambridge University Press 2007.

10 R. Bird, Introduction to Functional Programming using Haskell, Prentice Hall PTR 1998.

11 U. Nilsson, J. Maluszynski, Logic, Programming and Prolog, John Wiley and Sons

dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 4 / 25

(10)

Wykład 1 Wiadomości wstępne

Literatura

1 An introduction to logic programming through Prolog, PrenticeHall International 1995

2 U. Endriss, An Introduction to Prolog Programming, Lecture Notes, University of Amsterdam 2007

3 W. F. Clocksin, C. S. Mellish, Prolog. Programowanie, Hellion 2003.

4 A. Csenki, Prolog Techniques, Attila Csenki and Ventus Publishing 2009

5 http://wazniak.mimuw.edu.pl/

dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 5 / 25

(11)

Wykład 1 Paradygmaty i języki programowania

Paradygmat - defincija

Paradygmat

Paradygmat to zbiór pojęć i teorii tworzących podstawy danej nauki (Thomas Kuhn).

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 (Słownik języka polskiego PWN)

Paradygmat programowania

Wzorzec programowania przedkładany w danym okresie rozwoju informatyki ponad inne lub szczególnie ceniony w pewnych okolicznościach lub zastosowaniach. Zbiór mechanizmów, jakich programista używa, pisząc program, i o to, jak ów program jest następnie wykonywany przez komputer. To ogół oczekiwań programisty wobec języka programowania i komputera, na którym będzie działał program.

dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 6 / 25

(12)

Wykład 1 Paradygmaty i języki programowania

Paradygmat - defincija

Paradygmat

Paradygmat to zbiór pojęć i teorii tworzących podstawy danej nauki (Thomas Kuhn).

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 (Słownik języka polskiego PWN)

Paradygmat programowania

Wzorzec programowania przedkładany w danym okresie rozwoju informatyki ponad inne lub szczególnie ceniony w pewnych okolicznościach lub zastosowaniach. Zbiór mechanizmów, jakich programista używa, pisząc program, i o to, jak ów program jest następnie wykonywany przez komputer. To ogół oczekiwań programisty wobec języka programowania i komputera, na którym będzie działał program.

dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 6 / 25

(13)

Wykład 1 Paradygmaty i języki programowania

Paradygmat - defincija

Paradygmat

Paradygmat to zbiór pojęć i teorii tworzących podstawy danej nauki (Thomas Kuhn).

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 (Słownik języka polskiego PWN)

Paradygmat programowania

Wzorzec programowania przedkładany w danym okresie rozwoju informatyki ponad inne lub szczególnie ceniony w pewnych okolicznościach lub zastosowaniach.

Zbiór mechanizmów, jakich programista używa, pisząc program, i o to, jak ów program jest następnie wykonywany przez komputer. To ogół oczekiwań programisty wobec języka programowania i komputera, na którym będzie działał program.

dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 6 / 25

(14)

Wykład 1 Paradygmaty i języki programowania

Paradygmat - defincija

Paradygmat

Paradygmat to zbiór pojęć i teorii tworzących podstawy danej nauki (Thomas Kuhn).

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 (Słownik języka polskiego PWN)

Paradygmat programowania

Wzorzec programowania przedkładany w danym okresie rozwoju informatyki ponad inne lub szczególnie ceniony w pewnych okolicznościach lub zastosowaniach.

Zbiór mechanizmów, jakich programista używa, pisząc program, i o to, jak ów program jest następnie wykonywany przez komputer. To ogół oczekiwań programisty wobec języka programowania i komputera, na którym będzie działał program.

dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 6 / 25

(15)

Wykład 1 Paradygmaty i języki programowania

Paradygmaty programowania - przegląd

1 Programowanie proceduralne

2 Programowanie strukturalne

3 Programowanie funkcyjne

4 Programowanie imperatywne

5 Programowanie obiektowe

6 Programowanie uogólnione

7 Programowanie zdarzeniowe

8 Programowanie logiczne

9 Programowanie aspektowe

10 Programowanie deklaratywne

11 Programowanie agentowe

12 Programowanie modularne

dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 7 / 25

(16)

Wykład 1 Paradygmaty i języki programowania

Paradygmaty programowania - przegląd

1 Programowanie proceduralne

2 Programowanie strukturalne

3 Programowanie funkcyjne

4 Programowanie imperatywne

5 Programowanie obiektowe

6 Programowanie uogólnione

7 Programowanie zdarzeniowe

8 Programowanie logiczne

9 Programowanie aspektowe

10 Programowanie deklaratywne

11 Programowanie agentowe

12 Programowanie modularne

dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 7 / 25

(17)

Wykład 1 Paradygmaty i języki programowania

Paradygmaty programowania - przegląd

1 Programowanie proceduralne

2 Programowanie strukturalne

3 Programowanie funkcyjne

4 Programowanie imperatywne

5 Programowanie obiektowe

6 Programowanie uogólnione

7 Programowanie zdarzeniowe

8 Programowanie logiczne

9 Programowanie aspektowe

10 Programowanie deklaratywne

11 Programowanie agentowe

12 Programowanie modularne

dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 7 / 25

(18)

Wykład 1 Paradygmaty i języki programowania

Paradygmaty programowania - przegląd

1 Programowanie proceduralne

2 Programowanie strukturalne

3 Programowanie funkcyjne

4 Programowanie imperatywne

5 Programowanie obiektowe

6 Programowanie uogólnione

7 Programowanie zdarzeniowe

8 Programowanie logiczne

9 Programowanie aspektowe

10 Programowanie deklaratywne

11 Programowanie agentowe

12 Programowanie modularne

dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 7 / 25

(19)

Wykład 1 Paradygmaty i języki programowania

Paradygmaty programowania - przegląd

1 Programowanie proceduralne

2 Programowanie strukturalne

3 Programowanie funkcyjne

4 Programowanie imperatywne

5 Programowanie obiektowe

6 Programowanie uogólnione

7 Programowanie zdarzeniowe

8 Programowanie logiczne

9 Programowanie aspektowe

10 Programowanie deklaratywne

11 Programowanie agentowe

12 Programowanie modularne

dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 7 / 25

(20)

Wykład 1 Paradygmaty i języki programowania

Paradygmaty programowania - przegląd

1 Programowanie proceduralne

2 Programowanie strukturalne

3 Programowanie funkcyjne

4 Programowanie imperatywne

5 Programowanie obiektowe

6 Programowanie uogólnione

7 Programowanie zdarzeniowe

8 Programowanie logiczne

9 Programowanie aspektowe

10 Programowanie deklaratywne

11 Programowanie agentowe

12 Programowanie modularne

dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 7 / 25

(21)

Wykład 1 Paradygmaty i języki programowania

Paradygmaty programowania - przegląd

1 Programowanie proceduralne

2 Programowanie strukturalne

3 Programowanie funkcyjne

4 Programowanie imperatywne

5 Programowanie obiektowe

6 Programowanie uogólnione

7 Programowanie zdarzeniowe

8 Programowanie logiczne

9 Programowanie aspektowe

10 Programowanie deklaratywne

11 Programowanie agentowe

12 Programowanie modularne

dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 7 / 25

(22)

Wykład 1 Paradygmaty i języki programowania

Paradygmaty programowania - przegląd

1 Programowanie proceduralne

2 Programowanie strukturalne

3 Programowanie funkcyjne

4 Programowanie imperatywne

5 Programowanie obiektowe

6 Programowanie uogólnione

7 Programowanie zdarzeniowe

8 Programowanie logiczne

9 Programowanie aspektowe

10 Programowanie deklaratywne

11 Programowanie agentowe

12 Programowanie modularne

dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 7 / 25

(23)

Wykład 1 Paradygmaty i języki programowania

Paradygmaty programowania - przegląd

1 Programowanie proceduralne

2 Programowanie strukturalne

3 Programowanie funkcyjne

4 Programowanie imperatywne

5 Programowanie obiektowe

6 Programowanie uogólnione

7 Programowanie zdarzeniowe

8 Programowanie logiczne

9 Programowanie aspektowe

10 Programowanie deklaratywne

11 Programowanie agentowe

12 Programowanie modularne

dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 7 / 25

(24)

Wykład 1 Paradygmaty i języki programowania

Paradygmaty programowania - przegląd

1 Programowanie proceduralne

2 Programowanie strukturalne

3 Programowanie funkcyjne

4 Programowanie imperatywne

5 Programowanie obiektowe

6 Programowanie uogólnione

7 Programowanie zdarzeniowe

8 Programowanie logiczne

9 Programowanie aspektowe

10 Programowanie deklaratywne

11 Programowanie agentowe

12 Programowanie modularne

dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 7 / 25

(25)

Wykład 1 Paradygmaty i języki programowania

Paradygmaty programowania - przegląd

1 Programowanie proceduralne

2 Programowanie strukturalne

3 Programowanie funkcyjne

4 Programowanie imperatywne

5 Programowanie obiektowe

6 Programowanie uogólnione

7 Programowanie zdarzeniowe

8 Programowanie logiczne

9 Programowanie aspektowe

10 Programowanie deklaratywne

11 Programowanie agentowe

12 Programowanie modularne

dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 7 / 25

(26)

Wykład 1 Paradygmaty i języki programowania

Paradygmaty programowania - przegląd

1 Programowanie proceduralne

2 Programowanie strukturalne

3 Programowanie funkcyjne

4 Programowanie imperatywne

5 Programowanie obiektowe

6 Programowanie uogólnione

7 Programowanie zdarzeniowe

8 Programowanie logiczne

9 Programowanie aspektowe

10 Programowanie deklaratywne

11 Programowanie agentowe

12 Programowanie modularne

dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 7 / 25

(27)

Wykład 1 Paradygmaty i języki programowania

Paradygmaty programowania - przegląd

1 Programowanie proceduralne

2 Programowanie strukturalne

3 Programowanie funkcyjne

4 Programowanie imperatywne

5 Programowanie obiektowe

6 Programowanie uogólnione

7 Programowanie zdarzeniowe

8 Programowanie logiczne

9 Programowanie aspektowe

10 Programowanie deklaratywne

11 Programowanie agentowe

12 Programowanie modularne

dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 7 / 25

(28)

Wykład 1 Paradygmaty i języki programowania

Programowanie imperatywne

Programowanie imperatywne to najbardziej pierwotny sposób programowania, w którym program postrzegany jest jako ciąg poleceń dla komputera

1 obliczenia rozumiemy tu jako sekwencję poleceń zmieniających krok po kroku stan maszyny, aż do uzyskania oczekiwanego wyniku.

2 Stan maszyny należy z kolei rozumieć jako zawartość całej pamięci oraz rejestrów i znaczników procesora.

3 Ten sposób patrzenia na programy związany jest ściśle z budową sprzętu komputerowego o architekturze von Neumanna, w którym poszczególne instrukcje (w kodzie maszynowym) to właśnie polecenia zmieniające ów globalny stan.

4 Języki wysokiego poziomu takie jak Fortran, Algol, Pascal, Ada lub C posługują się pewnymi abstrakcjami, ale wciąż odpowiadają paradygmatowi programowania imperatywnego.

5 Przykładowo, instrukcje podstawienia działają na danych pobranych z pamięci i umieszczają wynik w tejże pamięci, zaś abstrakcją komórek pamięci są zmienne.

dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 8 / 25

(29)

Wykład 1 Paradygmaty i języki programowania

Programowanie imperatywne

Programowanie imperatywne to najbardziej pierwotny sposób programowania, w którym program postrzegany jest jako ciąg poleceń dla komputera

1 obliczenia rozumiemy tu jako sekwencję poleceń zmieniających krok po kroku stan maszyny, aż do uzyskania oczekiwanego wyniku.

2 Stan maszyny należy z kolei rozumieć jako zawartość całej pamięci oraz rejestrów i znaczników procesora.

3 Ten sposób patrzenia na programy związany jest ściśle z budową sprzętu komputerowego o architekturze von Neumanna, w którym poszczególne instrukcje (w kodzie maszynowym) to właśnie polecenia zmieniające ów globalny stan.

4 Języki wysokiego poziomu takie jak Fortran, Algol, Pascal, Ada lub C posługują się pewnymi abstrakcjami, ale wciąż odpowiadają paradygmatowi programowania imperatywnego.

5 Przykładowo, instrukcje podstawienia działają na danych pobranych z pamięci i umieszczają wynik w tejże pamięci, zaś abstrakcją komórek pamięci są zmienne.

dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 8 / 25

(30)

Wykład 1 Paradygmaty i języki programowania

Programowanie imperatywne

Programowanie imperatywne to najbardziej pierwotny sposób programowania, w którym program postrzegany jest jako ciąg poleceń dla komputera

1 obliczenia rozumiemy tu jako sekwencję poleceń zmieniających krok po kroku stan maszyny, aż do uzyskania oczekiwanego wyniku.

2 Stan maszyny należy z kolei rozumieć jako zawartość całej pamięci oraz rejestrów i znaczników procesora.

3 Ten sposób patrzenia na programy związany jest ściśle z budową sprzętu komputerowego o architekturze von Neumanna, w którym poszczególne instrukcje (w kodzie maszynowym) to właśnie polecenia zmieniające ów globalny stan.

4 Języki wysokiego poziomu takie jak Fortran, Algol, Pascal, Ada lub C posługują się pewnymi abstrakcjami, ale wciąż odpowiadają paradygmatowi programowania imperatywnego.

5 Przykładowo, instrukcje podstawienia działają na danych pobranych z pamięci i umieszczają wynik w tejże pamięci, zaś abstrakcją komórek pamięci są zmienne.

dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 8 / 25

(31)

Wykład 1 Paradygmaty i języki programowania

Programowanie imperatywne

Programowanie imperatywne to najbardziej pierwotny sposób programowania, w którym program postrzegany jest jako ciąg poleceń dla komputera

1 obliczenia rozumiemy tu jako sekwencję poleceń zmieniających krok po kroku stan maszyny, aż do uzyskania oczekiwanego wyniku.

2 Stan maszyny należy z kolei rozumieć jako zawartość całej pamięci oraz rejestrów i znaczników procesora.

3 Ten sposób patrzenia na programy związany jest ściśle z budową sprzętu komputerowego o architekturze von Neumanna, w którym poszczególne instrukcje (w kodzie maszynowym) to właśnie polecenia zmieniające ów globalny stan.

4 Języki wysokiego poziomu takie jak Fortran, Algol, Pascal, Ada lub C posługują się pewnymi abstrakcjami, ale wciąż odpowiadają paradygmatowi programowania imperatywnego.

5 Przykładowo, instrukcje podstawienia działają na danych pobranych z pamięci i umieszczają wynik w tejże pamięci, zaś abstrakcją komórek pamięci są zmienne.

dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 8 / 25

(32)

Wykład 1 Paradygmaty i języki programowania

Programowanie imperatywne

Programowanie imperatywne to najbardziej pierwotny sposób programowania, w którym program postrzegany jest jako ciąg poleceń dla komputera

1 obliczenia rozumiemy tu jako sekwencję poleceń zmieniających krok po kroku stan maszyny, aż do uzyskania oczekiwanego wyniku.

2 Stan maszyny należy z kolei rozumieć jako zawartość całej pamięci oraz rejestrów i znaczników procesora.

3 Ten sposób patrzenia na programy związany jest ściśle z budową sprzętu komputerowego o architekturze von Neumanna, w którym poszczególne instrukcje (w kodzie maszynowym) to właśnie polecenia zmieniające ów globalny stan.

4 Języki wysokiego poziomu takie jak Fortran, Algol, Pascal, Ada lub C posługują się pewnymi abstrakcjami, ale wciąż odpowiadają paradygmatowi programowania imperatywnego.

5 Przykładowo, instrukcje podstawienia działają na danych pobranych z pamięci i umieszczają wynik w tejże pamięci, zaś abstrakcją komórek pamięci są zmienne.

dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 8 / 25

(33)

Wykład 1 Paradygmaty i języki programowania

Programowanie imperatywne - przykład

#include <iostream>

int main() {

std::cout << "Prosty program";

return 0;

}

dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 9 / 25

(34)

Wykład 1 Paradygmaty i języki programowania

Programowanie obiektowe

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. Główne cechy to:

1 Powiązanie danych z operacjami na nich w jedną w całość, stanowiącą odrębną jednostkę obiekt.

2 Mechanizm dziedziczenia, czyli możliwość definiowania nowych, bardziej złożonych obiektów, na bazie obiektów już istniejących.

3 Enkapsulacja danych - ukrywanie niektórych elementów obiektów danej klasy. Zwolennicy programowania obiektowego uważają, że ten paradygmat dobrze odzwierciedla sposób, w jaki ludzie myślą o świecie. Programowanie

obiektowe zdobyło ogromną popularność i można go uznać za paradygmat obecnie dominujący.

dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 10 / 25

(35)

Wykład 1 Paradygmaty i języki programowania

Programowanie obiektowe

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. Główne cechy to:

1 Powiązanie danych z operacjami na nich w jedną w całość, stanowiącą odrębną jednostkę obiekt.

2 Mechanizm dziedziczenia, czyli możliwość definiowania nowych, bardziej złożonych obiektów, na bazie obiektów już istniejących.

3 Enkapsulacja danych - ukrywanie niektórych elementów obiektów danej klasy. Zwolennicy programowania obiektowego uważają, że ten paradygmat dobrze odzwierciedla sposób, w jaki ludzie myślą o świecie. Programowanie

obiektowe zdobyło ogromną popularność i można go uznać za paradygmat obecnie dominujący.

dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 10 / 25

(36)

Wykład 1 Paradygmaty i języki programowania

Programowanie obiektowe

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. Główne cechy to:

1 Powiązanie danych z operacjami na nich w jedną w całość, stanowiącą odrębną jednostkę obiekt.

2 Mechanizm dziedziczenia, czyli możliwość definiowania nowych, bardziej złożonych obiektów, na bazie obiektów już istniejących.

3 Enkapsulacja danych - ukrywanie niektórych elementów obiektów danej klasy.

Zwolennicy programowania obiektowego uważają, że ten paradygmat dobrze odzwierciedla sposób, w jaki ludzie myślą o świecie. Programowanie

obiektowe zdobyło ogromną popularność i można go uznać za paradygmat obecnie dominujący.

dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 10 / 25

(37)

Wykład 1 Paradygmaty i języki programowania

Programowanie obiektowe

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. Główne cechy to:

1 Powiązanie danych z operacjami na nich w jedną w całość, stanowiącą odrębną jednostkę obiekt.

2 Mechanizm dziedziczenia, czyli możliwość definiowania nowych, bardziej złożonych obiektów, na bazie obiektów już istniejących.

3 Enkapsulacja danych - ukrywanie niektórych elementów obiektów danej klasy.

Zwolennicy programowania obiektowego uważają, że ten paradygmat dobrze odzwierciedla sposób, w jaki ludzie myślą o świecie. Programowanie

obiektowe zdobyło ogromną popularność i można go uznać za paradygmat obecnie dominujący.

dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 10 / 25

(38)

Wykład 1 Paradygmaty i języki programowania

Programowanie obiektowe - przykład

class Osoba {

private String imie;

private String nazwisko;

private int wiek;

}

public class Main {

public static void main(String[] args) {

Osoba o = new Osoba;

System.out.println("Obiekt klasy Osoba");

} }

dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 11 / 25

(39)

Wykład 1 Paradygmaty i języki programowania

Programowanie funkcyjne

Tutaj program to po prostu złożona funkcja (w sensie matematycznym), która otrzymawszy dane wejściowe wylicza pewien wynik.

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

2 Nie ma pętli (te wymagają np. zmiennych do sterowania ich przebiegiem).

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

dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 12 / 25

(40)

Wykład 1 Paradygmaty i języki programowania

Programowanie funkcyjne

Tutaj program to po prostu złożona funkcja (w sensie matematycznym), która otrzymawszy dane wejściowe wylicza pewien wynik.

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

2 Nie ma pętli (te wymagają np. zmiennych do sterowania ich przebiegiem).

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

dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 12 / 25

(41)

Wykład 1 Paradygmaty i języki programowania

Programowanie funkcyjne

Tutaj program to po prostu złożona funkcja (w sensie matematycznym), która otrzymawszy dane wejściowe wylicza pewien wynik.

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

2 Nie ma pętli (te wymagają np. zmiennych do sterowania ich przebiegiem).

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

dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 12 / 25

(42)

Wykład 1 Paradygmaty i języki programowania

Programowanie funkcyjne

Tutaj program to po prostu złożona funkcja (w sensie matematycznym), która otrzymawszy dane wejściowe wylicza pewien wynik.

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

2 Nie ma pętli (te wymagają np. zmiennych do sterowania ich przebiegiem).

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

dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 12 / 25

(43)

Wykład 1 Paradygmaty i języki programowania

Programowanie funkcyjne - przykład

kwadrat x = x*x kwadrat 5;

dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 13 / 25

(44)

Wykład 1 Paradygmaty i języki programowania

Programowanie logiczne

Na program składa się zbiór zależności (przesłanki) i pewne stwierdzenie (cel).

1 Wykonanie programu to próba udowodnienia celu w oparciu o podane przesłanki.

2 Obliczenia wykonywane podczas dowodzenia celu.

3 Podobnie jak w programowaniu funkcyjnym, nie ”wydajemy rozkazów”, a jedynie opisujemy, co wiemy i co chcemy uzyskać.

dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 14 / 25

(45)

Wykład 1 Paradygmaty i języki programowania

Programowanie logiczne

Na program składa się zbiór zależności (przesłanki) i pewne stwierdzenie (cel).

1 Wykonanie programu to próba udowodnienia celu w oparciu o podane przesłanki.

2 Obliczenia wykonywane podczas dowodzenia celu.

3 Podobnie jak w programowaniu funkcyjnym, nie ”wydajemy rozkazów”, a jedynie opisujemy, co wiemy i co chcemy uzyskać.

dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 14 / 25

(46)

Wykład 1 Paradygmaty i języki programowania

Programowanie logiczne

Na program składa się zbiór zależności (przesłanki) i pewne stwierdzenie (cel).

1 Wykonanie programu to próba udowodnienia celu w oparciu o podane przesłanki.

2 Obliczenia wykonywane podczas dowodzenia celu.

3 Podobnie jak w programowaniu funkcyjnym, nie ”wydajemy rozkazów”, a jedynie opisujemy, co wiemy i co chcemy uzyskać.

dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 14 / 25

(47)

Wykład 1 Paradygmaty i języki programowania

Programowanie logiczne

Na program składa się zbiór zależności (przesłanki) i pewne stwierdzenie (cel).

1 Wykonanie programu to próba udowodnienia celu w oparciu o podane przesłanki.

2 Obliczenia wykonywane podczas dowodzenia celu.

3 Podobnie jak w programowaniu funkcyjnym, nie ”wydajemy rozkazów”, a jedynie opisujemy, co wiemy i co chcemy uzyskać.

dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 14 / 25

(48)

Wykład 1 Paradygmaty i języki programowania

Programowanie logiczne - przykład

lubi(jan,ania).

lubi(jan,basia).

?- lubi(jan,X).

dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 15 / 25

(49)

Wykład 1 Paradygmaty i języki programowania

Języki programowania a paradygmat

Konkretny język programowania ucieleśnia jeden lub więcej paradygmatów.

1 programowanie imperatywne: Fortran, Algol, Pascal, C, Ada.

2 programowanie obiektowe: Java, C#, Smalltalk

3 programowanie imperatywne i obiektowe: C++

4 programowanie logiczne: Prolog

5 programowanie funkcyjne: IPL (Information Processing Language), Lisp, Scheme, ML, Miranda, Haskell

dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 16 / 25

(50)

Wykład 1 Paradygmaty i języki programowania

Języki programowania a paradygmat

Konkretny język programowania ucieleśnia jeden lub więcej paradygmatów.

1 programowanie imperatywne:

Fortran, Algol, Pascal, C, Ada.

2 programowanie obiektowe: Java, C#, Smalltalk

3 programowanie imperatywne i obiektowe: C++

4 programowanie logiczne: Prolog

5 programowanie funkcyjne: IPL (Information Processing Language), Lisp, Scheme, ML, Miranda, Haskell

dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 16 / 25

(51)

Wykład 1 Paradygmaty i języki programowania

Języki programowania a paradygmat

Konkretny język programowania ucieleśnia jeden lub więcej paradygmatów.

1 programowanie imperatywne: Fortran, Algol, Pascal, C, Ada.

2 programowanie obiektowe: Java, C#, Smalltalk

3 programowanie imperatywne i obiektowe: C++

4 programowanie logiczne: Prolog

5 programowanie funkcyjne: IPL (Information Processing Language), Lisp, Scheme, ML, Miranda, Haskell

dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 16 / 25

(52)

Wykład 1 Paradygmaty i języki programowania

Języki programowania a paradygmat

Konkretny język programowania ucieleśnia jeden lub więcej paradygmatów.

1 programowanie imperatywne: Fortran, Algol, Pascal, C, Ada.

2 programowanie obiektowe:

Java, C#, Smalltalk

3 programowanie imperatywne i obiektowe: C++

4 programowanie logiczne: Prolog

5 programowanie funkcyjne: IPL (Information Processing Language), Lisp, Scheme, ML, Miranda, Haskell

dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 16 / 25

(53)

Wykład 1 Paradygmaty i języki programowania

Języki programowania a paradygmat

Konkretny język programowania ucieleśnia jeden lub więcej paradygmatów.

1 programowanie imperatywne: Fortran, Algol, Pascal, C, Ada.

2 programowanie obiektowe: Java, C#, Smalltalk

3 programowanie imperatywne i obiektowe: C++

4 programowanie logiczne: Prolog

5 programowanie funkcyjne: IPL (Information Processing Language), Lisp, Scheme, ML, Miranda, Haskell

dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 16 / 25

(54)

Wykład 1 Paradygmaty i języki programowania

Języki programowania a paradygmat

Konkretny język programowania ucieleśnia jeden lub więcej paradygmatów.

1 programowanie imperatywne: Fortran, Algol, Pascal, C, Ada.

2 programowanie obiektowe: Java, C#, Smalltalk

3 programowanie imperatywne i obiektowe:

C++

4 programowanie logiczne: Prolog

5 programowanie funkcyjne: IPL (Information Processing Language), Lisp, Scheme, ML, Miranda, Haskell

dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 16 / 25

(55)

Wykład 1 Paradygmaty i języki programowania

Języki programowania a paradygmat

Konkretny język programowania ucieleśnia jeden lub więcej paradygmatów.

1 programowanie imperatywne: Fortran, Algol, Pascal, C, Ada.

2 programowanie obiektowe: Java, C#, Smalltalk

3 programowanie imperatywne i obiektowe: C++

4 programowanie logiczne:

Prolog

5 programowanie funkcyjne: IPL (Information Processing Language), Lisp, Scheme, ML, Miranda, Haskell

dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 16 / 25

(56)

Wykład 1 Paradygmaty i języki programowania

Języki programowania a paradygmat

Konkretny język programowania ucieleśnia jeden lub więcej paradygmatów.

1 programowanie imperatywne: Fortran, Algol, Pascal, C, Ada.

2 programowanie obiektowe: Java, C#, Smalltalk

3 programowanie imperatywne i obiektowe: C++

4 programowanie logiczne: Prolog

5 programowanie funkcyjne: IPL (Information Processing Language), Lisp, Scheme, ML, Miranda, Haskell

dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 16 / 25

(57)

Wykład 1 Paradygmaty i języki programowania

Języki programowania a paradygmat

Konkretny język programowania ucieleśnia jeden lub więcej paradygmatów.

1 programowanie imperatywne: Fortran, Algol, Pascal, C, Ada.

2 programowanie obiektowe: Java, C#, Smalltalk

3 programowanie imperatywne i obiektowe: C++

4 programowanie logiczne: Prolog

5 programowanie funkcyjne:

IPL (Information Processing Language), Lisp, Scheme, ML, Miranda, Haskell

dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 16 / 25

(58)

Wykład 1 Paradygmaty i języki programowania

Języki programowania a paradygmat

Konkretny język programowania ucieleśnia jeden lub więcej paradygmatów.

1 programowanie imperatywne: Fortran, Algol, Pascal, C, Ada.

2 programowanie obiektowe: Java, C#, Smalltalk

3 programowanie imperatywne i obiektowe: C++

4 programowanie logiczne: Prolog

5 programowanie funkcyjne: IPL (Information Processing Language), Lisp, Scheme, ML, Miranda, Haskell

dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 16 / 25

(59)

Wykład 1 Paradygmaty i języki programowania

Składnia i semantyka

Składnia

To zbiór reguł, mówiących jak wygląda poprawny program w danym języku, czyli np.:

1 Jak tworzy się polecenia i wyrażenia.

2 Jaką postać mają struktury sterowania (if, while, for itp.).

3 Jak zapisuje się deklaracje. Semantyka

Semantyka języka programowania definiuje precyzyjnie znaczenie poszczególnych symboli oraz ich funkcję w programie. Semantykę najczęściej definiuje się słownie, ponieważ większość z jej zagadnień jest trudna lub wręcz niemożliwa do ujęcia w jakikolwiek formalizm. Semantyka to znaczenie wspomnianych wyżej form, czyli

”co one robią”.

dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 17 / 25

(60)

Wykład 1 Paradygmaty i języki programowania

Składnia i semantyka

Składnia

To zbiór reguł, mówiących jak wygląda poprawny program w danym języku, czyli np.:

1 Jak tworzy się polecenia i wyrażenia.

2 Jaką postać mają struktury sterowania (if, while, for itp.).

3 Jak zapisuje się deklaracje. Semantyka

Semantyka języka programowania definiuje precyzyjnie znaczenie poszczególnych symboli oraz ich funkcję w programie. Semantykę najczęściej definiuje się słownie, ponieważ większość z jej zagadnień jest trudna lub wręcz niemożliwa do ujęcia w jakikolwiek formalizm. Semantyka to znaczenie wspomnianych wyżej form, czyli

”co one robią”.

dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 17 / 25

(61)

Wykład 1 Paradygmaty i języki programowania

Składnia i semantyka

Składnia

To zbiór reguł, mówiących jak wygląda poprawny program w danym języku, czyli np.:

1 Jak tworzy się polecenia i wyrażenia.

2 Jaką postać mają struktury sterowania (if, while, for itp.).

3 Jak zapisuje się deklaracje.

Semantyka

Semantyka języka programowania definiuje precyzyjnie znaczenie poszczególnych symboli oraz ich funkcję w programie. Semantykę najczęściej definiuje się słownie, ponieważ większość z jej zagadnień jest trudna lub wręcz niemożliwa do ujęcia w jakikolwiek formalizm. Semantyka to znaczenie wspomnianych wyżej form, czyli

”co one robią”.

dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 17 / 25

(62)

Wykład 1 Paradygmaty i języki programowania

Składnia i semantyka

Składnia

To zbiór reguł, mówiących jak wygląda poprawny program w danym języku, czyli np.:

1 Jak tworzy się polecenia i wyrażenia.

2 Jaką postać mają struktury sterowania (if, while, for itp.).

3 Jak zapisuje się deklaracje.

Semantyka

Semantyka języka programowania definiuje precyzyjnie znaczenie poszczególnych symboli oraz ich funkcję w programie. Semantykę najczęściej definiuje się słownie, ponieważ większość z jej zagadnień jest trudna lub wręcz niemożliwa do ujęcia w jakikolwiek formalizm. Semantyka to znaczenie wspomnianych wyżej form, czyli

”co one robią”.

dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 17 / 25

(63)

Wykład 1 Paradygmaty i języki programowania

Składnia i semantyka

Składnia

To zbiór reguł, mówiących jak wygląda poprawny program w danym języku, czyli np.:

1 Jak tworzy się polecenia i wyrażenia.

2 Jaką postać mają struktury sterowania (if, while, for itp.).

3 Jak zapisuje się deklaracje.

Semantyka

Semantyka języka programowania definiuje precyzyjnie znaczenie poszczególnych symboli oraz ich funkcję w programie. Semantykę najczęściej definiuje się słownie, ponieważ większość z jej zagadnień jest trudna lub wręcz niemożliwa do ujęcia w jakikolwiek formalizm. Semantyka to znaczenie wspomnianych wyżej form, czyli

”co one robią”.

dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 17 / 25

(64)

Wykład 1 Paradygmaty i języki programowania

Typy danych

Typ danych

Jest to opis rodzaju, struktury i zakresu wartości, jakie może przyjmować dany literał, zmienna, stała, argument, wynik funkcji lub wartość. Każdy język operuje na jakimś zestawie danych, dlatego niezbędne jest podzielenie danych na

odpowiednie typy, zdefiniowanie ich właściwości oraz operacji, jakie można na nich realizować. Większość języków posiada typy danych do reprezentowania:

1 Liczb całkowitych w różnych zakresach.

2 Liczb zmiennoprzecinkowych (reprezentacje liczb rzeczywistych o różnym stopniu dokładności)

3 Ciągów tekstowych.

Od strony sprzętowej wszystkie te informacje wyrażane są za pomocą sekwencji zer i jedynek. Język programowania nakłada jedynie odpowiednie ograniczenia i zasady ich przetwarzania. Zjawisko konwersji wartości jednego typu na inną nazywa się rzutowaniem.

dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 18 / 25

(65)

Wykład 1 Paradygmaty i języki programowania

Co to jest język?

Język to zbiór skończonych ciągów utworzonych ze znaków z ustalonego alfabetu.

NiechP będzie skończonym i niepustym zbiorem zwanym alfabetem; jego elementy nazywamy symbolami, znakami lub literami. Zbiór wszystkich napisów, jakie można utworzyć z symboli alfabetuP, oznaczamy przez P. Każdy podzbiór zbioruP

to pewien język.

dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 19 / 25

(66)

Wykład 1 Paradygmaty i języki programowania

Co to jest język?

Język to zbiór skończonych ciągów utworzonych ze znaków z ustalonego alfabetu.

NiechP będzie skończonym i niepustym zbiorem zwanym alfabetem; jego elementy nazywamy symbolami, znakami lub literami. Zbiór wszystkich napisów, jakie można utworzyć z symboli alfabetuP, oznaczamy przez P. Każdy podzbiór zbioruP

to pewien język.

dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 19 / 25

(67)

Wykład 1 Paradygmaty i języki programowania

Język programowania

Język programowania to zbiór zasad określających, kiedy ciąg symboli tworzy program (czyli ciąg symboli opisujący obliczenia) oraz jakie obliczenia opisuje.

Podobnie jak języki naturalne, język programowania składa się ze zbiorów reguł syntaktycznych oraz semantycznych, które opisują, jak należy budować poprawne wyrażenia oraz jak komputer ma je rozumieć. Wiele języków programowania posiada pisemną specyfikację swojej składni oraz semantyki, lecz inne zdefiniowane są jedynie przez oficjalne implementacje.

dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 20 / 25

(68)

Wykład 1 Paradygmaty i języki programowania

Opis języków programowania

1 Składnię języków opisujemy za pomocą notacji BNF, która odpowiada gramatykom bezkontekstowym.

2 Semantykę konstrukcji opisujemy w sposób w sposób nieformalny.

dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 21 / 25

(69)

Wykład 1 Paradygmaty i języki programowania

Opis języków programowania

1 Składnię języków opisujemy za pomocą notacji BNF, która odpowiada gramatykom bezkontekstowym.

2 Semantykę konstrukcji opisujemy w sposób w sposób nieformalny.

dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 21 / 25

(70)

Wykład 1 Paradygmaty i języki programowania

Notacja BNF

Notacja BNF (Backus Naur Form) jest powszechnie używana właśnie do opisu składni języków programowania. Stworzona została w trakcie prac nad językami Fortran i Algol na przełomie lat pięćdziesiątych i sześćdziesiątych XX wieku.

Notacja BNF (Backus Naur Form) jest powszechnie używana właśnie do opisu składni języków programowania.

Notacja BNF jest zestawem reguł o następującej postaci:

<symbol> ::= <wyrażenie zawierające symbole> Symbole >,<,::=,| to symbole metajęzyka, służą do definiowania języka.

dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 22 / 25

(71)

Wykład 1 Paradygmaty i języki programowania

Notacja BNF

Notacja BNF (Backus Naur Form) jest powszechnie używana właśnie do opisu składni języków programowania. Stworzona została w trakcie prac nad językami Fortran i Algol na przełomie lat pięćdziesiątych i sześćdziesiątych XX wieku.

Notacja BNF (Backus Naur Form) jest powszechnie używana właśnie do opisu składni języków programowania.

Notacja BNF jest zestawem reguł o następującej postaci:

<symbol> ::= <wyrażenie zawierające symbole>

Symbole >,<,::=,| to symbole metajęzyka, służą do definiowania języka.

dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 22 / 25

(72)

Wykład 1 Paradygmaty i języki programowania

Przykład użycia BNF

Liczby naturalne

<zero>::= 0

Przykład wartości: 0

<cyfra niezerowa>::= 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 Przykład wartości: 1, 2, 3

<cyfra>::= <zero> | <cyfra niezerowa>

Przykład wartości: 0, 1, 2, 3

<ciąg cyfr> ::= <cyfra> | <cyfra><ciąg cyfr>

Przykład wartości: 0, 1, 01, 23, 45, 99, 10023, 000001

<liczba naturalna>::= <cyfra> | <cyfra niezerowa><ciąg cyfr>

Przykład wartości: 0, 1, 2, 34 56, 406, 556066

Powyższa definicja ma charakter rekurencyjny.

dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 23 / 25

(73)

Wykład 1 Paradygmaty i języki programowania

Przykład użycia BNF

Liczby naturalne

<zero>::= 0

Przykład wartości: 0

<cyfra niezerowa>::= 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 Przykład wartości: 1, 2, 3

<cyfra>::= <zero> | <cyfra niezerowa>

Przykład wartości: 0, 1, 2, 3

<ciąg cyfr> ::= <cyfra> | <cyfra><ciąg cyfr>

Przykład wartości: 0, 1, 01, 23, 45, 99, 10023, 000001

<liczba naturalna>::= <cyfra> | <cyfra niezerowa><ciąg cyfr>

Przykład wartości: 0, 1, 2, 34 56, 406, 556066

Powyższa definicja ma charakter rekurencyjny.

dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 23 / 25

(74)

Wykład 1 Paradygmaty i języki programowania

Kompilacja i linkowanie

Kompilacja

To proces automatycznego tłumaczenia kodu napisanego w języku programowania na kod maszynowy. Dane wejściowe najczęściej nazywa się kodem źródłowym.

Program wykonujący tłumaczenie to kompilator.

Linkowanie

Konsolidacja (linkowanie od ang. link - łączyć) to proces polegający na połączeniu skompilowanych modułów (plików zawierających kod obiektowy lub plików bibliotek statycznych) i utworzeniu pliku wykonywalnego lub rzadziej innego pliku obiektowego. Dodatkowo podczas konsolidacji do pliku wynikowego mogą być dołączone odpowiednie nagłówki i informacje charakterystyczne dla konkretnego formatu pliku wykonywalnego.

dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 24 / 25

(75)

Wykład 1 Paradygmaty i języki programowania

Kompilacja i linkowanie

Kompilacja

To proces automatycznego tłumaczenia kodu napisanego w języku programowania na kod maszynowy. Dane wejściowe najczęściej nazywa się kodem źródłowym.

Program wykonujący tłumaczenie to kompilator.

Linkowanie

Konsolidacja (linkowanie od ang. link - łączyć) to proces polegający na połączeniu skompilowanych modułów (plików zawierających kod obiektowy lub plików bibliotek statycznych) i utworzeniu pliku wykonywalnego lub rzadziej innego pliku obiektowego. Dodatkowo podczas konsolidacji do pliku wynikowego mogą być dołączone odpowiednie nagłówki i informacje charakterystyczne dla konkretnego formatu pliku wykonywalnego.

dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 24 / 25

(76)

Wykład 1 Paradygmaty i języki programowania

koniec

DZIĘKUJĘ ZA UWAGĘ

dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 24 lutego 2012 25 / 25

Cytaty

Powiązane dokumenty

Stałe to obiekty programu, których wartość w trakcjie realizacji programu NIE MOŻE ulec zmianie. Zmienne - wartość może

Prototyp funkcji → deklaracja „uprzedzająca”, (objaśnienie identyfikatora funkcji) określa tylko nazwę funkcji oraz typy zwracanej wartości i parametrów (sam nagłówek

Definicja klasy ostream jest zawarta również w pliku &lt;iostream.h&gt;. Najważniejsze metody

void ∗malloc( size_t rozmiar ); // przydział bloku o zadanej wielkosci void ∗calloc( size_t il_elementow, size_t rozmiar); // przydział tablicy void free( void ∗wskaznik);

Ochrona danych poprzez argumenty typu static. Przeładowanie operatora

• automatyka przemysłowa: PLC Ladder (Siemens, Allen-Bradley, Mitsubishi Electric, Beckhoff) , SCA- DA, DCS −→ Industrial IoT (Python, Java, C/C++ z protokołami komunikacji),

Po kliknięciu na zakładkę Klasy w oknie tym pojawiają się wszystkie stworzone w ramach projektu klasy, a po kliknięciu na zakładkę Odpluskiwiacz pojawia się

Zadania są rozmieszczane na procesorach w sposób losowy. Jeśli liczba zadań jest duża procesory zostaną obciążone w sposób równomierny. Wady – musi być duża liczba