Wykład 10 typ zbiorowy rekurencja.

Slides:



Advertisements
Podobne prezentacje
Tablice 1. Deklaracja tablicy
Advertisements

Katarzyna Szafrańska kl. II ti
Sortowanie przez scalanie
C++ wykład 9 ( ) Szablony.
Rekurencja 1 Podprogram lub strukturę danych nazywamy rekurencyjną, (recursive subprogram, recursive data structure) jeżeli częściowo składa się z samej.
Grażyna Mirkowska PJWSTK 15 listopad 2000
Język ANSI C Funkcje Wykład: Programowanie komputerów
Programowanie I Rekurencja.
Wprowadzenie do języka skryptowego PHP – cz. 2
typy całkowite (całkowitoliczbowe)
PROGRAMOWANIE STRUKTURALNE
PROGRAMOWANIE STRUKTURALNE
Badania operacyjne. Wykład 2
ZŁOŻONOŚĆ OBLICZENIOWA
Turbo pascal – instrukcje warunkowe, iteracyjne,…
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.
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 5: Typy porządkowe, wyliczeniowe i okrojone. Definiowanie.
Rekurencja Copyright, 2000 © Jerzy R. Nawrocki Wprowadzenie do informatyki Wykład.
Rekurencja Copyright, 2001 © Jerzy R. Nawrocki Wprowadzenie do informatyki Wykład.
Programowanie imperatywne i granice obliczalności Copyright, 2004 © Jerzy R. Nawrocki
Rekursja Copyright, 2004 © Jerzy R. Nawrocki Teoretyczne podstawy informatyki.
Programowanie imperatywne i język C Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie.
Dynamiczne struktury danych 1
Tablice jednowymiarowe 1
Wykład 2 struktura programu elementy języka typy zmienne
Instrukcja skoku GO TO etykieta Np. GO TO 100 ….. 100WRITE (*,*) Przeskok do instrukcji 100 Uwaga! NIE WOLNO skakać do wnętrzna złożonych instrukcji warunkowych.
PASCAL Dr Anna Kwiatkowska.
Typy wyrażenia, schematy blokowe, writeln, readln, if, pętle
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ć
PROGRAMOWANIE STRUKTURALNE WYKŁAD 2
Schemat Hornera Mgr inż. Michał Szucki.
Programowanie imperatywne i język C Copyright, 2006 © Jerzy R. Nawrocki Wstęp do.
Podstawy programowania
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.
Funkcje w Pascalu Przypomnienie wiadomości o procedurach Prowadzący: Anna Kaleta Piotr Chojnacki.
20 września 2003r. Centrum Kształcenia Ustawicznego im. St. Staszica w Koszalinie Wstęp do algorytmiki Autor: Marek Magiera.
© A. Jędryczkowski – 2006 r. © A. Jędryczkowski – 2006 r.
TABLICE C++.
Wyrażenia w Turbo Pascalu.
Procedury i funkcje.
Wykład 5 – typy – stałe – tablice – elementy grafiki.
1. Język ObjectPascal - typ tablicowy (array)
Pliki Pojęcie i rodzaje plików Definicja typu plikowego Operacje wykonywane na plikach elementowych.
1 Wykład 8 Podprogramy. 2 Pojęcie i istota stosowania dzielenie programu na części (logicznie spójne) - nazwane - niezależne od pozostałych części - z.
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.
Instrukcja warunkowa i wyboru
Informatyka MPZI Wykład 4 Podprogramy Pliki Typ zbiorowy Rekurencja.
Przekazywanie parametrów do funkcji oraz zmienne globalne i lokalne
Informatyka MZT1 Wykład 6 Iteracje while i repeat Tablice Rekordy
Wykład 3 przykłady operacje na tekstach wyrażenia logiczne
1 Wykład 7 sortowanie BitButton format tekstu rysunki typ rekordowy.
Zagadnienia AI wykład 6.
Algorytmy- Wprowadzenie do programowania
Podstawowe struktury danych. Typy danych.
Programowanie imperatywne i język C Copyright, 2007 © Jerzy R. Nawrocki Wstęp do.
METODY REPREZENTOWANIA IFORMACJI
Podsumowanie wiedzy MPDI2 sem.3 INFORMATYKA. tworzenie nowego pliku i katalogu, nawigacja po katalogach, listowanie zawartości katalogu, zmiana nazw,
Wykład 11 Informatyka MPDI Podprogramy Zmienne typu zbiorowego Rekurencja Typ obiektowy Zmienne dynamiczne.
Wstęp do programowania Wykład 2 Dane, instrukcje, program.
Programowanie I Rekurencja.
P ASCAL Definicje, deklaracje, podstawowe instrukcje 1.
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,
Rozdział 5 REKURENCJA.
Otoczenie makroekonomiczne w 3kw.2014 (kw/kw)
Programowanie I Rekurencja.
Zapis prezentacji:

Wykład 10 typ zbiorowy rekurencja

Typ zbiorowy type nazwa_typu = set of typ_porządkowy ;   Typ zbiorowy to zbiór potęgowy danego typu porządkowego, czyli zbiór wszystkich podzbiorów tego typu. Zmienna tego typu może zatem zawierać zbiór pusty, jedno- lub wieloelementowy. Definicja typu zbiorowego: type nazwa_typu = set of typ_porządkowy ;   typ zbiorowy typ bazowy Liczba elementów nie może przekraczać 256 – czyli typ bazowy może być: typem Byte, okrojonym całkowitym, znakowym (w tym okrojonym) wyliczeniowym logicznym Zmienna typu zbiorowego zawierać może dowolny podzbiór elementów typu bazowego, od zbioru pustego do zbioru zawierającego wszystkie elementy.

