5. előadás. Programozás-elmélet. Programozás-elmélet 5. előadás

Hasonló dokumentumok
Programkonstrukciók A programkonstrukciók programfüggvényei Levezetési szabályok. 6. előadás. Programozás-elmélet. Programozás-elmélet 6.

Előfeltétel: legalább elégséges jegy Diszkrét matematika II. (GEMAK122B) tárgyból

Programozási Módszertan definíciók, stb.

ALAPFOGALMAK 1. A reláció az program programfüggvénye, ha. Azt mondjuk, hogy az feladat szigorúbb, mint az feladat, ha

9. előadás. Programozás-elmélet. Programozási tételek Elemi prog. Sorozatszámítás Eldöntés Kiválasztás Lin. keresés Megszámolás Maximum.

Bevezetés az informatikába

A = fx j P (x) igazg ; A = fx j 1 x 7; x prímszámg : A [ B = fx j x 2 A, vagy x 2 Bg ; [a::b] := [a; b] \ Z

Bevezetés a programozáshoz I. Feladatok

PROGRAMOZÁS MÓDSZERTANI ALAPJAI I. TÉTELEK ÉS DEFINÍCIÓK

NEM-DETERMINISZTIKUS PROGRAMOK HELYESSÉGE. Szekvenciális programok kategóriái. Hoare-Dijkstra-Gries módszere

3. előadás. Programozás-elmélet. A változó fogalma Kiterjesztések A feladat kiterjesztése A program kiterjesztése Kiterjesztési tételek Példa

Kiterjesztések sek szemantikája

... S n. A párhuzamos programszerkezet két vagy több folyamatot tartalmaz, melyek egymással közös változó segítségével kommunikálnak.

Programozási módszertan

S0-01 Szintézis és verifikáció (Programozás elmélet)

Osztott rendszer. Osztott rendszer informális definíciója

Java programozási nyelv

7.4. A programkonstrukciók és a kiszámíthatóság

Algoritmus fogalma. Mi az algoritmus? HF: Al Khwarizmi. Egy adott probléma megoldásának leírása elemi lépések sorozatával

ALGORITMIKUS SZERKEZETEK ELÁGAZÁSOK, CIKLUSOK, FÜGGVÉNYEK

8. Komponens elvű programfejlesztés. Ágens, akció, cél, kontraktus.

Bevezetés a programozásba 1

Programozási tételek. PPT 2007/2008 tavasz.

AZ ALGORITMUS. az eredményt szolgáltatja

Készítette: Nagy Tibor István Felhasznált irodalom: Kotsis Domokos: OOP diasor Zsakó L., Szlávi P.: Mikrológia 19.

Véges automaták, reguláris nyelvek

1. Alapfogalmak Algoritmus Számítási probléma Specifikáció Algoritmusok futási ideje

Algoritmizálás, adatmodellezés tanítása 1. előadás

BEVEZETÉS A PROGRAMOZÁSHOZ

A C# programozási nyelv alapjai

Formális módszerek GM_IN003_1 Program verifikálás, formalizmusok

Programozás alapjai (ANSI C)

Algoritmusok helyességének bizonyítása. A Floyd-módszer

A digitális számítás elmélete

Programozás I. 1. előadás: Algoritmusok alapjai. Sergyán Szabolcs

Alap fatranszformátorok II

Matematika alapjai; Feladatok

A fontosabb definíciók

Webprogramozás szakkör

KOVÁCS BÉLA, MATEMATIKA I.

Információk. Ismétlés II. Ismétlés. Ismétlés III. A PROGRAMOZÁS ALAPJAI 2. Készítette: Vénné Meskó Katalin. Algoritmus. Algoritmus ábrázolása

BEVEZETÉS A PROGRAMOZÁSHOZ

Algoritmizálás és adatmodellezés tanítása 9. előadás

Gauss-Seidel iteráció

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):

10. Előadás. 1. Feltétel nélküli optimalizálás: Az eljárás alapjai

Occam 1. Készítette: Szabó Éva

