Paradygmaty programowania: Różnice pomiędzy wersjami
Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
m →Autor |
|||
Linia 70: | Linia 70: | ||
==Moduły== | ==Moduły== | ||
# [[Paradygmaty programowania/Wykład 1: Co to jest paradygmat programowania?|Co to jest paradygmat programowania?]] ([[Paradygmaty programowania/Ćwiczenia 1: Co to jest paradygmat programowania?|ćwiczenia]]) | # [[Paradygmaty programowania/Wykład 1: Co to jest paradygmat programowania?|Co to jest paradygmat programowania?]] ([[Paradygmaty programowania/Ćwiczenia 1: Co to jest paradygmat programowania?|ćwiczenia]]) ([[Paradygmaty programowania/Test 1: Co to jest paradygmat programowania?|test]]) | ||
# [[Paradygmaty programowania/Wykład 2: Semantyka zmiennych|Semantyka zmiennych]] ([[Paradygmaty programowania/Ćwiczenia 2: Semantyka zmiennych|ćwiczenia]]) | # [[Paradygmaty programowania/Wykład 2: Semantyka zmiennych|Semantyka zmiennych]] ([[Paradygmaty programowania/Ćwiczenia 2: Semantyka zmiennych|ćwiczenia]]) ([[Paradygmaty programowania/Test 2: Semantyka zmiennych|test]]) | ||
# [[Paradygmaty programowania/Wykład 3: Typy, typy abstrakcyjne|Typy, typy abstrakcyjne]] ([[Paradygmaty programowania/Ćwiczenia 3: Typy, typy abstrakcyjne|ćwiczenia]]) | # [[Paradygmaty programowania/Wykład 3: Typy, typy abstrakcyjne|Typy, typy abstrakcyjne]] ([[Paradygmaty programowania/Ćwiczenia 3: Typy, typy abstrakcyjne|ćwiczenia]]) ([[Paradygmaty programowania/Test 3: Typy, typy abstrakcyjne|test]]) | ||
# [[Paradygmaty programowania/Wykład 4: Podprogramy|Podprogramy]] ([[Paradygmaty programowania/Ćwiczenia 4: Podprogramy|ćwiczenia]]) | # [[Paradygmaty programowania/Wykład 4: Podprogramy|Podprogramy]] ([[Paradygmaty programowania/Ćwiczenia 4: Podprogramy|ćwiczenia]]) ([[Paradygmaty programowania/Test 4: Podprogramy|test]]) | ||
# [[Paradygmaty programowania/Wykład 5: Programowanie obiektowe — przegląd|Programowanie obiektowe — przegląd]] ([[Paradygmaty programowania/Ćwiczenia 5: Programowanie obiektowe — przegląd|ćwiczenia]]) | # [[Paradygmaty programowania/Wykład 5: Programowanie obiektowe — przegląd|Programowanie obiektowe — przegląd]] ([[Paradygmaty programowania/Ćwiczenia 5: Programowanie obiektowe — przegląd|ćwiczenia]]) ([[Paradygmaty programowania/Test 5: Programowanie obiektowe — przegląd|test]]) | ||
# [[Paradygmaty programowania/Wykład 6: Programowanie funkcyjne — przegląd|Programowanie funkcyjne — przegląd]] ([[Paradygmaty programowania/Ćwiczenia 6: Programowanie funkcyjne — przegląd|ćwiczenia]]) | # [[Paradygmaty programowania/Wykład 6: Programowanie funkcyjne — przegląd|Programowanie funkcyjne — przegląd]] ([[Paradygmaty programowania/Ćwiczenia 6: Programowanie funkcyjne — przegląd|ćwiczenia]]) ([[Paradygmaty programowania/Test 6: Programowanie funkcyjne — przegląd|test]]) | ||
# [[Paradygmaty programowania/Wykład 7: Programowanie w logice - przegląd|Programowanie w logice — przegląd]] ([[Paradygmaty programowania/Ćwiczenia 7: Programowanie w logice - przegląd|ćwiczenia]]) | # [[Paradygmaty programowania/Wykład 7: Programowanie w logice - przegląd|Programowanie w logice — przegląd]] ([[Paradygmaty programowania/Ćwiczenia 7: Programowanie w logice - przegląd|ćwiczenia]]) ([[Paradygmaty programowania/Test 7: Programowanie w logice - przegląd|test]]) | ||
# [[Paradygmaty programowania/Wykład 8: U podstaw programowania funkcyjnego — rachunek lambda|U podstaw programowania funkcyjnego — rachunek lambda]] ([[Paradygmaty programowania/Ćwiczenia 8: U podstaw programowania funkcyjnego — rachunek lambda|ćwiczenia]]) | # [[Paradygmaty programowania/Wykład 8: U podstaw programowania funkcyjnego — rachunek lambda|U podstaw programowania funkcyjnego — rachunek lambda]] ([[Paradygmaty programowania/Ćwiczenia 8: U podstaw programowania funkcyjnego — rachunek lambda|ćwiczenia]]) ([[Paradygmaty programowania/Test 8: U podstaw programowania funkcyjnego — rachunek lambda|test]]) | ||
# [[Paradygmaty programowania/Wykład 9: U podstaw programowania obiektowego — rachunek sigma|U podstaw programowania obiektowego — rachunek sigma]] ([[Paradygmaty programowania/Ćwiczenia 9: U podstaw programowania obiektowego — rachunek sigma|ćwiczenia]]) | # [[Paradygmaty programowania/Wykład 9: U podstaw programowania obiektowego — rachunek sigma|U podstaw programowania obiektowego — rachunek sigma]] ([[Paradygmaty programowania/Ćwiczenia 9: U podstaw programowania obiektowego — rachunek sigma|ćwiczenia]]) ([[Paradygmaty programowania/Test 9: U podstaw programowania obiektowego — rachunek sigma|test]]) | ||
# [[Paradygmaty_programowania/Moduł 10| Programowanie funkcyjne w Haskellu I]] ([[Paradygmaty_programowania/Ćwiczenia 10|ćwiczenia]]) | # [[Paradygmaty_programowania/Moduł 10| Programowanie funkcyjne w Haskellu I]] ([[Paradygmaty_programowania/Ćwiczenia 10|ćwiczenia]]) ([[Paradygmaty_programowania/Test 10|test]]) | ||
# [[Paradygmaty programowania/Wykład 11: Programowanie funkcyjne w Haskellu II|Programowanie funkcyjne w Haskellu II]] ([[Paradygmaty programowania/Ćwiczenia 11: Programowanie funkcyjne w Haskellu II|ćwiczenia]]) | # [[Paradygmaty programowania/Wykład 11: Programowanie funkcyjne w Haskellu II|Programowanie funkcyjne w Haskellu II]] ([[Paradygmaty programowania/Ćwiczenia 11: Programowanie funkcyjne w Haskellu II|ćwiczenia]]) ([[Paradygmaty programowania/Test 11: Programowanie funkcyjne w Haskellu II|test]]) | ||
# [[Paradygmaty programowania/Wykład 12: Programowanie funkcyjne w Haskellu III|Programowanie funkcyjne w Haskellu III]] ([[Paradygmaty programowania/Ćwiczenia 12: Programowanie funkcyjne w Haskellu III|ćwiczenia]]) | # [[Paradygmaty programowania/Wykład 12: Programowanie funkcyjne w Haskellu III|Programowanie funkcyjne w Haskellu III]] ([[Paradygmaty programowania/Ćwiczenia 12: Programowanie funkcyjne w Haskellu III|ćwiczenia]]) ([[Paradygmaty programowania/Test 12: Programowanie funkcyjne w Haskellu III|test]]) | ||
# [[Paradygmaty programowania/Wykład 13: Programowanie w logice w Prologu I|Programowanie w logice w Prologu I]] ([[Paradygmaty programowania/Ćwiczenia 13: Programowanie w logice w Prologu I|ćwiczenia]]) | # [[Paradygmaty programowania/Wykład 13: Programowanie w logice w Prologu I|Programowanie w logice w Prologu I]] ([[Paradygmaty programowania/Ćwiczenia 13: Programowanie w logice w Prologu I|ćwiczenia]]) ([[Paradygmaty programowania/Test 13: Programowanie w logice w Prologu I|test]]) | ||
# [[Paradygmaty programowania/Wykład 14: Programowanie w logice w Prologu II|Programowanie w logice w Prologu II]] ([[Paradygmaty programowania/Ćwiczenia 14: Programowanie w logice w Prologu II|ćwiczenia]]) | # [[Paradygmaty programowania/Wykład 14: Programowanie w logice w Prologu II|Programowanie w logice w Prologu II]] ([[Paradygmaty programowania/Ćwiczenia 14: Programowanie w logice w Prologu II|ćwiczenia]]) ([[Paradygmaty programowania/Test 14: Programowanie w logice w Prologu II|test]]) | ||
# [[Paradygmaty programowania/Wykład 15: Inne paradygmaty warte wspomnienia|Inne paradygmaty warte wspomnienia]] ([[Paradygmaty programowania/Ćwiczenia 15: Inne paradygmaty warte wspomnienia|ćwiczenia]]) | # [[Paradygmaty programowania/Wykład 15: Inne paradygmaty warte wspomnienia|Inne paradygmaty warte wspomnienia]] ([[Paradygmaty programowania/Ćwiczenia 15: Inne paradygmaty warte wspomnienia|ćwiczenia]]) ([[Paradygmaty programowania/Test 15: Inne paradygmaty warte wspomnienia|test]]) |
Wersja z 08:34, 13 wrz 2006
Forma zajęć
Wykład (30 godzin) + laboratorium (30 godzin)
Opis
Kurs omawia cztery najistotniejsze paradygmaty pojawiające się we współczesnym programowaniu: programowanie imperatywne, obiektowe, funkcyjne i programowanie w logice. Skrótowo wspomniane są również inne paradygmaty. Kurs pozwala spojrzeć szerzej na programowanie, a w szczególności pogłębić znajomość języków programowania i zrozumieć podstawowe zagadnienia implementacyjne.
Sylabus
Autor
- Małgorzata Moczurad
- Włodzimierz Moczurad
Wymagania wstępne
- Logika i teoria mnogości
- Wstęp do programowania
- Algorytmy i struktury danych
Zawartość
- Pojęcia ogólne
- Opis składni i semantyki języków programowania
- Typy
- Przekazywanie parametrów do podprogramów
- Abstrakcyjne typy danych
- Przeciążanie operatorów i podprogramów
- Polimorfizm
- Programowanie imperatywne
- Zmienne
- Struktura blokowa
- Wiązanie statyczne i dynamiczne
- Organizacja wywołań podprogramów
- Przydział pamięci na stosie i na stercie
- Przykłady z języków Ada, C, Pascal
- Programowanie obiektowe
- Klasy jako abstrakcyjne typy danych
- Dziedziczenie
- Późne (dynamiczne) wiązanie wywołań
- Polimorfizm
- Szablony i klasy rodzajowe
- Przykłady z języków C++, Java, C#, Ada 95, Smalltalk
- Programowanie funkcyjne
- Funkcje jako model programowania
- Rachunek lambda
- Dopasowywanie wzorca
- Nadawanie typów
- Rekursja
- Leniwa ewaluacja
- Funkcje wyższego rzędu
- Przykłady z języków Lisp, Scheme, ML, Haskell
- Programowanie w logice
- Rachunek predykatów w Prologu
- Rezolucja
- Listy
Literatura
- Robert Sebesta: Concepts of Programming Languages. Addison Wesley, 2005
- Peter Van Roy, Seif Haridi: Concepts, Techniques, and Models of Computer Programming. MIT Press, 2004
- Ken Arnold, James Gosling: The Java Programming Language. Addison Wesley, 2005 / Java. Wydawnictwa Naukowo-Techniczne, 1999
- Richard Bird: Introduction to Functional Programming using Haskell. Prentice Hall, 1988
- Małgorzata Moczurad: Wybrane zagadnienia z teorii rekursji. Wydawnictwo UJ, 2002
- Martin Abadi, Luca Cardelli: A Theory of Objects. Springer, 1996.
- John Reynolds: Theories of Programming Languages. Cambridge University Press, 1998
- Feliks Kluźniak, Stanisław Szpakowicz: Prolog. Wydawnictwa Naukowo-Techniczne, 1983
Moduły
- Co to jest paradygmat programowania? (ćwiczenia) (test)
- Semantyka zmiennych (ćwiczenia) (test)
- Typy, typy abstrakcyjne (ćwiczenia) (test)
- Podprogramy (ćwiczenia) (test)
- Programowanie obiektowe — przegląd (ćwiczenia) (test)
- Programowanie funkcyjne — przegląd (ćwiczenia) (test)
- Programowanie w logice — przegląd (ćwiczenia) (test)
- U podstaw programowania funkcyjnego — rachunek lambda (ćwiczenia) (test)
- U podstaw programowania obiektowego — rachunek sigma (ćwiczenia) (test)
- Programowanie funkcyjne w Haskellu I (ćwiczenia) (test)
- Programowanie funkcyjne w Haskellu II (ćwiczenia) (test)
- Programowanie funkcyjne w Haskellu III (ćwiczenia) (test)
- Programowanie w logice w Prologu I (ćwiczenia) (test)
- Programowanie w logice w Prologu II (ćwiczenia) (test)
- Inne paradygmaty warte wspomnienia (ćwiczenia) (test)