Automatikus programozás kezdőknek

Az automaták elméletét nem tanítják mindenhol. A műszaki egyetemeken tanítják ezt az elméletet, mint alkalmazott szintézisét digitális berendezéseket, de nem állnak kapcsolatban a programozás (ilyen megállapításokat kollégám Shalyto AA vezető egyetemek Szentpétervár).

Automatikus programozás kezdőknek

Az élet kényes dolog. Sokan, akik a nyolcvanas évek elején (középső) műszaki egyetemeken végzettek, többször kellett változtatni tevékenységüket. Áramkör hirtelen elkezdett foglalkozni a vékonyréteg integrált áramkör gyártási technológia, a szakember az elektronikus vákuum eszközök „ék” a mikroprocesszoros áramkört. Megnyerte a "széles" oktatást a szovjet egyetemeken, "semmit semmit". Köszönjük kedves Leonid Ilyich-t boldog gyermekkorunkért.

Az [automatikus programozás] mastering után azonban felmerül a kérdés: hogyan programozhattam másképpen? Az automatizált programozás lehetővé teszi majdnem minden összetett ciklikus feladat megoldását minimális költséggel a hibakereséshez.

Így van. Más programozási technológiákat csak azoknak ajánljuk, akik hajlamosak a szadalomcsalmára.

Az automatikus programozás relevanciája

Miért fontos az automatikus programozási technika? Két probléma van:

  1. a programkód által a RAD segítségével kialakított kiszámíthatatlan viselkedés;
  2. a "programozás kultúrájának" kihalása.

A RAD által kifejlesztett programkód megjósolhatatlan viselkedése

A kilencvenes évek elején felmerültek a Rapid Application Development (RAD) eszközök, amelyek magukban foglalják különösen az olyan jól ismert Borland termékeket, mint a Delphi és a C ++. A fenti programozási rendszerek nemcsak a szó szokásos értelmében programozhatók, hanem ténylegesen programokat is készítenek, amelyek megakadályozzák a vizuális komponenseket a VCL-ből az ablak formában.

A VCL bármely vizuális objektumát számos tulajdonság, módszer és esemény jellemzi. Úgy tűnik, hogy a felsorolt ​​attribútumok egyszerű manipulálása kényszerítheti a kifejlesztett programot arra, amit a fejlesztő-programozó igényel. Nem volt ott.

Charles Calvert a "Delphi 2. The User's Encyclopaedia" című könyve "Visual programozás a RAD" bevezető fejezetében őszintén elismeri:

A Delphi környezetek egyik ironikus aspektusa az, hogy ez nagy előny a kezdőknek, de néha összekeverik a tapasztalt programozókat. Tehát a VCL hajlamos elrejteni bizonyos objektumok pontos végrehajtását, ezáltal megakadályozza a kívülállók számára, hogy megváltoztassák a kód alapértelmezett viselkedését,

Így az ironikus oldal és a nagy haszon oldalra vezet valakit. a kód alapértelmezett viselkedése ravasz és a titkos eszköz a RAD. A kiszámíthatatlan kód viselkedésének klasszikus példáját világosan megmutatta a költő, az objektumorientált programozás "alapítója". A költő, aki számunkra "minden".

"A nagybátyám - a legőszintébb szabályok

Ha egy vicc sem betegedett meg,

Ő tiszteletben tartotta magát

És nem találta volna jobbra. "

Mi a "Puskin nagybátyja" az objektumorientált programozás helyzetéből:

Automatikus programozás kezdőknek

Mi a Tisztaság viselkedése? Amint az Egészség tulajdonság értékét megváltoztatta a programkód ("hurly" egész számra), a Respect ("tiszteletben tartották kényszerített") "tüzelt". És legyen az? Nem feltétlenül, mert van egy olyan funkció, amit úgy hívnak, hogy a nagybátyám valami jobbat talált ki. Talán az értelmezés nem teljesen helyes, de világos.

A programozás kultúrája

A programozás kultúrájáról csak azt lehet mondani, hogy a kultúra lassan, de biztosan elhalványul. (A szovjet iskola programozóinak szakemberei félretették, valószínűleg a fukar ember könnye). Most egyre több kódoló. különböznek a programozóktól és a fejlesztőktől, mivel képtelenek feladatmeghatározásra. és írja le a programdokumentumokban.

  1. a program kódjának magatartása, amelyet kizárólag a RAD segítségével fejlesztettek ki, eredetileg kiszámíthatatlan;
  2. hogy a programkód viselkedése kiszámítható legyen, meg kell tanulnod a kód viselkedését.

Hogyan lehet megismerni a programkód viselkedését?

