ködös határ (félreértés, hiba)

Hasonló dokumentumok
Ködös határ (Félreértés, hiba)

Alapok. tisztán funkcionális nyelv, minden függvény (a konstansok is) nincsenek hagyományos változók, az első értékadás után nem módosíthatók

Kiterjesztések sek szemantikája

Programozás I. 3. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Programok értelmezése

... 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ás alapjai. 5. előadás

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

Java II. I A Java programozási nyelv alapelemei

Kifejezések. Kozsik Tamás. December 11, 2016

Kifejezések. Kozsik Tamás. December 11, 2016

Programozási nyelvek (ADA)

Algoritmusok. Dr. Iványi Péter

Dinamikus modellek szerkezete, SDG modellek

2. Rekurzió. = 2P2(n,n) 2 < 2P2(n,n) 1

Java II. I A Java programozási nyelv alapelemei

Készítette: Nagy Tibor István

Az UPPAAL egyes modellezési lehetőségeinek összefoglalása. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék

Szoftvertervezés és -fejlesztés I.

Bevezetés a programozásba II. 5. Előadás: Másoló konstruktor, túlterhelés, operátorok

INFORMATIKA javítókulcs 2016

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

NAGYPONTOSSÁGÚ EGÉSZ-ARITMETIKA TARTALOM

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

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

Apple Swift kurzus 3. gyakorlat

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós augusztus 29. Széchenyi István Egyetem, Gy r

Halmazelmélet. 1. előadás. Farkas István. DE ATC Gazdaságelemzési és Statisztikai Tanszék. Halmazelmélet p. 1/1

2019, Funkcionális programozás. 2. el adás. MÁRTON Gyöngyvér

Formális szemantika. Kifejezések szemantikája. Horpácsi Dániel ELTE Informatikai Kar

PHP. Telepítése: Indítás/újraindítás/leállítás: Beállítások: A PHP nyelv

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

Absztrakt adatstruktúrák A bináris fák

OOP. Alapelvek Elek Tibor

Karakterkészlet. A kis- és nagybetűk nem különböznek, a sztringliterálok belsejét leszámítva!

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

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

Pásztor Attila. Algoritmizálás és programozás tankönyv az emeltszintű érettségihez

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

S0-02 Típusmodellek (Programozás elmélet)

Programozás C- és Matlab nyelven C programozás kurzus BMEKOKAM603 Előfeldolgozó rendszer Tömbök. Dr. Bécsi Tamás 4. Előadás

Aritmetikai kifejezések lengyelformára hozása

Szoftvertechnológia alapjai Java előadások

Szoftver-modellellenőrzés absztrakciós módszerekkel

A Föld középpontja felé szabadon eső test sebessége növekszik, azaz, a

Adatszerkezetek és algoritmusok

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

van neve lehetnek bemeneti paraméterei (argumentumai) lehet visszatérési értéke a függvényt úgy használjuk, hogy meghívjuk

tétel: különböző típusú adatokat csoportosít, ezeket egyetlen adatként kezeli, de hozzáférhetünk az elemeihez is

A félév során előkerülő témakörök

Programozás alapjai gyakorlat. 4. gyakorlat Konstansok, tömbök, stringek

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

Méréselmélet MI BSc 1

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

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

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

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

Bevezetés a programozásba. 11. Előadás: Esettanulmány

Modellezés Gregorics Tibor Mesterséges intelligencia

Komputeralgebra Rendszerek

5. SOR. Üres: S Sorba: S E S Sorból: S S E Első: S E

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

A C# PROGRAMOZÁSI NYELV

11. gyakorlat Sturktúrák használata. 1. Definiáljon dátum típust. Olvasson be két dátumot, és határozza meg melyik a régebbi.

1. Alapok. #!/bin/bash

LEGO robotok. XII. rész

FÉNYERŐSSÉG-SZÉLERŐSSÉG ÉRZÉKELŐ KÖZPONT HASZNÁLATI UTASíTÁSA JOLLY-FEBO AE0711 TARTALOM

