Programowanie deklaratywne

Podobne dokumenty
Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.

Algorytm. a programowanie -

Algorytmy równoległe: ocena efektywności prostych algorytmów dla systemów wielokomputerowych

Algorytmy równoległe: ocena efektywności prostych algorytmów dla systemów wielokomputerowych

Strategia "dziel i zwyciężaj"

Indukowane Reguły Decyzyjne I. Wykład 3

Serwis NaviExpert Biznes. Instrukcja obsługi

1 Moduł Bramki xcomfort

Rozdział ten zawiera informacje na temat zarządzania Modułem Modbus TCP oraz jego konfiguracji.

1 Wprowadzenie do algorytmiki

Algorytmy równoległe. Rafał Walkowiak Politechnika Poznańska Studia inżynierskie Informatyka 2010

1 Moduł Bramki xcomfort 3

Szeregowanie zadań. Wykład nr 3. dr Hanna Furmańczyk

Brinet sp. z o.o. wyłączny przedstawiciel DrayTek w Polsce

Kompletna dokumentacja kontenera C++ vector w -

przedmiot kilka razy, wystarczy kliknąć przycisk Wyczaruj ostatni,

2. Tablice. Tablice jednowymiarowe - wektory. Algorytmy i Struktury Danych

prowadzący dr ADRIAN HORZYK /~horzyk tel.: Konsultacje paw. D-13/325

Analiza algorytmów zadania podstawowe

Algorytmy sortujące. sortowanie kubełkowe, sortowanie grzebieniowe

Protokoły sieciowe model ISO-OSI Opracował: Andrzej Nowak

Algorytmy Równoległe i Rozproszone Część II - Sieci porównujące

1 Moduł Modbus ASCII/RTU

Sieci Komputerowe 2 / Ćwiczenia 2

Podstawy i języki programowania

Ping-Pong. Gra dla dwóch graczy.

Egzaminy i inne zadania. Semestr II.

Zadania semestralne. Programowanie obiektowe sem. II, lato 2014/2015

Zadania jednorodne 5.A.Modele przetwarzania równoległego. Rafał Walkowiak Przetwarzanie równoległe Politechnika Poznańska 2010/2011

Elementy kognitywistyki II: Sztuczna inteligencja. WYKŁAD X: Sztuczny neuron

Robo - instrukcja obsługi

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

Projektowanie Scalonych Systemów Wbudowanych VERILOG

Sterowniki Programowalne (SP)

PRÓBNY EGZAMIN MATURALNY Z INFORMATYKI

Pzetestuj działanie pętli while i do...while na poniższym przykładzie:

Dokumentacja techniczna

Algorytmy sortujące. Sortowanie bąbelkowe

Algorytmy równoległe: prezentacja i ocena efektywności prostych algorytmów dla systemów równoległych

Porządek symetryczny: right(x)

Zapis algorytmów: schematy blokowe i pseudokod 1

TRX API opis funkcji interfejsu

1. Cel ćwiczenia. 2. Podłączenia urządzeń zewnętrznych w sterowniku VersaMax Micro

Programowanie Funkcyjne. Marcin Kubica Świder,

Ćwiczenie 7: WYKONANIE INSTALACJI kontroli dostępu jednego Przejścia REGIONALNE CENTRUM EDUKACJI ZAWODOWEJ W BIŁGORAJU

operacje porównania, a jeśli jest to konieczne ze względu na złe uporządkowanie porównywanych liczb zmieniamy ich kolejność, czyli przestawiamy je.

Instrukcja instal Dokument przedstawia sposób instalacji programu Sokrates na komputerze PC z systemem operacyjnym Windows. Instalacja pracuje w

Język UML w modelowaniu systemów informatycznych

Programowanie funkcyjne wprowadzenie Specyfikacje formalne i programy funkcyjne

Algorytmy Równoległe i Rozproszone Część V - Model PRAM II

Ćwiczenie 4: Eksploatacja systemu kontroli dostępu jednego Przejścia REGIONALNE CENTRUM EDUKACJI ZAWODOWEJ W BIŁGORAJU

Podstawy programowania 2. Temat: Drzewa binarne. Przygotował: mgr inż. Tomasz Michno

Algorytmy i Struktury Danych.

Algorytmy i złożoność obliczeniowa. Wojciech Horzelski

Algorytmy komputerowe. dr inŝ. Jarosław Forenc

Program EWIDENCJA ODZIEŻY ROBOCZEJ INSTRUKCJA UŻYTKOWNIKA Przejdź do strony producenta programu

1 Moduł Modbus ASCII/RTU 3

Plan nauczania informatyki Opracował: mgr Daniel Starego

Komunikacja w sterownikach Horner APG w sieci CsCAN

Instrukcja obsługi portalu wersja dla aptek. Logowanie do portalu:

Programowanie w Logice

Przykładowe B+ drzewo