Przykłady definicji typu zbiorowego: type dni = set of (pon,wto,sro,czw,pia,sob,nie) ; znaki = set of 'a'..'z' ; miesiac = (sty,lut,mar,kwi,maj,cze,lip,sie,wrz,paz,lis,gru) ; zbior_miesiecy = set of miesiac ; var nazwa_miesiaca : miesiac ;//zmienna typu wyliczeniowego zbior_nazw : zbior_miesiecy ; //zmienna typu zbiorowego UWAGA: nazwa_miesiaca może przyjąć wartość tylko jednej z nazw – typ wyliczeniowy; zbior_nazw może przyjąć wartość dowolnego podzbioru z nazw bazowych – typ zbiorowy

Operacje logiczne wykonywane na zbiorach to relacje (porównania): Zmiennych typu zbiorowego nie wolno używać w instrukcjach czytania i wyprowadzania wyników, używa się ich jedynie w operacjach wykonawczych, testujących itp. Operacje logiczne wykonywane na zbiorach to relacje (porównania): a = b równość zbiorów, te same elementy w obu zbiorach, a < > b różność zbiorów, różne elementy w obu zbiorach (chociaż niektóre mogą się powtarzać) a <= b zawieranie zbioru a w zbiorze b (true jeśli każdy element zbioru a jest w zbiorze b) a >= b zawieranie zbioru b w zbiorze a (true jeśli każdy element zbioru b jest w zbiorze a) c in a czy element c jest w zbiorze a

Stałe typu zbiorowego [lista wartości podzbioru] np. [1, 5, 7], Wartości stałych typu zbiorowego zapisujemy w nawiasach kwadratowych w postaciach: [lista wartości podzbioru] np. [1, 5, 7], [okrojenie ze zbioru] np. [1..3], lub łącznie: np. [1..3, 5, 7],

Przykłady: type miesiace = set of 1..12 ; var v, x, y, z: miesiace ; lit: char ; begin x :=[1..12] ; {cały rok} y := [1..6] ; {pierwsze półrocze} z := [1, 3, 5 , 7 , 8, 10, 12] ; {miesiące posiadające 31 dni} lit := 'a' ; if x<>y then Edit1.Text:='tak' else Edit1.Text:='nie'; {tak} if x<=y then Edit1.Text:='tak' else Edit1.Text:='nie'; {nie} if x>=y then Edit1.Text:='tak' else Edit1.Text:='nie' ; {tak} if x = y then Edit1.Text:='tak' else Edit1.Text:='nie'; {nie} if 1 in x then Edit1.Text:='tak' else Edit1.Text:='nie'; {tak} if 9 in z then Edit1.Text:='tak' else Edit1.Text:='nie' ; {nie} if lit in ['a'..'z'] then Edit1.Text:='tak' else Edit1.Text:='nie';{tak} end ; type x=(alfa, beta, gamma, delta) ; {typ wyliczeniowy} var z : set of x ; begin z := [alfa, beta] ; {lista - wybór podzbioru alfa, beta} z := [alfa..gamma] ; {okrojenie - wybór podzbioru alfa, beta, gamma} end;

 iloczyn zbiorów (część wspólna zbiorów) Operatory działań na zmiennych typu zbiorowego (znaczenie jak w teorii mnogości): + suma zbiorów – różnica zbiorów a i b - zbiór złożony z tych elementów zbioru a, które nie należą do b  iloczyn zbiorów (część wspólna zbiorów) Przykład: type zbiorowy = set of 1..6 ; var x , y, v : zbiorowy ; begin x :=[2, 3, 4] + [4, 5, 6] ; {wynik [2,3,4,5,6] } y := [2, 3, 4] - [4, 5, 6] ; {wynik [2,3] } v := [2, 3, 4] * [4, 5, 6] ; {wynik [4] (część wspólna) } y := v * x ; { przeanalizować wynik} end .

xn = Algorytmy rekurencyjne Wiele problemów obliczeniowych można zdefiniować rekurencyjnie. Rekurencja oznacza takie zdefiniowanie zagadnienia, gdzie w trakcie formułowania definicji odwołujemy się do niej samej. Przykładem definicji rekurencyjnej może być zapis całkowitej, nieujemnej potęgi rzędu n liczby rzeczywistej x: xn-1*x dla n > 0 (tu użycie definiowanej potęgi) xn = 1 dla n = 0

Rekurencja w językach programowania jest realizowana za pomocą podprogramów wywołujących kolejno same siebie ze zmienianymi parametrami wywołania. Aby podprogramy rekurencyjne działały poprawnie powinny zawierać warunek zakończenia rekurencji, aby wywołanie wykonywane było skończoną liczbę razy. Rekurencja daje proste programy lecz ma także wadę: każde wywołanie podprogramu wymaga wykonania przez procesor dodatkowych czynności, co spowalnia działanie programu oraz powoduje odłożenie na stos systemowy dużej liczby danych.

function potega_n (x:real ; n:integer):real ; begin { funkcja wyznacza n-tą potęgę n dla liczby x } begin if n=0 then result := 1 else result := potega_n (x, n – 1)*x ; {w definicji funkcji wykorzystanie tejże funkcji} end ; var x:real; begin {program główny} x:= potega_n (2,10) ; {obliczenie 210}

function silnia_x (x: integer): longint ; function silnia_x (x: integer): longint ; {zastosowano typ longint ze względu na duże wartości funkcji silnia} begin if x = 1 then result := 1 else result := silnia_x(x-1)*x ; end ; //przykładowe użycie var alfa : integer ; alfa:=StrToInt(Edit1.Text); Memo1.Lines.Add( 'Silnia wynosi:'); Memo1.Lines.Add( IntToStr(silnia_x(alfa))); end;