Alapszintű formalizmusok

Mérés és modellezés 1

Python tanfolyam Python bevezető I. rész

Diszkrét matematika 1. estis képzés

Házi feladatok megoldása. Nyelvek használata adatszerkezetek, képek leírására

Brósch Zoltán (Debreceni Egyetem Kossuth Lajos Gyakorló Gimnáziuma) Számelmélet I.

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

Adatszerkezetek Adatszerkezet fogalma. Az értékhalmaz struktúrája

Modellellenőrzés a vasút automatikai rendszerek fejlesztésében. XIX. Közlekedésfejlesztési és beruházási konferencia Bükfürdő

Szoftverminőségbiztosítás

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

Szkriptnyelvek. 1. UNIX shell

A szemantikus elemzés helye. A szemantikus elemzés feladatai. A szemantikus elemzés feladatai. Deklarációk és láthatósági szabályok

Diszkrét matematika I. gyakorlat

KOVÁCS BÉLA, MATEMATIKA I.

MATLAB alapismeretek I.

A C programozási nyelv III. Pointerek és tömbök.

Termelő-fogyaszt. fogyasztó modell

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

A JavaScript főbb tulajdonságai

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

Szoftverarchitektúrák 3. előadás (második fele) Fornai Viktor

A C# programozási nyelv alapjai

FUNKCIONÁLIS PROGRAMOZÁS

MATE-INFO UBB verseny, március 25. MATEMATIKA írásbeli vizsga

Programozási nyelvek Python

A C programozási nyelv III. Pointerek és tömbök.

Programozás alapjai. 2. előadás

UML (Unified Modelling Language)

A fontosabb definíciók

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

Starset Z1000/1500. Szerelési útmutató. Kérjük felszerelés és üzemelés előtt figyelmesen olvassa át a használati útmutatót!

Felhasználó által definiált adattípus

Átírás:

probléma formálisan specifikált: valós világ (domain) (hibás eredmény) ködös határ (félreértés, hiba) formális világ (megoldás) A szoftver fejlesztőnek meg kell értenie a felhasználó problémáját. A specifikáció csak nagyvonalakban írja le a valóságos problémát.

Probléma dekompozíció és struktúrák leírása. A valóságos problémákat egyszerűbb részproblémákra kell felbontani. Rendszerint a problémának és a részproblémának is ugyan azok a doménjei: Azonos világban játszódnak le. Ezt a közös domént azonban a különböző részproblémákban különböző szempontok szerint vizsgáljuk és írjuk le. Ennek a probléma dekomponálásnak a hatását illusztrálja a következő példa.

1. Példa egy öntöző rendszer zsilip problémája. Egy kis zsilipről van szó, ahol a zsilipkapu felemelkedik és leesik. Ezt egy számítógép vezérli. Követelmény. Minden órában a zsilipkapu legyen nyitva 10 percig és máskor pedig legyen csukva. A zsilipkaput egy forgó vertikális csavarral emelik fel ill. le. Az emelőt egy kis motor húzza.

A motort vezérlő elektromos jelek: - be, - ki, - óramutató járásának megfelelő irány, - óramutató járásával ellentétes irány. A kapu útjának a tetején és az alján van egy-egy érzékelő: top érzékelő: a kapu teljesen felemelkedett, (elektromos jel); bottom érzékelő: a kapu teljesen leereszkedett, (elektromos jel); A motor vezérléséhez a számítógépet 4 pulzusvonal köti össze a motorral és 2 állapot vonal a kapu szenzorokkal. Megkövetelt jelenségek: a kapu nyitva, a kapu csukva. Specifikációs jelenségek: motor vezérlő jelei, és a szenzorok állapotai.