Złożoność obliczeniowa zadania, zestaw 2

Laboratorium Elektrycznych Systemów Inteligentnych

Projekt z przedmiotu Systemy akwizycji i przesyłania informacji. Temat pracy: Licznik binarny zliczający do 10.

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

TEORETYCZNE PODSTAWY INFORMATYKI

Sprawiedliwość i efektywność tradycyjnych i skomputeryzowanych metod organizacji masowego naboru do szkół średnich

LABORATORIUM AUTOMATYKA i ROBOTYKA Inne funkcje sterownika PLC część 2

Metody Kompilacji Wykład 3

Programowanie w VB Proste algorytmy sortowania

Zaawansowane algorytmy i struktury danych

INFORMATYKA W SZKOLE. Podyplomowe Studia Pedagogiczne. Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227

Podstawy Automatyki. Wykład 15 - Projektowanie układów asynchronicznych o programach liniowych. dr inż. Jakub Możaryn. Instytut Automatyki i Robotyki

Wiadomości. ZPKSoft Doradca. Wstęp.

Definicje. Algorytm to:

Przegląd paradygmatów na przykładzie języka Oz

Przeszukiwanie z nawrotami. Wykład 8. Przeszukiwanie z nawrotami. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 238 / 279

Algorytmy i Struktury Danych

Instrukcja obsługi systemu operacyjnego Sunlin

5. Algorytm genetyczny przykład zastosowania

Schematy blokowe. Algorytmy Marek Pudełko

Informacja w perspektywie obliczeniowej. Informacje, liczby i obliczenia

Struktury danych i złożoność obliczeniowa Wykład 2. Prof. dr hab. inż. Jan Magott

Zaprojektować i zaimplementować algorytm realizujący następujące zadanie.

Alicja Marszałek Różne rodzaje baz danych

Spis treści. 1 Moduł Modbus TCP 4

Blockly Kodowanie pomoc.

Wydział Matematyki I Informatyki ul. Słoneczna Olsztyn

JAK UCZESTNICY KONKURSU ZAKWALIFIKOWANI DO II ETAPU MAJĄ UDZIELIĆ ODPOWIEDZI NA ZADANIA?

Struktury danych i złozoność obliczeniowa. Prof. dr hab. inż. Jan Magott

Jeśli X jest przestrzenią o nieskończonej liczbie elementów:

Wyszukiwanie binarne

WPROWADZANIE ZLECEŃ POPRZEZ STRONĘ INSTRUKCJA UŻYTKOWNIKA

Wykład 5 Listy leniwe

KOMUTATOR MAGISTRALI WIDEO M2770

Laboratorium Elektrycznych Systemów Inteligentnych

Przegląd paradygmatów na przykładzie języka Oz

Transkrypt:

Języki i paradygmaty programowania Lista (elementy języka Oz) Przemysław Kobylański Zaprogramuj w języku Oz rozwiązania poniższych zadań. Na ocenę dostateczną trzeba rozwiązać wszystkie zadania bez gwiazdek. Na ocenę dobrą trzeba dodatkowo rozwiązać wszystkie zadania z jedną gwiazdką. Na ocenę bardzo dobrą trzeba rozwiązać wszystkie zadania. Część I Programowanie deklaratywne Zadanie. Zdefiniuj funkcję {Reverse L}, która dostarcza listę złożoną z elementów listy L ale w odwróconej kolejności. Jaką czasową złożoność obliczeniową ma Twoja funkcja? Jeśli wyższą niż liniową względem długości listy L, to napisz rozwiązanie od nowa. Zadanie. Zdefiniuj funkcję {Merge L L L}, która scala trzy uporządkowane listy złożone z liczb w jedną uporządkowaną listę. Zadanie. Zdefiniuj poniższe funkcje wykorzystując odpowiednio funkcję {FoldL L F U} albo {FoldR L F U }: fun {App L L} case L of n i l then L [ ] H T then H { App T L} fun { Reverse L} case L of n i l then n i l [ ] H T then {App { Reverse T} [H] }