Nagyon egyszerű - az automatikus programozás módja - az "ellenőrzési pontok" elrendezése az esettanulmány használatával - a véges állapotú gép szoftververziója.

Az állami gépgyártás

Példaként egy véges automata megvalósítására, amely jól szemlélteti az ellenőrzési pontok elrendezésének jelentését. használjuk a sífutópályát, amelyet át kell adni, és kötelező követelményt kell betartani az idő előírásainak megfelelően. mindenkinek.

Sífutás - ellenőrzési pontok elhelyezése

Automatikus programozás kezdőknek

A fenti ábra sífutást mutat. 0 pont - start és befejezés, 1-7 pontok - vezérlés. Az ellenőrző pontok a bírák, rögzítik az átszállási időt és a síelő mellvonala számát.

A sima sífutópálya hasonló elrendezésével a síelő "süllyesztett" irányítópontokká válik a sínpálya pályájához. Ha a célvonalon kiderül, hogy a síelő nem haladta meg az ellenőrzési pontok legalább egyikét - az átvétel elkerülhetetlen. És ha "vágsz sarokat" az ellenőrzési pontok között?

Amint az élet elé a választás: vagy tíz kilométerre a görbe mentén, a törött, de aszfaltos úton, vagy „vágott” és áthaladni az erdőben, mintegy három kilométerre. Három kilométert "egyenes vonalban" elárasztottak (Fehéroroszországban), és négy óra alatt legyőzték. Az élet cáfolta az állítást, hogy „a legrövidebb távolság két pont között egy egyenes vonal”, és megerősítette a másik - „száraz elmélet, barátom, de az élet fája zöld nagyszerűen.”

A "vörös" pálya mentén lévő "ellenőrzőpontok" közötti "sarokcsökkentés" kísérlete sem jelentős időbeni nyereséget nem eredményez, vagy jelentős veszteséghez vezethet. Nem felelt meg a szabványnak - újra.

Nem nehéz megvalósítani a "sima kereszt áthaladását" programozva, véges automata formájában.

Az állami gép szoftver-implementációja

A véges állapotú gép bevezetésekor az algoritmus kissé bonyolult volt. A síelőknek a hangsebességen kell lenniük, az előzőtől a következő vezérlőpontig tartó utazási idő öt másodpercre korlátozódik.

Automatikus programozás kezdőknek

Az állam gép alkalmazásával hajtják végre Delphi 7. Az alakja a reset gomb 8, 0 nevezzük btnStart, többi - CP1-cp7 (cp - ellenőrzési pont). Egy gomb megnyomása egyenértékű egy síelővel, aki belép a vezérlőpontba. Az összes nyolc gombhoz rendelt OnClick eseménykezelőhöz egyetlen gomb tartozik. Elkészített eljárás Kiadás.

A Label1-3 címkék felhívják a síelőt. melyik gombot kell megnyomnia, megmutatja a hátralévő időt a sajtolás és az eredmény előtt. A véges állapotú gép programjának szövegrészeit az alábbiakban adjuk meg.

Az állami gépprogram szövege

Automatikus programozás kezdőknek

Az állami gép működése

A program közvetlenül az indítás után megjelenik egy üzenet a felhasználónak - "Nyomja meg a 0 gombot". Mi lehet a válasz:

  1. a játékos kis kezekkel rendelkező játékos csak a 0 gombot fogja megnyomni;
  2. az engedelmes felhasználó rákattint a 0 gombra.

A véges állapotú gép reakciója játékos kis kezekhez

Meg kell jegyezni, hogy egy rossz felhasználó a gombok végéig megnyomhatja a fényt, de semmi sem fog származni. A cp1-cp7 bármelyik gombjának megnyomása mielőtt megnyomja a gombot btnAz állapotgép megnyitása egyszerűen figyelmen kívül hagyja, mert a Release eljárásban vannak vonalak:

Automatikus programozás kezdőknek

Az állami gép kódtöredékében nincs "csapda" a 0. üzemmódváltozóhoz. Az esetkijelzõ kódja nem kerül végrehajtásra. A program egyszerűen megkerüli azt. Az aktuális kódsor mutatója debugger módban (csak egy mutató) makacsul vissza fog térni az eljárás elejére.

A véges állapotú gép reakciója egy engedelmes felhasználónak

Amint a felhasználó megnyomja a 0 (btnStart) gombot, az üzemmód és az s_mode változók az 1-es és a 0-as értéket veszik fel. A mutató "meghibásodik" a "vezérlőpont" átadásánál, és az ágon belül van 0 eset s_mode.

Automatikus programozás kezdőknek

Továbbá a kód végrehajtása után