Diszkrét matematika II., 8. előadás. Vektorterek

f(x) vagy f(x) a (x x 0 )-t használjuk. lim melyekre Mivel itt ɛ > 0 tetszőlegesen kicsi, így a a = 0, a = a, ami ellentmondás, bizonyítva

Algoritmizálás és adatmodellezés tanítása 1. előadás

Programozás I. Sergyán Szabolcs Óbudai Egyetem Neumann János Informatikai Kar szeptember 10.

Algoritmusok. Hogyan csináljam?

Programozás BMEKOKAA146. Dr. Bécsi Tamás 3. előadás

Konjugált gradiens módszer

Adminisztrációs feladatok Strukturált programok A C programnyelv elemei

Algoritmizálás, adatmodellezés tanítása 6. előadás

6. Közös változóval rendelkező párhuzamos program, Közös változó,

ZH feladatok megoldásai

Mindent olyan egyszerűvé kell tenni, amennyire csak lehet, de nem egyszerűbbé. (Albert Einstein) Halmazok 1

Összetett programozási tételek Rendezések Keresések PT egymásra építése. 10. előadás. Programozás-elmélet. Programozás-elmélet 10.

Modellek ellenőrzése és tesztelése

RE 1. Relációk Függvények. A diákon megjelenő szövegek és képek csak a szerző (Kocsis Imre, DE MFK) engedélyével használhatók fel!

2014. szeptember 24. és 26. Dr. Vincze Szilvia

Algoritmizálás + kódolás C++ nyelven és Pascalban

Mindent olyan egyszerűvé kell tenni, amennyire csak lehet, de nem egyszerűbbé.

Algoritmizálás, adatmodellezés 1. előadás

Markov-láncok stacionárius eloszlása

Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606. Dr. Bécsi Tamás 3. előadás

10. Előadás P[M E ] = H

Sorozatok, sorok, függvények határértéke és folytonossága Leindler Schipp - Analízis I. könyve + jegyzetek, kidolgozások alapján

minden x D esetén, akkor x 0 -at a függvény maximumhelyének mondjuk, f(x 0 )-at pedig az (abszolút) maximumértékének.

A Formális nyelvek vizsga teljesítése. a) Normál A vizsgán 60 pont szerezhet, amely két 30 pontos részb l áll össze az alábbi módon:

Automaták és formális nyelvek

Vezérlési szerkezetek

1.1. Definíció. Azt mondjuk, hogy a oszója b-nek, vagy más szóval, b osztható a-val, ha létezik olyan x Z, hogy b = ax. Ennek jelölése a b.

Permutációk véges halmazon (el adásvázlat, február 12.)

Algoritmusok tervezése

Bevezetés a programozásba I 3. gyakorlat. PLanG: Programozási tételek. Programozási tételek Algoritmusok

A programozás alapjai előadás. Amiről szólesz: A tárgy címe: A programozás alapjai

Programozás I. Sergyán Szabolcs Óbudai Egyetem Neumann János Informatikai Kar szeptember 10.

Térinformatikai algoritmusok Elemi algoritmusok

BASH script programozás II. Vezérlési szerkezetek

SHk rövidítéssel fogunk hivatkozni.

Relációk Függvények. A diákon megjelenő szövegek és képek csak a szerző (Kocsis Imre, DE MFK) engedélyével használhatók fel!

Trigonometria Megoldások. 1) Oldja meg a következő egyenletet a valós számok halmazán! (12 pont) Megoldás:

Komputeralgebra Rendszerek

A Formális nyelvek vizsga teljesítése. a) Normál A vizsgán 60 pont szerezhet, amely két 30 pontos részb l áll össze az alábbi módon:

11. Előadás. 1. Lineáris egyenlőség feltételek melletti minimalizálás

f(x) a (x x 0 )-t használjuk.

Programozási alapismeretek. 1. előadás. A problémamegoldás lépései. A programkészítés folyamata. Az algoritmus fogalma. Nyelvi szintek.

Bánsághi Anna 2014 Bánsághi Anna 1 of 68

Chomsky-féle hierarchia

