Współprogramy IV.

Slides:



Advertisements
Podobne prezentacje
Systemy czasu rzeczywistego
Advertisements

PRAM.
STRUKTURY DANYCH.
Sortowanie przez scalanie
Rekurencja 1 Podprogram lub strukturę danych nazywamy rekurencyjną, (recursive subprogram, recursive data structure) jeżeli częściowo składa się z samej.
Funkcje c.d. Strukturalność. Algorytmy. Ćwiczenia przed kolokwium.
typy całkowite (całkowitoliczbowe)
PROGRAMOWANIE STRUKTURALNE
ALGORYTMY I STRUKTURY DANYCH
Współprogramy III Ten wykład ma na celu pokazanie kolejnej ciekawej możliwości, którą oferują współprogramy. Wspólprogramy reprezentujące wyrażenia regularne.
Współprogramy II W tym wykładzie pogłębimy naszą znajomość z współprogramami. Omówimy współpracę procedur rekurencyjnych i współprogramów, wprowadzimy.
ZŁOŻONOŚĆ OBLICZENIOWA
ALGORYTMY GEOMETRYCZNE.
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 7: Procedury i funkcje © Jan Kaczmarek.
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 8: Wykorzystanie procedur i funkcji © Jan Kaczmarek.
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 6: Tablice, rekordy, zbiory.
Systemy czasu rzeczywistego Copyright, 2000 © Jerzy R. Nawrocki Wprowadzenie do.
Rekurencja Copyright, 2000 © Jerzy R. Nawrocki Wprowadzenie do informatyki Wykład.
Imperatywne modele obliczeń Copyright, 2001 © Jerzy R. Nawrocki Wprowadzenie do.
Rekursja Teoretyczne podstawy informatyki Wykład 5
Rekurencja Copyright, 2001 © Jerzy R. Nawrocki Wprowadzenie do informatyki Wykład.
Imperatywne modele obliczeń Copyright, 2003 © Jerzy R. Nawrocki Teoretyczne podstawy.
Programowanie imperatywne i granice obliczalności Copyright, 2004 © Jerzy R. Nawrocki
Rekursja Copyright, 2004 © Jerzy R. Nawrocki Teoretyczne podstawy informatyki.
Języki formalne i gramatyki
Kurs Pascala – spis treści
Obliczanie miar ortogonalnych.
Obliczanie miar biegunowych.
WYZWALACZE (TRIGGERY) Wyzwalacz jest specjalnym rodzajem procedury składowanej, która może być wykonana w odpowiedzi na jedną z trzech sytuacji: UPDATE.
INFORMATYKA Wykładowca: mgr Tadeusz Ziębakowski p. 126 I piętro (naprzeciw dziekanatu)
Ogólne jednostki programowe 1
Typy wskaźnikowe ogólne 1 Typy wskaźnikowe ogólne (general access types) umożliwiają pośredni dostęp (indirect access), czyli przez wskaźniki, do zadeklarowanych.
Wykład 2 struktura programu elementy języka typy zmienne
Współprogramy Plan: Motywacja Składnia Scenariusz obiektu współprogramu Przykłady Producent – konsument ( instrukcja attach ) Czytelnik -pisarze ( instukcja.
22 listopada 2000Regula konkatenacji II1 Dziedziczenie (cd.) Reguła konkatenacji II przykład - heapsort Reguła konkatenacji III.
1 Języki i techniki programowania prowadzący dr Grzegorz Filipczyk.
Podprogramy.
Typy złożone, case, stałe. Typ zbiorowy type typ_zb = set of typ_podstawowy; Typem podstawowym może być tylko typ porządkowy. Typem podstawowym może być
Podstawy programowania
REKURENCJA.
Programowanie strukturalne i obiektowe
Pliki tekstowe. Operacje na plikach. mgr inż. Agata Pacek.
Andrzej Jędryczkowski Nie da się napisać większego programu bez podziału go na części zwane podprogramami. Podprogram to wyróżniona część programu.
Sortowanie przez kopcowanie
Delphi i Acad cd.. l_poz := MSpace.Count; Label3.Caption:=IntToStr(l_poz); ent:=Mspace.Item(0); for l_poz := 0 to MSpace.Count-1 do begin; ent:=Mspace.Item(l_poz);
Procedury i funkcje.
Pliki Pojęcie i rodzaje plików Definicja typu plikowego Operacje wykonywane na plikach elementowych.
Zbiory i rekordy mgr inż. Agata Pacek. Deklaracja typu zbiorowego (określa ilość elementów w zbiorze) type biegi=set of 0..6; Definiowanie zmiennej typu.
Programowanie strukturalne i obiektowe
ALGORYTMY I STRUKTURY DANYCH
Informatyka MZT1 Wykład 6 Iteracje while i repeat Tablice Rekordy
1 Wykład 7 sortowanie BitButton format tekstu rysunki typ rekordowy.
Dynamiczne struktury danych
Ogólna struktura programu w TP
Informatyka 2 MPDI Wykład 9 Delphi tablice, rekordy.
Języki formalne i gramatyki Copyright, 2005 © Jerzy R. Nawrocki Teoretyczne podstawy.
WYKŁAD 06 Programowanie dynamiczne Grażyna Mirkowska.
METODY REPREZENTOWANIA IFORMACJI
Podsumowanie wiedzy MPDI2 sem.3 INFORMATYKA. tworzenie nowego pliku i katalogu, nawigacja po katalogach, listowanie zawartości katalogu, zmiana nazw,
Partnerstwo dla Przyszłości 1 Lekcja 27 Klasy i obiekty.
Partnerstwo dla Przyszłości 1 Lekcja 28 Dziedziczenie i rodzaje dziedziczenia.
Programowanie I Rekurencja.
ALGORYTMY I STRUKTURY DANYCH
Wykład 1 Informatyka II MPZI2 sem.letni. Tablice Tablice deklarujemy array [ lista typów indeksów ] of typ bazowy (składowych) np. var t1,t2:array [1..5,
Współprogramy Andrzej Salwicki 5 stycznia Współprogramy I Plan: ● Motywacja ● Składnia ● Scenariusz obiektu współprogramu ● Przykłady ● Producent.
Andrzej Salwicki 2 październik 2010
Współprogramy II W tym wykładzie pogłębimy naszą znajomość z współprogramami. Omówimy współpracę procedur rekurencyjnych i współprogramów, wprowadzimy.
ALGORYTMY I STRUKTURY DANYCH
Programowanie I Rekurencja.
Zapis prezentacji:

Współprogramy IV

Współprogram może pozwolić na szybsze wykonanie Przygotujmy obiekty coroutin odpowiadające rekordom aktywać procedur Przykład – wieże Hanoi

Procedura unit Hanoi: procedure(ile, z , na: integer); var k: integer; begin k:=6 -(z+na) ; (* z + na +k = 6 *) if ile>1 then call Hanoi(ile-1, z, k) fi; przenieś krążek z wieży z na wieżę na; if ile>1 then call Hanoi(ile-1, k, na) fi end Hanoi;

Tablica współprogramów I Utwórzmy tablicę współprogramów – każdemu możliwemu rekordowi aktywacji procedury będzie odpowiadać jeden współprogram var obiekty: arrayof arrayof arrayof CHanoi; Wartość ile zmienia się od 1 do n= liczba krążków wartości z oraz na zmieniają się od 1 do 3

Tablica współprogramów II Wypełniamy tablicę obiekty: for ile := 1 to n do newarray obiekty(ile) dim (1:3); for z := 1 to 3 do newarray obiekty(ile, z) dim (1:3) for na := 1 to 3 do if z =/= na then obiekty(ile,z,na):=new CHanoi(ile,z,na) od od od

Współprogram CHanoi unit CHanoi: coroutine(ile, z, na : integer); var k: integer; begin k:= 6-(z + na); return; do if ile>1 then attach(obiekty[ile-1, z, k]) fi; przenieś krążek z wieży z na wieżę na; if ile>1 then attach(obiekty[ile-1, k, na]) fi; od end CHanoi;

Zmontuj to razem i … wykonaj program WieżeHanoi; unit Chanoi: coroutine… var obiekty: arrayof arrayof arrayof Chanoi, i,j,m: integer; const n=64; begin (* utwórz tablicę obiekty *) ... attach(obiekty[n, 1, 3]) end WieżeHanoi;

Spostrzeżenia Obie wersje programu WieżeHanoi: rekurencyjna i ze współprogramami są równoważne! Druga wersja będzie działać znacznie szybciej – ponieważ zaoszczędzimy na tworzeniu rekordów aktywacji. Oczywiście sam problem ma złożoność wykładniczą i nic na to nie poradzimy. Ale w wielu sytuacjach można sporo zyskać, np. zastępując procedury modyfikujące strukturę danych np. DRZEWO przez odpowiednie współprogramy.