A "világunk" (domain) tulajdonságai, amiket a gép megkonstruálásánál figyelembe kell venni: A motor az állapotának a megváltozásával válaszol a hozzá érkező külső jelre. A zsilip mechanikus része az állapotát (emelkedik, esik), aszerint változtatja, hogy a motor áll, vagy egyik vagy másik irányba forog. A szenzorok állapotai és a kapu vertikális pozíciói közötti kapcsolatok. A zsilip mechanikus részeinek az állapot változásait (áll, emelkedik, süllyed) az vezérli, hogy a motor áll, vagy forog és milyen a forgási iránya. A vezérlő gép specifikációjának ezeket formálisan kell rögzítenie.

A kapu állapotai: nyitva, zárva, emelkedik, süllyed. Specifikációs jelenségek. (A kapu állapotai és a motor kontrol jelei, és a top és bottom szenzor jelei közötti kapcsolat). Kapu emelkedik: ha a motor elindul az óramutató járásának megfelelő irányban. Kapu nyitva: ha a fenti irányú haladásnál a top szenzor jelzést ad. Kapu süllyed: ha a motor az óramutató járásával ellenkezőleg irányban forog Kapu zárva: ha az ellenkező irányú haladásnál a bottom szenzor jelt ad.

Nyilvánvaló ellentmondások kezelése. A fizikai eszközök azonban nem olyan megbízhatóak, ahogyan mi gondoljuk. Pl.: Elszakadhat a kábel. Leéghet a motortekercs. A rozsda tönkreteheti a vasból készült alkatrészeket. Stb. A vezérlő gép viselkedésénél ezeket mind figyelembe kell venni, legalább is a motor megállásainak okai közé ezeket be kell venni.

Lehetséges hibás jelenségek még: A top és bottom szenzor egyaránt jelez. A motor emeli fel a kaput több mint n másodperce és a Top szenzor még mindig nem jelez. A motor engedi le a kaput több mint m másodperce és a Top szenzor még mindig jelez. A motor emeli fel a kaput több mint x másodperce és a Bottom szenzor még mindig jelez. A motor engedi le a kaput több mint y másodperce és a Bottom szenzor még mindig nem jelez. Kezelés: auditáló program.

Auditháló program közös domain esetén. Az uditháló program konkurens módon fut magával a vezérlő programmal. A közös erőforrásokhoz való hozzáférésnél kölcsönös kizárást kell biztosítani. A két program egymással kommunikál. Hiba detektálása esetén az auditálható program jelzést küld a vezérlő gépnek. A vezérlő gép az auditháló program jelzésére leállítja a motort és előírt módon tevékenységeket indít el.

Objektumok azonosítási problémái. Fontos különbséget tenni: Követelmény jelenségeinek leírásában szereplő azonosítók; (A lift esetében: at(f), fel, le); A specifikációs jelenségek leírásában szereplő azonosítók; (sensor(f) állapotai a lift domain esetén), között. (Később: f az emelet azonosítója volt, amit az informális leírásokban is használtunk). Elektromos vezeték szakadás detektálása és nem kellő megerősítő ellenőrzése számos repülőgép szerencsétlenség okozója volt. (Pl. Elégett a vezetéket detektáltak pedig csak dohányfüst volt).

A számítógépek gyakran behoznak egy komplexitást a probléma világába, amellyel interakcióba lépnek. Ennek gyökere: 1. Magának a szoftvernek a bonyolultsága. 2. A probléma világával való együttműködés bonyolultsága. 3. Ezt a bonyolultságot a régi rendszerekben három tényező kontrol alatt tartotta. - Maga a szoftver és annak kézi kezelése kisebb és egyszerűbb volt, mint a mai rendszerek. - Nem volt lehetőség, talán igény sem rendszerek ambíciózus integrálása. - A rendszerek működtetése emberi közreműködésre hagyatkozott. (az operátor, közbeavatkozott, ha abszurd viselkedést látott). Számos alkalmazásban megszűnt ez a biztosíték. Ma a felelősség nagy része az informatikában kutatók és a szoftver fejlesztő vállán nyugszik.