A programozás alapjai

Internet programozása. 3. előadás

Analízis I. beugró vizsgakérdések

Valószínűségi változók. Várható érték és szórás

Programozási nyelvek a közoktatásban alapfogalmak I. előadás

Gyakorló feladatok I.

Térinformatikai algoritmusok Elemi algoritmusok

Átírás:

Elemi programok Definíció Az S A A program elemi, ha a A : S(a) { a, a, a, a,..., a, b b a}. A definíció alapján könnyen látható, hogy egy elemi program tényleg program. Speciális elemi programok a kövekezők: Definíció üres, vagy skip program: a A : SKIP (a) = { a }.

Elemi programok A SKIP program nem csinál semmit. Definíció A törlődés, vagy abort program: a A : ABORT (a) = { a, a, a,... }. Az ABORT program soha nem terminál (soha nem fejeződik be). Definíció Legyen F A A. Az S programot általános értékadásnak nevezzük, ha S = {(a, red ( a, b )) a, b A a D F b F (a)} {(a, a, a, a,... ) a A a / D F }.

Elemi programok Definíció Legyen S A A általános értékadás program. (a) Ha D F = A, akkor az S programot értékkiválasztásnak nevezzük és a : F (a)-val jelöljük. (b) Ha az F reláció függvény, akkor az S programot értékadásnak nevezzük és a := F (a)-val jelöljük. (c) Ha D F A, akkor S parciális értékkiválasztás. (d) Ha D F A és F determinisztikus (F parciális függvény), akkor S parciális értékadás. Definíció Identitásfüggvény: id A = {(a, a) a A} A A.

Elemi programok Tétel Az elemi programok programfüggvényei: (a) p (SKIP) = id A, (b) p (ABORT ) =, (c) p (a := F (a)) = F, (d) p (a : F (a)) = F.

Elemi programok Elemi programok leggyengébb előfeltételei Legyen R egy tetszőleges utófeltétel. Ekkor p(skip)(a) = {a} miatt [lf (SKIP, R)] = {a A p (SKIP) (a) [R]} = {a A {a} [R]} = [R] és lf (SKIP, R) = R. Hasonlóan p (ABORT ) (a) = miatt lf (ABORT, R) = HAMIS.

Elemi programok Az általános értékadás leggyengébb előfeltétele a négy esetben (a) F : A A függvény, D F = A. [lf (a := F (a), R)] = {a A F (a) [R]} = F ( 1) ([R]). (b) F : A A függvény, D F A. [lf (a := F (a), R)] = {a A F (a) [R]} D F = F ( 1) ([R]) D F. (c) F A A, D F = A, F nem determinisztikus. [lf (a : F (a), R)] = {a A F (a) [R]} = F ( 1) ([R]). (d) F A A, D F A, F nem determinisztikus. [lf (a : F (a), R)] = {a A F (a) [R]} D F = F ( 1) ([R]) D F.

Elemi programok Minthogy definíció alapján F ( 1) ([R]) = [R F ], azért az (a) és (c) esetekben a leggyengébb előfeltétel R F. Az értékadást változókkal is leírjuk. Legyen A = n i=1 A i, F A A és F (a) = F 1 (a) F 2 (a)... F n (a) (a D F ), ahol F i A A i. Legyenek az állapottér változói x 1, x 2,..., x n. Ekkor az a := F (a) program jelölése: x 1,..., x n := F 1 (x 1,..., x n ),..., F n (x 1,..., x n ). A jelölésből elhagyhatjuk az x i -t és F i (x 1,..., x n )-t, ha F i (x 1,..., x n ) = x i. Ha valamely F j nem függ valamelyik x i -től, akkor ezt is elhagyhatjuk a jelölésből. Ha a fenti értékadásban csak egy komponens szerepel, akkor egyszerű, egyébként pedig szimultán értékadásról beszélünk.

