Paradygmaty programowania



Podobne dokumenty
Wykład 0 Informacje Podstawowe

Języki programowania deklaratywnego

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

Programowanie funkcyjne wprowadzenie Specyfikacje formalne i programy funkcyjne

Języki programowania deklaratywnego

Języki i paradygmaty programowania. I. Wprowadzenie

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

Programowanie obiektowe - 1.

Programowanie obiektowe

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Programowanie Obiektowe i C++

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

REKURENCJA W JĘZYKU HASKELL. Autor: Walczak Michał

Programowanie w języku Python. Grażyna Koba

Programowanie w języku C++ Grażyna Koba

Paradygmaty programowania

Lab 10. Funkcje w argumentach funkcji metoda Newtona. Synonimy nazw typów danych. Struktury. Tablice struktur.

Podstawy programowania. Wykład: 4. Instrukcje sterujące, operatory. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

6. Pętle while. Przykłady

Programowanie. Pascal - język programowania wysokiego poziomu. Klasa 2 Lekcja 9 PASCAL

Podstawy programowania. 1. Operacje arytmetyczne Operacja arytmetyczna jest opisywana za pomocą znaku operacji i jednego lub dwóch wyrażeń.

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Liczby losowe i pętla while w języku Python

Przeciążanie operatorów

Programowanie w logice

1 Wprowadzenie do algorytmiki

Projekt 4: Programowanie w logice

Podstawy programowania Laboratorium. Ćwiczenie 2 Programowanie strukturalne podstawowe rodzaje instrukcji

Programowanie deklaratywne

Podstawy programowania. Wprowadzenie

PRZEWODNIK PO PRZEDMIOCIE

Programowanie w języku C++ Podstawowe paradygmaty programowania

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

Algorytmika i pseudoprogramowanie

Systemy ekspertowe i ich zastosowania. Katarzyna Karp Marek Grabowski

Myśl w języku Python! : nauka programowania / Allen B. Downey. Gliwice, cop Spis treści

Definicje wyższego poziomu

Języki programowania zasady ich tworzenia

Cw.12 JAVAScript w dokumentach HTML

Technologie cyfrowe. Artur Kalinowski. Zakład Cząstek i Oddziaływań Fundamentalnych Pasteura 5, pokój 4.15

Składnia funkcji i Rekurencja w języku Haskell

Podstawy programowania w języku C

Opis zagadnieo 1-3. Iteracja, rekurencja i ich realizacja

Informacja o języku. Osadzanie skryptów. Instrukcje, komentarze, zmienne, typy, stałe. Operatory. Struktury kontrolne. Tablice.

Obliczenia na stosie. Wykład 9. Obliczenia na stosie. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 266 / 303

INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE

Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie.

Wykład 1 Informacje Podstawowe

Nazwa implementacji: Nauka języka Python wyrażenia warunkowe. Autor: Piotr Fiorek. Opis implementacji: Poznanie wyrażeń warunkowych if elif - else.

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

Wstęp do programowania

Języki programowania C i C++ Wykład: Typy zmiennych c.d. Operatory Funkcje. dr Artur Bartoszewski - Języki C i C++, sem.

Języki programowania imperatywnego

ξ II.UWr Wprowadzenie do STM

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

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

Wstęp do Programowania potok funkcyjny

TEST KOŃCOWY DLA KLASY III GIMNAZJUM- POGRAMOWANIE. Szkoła Podstawowa Nr 5. im. Księcia Mazowieckiego Siemowita IV w Gostyninie.

Języki programowania do zastosowań biomedycznych

Programowanie I. Wprowadzenie. Proces programowania

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

Podstawy programowania.

Programowanie Obiektowe i C++ Marcin Benke

1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja. 2. Schemat blokowy przedstawia algorytm obliczania

Programowanie obiektowe

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

Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut.

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

Java EE produkcja oprogramowania

Podstawy i języki programowania

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Programowanie Niskopoziomowe

PODSTAWY SZTUCZNEJ INTELIGENCJI

Zapisywanie algorytmów w języku programowania

Algorytm. a programowanie -

Warunki logiczne instrukcja if

Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 WYKŁAD 7 WSTĘP DO INFORMATYKI

Metodyka i Technika Programowania 1

wykład II uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - funkcje, tablice i wskaźniki wykład II dr Jarosław Mederski Spis

Technologie cyfrowe semestr letni 2018/2019

Wykład 1 Informacje Podstawowe