az állam gép megvárja események OnClick CP1 gombot, amely megfelel az állam s_mode = 1. Nem meggyőzés felhasználó nem kényszerítheti az állam gép reagálni megnyomásával bármely más gombot, kivéve CP1, mióta egyenlőtlenség változók o_mode ( «várható» gombot), és s_mode (valójában megnyomta a gombot) mutató hülye, hogy menjen vissza az az eljárás kezdetén -zhdat onclick esemény CP1 gomb .

Ezenkívül az állami gép fenti kódja elindítja az időzítőt. Az időzítő csendesen öt másodpercet vesz le, és leállítja a "síkeresztet", ha a felhasználó nem nyomja meg a cp1 gombot.

Így különösen kényelmes a kommunikációs protokollokat megvalósító kommunikációs programok építése. Tegyük fel, hogy egy véges automata egy az állam 1 küldött bytesorozatot (1) Az állam gép, átkerült a következő állam (2) és vár egy egyértelmű választ (2) a gép B. Számítógép B küldhet egy sorban bármilyen (öt másodperc). De ha öt másodpercen automatát Egy nem kap várt válasz (2) a gép B - minden tryndets. Az időzítő azt jelzi, hogy a B automata várt válaszát nem fogadták el egy adott időintervallumban. A felhasználó lehet tisztán látni, ahol a mi lépése a véges állapotú gép nem a kommunikáció közben. És elvesz egy parancsnok döntését.

Az állami gép átalakítása

Automatikus programozás kezdőknek

Ha módosítja a kódot állam gép sorozat „száműzi” a mutatót az ágak a program megáll, várva a következő gomb megnyomásával 0. Más szavakkal, az állam gép után a „kick” felhasználói fiók maguk a programok elmúlik minden ellenőrzési pontokat, amelyek egyértelműen jelezték, és a programozó, mint egy normális automata, visszatér az eredeti állapotába.

Analógia egy szódavízzel. Fed a gép egy fillért sem, akkor felhívni néhány pohár szóda körte szirupban, és visszatért az eredeti állapotába - várni, ha valaki megetette másik érme.

Kényelmes ilyen hibaüzenetet követni hibakeresési eszközökkel.

Megjegyzés - a végén; a programban meg kell adni a másik nyilatkozatot. amely foglalkozik a halálos helyzetekkel.

A véges állapotú gép az "oldalra lépéshez" elven működik (a síkeresztre vonatkozó előírások ismételt betartása). „Dodge” vagy „csaló” az állam gép nem engedi a felhasználó (a kezdeti változata a kód), vagy maga a program (a módosított változata a kód). A gép mindkettőt arra kényszeríti, hogy mindkettő pontosan a "vezérlőpontokat" adja át, ahogy a programozó tette.

A véges állapotú gép kódja ágakkal rendelkezik, de ágak - logikai struktúrák "választás" - kifejezett formában, mintha nem. A case utasítás teszi a program szövegét, így „átlátszó” a kérdést: „mi történik, ha” bármilyen piszkálni az ujját, és nyomja meg a céltábla. És hogyan "átlátszó" az az építmény, ha> 0, akkor b: = 0 else, ha a<0 then b:=a else if a<>b majd (és így tovább). A programozás kultúrájáról szól - egyszerűen olvasható kód írására.

A véges automaton kódja kölcsönösen ortogonális. Ha módosítja a kódot, ha új kódfájlokat ad hozzá a kódhoz, akkor nem kell megváltoztatnia a forráskódot. A program nem "feltérképezi" - csökken a kódolási hibák valószínűsége.

következtetés

Kohl hamarosan említettük Puskin, a bűn nem felidézni Majakovszkij, előrevetítve a „születés” az üzemeltető esetében (de nem az ő védjegye „létra”).

- Egy varjúból

A fiú csak gyáva.

Ez nagyon rossz.

Ez, bár maga is a csúcson van,

vitatkozik egy félelmetes madárral.

Bátor fiú, nos,

az életben hasznos. "

Itt van, mi történik:

esküvő

Most, amikor világossá vált, példája annak, hogy az állam gép irányítja a viselkedést a programkód, nyugodtan folytassa olvasni a cikket professzor B. P. Kuznyecov és az elemzés „önkényes ciklusos bemutatott algoritmusok formájában ábrán egy véges automata átmenetek.” Sok szerencsét!

Az OOO "Műszaki dokumentáció" szolgáltatásait e-mailben lehet megrendelni. mail admin @ tdocs. su (szóköz nélkül), tel. 8-910-468-09-28, 8-916-631-48-82 vagy kapcsolattartók formájában.

Kapcsolódó cikkek