Elemi programok Példa Legyen A = Z x L l, x a Z, l pedig az L állapottér komponenshez tartozó változó. Legyenek az értékadás komponensei: a = (a 1, a 2 ) A: F 1 (a 1, a 2 ) = a 1, azaz F 1 = pr Z, és F 2 (a 1, a 2 ) = (a 1 > 0). Ekkor az a := F (a) értékadás változókkal felírva: x, l := x, (x > 0). A jelölés fent leírt egyszerűsítéseit elvégezve az egyszerű értékadást kapjuk. l := (x > 0)

Olyan műveletekkel foglalkozunk, amelyekkel meglévő programjainkból újakat állíthatunk elő. Sokféle konstrukció képzelhető el, de mi csak háromféle konstrukciós műveletet fogunk megengedni: - szekvencia (sorozat), - elágazás, - ciklus. A struktúrált programozás alaptétele (Böhm-Jacopini, 1966) kimondja: bármely program megadható ekvivalens struktúrált program formájában is, amelyben csak a fenti három konstrukciós művelet szerepel. Két program ekvivalens, ha ugyanazon input értékekre ugyanazon output értékeket számolják ki.

Szekvencia (sorozat) Itt két program közvetlen egymásután való végrehajtásáról van szó. Legyen S 1 és S 2 a két program, a A és α S 1 (a) A az S 1 program által előállított véges sorozat. Az S 2 program az S 1 program τ (α) végállapotából indul és a β S 2 (τ (α)) véges, vagy végtelen sorozatot állítja elő. Tehát az a A állapotból kiindulva a két program egymásutáni végrehajtása a kon (α, β) egyesített sorozatot eredményezi. Ez azonban nem redukált, mert τ (α) = β 1. Ezért az egyesített sorozat redukáltját tekintjük a szekvencia eredményének. Legyen α A, β A és χ 2 (α, β) = red (kon (α, β)).

Definíció Legyenek S 1, S 2 A A programok. Az S A A relációt az S 1 és S 2 programok szekvenciájának nevezzük, és (S 1 ; S 2 )-vel jelöljük, ha minden a A esetén S (a) = {α A α S 1 (a)} {χ 2 (α, β) A α S 1 (a) A β S 2 (τ (α))}. Ha a két program értékkészlete csak véges sorozatokat tartalmaz, akkor a szekvencia is csak véges sorozatokat rendel hozzá az állapottér pontjaihoz. Determinisztikus programok szekvenciája is determinisztikus reláció (függvény).

A programkonstrukciókat többféleképpen is ábrázolhatjuk. Ezek egyike a struktogram. Legyen S 1, S 2 program. Az S = (S 1 ; S 2 ) szekvencia struktogramja: S S 1 S 2 A második konstrukciós technika az elágazás (feltételes utasítás, case szerkezet), ahol más-más programot hajtunk végre feltételtől függően.

