Paradygmaty programowania: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Gracja (dyskusja | edycje)
Gracja (dyskusja | edycje)
Linia 74: Linia 74:
# [[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/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/Moduł 10| Programowanie funkcyjne w Haskellu (część pierwsza)]] ([[Paradygmaty_programowania/Ćwiczenia 10|ćwiczenia]])
# [[Paradygmaty_programowania/Moduł 10| Programowanie funkcyjne w Haskellu I]] ([[Paradygmaty_programowania/Ćwiczenia 10|ćwiczenia]])
 
 
 
 
 
 
 
 
[[Paradygmaty programowania/Wykład 10: Programowanie funkcyjne w Haskellu I|Programowanie funkcyjne w Haskellu I]] ([[Paradygmaty programowania/Ćwiczenia 10: Programowanie funkcyjne w Haskellu I|ć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/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 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]])

Wersja z 15:22, 6 sie 2006

Forma zajęć

Wykład (30 godzin) + laboratorium (30 godzin)

Opis

Kurs omawia paradygmaty pojawiające się we współczesnych językach programowania: programowanie imperatywne, obiektowe, funkcyjne i programowanie w logice. Pozwala to pogłębić znajomość języków programowania, a także zrozumieć podstawowe zagadnienia implementacyjne.

Sylabus

Autor

  • 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
    • Przeładowywanie 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 C, Fortran, Pascal
  • Programowanie obiektowe
    • Klasy jako abstrakcyjne typy danych
    • Dziedziczenie
    • Późne 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
    • Otypianie
    • 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

  1. Robert Sebesta: Concepts of Programming Languages. Addison Wesley, 2005
  2. Peter Van Roy, Seif Haridi: Concepts, Techniques, and Models of Computer Programming. MIT Press, 2004
  3. Ken Arnold, James Gosling: The Java Programming Language. Addison Wesley, 2005 / Java. Wydawnictwa Naukowo-Techniczne, 1999
  4. Jeffrey Ullman: Elements of ML Programming. Prentice Hall, 1997

Moduły

  1. Co to jest paradygmat programowania? (ćwiczenia)
  2. Semantyka zmiennych (ćwiczenia)
  3. Typy, typy abstrakcyjne (ćwiczenia)
  4. Podprogramy (ćwiczenia)
  5. Programowanie obiektowe — przegląd (ćwiczenia)
  6. Programowanie funkcyjne — przegląd (ćwiczenia)
  7. Programowanie w logice — przegląd (ćwiczenia)
  8. U podstaw programowania funkcyjnego — rachunek lambda (ćwiczenia)
  9. U podstaw programowania obiektowego — rachunek sigma (ćwiczenia)
  10. Programowanie funkcyjne w Haskellu I (ćwiczenia)
  11. Programowanie funkcyjne w Haskellu II (ćwiczenia)
  12. Programowanie funkcyjne w Haskellu III (ćwiczenia)
  13. Programowanie w logice w Prologu I (ćwiczenia)
  14. Programowanie w logice w Prologu II (ćwiczenia)
  15. Inne paradygmaty warte wspomnienia (ćwiczenia)