Programozási módszertan

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

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.

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.

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

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

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 a programozásba 1

BEVEZETÉS A PROGRAMOZÁSHOZ

PROGRAM STATIKUS FOGALMA DINAMIKUSAN VÁLTOZÓ ÁLLAPOTTÉRBEN 1

Bevezetés a programozáshoz I. Feladatok

BEVEZETÉS A PROGRAMOZÁSHOZ

Algoritmuselmélet 12. előadás

Bevezetés az informatikába

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

Bevezetés a programozásba

1. előadás. Lineáris algebra numerikus módszerei. Hibaszámítás Számábrázolás Kerekítés, levágás Klasszikus hibaanalízis Abszolút hiba Relatív hiba

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

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

Automaták mint elfogadók (akceptorok)

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

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

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

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

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

Automaták és formális nyelvek

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

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

KOVÁCS BÉLA, MATEMATIKA I.

PROGRAMOZÁS tantárgy. Gregorics Tibor egyetemi docens ELTE Informatikai Kar

Struktúra nélküli adatszerkezetek

Méréselmélet MI BSc 1

Nagy Gábor compalg.inf.elte.hu/ nagy ősz

Bonyolultságelmélet. Thursday 1 st December, 2016, 22:21

definiálunk. Legyen egy konfiguráció, ahol és. A következő három esetet különböztetjük meg. 1. Ha, akkor 2. Ha, akkor, ahol, ha, és egyébként.

Kiterjesztések sek szemantikája

Logika es sz am ıt aselm elet I. r esz Logika 1/36

Véges automaták, reguláris nyelvek

Leképezések. Leképezések tulajdonságai. Számosságok.

Gyakorló feladatok I.

1. tétel Halmazok és halmazok számossága. Halmazműveletek és logikai műveletek kapcsolata.

Analízis évfolyam. Szerkesztette: Surányi László július 5.

Matematika alapjai; Feladatok

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:

Analízis előadás és gyakorlat vázlat

Diszkrét matematika I.

Markov-láncok stacionárius eloszlása

Programozási nyelvek 6. előadás

A számítógépes nyelvészet elmélete és gyakorlata. Automaták

12. előadás - Markov-láncok I.

Negatív alapú számrendszerek

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:

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

FEGYVERNEKI SÁNDOR, Valószínűség-sZÁMÍTÁs És MATEMATIKAI

Nagy Gábor compalg.inf.elte.hu/ nagy

Mérés és modellezés 1

Általános algoritmustervezési módszerek

Véletlenszám generátorok és tesztelésük. Tossenberger Tamás

... 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.

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

Térinformatikai algoritmusok Elemi algoritmusok

Diszkrét matematika 1.

Sorozatok és Sorozatok és / 18

NP-teljesség röviden

Számelméleti alapfogalmak

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.

Turing-gépek. Számításelmélet (7. gyakorlat) Turing-gépek 2009/10 II. félév 1 / 1

Metrikus terek, többváltozós függvények

Térinformatikai algoritmusok Elemi algoritmusok

Atomataelmélet: A Rabin Scott-automata

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

Elsőrendű logika szintaktikája és szemantikája. Logika (3. gyakorlat) 0-adrendű szemantika 2009/10 II. félév 1 / 1

Diszkrét matematika II. gyakorlat

Szoftverminőségbiztosítás

Algoritmusok Tervezése. 6. Előadás Algoritmusok 101 Dr. Bécsi Tamás

Objektumorientált paradigma és a programfejlesztés

Osztott algoritmusok

Logika es sz am ıt aselm elet I. r esz Logika Harmadik el oad as 1/33

I. RÉSZ PROGRAMOZÁSI FOGALMAK

Nagy Gábor compalg.inf.elte.hu/ nagy ősz

Döntéselméleti modellek

Bonyolultságelmélet. Monday 26 th September, 2016, 18:50

6. előadás A reguláris nyelvek jellemzése 2.

Jelek és rendszerek 1. 10/9/2011 Dr. Buchman Attila Informatikai Rendszerek és Hálózatok Tanszék

9. előadás Veremautomaták 1.

A valós számok halmaza

17. előadás: Vektorok a térben

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.