Definíció Legyenek π 1,..., π m : A L feltételek, S 1,..., S m programok A-n. Ekkor az IF A A relációt az S i -kből képezett π i -k által meghatározott elágazásnak nevezzük, és (π 1 : S 1,..., π m : S m )-vel jelöljük, ha minden a A esetén IF (a) = ( m i=1w i (a)) w 0 (a), ahol i [1..m] : { Si (a), ha a [π w i (a) = i ], különben és { a, a, a,..., ha a / m w 0 (a) = i=1 [π i ], különben.

Ha a feltételek nem diszjunktak, akkor az elágazás bármelyik olyan S i ág választását megengedi, amelyre π i igaz. Az elágazásoktól a gyakorlatban azt is megköveteljük, hogy a feltételek diszjunktak legyenek és m i=1 [π i] = A teljesüljön. Az IF = (π 1 : S 1,..., π m : S m ) elágazás struktogramja: IF π 1 π 2...... π m S 1 S 2...... S m

A harmadik konstrukciós technika a ciklus, amelyben egy meglévő programot egy adott feltételtől függően valahányszor végrehajtunk. Legyen S a program és π az adott feltétel. Ezután a következőképpen járunk el: 1. Ha az a A kiinduló pontban π nem igaz, akkor az S programot nem hajtjuk végre és a ciklusból kilépünk. 2. Ha π igaz, akkor az S programot végrehajtjuk és eredményül kapunk egy α sorozatot. 3. Ha α véges és a τ (α) pontban π nem igaz, akkor kilépünk a ciklusból. 4. Ha α véges és a τ (α) pontban π igaz, akkor a τ (α) pontból indulva megismételjük az előző lépéseket a 2. ponttól.

A vázolt eljárással - n ismétlést (iterációt) feltéve- az α 1, α 2,..., α n sorozatokat kapjuk, amelyekre fennáll, hogy α 1,..., α n 1 A, α 1 S (a), α 2 S ( τ ( α 1)),..., α n S ( τ ( α n 1)). Ha α n végtelen, akkor sem S, sem a ciklus nem fejeződik be. Ha α n véges, akkor két eset lehetséges. Ha π igaz a τ (α n ) pontban, akkor folytatjuk a ciklust a τ (α n ) pontból kiindulva. Ha π nem igaz, akkor a ciklust befejezzük. Ez esetben a ciklus a kon ( α 1,..., α n) egyesített sorozatot eredményezi. Ez a sorozat a szekvencia esetéhez hasonlóan nem redukált, mert τ ( α 1) = α1 2, τ ( α 2) = α1 3, stb. Ezért az egyesített sorozat redukáltját tekintjük a ciklus, vagy iteráció eredményének.

Szükségünk van a következő jelölésekre: Legyen α 1, α 2,..., α n 1 A és α n A. Ekkor χ n ( α 1, α 2,..., α n) = red ( kon ( α 1, α 2,..., α n)). Ha α i A (i N), akkor χ ( α 1, α 2,... ) = red ( kon ( α 1, α 2,... )).

Definíció Legyen π feltétel és S program A-n. A DO A A relációt az S-ből a π feltétellel képezett ciklusnak nevezzük, és (π, S)-sel jelöljük, ha 1. a / [π] : DO (a) = { a }, 2. a [π] : DO (a) = { α A ( n N : α = χ n α 1, α 2,..., α n) α 1 S (a) i [1..n 1] : α i+1 S ( τ ( α i)) τ ( α i) [π] (α n A (α n A τ (α n ) / [π]))} { α A ( α = χ α 1, α 2,... ) α 1 S (a) i N : α i+1 S ( τ ( α i)) τ ( α i) [π] }.

1. Determinisztikus programból képezett ciklus is determinisztikus. 2. A ciklus értékkészlete tartalmazhat végtelen sorozatot akkor is, ha az S program csak véges sorozatokat generál (soha nem jutunk ki a π feltétel igazsághalmazából). A DO = (π, S) ciklus struktogramja: DO π S

Tétel A szekvencia, az elágazás és a ciklus program. Bizonyítás Mindhárom program A A tipusú reláció és mindhárom esetben D S = A. A másik két tulajdonság igazolása a következő: 1. Szekvencia: a A, α S (a). Ha α S 1 (a), akkor S 1 program volta miatt α 1 = a és α = red (α). Ha α = χ 2 ( α 1, α 2), ahol α 1 S 1 (a) és α 2 S 2 ( τ ( α 1 )), akkor χ 2 definíciója miatt α redukált és α 1 = α 1 1 = a.

Bizonyítás 2. Elágazás: a A, α IF (a). Ekkor α m i=0w i (a). Ha α w 0 (a), akkor α = a, a,... kielégíti a két kritériumot. Ha i [1..m] : α w i (a), akkor α S i (a) és mivel S i program, α 1 = a és α = red (α). 3. Ciklus: a A, α DO (a). Ha a / [π], akkor α = a, ami teljesíti a program követelményeit. Ha a [π], akkor két eset lehetséges: (a) Ha α A és n N : α = χ n ( α 1, α 2,..., α n), α 1 S (a), akkor χ n definiciója miatt α redukált és α 1 = α 1 1 = a. (b) Ha α A és α = χ ( α 1, α 2,... ), α 1 S (a), akkor χ n definíciója miatt α redukált és α 1 = α 1 1 = a.