Technologie cyfrowe semestr letni 2018/2019

Podstawy programowania funkcjonalnego

Jeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę.

Typy, klasy typów, składnie w funkcji

PRYWATNA WYŻSZA SZKOŁA BUSINESSU, ADMINISTRACJI I TECHNIK KOMPUTEROWYCH S Y L A B U S

C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów

Matematyka Dyskretna. Andrzej Szepietowski. 25 czerwca 2002 roku

Wykład 9: Polimorfizm i klasy wirtualne

Język programowania zbiór reguł określających, które ciągi symboli tworzą program komputerowy oraz jakie obliczenia opisuje ten program.

Szablony funkcji i klas (templates)

Arytmetyka liczb binarnych

PARADYGMATY PROGRAMOWANIA Wykład 4

Elementy języka Scheme

Programowanie od pierwszoklasisty do maturzysty. Grażyna Koba

Modelowanie i Programowanie Obiektowe

3. Instrukcje warunkowe

zmienne stanowią abstrakcję komórek pamięci: programista może przechowywać dane w pamięci, nie martwiąc się o techniczne szczegóły (np.

Python wprowadzenie. Warszawa, 24 marca PROGRAMOWANIE I SZKOLENIA

Transkrypt:

Paradygmaty programowania Jacek Michałowski, Piotr Latanowicz 15 kwietnia 2014 Jacek Michałowski, Piotr Latanowicz () Paradygmaty programowania 15 kwietnia 2014 1 / 12

Zadanie 1 Zadanie 1 Rachunek predykatów I rzędu stanowi podstawę teoretyczną dla a) [Nie] języka Scheme b) [Tak] języka Prolog c) [Nie] języka Smalltalk Programowanie logiczne to odmiana programowania deklaratywnego, w której program podawany jest jako pewien zestaw zależności, a obliczenia są dowodem pewnego twierdzenia w oparciu o te zależności. Rachunek predykatów I rzędu jest realizowany w programowaniu logicznym. Scheme - język funkcyjny Prolog - język logiczny Smalltalk - język obiektowy (dynamicznie typowany) Jacek Michałowski, Piotr Latanowicz () Paradygmaty programowania 15 kwietnia 2014 2 / 12

Zadanie 2 Zadanie 2 Do cech wyróżniających języków imperatywnych należą: a) [Tak] istnienie zmiennych wielokrotnego przypisania b) [Nie] wykorzystanie wyrażeń warunkowych c) [Tak] wykorzystanie instrukcji iteracyjnych Jacek Michałowski, Piotr Latanowicz () Paradygmaty programowania 15 kwietnia 2014 3 / 12

Zadanie 2 Wspólne elementy dla języków imperatywnych: Instrukcje przypisania wykonują pewne zadanie na zlokalizowanych w pamięci danych i odkładają tam wynik działania na potrzeby późniejszych operacji. Instrukcje pętli umożliwiają wielokrotne wykonanie tego samego kodu - w zależności od potrzeb, "wielokrotność"może oznaczać pewną określoną z góry liczbę powtórzeń lub wykonywanie do czasu spełnienia pewnych warunków. Instrukcje warunkowe wykonują pewien blok kodu tylko wtedy, kiedy spełniony jest określony warunek. W przeciwnym razie blok ten jest pomijany podczas wykonywania. Jednak wyrażenia warunkowe występują także w innych językach, stąd w b prawidłową odpowiedzią jest Nie. Jacek Michałowski, Piotr Latanowicz () Paradygmaty programowania 15 kwietnia 2014 4 / 12

Zadanie 3 Zadanie 3 Funkcje wyższego rzędu a) [Tak] to funkcje, których argumentami i/lub wartością są funkcje b) [Nie] to funkcje, które mogą działać na nie określonych z góry typach danych c) [Nie] są typowym elementem wszystkich języków deklaratywnych Funkcja wyższego rzędu - jest to funkcja, która zwraca lub przyjmuje jako argument inne funkcje. Powszechnie stosowane w językach funkcyjnych, jak SML, Ocaml, Haskell, jak również w Pythonie i Javascripcie. Żeby możliwe było tworzenie funkcji wyższego rzędu, funkcje muszą być typem pierwszoklasowym. Takie funkcje służą często do dostarczenia generycznych realizacji algorytmów (programista parametryzuje je własnymi funkcjami). Jacek Michałowski, Piotr Latanowicz () Paradygmaty programowania 15 kwietnia 2014 5 / 12