Funkcionális és logikai programozás. { Márton Gyöngyvér, 2012} { Sapientia, Erdélyi Magyar Tudományegyetem }

A Számítástudomány alapjai

1/ gyakorlat. Lineáris Programozási feladatok megoldása szimplex módszerrel. Pécsi Tudományegyetem PTI

Funkcionálanalízis. n=1. n=1. x n y n. n=1

15. tétel. Adatszerkezetek és algoritmusok vizsga Frissült: január 30.

SZÉCHENYI ISTVÁN EGYETEM MŰSZAKI TUDOMÁNYI KAR RENDSZERELEMZÉS I.

ZH feladatok megoldásai

Eljárások és függvények

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

2018, Diszkrét matematika

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

TANTÁRGYI PROGRAM Matematikai alapok I. útmutató

Átírás:

1 Programozási módszertan 1. Alapfogalmak Feldhoffer Gergely 2012

Féléves tananyag terve 2 Program helyességének bizonyítása Reprezentáció Logikai-matematikai eszköztár Programozási tételek bizonyítása Levezetés - visszavezetés Programhelyesség bizonyításának alternatív formalizmusai Gyakorlatban használható eszközök debug technikák (gdb használat) fehér doboz tesztelési eszközök (coverage) szimulációs segédeszközök (valgrind) A tananyag elméleti részét Fóthi Ákos dolgozta ki, a diákban nagyban felhasználom Fehér Tamás jegyzetét.

Jegyszerzés A félév során a gyakorlati részből két ZH-t kell megírni, egy elméleti papírost, és egy géptermit. Az itt kapott értékelés az alapja az aláírásnak. A félév végén vizsgázni kell. A tantárgyra kapott jegy a vizsgán kapott jegy, a ZH eredményeket szubjektíven veszem figyelembe.

Jegyszerzés A félév során a gyakorlati részből két ZH-t kell megírni, egy elméleti papírost, és egy géptermit. Az itt kapott értékelés az alapja az aláírásnak. A félév végén vizsgázni kell. A tantárgyra kapott jegy a vizsgán kapott jegy, a ZH eredményeket szubjektíven veszem figyelembe. Amennyiben a papíros ZH eredménye elmarad a várakozástól, a pluszmínusz íratás jogát a félév második felére fenntartom, reméljük erre nem kerül sor.

Mi az a program? A továbbiakban adunk egy olyan definíciót a programra, ami nem tökéletesen fedi az intuitív program fogalmat, valahol az algoritmus és a program általánosan használt fogalmai közé pozícionálva Az algoritmus megoldási menetet rögzít, függetlenül a reprezentációtól, implementációtól. A program általában konkrét algoritmus konkrét reprezentációjának konkrét implementációja. Egy matematikai algoritmus például értékes lehet akkor is, ha ábrázolhatatlanul nagy számokra lehet csak levezetni az érdekes esetben vagy egy végtelen sor n-edik részösszegének pontos értéke is nehezen ábrázolható teljes pontossággal. Az általunk használt program definíciót úgy terjesztjük ki a hagyományos program fogalomból, hogy megengedünk a valóságban implementálhatatlan típusokat, mint pl. N vagy R

Állapottér A program viselkedését az azt futtató gép belső állapota szabályozza. Ezen állapot több, egyesével típushoz rendelhető változó együttese. Például egy számítógép processzorának regisztereinek értékei, a memóriájának összes értéke, a háttértárak és inputeszközökből származó adat együtt lefedi azt a kört, ami egy program következő lépését meghatározza. Mivel ez kezelhetetlenül nagy dimenzionalitás, illetve a típusosság előnyeit nem tartalmazza, a bizonyítás során megelégszünk a program által használt változók gyűjteményével. Ezek direktszorzata az állapottér: Def (Állapottér) Legyenek A 1, A 2,..., A n tetszőleges véges, vagy megszámlálható nem üres halmazok. Ekkor az A = A 1 A 2 A n halmazt állapottérnek, az A i halmazokat pedig típusértékhalmazoknak nevezzük.