A géppel történő megoldás specifikációja. (formális leírás). Verifikáció (formális igazolás) Specifikáció (igazolt, bebizonyított) Kifejezés, típusos kifejezés. A probléma formálisan leírt megoldás (program)

Típusos kifejezések: Alaptípusok: integer, boolean, character. Típus: <név> = <értékek halmaza>; Boolean = {true, false}; integer = {...-1,0,+1,...}; Származtatott típusok (magasabb típusok): n 1; T 1... T n T; Argument típusok; érték típus. Argumentumok száma n: a tömb dimenziója.

Változók: Egyszerű változók; Tömb változók (array); Konstansok: Alaptípusok konstansok; Összetett típusú (magasabb típusú) konstansok; Reláció ill. függvény: T 1... T n T; Ha T értéktípus boolean, akkor reláció szimbólum, egyébként függvény szimbólum. Pl. Reláció: : integer integer boolean [infix]; Függvény: + : integer integer integer [infix];

A tömb típusának jelölése: Pl. Ha α egy tömb, amelynek típusa: integer T; az α egy olyan függvényt jelöl, amely az integer értékek halmazáról a T által jelölt értékek halmazára képez le. Ha k l akkor α[k:l] jelölés az intervallumot {i k i l} -ra korlátozza. Ha t T; i integer; akkor pl. t = α[i]; Legyen az α tömb típusa: integer Boolean Boolean; Ha i integer; B Boolean, akkor pl. α(i,b) egy Boolean kifejezés; B' Boolean; akkor pl. B' α(i,b); egy értékadás;

Adva: típus-szimbólum. T 1... T n T; Példa: Egy tömb leképezés típus-szimbóluma: integer boolean boolean; Ekkor: A array; k integer; B, ok boolean; B A[k+1,ok] bool kifejezés. A[2 k, ok] bool kifejezés.

Típusos kifejezés rekurzív definíciója: T típus egy egyszerű változója egy T típusú kifejezés. T típus egy egyszerű konstansa egy T típusú kifejezés. Ha s 1,...,s n rendre a T 1,...,T n típusú kifejezések, és op egy konstans a T 1... T n T típusból, akkor op(s 1,...,s n ) egy T típusú kifejezés. Ha s 1,...,s n rendre a T 1,...,T n típusú kifejezések, és α egy tömb a T 1... T n T típusból, akkor α[s 1,...,s n ] egy T típusú kifejezés. Ha B egy bool típusú kifejezés, továbbá s 1 és s 2 pedig T típusú kifejezések, akkor if B then s 1 else s 2 fi egy T típusú kifejezés.

Kifejezések felírási formái: Infix forma: s1 op s2 ; Pl. + : integer integer integer [infix]; i integer, j integer, k integer, k=i+j; Prefix forma: op(s1,s2); op(s); Pl. add: integer integer integer; i integer, j integer, k integer, k = add(i,j); Pl. : Boolean Boolean; i integer, k integer, k = i;

Post fix forma: s op; Pl. Faktoriális:! : nat nat [postfix]; n nat; k nat; n = k!; Kifejezés forma: Pl.: vektor, amelynek elemei integer értékek: Vektor műveletek: _ [ _ ] : vector nat integer v vector; k nat; i integer; i = v[k];

Kifejezések kiértékeléséről: Zárójelezések elkerülése, a műveletek prioritási sorrendje: 1: szorzás, osztás /, moduló; 2: összeadás +, kivonás -; 3: =, <,, >, ; 4:, ; 5:,. Például: x+y mod(n) értelmezése: x+(y mod(n)); p q r értelmezése: (p q) r;

Adva: típus-szimbólum. T 1... T n T; Példa: Egy tömb leképezés típus-szimbóluma: integer boolean boolean; Ekkor: A array; k integer; B, ok boolean; B A[k+1,ok] bool kifejezés. A[2 k, ok] bool kifejezés.