Zadanie.4* Do zapisu binarnego drzewa uporządkowanego według kluczy zastosuj rekordy postaci: tree(key:key value:value left:left right:right) natomiast liście reprezentuj wartością leaf. Zdefiniuj funkcję {FindAll V T}, która tworzy listę wszystkich kluczy z którymi wartość V występuje w drzewie T, przy czym klucze powinny być uporządkowane na tej liście. Jaką czasową złożoność obliczeniową ma Twoja funkcja? Jeśli wyższą niż liniową względem liczby węzłów w drzewie T, to napisz rozwiązanie od nowa. Zadanie.5** Zdefiniuj funkcję {Permutacje L}, której wartością jest lista wszystkich permutacji elementów listy L. Przykład obliczeń: {Show {Permutacje [ ]}} [[ ] [ ] [ ] [ ] [ ] [ ]] Uwaga: kolejność permutacji na wynikowej liście może być inna. Część II Współbieżność deklaratywna Zadanie. Napisz procedurę {Game Id Id}, która tworzy dwa wątki rozmawiające ze sobą za pomocą strumieni zrealizowanych listami otwartymi. Każdy z wątków realizuje grę jednego gracza (wątek pierwszy gracza o identyfikatorze Id a wątek drugi gracza o identyfikatorze Id). Każdy z graczy czeka aż wartość pojawi się mu na wejściu. Jeśli jest to ping, to wysyła na wyjście wartość pong a jeśli pong, to wysyła ping. Gdy gracz rozpozna co pojawiło się na jego wejściu, to drukuje swój identyfikator i otrzymaną wartość. Na rysunku przedstawiono schematycznie ideę programu. Nie zapomnij "rzucić" pierwszemu graczowi piłeczkę (bez tego gra się nie rozpocznie). Przykładowe uruchomienie: {Game p p} p#ping p#pong p#ping p#pong p#ping p#pong p#ping p#pong... Zwróć uwagę, że program działa w nieskończoność.

Game wyjście wejście Id Id Player wejście wyjście Player Zadanie.* Rysunek : Dwaj gracze odbijający do siebie piłeczkę. Zdefiniuj procedurę {NSort IN OUT}, której parametrami są dwa strumienie liczb (wejściowy i wyjściowy). Strumienie reprezentuj w postaci list otwartych (aby zakończyć strumień wystarczy otwarty ogon zunifikować z nil). Działanie procedury NSort przypomina działanie tzw. zero-time sorting network. Sieć taka składa się z połączonych ze sobą kolejnych węzłów, które można scharakteryzować następująco: Każdy węzeł ma własny akumulator, który zostaje zainicjowany pierwszą wartością jaka pojawiła się w strumieniu wejściowym do tego węzła. Kolejne liczby pojawiające się w strumieniu wejściowym są porównywane z zawartością akumulatora. Jeśli liczba jest większa lub równa, to zostaje ona wysłana do następnego węzła. Jeśli jest mniejsza od akumulatora, to zastępuje starą zawartość akumulatora po tym jak zostanie ona wysłany do następnego węzła. Jeśli zakończy się strumień wejściowy, to zawartość akumulatora wysyłana jest do strumienia wyjściowego, następnie kończy się strumień wychodzący do następnego węzła i zaczyna kopiować przychodzące z niego liczby do strumienia wyjściowego w ślad za wysłaną tam wcześniej zawartością akumulatora. Węzeł kończy pracę gdy zakończy się kopiowanie liczb z kolejnego węzła. Na rysunku przedstawiono działanie sieci NSort, która wejściowy ciąg liczb przekształca w wyjściowy ciąg posortowany. Zadanie.** (zadanie 7 z rozdziału 4 książki []) Problem Hamminga dotyczy pierwszych n liczb całkowitych postaci p a pa pa k k dla a, a,..., a k przy użyciu pierwszych k liczb pierwszych p, p,..., p k. Napisz program, który rozwiązuje ten problem dla dowolnego n i k). W serwisie http://books.google.pl znajdziesz odpowiedni fragment książki [] i możesz tam poczytać o podobnych sieciach.

) 9) ) ) ) ) 4) 5) 6) 7) 8) ) ) 4) 5) Rysunek : Działanie sieci sortującej NSort. Część III Współbieżność z przesyłaniem komunikatów Zadanie. Zamodelujmy rozmawiające dwie osoby A i B w następujący sposób używając dwóch funkcji f i g: A : f(x ) B : g(f(x )) A : f(g(f(x ))) B : g(f(g(f(x )))). Przy czym x, to inicjująca rozmowę wartość. Zdefiniuj w języku Oz funkcję {Rozmowca Fun Interlokutor}, która tworzy punkt wejścia do portu rozmówcy nakładającego na bieżącą wartość swoją funkcję Fun i wysyłający tak wyliczoną nową wartość do interlokutora. Rozmówca przed wysłaniem nowej wartości powinien wydrukować starą otrzymaną wartość za pomocą funkcji Browse. Przykładowy dialog Utworzenie dwóch rozmówców: declare R R in 4

R={Rozmowca fun {$ X} X+ R} R={Rozmowca fun {$ X} X- R} Zainicjowanie rozmowy: {S R }... W oknie Browsera powinien pojawić się następujący nieskończony ciąg wartości: Zadanie.** Zapoznaj się z przedstawionym w rozdziale 5 książki [] systemem sterowania windami. Zaimplementuj go. Literatura [] P. Van Roy, S. Haridi. Programowanie. Koncepcje, techniki i modele. Helion, 5. [] R. Stephens. Essential Algorithms: A Practical Approach to Computer Algorithms. Wiley,. 5