A feladat fogalma A feladat az állapottér valamely pontjáról (input) eljutni a megfelelő pontba (eredmény), vagyis Def (Feladat) Feladatnak nevezzük az F A A relációt. Vegyük észre, hogy nem kötjük ki, hogy minden kezdeti állapotról rendelkezzen a feladat nem csak egyetlen jó megoldást rendelhet a feladat az inputhoz

A feladat fogalma Például az összeadás feladata a következő: A = Z Z Z F = {((a, b, c), (d, e, f )) f = a + b} Amennyiben az összeadástól elvárjuk, hogy megtartsa a bemenő paraméterek értékét, akkor F = {((a, b, c), (d, e, f )) f = a + b d = a e = b}

Az állapottérbeli pontok sorozatai Egy program az azt futtató gép memóriáját folyamatosan változtatja. Ez az állapottér sokdimenziós terében egy pontsorozatként fogható fel: minden időpillanatban az állapottért egy adott pontjában vagyunk, és ahogy az idő telik, megváltozik valamelyik változónk értéke, ugrunk a következő állapotba. Jelöljük A -gal az A halmaz elemeiből képzett véges sorozatokat, A -vel a végtelen sorozatokat, A legyen A A. Jelölje red(α) egy α A sorozat redukáltját, ha β = red(α) úgy kapható α sorozatból, hogy minden véges hosszú azonos állapotokból álló részsorozatot egyetlen elemre rövidítünk. Jelölje τ(α) egy α A véges sorozat utolsó elemét, azaz ha α =< a 1 a 2... a n > akkor τ(α) = a n.

A program fogalma 10 Def (Program) Programnak nevezzük az S A A relációt, ha 1 D S = A 2 a A : α S(a) : α 1 = a 3 α R S : α = red(α) Azaz 1 A program minden lehetséges kezdeti állapotból elindul. 2 Minden a elemhez rendelt α sorozat első eleme az a, kezdeti állapot. 3 A programban minden lépéssorozat redukált

A Program tulajdonságai Ha egy α R S elemei között két egymást követő állapot egyforma, akkor garantáltan végtelenszer ugyanaz az állapot fog ismétlődni a redukáltság miatt Egy a A kezdeti állapothoz rendelhet több A -beli elemet is a program, ilyenkor a program nemdeterminisztikus. Más szavakkal a program determinisztikus, ha a A : S(a) = 1. A nemdeterminisztikus program működését úgy kell tekinteni, hogy a lehetséges utak közül bármelyiket választhatja.

Programfüggvény Def (Programfüggvény) A p(s) A A reláció az S A A program programfüggvénye, ha 1 D p(s) = {a A S(a) A } 2 p(s)(a) = {b A α S(a) : τ(α) = b} Azaz 1 A programfüggvény értelmezési tartománya az állapottér azon elemeit tartalmazza, amelyekre a program terminál 2 determinisztikus program esetében a végállapotból álló egy elemű halmazt, nemdeterminisztikus esetben a lehetséges végállapotok halmazát rendeli a kezdeti állapothoz

Megoldás 13 Def (Megoldás) Azt modjuk, hogy as S program megoldja az F feladatot, ha 1 D F D p(s), 2 a D F : p(s)(a) F (a). Azaz 1 A feledatban meghatározott pontokból a program terminál 2 A program lefutása után a végállapot csak olyan elem lehessen, amit a feladat hozzárendelt a kezdeti állapothoz.

Megoldás A program viselkedését nem szabályozza a D F -en kívüli állapotokra a feladat, ezen pontokban tetszőleges viselkedés mellett megoldhatja a program az F feladatot Determinisztikus program esetében a szakirodalom néha használja azt a megoldásdefiníciót, ahol a a D F : p(s)(a) F (a) feltétel szerepel.

Alapfogalmak összefoglaló Az állapottér leírja, hogy milyen lehetséges állapotokat érinthet a program a futása során A feladat megadja, hogy mely pontokból mik az elfogadható eredmények A program minden kezdeti állapotból induló, időben állapotok között ugráló folyamat, amit sorozatok formájában kezelünk Azok ezek a sorozatok véget érnek, ott van eredmény, ezeket az értékeket rendeli a programfüggvény a kezdeti állapotokhoz A program akkor oldja meg a feladatot, ha minden olyan pontból, amiről a feladat rendelkezik, a megengedett megoldások egyikében állhat csak meg