Probléma formálisan specifikált: valós világ (domai) (hibás eredmény) ködös határ (félreértés, hiba) formális világ (megoldás) A specifikáció csak nagyvonalakban.

Slides:



Advertisements
Hasonló előadás
Deduktív adatbázisok.
Advertisements

Szerver oldali programozás
Hatékonyságvizsgálat, dokumentálás
Garázs kapu vezérlése Kincses Levente Elektronika 89/2004.
Determinisztikus programok. Szintaxis: X : Pvalt program változók E : Kifkifejezések B : Lkiflogikai kifejezések C : Utsutasítások.
1.) A programfejlesztés hagyományos életciklus modellje és adattípus.
Turbo Pascal Változók.
Bevezetés a Java programozásba
5. előadás (2005. március 22.) Függvények definíciója, deklarációja, hívása Enumerációs adattípus 1.
4. előadás (2005. március 8.) Pointerek Pointer aritmetika
Parancssori argumentumok Primitív típusok Operátorok Vezérlési szerkezetek Tömbök Ürmös Beáta, 2011.
Táblázatkezelés alapjai MS Excel, OpenOffice Calc
Fordítóprogramok FORD01 Programozó matematikus III. évf. Miskolci Egyetem 1 Fordítóprogramok 1 Programozó matematikus szak 2003/2004-es tanév II. félév.
Determinisztikus véges automaták csukva nyitva m s kbsm csukva nyitva csukva nyitva csukvanyitva 1. Példa: Fotocellás ajtó s b m m= mindkét helyen k= kint.
Differenciál számítás
Integrálszámítás Mire fogjuk használni az integrálszámítást a matematikában, hova szeretnénk eljutni? Hol használható és mire az integrálszámítás? (már.
Reprezentációs függvény. Adva egy adattípus absztrakt és konkrét specifikációja: d a = ( A, F, E a ); d c = ( C, G, E c ); A = {A 0,..., A n };C = {C 0,...,
1. előadás. 1.) Szoftverfejlesztés, mint mérnöki tevékenység. Számítási eszközfejlődés. Számítási eszközfejlődés: hazai viszonyok. Mérföldkő: Simula 67.Klasszikus.
1. előadás. 1.) Szoftverfejlesztés, mint mérnöki tevékenység. Számítási eszközfejlődés. Számítási eszközfejlődés: hazai viszonyok. Mérföldkő: Simula 67.Klasszikus.
C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek
Alphabet is a type specification = sorts: alphabet oprs: a:  alphabet,...,z:  alphabet end alphabet; nat is a type specification = sorts:nat oprs:zerus:
Nem determinisztikusság és párhuzamosság. A nem determinisztikusság a párhuzamosságban gyökeredzik. Példa: S par  parbegin x:=0   x:=1   x:=2 parend;
A számfogalom bővítése
A RobotinoView programozása
Vizuális és web programozás II.
Ficsor Lajos Template-ek CPP8/ 1 Template-ek. Ficsor Lajos Template-ek CPP8/ 2 A template fogalma Kiindulási probléma: tetszőleges típusokon kellene ugyanolyan.
PHP I. Alapok. Mi a PHP? PHP Hypertext Preprocessor Szkriptnyelv –Egyszerű, gyors fejlesztés –Nincs fordítás (csak értelmező) Alkalmazási lehetőségek:
Programozás Operátorok C# -ban.
Objektumok. Az objektum információt tárol, és kérésre feladatokat hajt végre. Az objektum adatok (attribútumok) és metódusok (operációk,műveletek) összessége,
ELTE Adatokkal kapcsolatos fogalmak  Konstans: az az adat, amely a műveletvégzés során nem változtat(hat)ja meg értékét, mindvégig ugyanabban az „állapotban”
Ismétlés A pascal program szerkezete: program programnev; Programfej
Kifejezések a Pascalban Páll Boglárka. Ismétlés: Ahogy algoritmikából láttuk, a kifejezések a Pascal nyelvben is operátorokból és operandusokból állnak.
Kifejezések. Algoritmus számol; Adott összeg; összeg:=0; Minden i:=1-től 5-ig végezd el Ha 2 | i akkor összeg:=összeg+2*i Ha vége Minden vége Algoritmus.
Tömbök és programozási tételek
Operátorok Értékadások
Ábrahám Gábor Radnóti Miklós Kísérleti Gimnázium Szeged
Atomi mondatok FOL-ban Atomi mondat általában: amiben egy vagy több dolgot megnevezünk, és ezekről állítunk valamit. Pl: „Jóska átadta a pikk dámát Pistának”
Termelő-fogysztó modell. A probléma absztrakt megfogalmazása: informális leírás. Adott egy N elemű közösen használt tároló, N  1. Adott a folyamatoknak.
Koncepció: Specifikáció: e par exp i = eb imp bod ib Specifikáció elemzése: tulajdonságok felírása a koncepció alapján + tulajdonságok bizonyítása.
Egyenesvonalú (lineáris) adatszerkezetek
Webprogramozó tanfolyam
Lineáris algebra.
1 Vektorok, mátrixok.
Logikai műveletek és áramkörök
A Visual Basic nyelvi elemei
1 Mivel foglalkoz(t)unk a laborokon? 1.hét: Word dokumentumok 1.hét: Word dokumentumok tagolása, tartalomjegyzék, ábrák számozása, hivatkozások, egyenlet-szerkesztő.
Valószínűségszámítás II.
Adatbáziskezelés. Adat és információ Információ –Új ismeret Adat –Az információ formai oldala –Jelsorozat.
A 2. géptermi beszámoló VBA anyagának összefoglalása
1 Mivel foglalkoz(t)unk a laborokon? 1.Labor: Word alapok Excel alapok: Excel alapok: Cellahivatkozás, munkalapfüggvény, diagram varázsló, trendvonal 2.
Adva S  parbegin S 1 ...  S n parend; Párhuzamos programszerkezet két vagy több olyan folyamatot tartalmaz, amelyek egymással közös változó segítségével.
Kiterjesztések szemantikája: Szemantikai tartomány : Adatoknak, vagy értékeknek egy nem üres halmazát szemantikai tartománynak nevezzük. Jelölése: D. Egy.
Kommunikáció és szinkronizáció. 1.) Kommunikáció: Lehetőség arra, hogy egyik folyamat befolyásolja a másik folyamat lefutását. Kommunikáció eszközei: közös.
Hibaszámítás Gräff József 2014 MechatrSzim.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás I. 3. gyakorlat.
Félcsoport (semigroup) = ({s},{ *: s s  s [infix]}. semigroup is a type specification = sorts: s oprs: *: s s  s [infix] eqns: m 1, m 2, m 3  s (m 1.
Paraméterátadó-morfizmus diagramja: p: tartalmazás SPEC SPEC 1 h : SPEC  SPEC' h 1 : SPEC 1  SPEC 1 ' SPEC' SPEC 1 ' p': tartalmazás SPEC: paraméter.
1 Függvények használata – az első függvénynél a formulát háromszor be kell írni, rendre az x, x+h, x-h argumentumokkal, – a második függvénynél az új (feltételes.
Példa. Az ábrázolás szemléltetése.  = ({stack, elem },{ create :  stack; push : stack elem  stack}),  = ( {vector, nat, elem}, { create c :  vector.
Függvények, mutatók Csernoch Mária. Függvények függvény definíciója az értelmezési tartomány tetszőleges eleméhez hozzárendel egy értéket –függvény helyettesítési.
Függvények, mutatók Csernoch Mária. Függvények függvény definíciója az értelmezési tartomány tetszőleges eleméhez hozzárendel egy értéket –függvény helyettesítési.
TÁMOP /1-2F JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam Utasítás és blokk. Elágazás típusai, alkalmazása Kovács.
Kifejezések C#-ban.
Gépészeti informatika (BMEGEMIBXGI)
Programozás C# -ban Elágazások.
Példa: Dinteger = {..., -1,0,1,...}; Dboolean = {true, false};
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Vektorok © Vidra Gábor,
Algoritmus készítés.
Előadás másolata:

probléma formálisan specifikált: valós világ (domai) (hibás eredmény) ködös határ (félreértés, hiba) formális világ (megoldás) A specifikáció csak nagyvonalakban írja le a valóságos problémát. A szoftver fejlesztőnek meg kell értenie a felhasználó problémájá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). Specifikáció (igazolt, bebizonyított) A probléma formálisan leírt megoldás (program) Kifejezés, típusos kifejezés. Verifikáció (formális igazolás)

Típusos kifejezések: Alaptípusok: integer, boolean, character. Típus: = ; 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 1 ...  T n  T; típus-szimbólum. Példa: Egy tömb leképezés típus-szimbóluma: integer  boolean  boolean; A  array; k  integer; B, ok  boolean; Ekkor: 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 1 ...  T n  T; típus-szimbólum. Példa: Egy tömb leképezés típus-szimbóluma: integer  boolean  boolean; A  array; k  integer; B, ok  boolean; Ekkor: B  A[k+1,ok] bool kifejezés. A[2  k,  ok] bool kifejezés.