Zadanie 4 Zadanie 4 Język Java jest językiem a) [Nie] dynamicznym b) [Tak] imperatywnym c) [Tak] statycznie typowanym Jacek Michałowski, Piotr Latanowicz () Paradygmaty programowania 15 kwietnia 2014 6 / 12

Zadanie 4 Język dynamiczny - język programowania wysokiego poziomu, który podczas działania programu wykonuje wiele operacji przeprowadzanych w innych językach na etapie kompilacji. Np. dodawanie nowego kodu, przez rozszerzanie obiektów i definicji, przez zmianę typów danych. Zachowania takie można emulować w niemal wszystkich językach programowania o wystarczającej złożoności, jednak języki dynamiczne mają wbudowane konstrukcje umożliwiające ich bezpośrednie wykorzystanie. Java nie jest językiem dynamicznym (na przykład dlatego że jest kompilowany), jest językiem imperatywnym (patrz: pytanie 2), a także jest statycznie typowany (kontrola typów na etapie kompilacji). Jacek Michałowski, Piotr Latanowicz () Paradygmaty programowania 15 kwietnia 2014 7 / 12

Zadanie 5 Zadanie 5 Regułami nazywa się w programie prologowym klauzule postaci: a) [Nie] A 1 A 2... A n B b) [Tak] A B 1 B 2... B n c) [Nie] B 1 B 2... B n W języku Prolog wszystkie klauzule muszą być klauzulami Horna, czyli w formie A 1 A 2 A 3 B, tylko implikacja jest zapisana w odwrotną stronę (od prawej do lewej). Jak widać w a to B implikuje koniunkcję A 1, A 2 itd. zatem nie jest to klauzula Horna. W b wszystko jest w porządku. W c nie ma nic z drugiej strony implikacji, więc również nie jest to klauzula Horna. Jacek Michałowski, Piotr Latanowicz () Paradygmaty programowania 15 kwietnia 2014 8 / 12

Zadanie 6 Zadanie 6 Wartość λ-wyrażenia λx.x + 1 jest a) [Nie] liczbą o 1 większa od x b) [Tak] funkcją jednoargumentową c) [Nie] funkcją rekurencyjną Jacek Michałowski, Piotr Latanowicz () Paradygmaty programowania 15 kwietnia 2014 9 / 12

Zadanie 6 W rachunku lambda każde wyrażenie określa funkcję jednoargumentową. Z kolei argumentem tej funkcji jest również funkcja jednoargumentowa, wartością funkcji jest znów funkcja jednoargumentowa. Funkcja jest definiowana anonimowo przez wyrażenie lambda, które opisuje, co funkcja robi ze swoim argumentem. Rachunek lambda z pozoru nie ma żadnego mechanizmu, który umożliwiałby rekurencję nie można odwoływać się w definicji do samej funkcji. Rekurencję można osiągnąć poprzez operator paradoksalny Y. Czyli wartość nie może być liczbą o 1 większą od x (a), bo jest funkcją. Jest funkcją jednoargumentową (b), nie jest funkcją rekurencyjną (c), ponieważ w rachunku lambda nie można odwoływać się w definicji do samej funkcji. Jacek Michałowski, Piotr Latanowicz () Paradygmaty programowania 15 kwietnia 2014 10 / 12

Zadanie 7 Zadanie 7 Niech f(x, y) będzie w pewnym języku zdefiniowana jako { if y>0 then x + "iks" else y } Aby móc stwierdzić, że wywołanie f(1, 0) nie spowoduje błędu na żadnym etapie, wystarczy wiedzieć, że a) [Nie] jest to język z przeładowaniem operatorów b) [Nie] jest to język oferujący funkcje polimorficzne c) [Tak] jest to dynamicznie typowany język interpretowany Przeładowanie operatora + nic nie da, jeżeli język wymaga, aby dodawać do siebie zmienne tego samego typu (a tutaj próbuje dodać liczbę do ciągu znaków). To czy język umożliwia stosowanie funkcji polimorficznych (czyli metod wirtualnych) nie ma tutaj żadnego znaczenia. Jeśli jest to język dynamicznie typowany (np. Perl) to nie będzie błędu. Jacek Michałowski, Piotr Latanowicz () Paradygmaty programowania 15 kwietnia 2014 11 / 12

Zadanie 7 Dziękujemy za uwagę Jacek Michałowski, Piotr Latanowicz () Paradygmaty programowania 15 kwietnia 2014 12 / 12