Tanácsok egyszerű programok készítéséhez



Hasonló dokumentumok
Minta programterv a 1. házi feladathoz

Korszerű geodéziai adatfeldolgozás Kulcsár Attila

Programozás. A programkészítés lépései. Program = egy feladat megoldására szolgáló, a számítógép számára értelmezhető utasítássorozat.

Dr. Schuster György február 21. Real-time operációs rendszerek RTOS

EPER E-KATA integráció

Programozás I gyakorlat

Adatok ábrázolása, adattípusok. Összefoglalás

Fordítóprogramok Készítette: Nagy Krisztián

HENYIR felhasználói dokumentáció

A döntő feladatai. valós számok!

Vektoros elemzés végrehajtása QGIS GRASS moduljával 1.7 dr. Siki Zoltán

2011. március 9. Dr. Vincze Szilvia

Programozás alapjai Bevezetés

Az éves statisztikai összegezés STATISZTIKAI ÖSSZEGEZÉS AZ ÉVES KÖZBESZERZÉSEKRŐL A KLASSZIKUS AJÁNLATKÉRŐK VONATKOZÁSÁBAN

MATEMATIKA ÉRETTSÉGI TÍPUSFELADATOK KÖZÉPSZINT Függvények

Érettségi feladatok Algoritmusok egydimenziós tömbökkel (vektorokkal) 1/6. Alapműveletek

Webes adatbázis-kezelés MySQL és PHP használatával

A pedagógus-előmeneteli rendszer informatikai támogató rendszerének fejlesztése Fűrész Edit Budapest, október 27.

Shared IMAP beállítása magyar nyelvű webmailes felületen

Az éves statisztikai összegezés. Statisztikai összegezés az éves közbeszerzésekről a Kbt. IV. és VI. fejezete szerinti ajánlatkérők vonatkozásában

Párhuzamos programozás

Számítógépes vírusok

Műszaki ábrázolás II. 3. Házi feladat. Hegesztett szerkezet

Digitális technika (VIMIAA01) Laboratórium 1

Vodafone ReadyPay. Használati útmutató

Útmutató a vízumkérő lap kitöltéséhez

Vegyes tételek könyvelése felhasználói dokumentum Lezárva:

Az éves statisztikai összegezés. Statisztikai összegezés az éves közbeszerzésekrıl a Kbt. IV. és VI. fejezete szerinti ajánlatkérık vonatkozásában

CAD-CAM

FTP-kapcsolat létrehozása FlashFXP alatt

Az éves statisztikai összegezés STATISZTIKAI ÖSSZEGEZÉS AZ ÉVES KÖZBESZERZÉSEKRŐL A KLASSZIKUS AJÁNLATKÉRŐK VONATKOZÁSÁBAN

Útmutató az EPER-ben már regisztrált szervezetek elektori jelentkezéséhez

Prop-Tech. Vázmérő. Telepítési és eltávolítási útmutató

2016. JANUÁR 1-TŐL ÉRVÉNYES MÓDOSÍTÁSOK A DR. NONA INTERNATIONAL TÁRSASÁG MARKETING TERVÉBEN

A C programozási nyelv VI. Parancssori argumentumok File kezelés

A táblázatkezelő felépítése

E-ADÓ RENSZER HASZNÁLATI ÚTMUTATÓ

Szakképzés - Meghatalmazás használata

Üresként jelölt CRF visszaállítása

Az első lépések. A Start menüből válasszuk ki a Minden program parancsot. A megjelenő listában kattintsunk rá az indítandó program nevére.

Vállalkozásfinanszírozás

Ablakok használata. 1. ábra Programablak

INFORMATIKAI ALAPISMERETEK

ÚTMUTATÓ A KONTROLL ADATSZOLGÁLTATÁS ELKÉSZÍTÉSÉHEZ (2012-TŐL)

I. Országgyűlés Nemzeti Választási Iroda

Magas szintű programozási nyelvek 1. Előadás. Bevezetés. Espák Miklós. Juhász István jegyzete alapján

Fejlesztı neve: LÉNÁRT ANETT. Tanóra / modul címe: CÉGES REKLÁMBANNER KÉSZÍTÉSE PROJEKTMÓDSZERREL

MATEMATIKA ÉRETTSÉGI TÍPUSFELADATOK MEGOLDÁSAI KÖZÉPSZINT Trigonometria

A Felhasználónév és Jelszó mezőkbe írjuk be az adatainkat, majd kattintsunk a Bejelentkezés gombra, vagy üssük le az Enter billentyűt.

Egyre nagyobb profitot generálnak a mobiltelefonnal végzett vásárlások, és egyre többet hezitálunk vásárlás előtt

A Hozzárendelési feladat megoldása Magyar-módszerrel

Csomagolási segédlet

Elektronikus öltözőszekrényzárak

Fábián Zoltán Hálózatok elmélet

Árverés kezelés ECP WEBSHOP BEÉPÜLŐ MODUL ÁRVERÉS KEZELŐ KIEGÉSZÍTÉS. v ECP WEBSHOP V1.8 WEBÁRUHÁZ MODULHOZ

Felvételi előkészítő tájékoztató 2012.

1. forduló. MEGOLDÁSOK Pontszerző Matematikaverseny 2015/2016-os tanév

Lineáris algebra gyakorlat

AZ EURÓPAI KÖZÖSSÉGEK BIZOTTSÁGA. Tervezet A BIZOTTSÁG.../.../EU RENDELETE

Dr. Kulcsár Gyula. Virtuális vállalat félév. Projektütemezés. Virtuális vállalat félév 5. gyakorlat Dr.

A kézbesítés rajtunk is múlik

Laborgyakorlat Logikai áramkörök számítógéppel segített tervezése (CAD)

BOLYAI MATEMATIKA CSAPATVERSENY ORSZÁGOS DÖNTŐ SZÓBELI (2012. NOVEMBER 24.) 3. osztály

A TÁMOP KIEMELT PROJEKT KERETÉBEN KIALAKÍTOTT INFORMATIKAI RENDSZER

A WEBES FELÜLET HASZNÁLATA. Munkáltatói oldalról. Fejér Megyei Kormányhivatal Munkaügyi Központja Székesfehérvár 2011.

Tartalomjegyzék. Tartalom 1/16

SÜTIK TÖRLÉSE. Készült: Módosítva:

KÍNAI NYELV JAVÍTÁSI-ÉRTÉKELÉSI ÚTMUTATÓ

1. Írja fel prímszámok szorzataként a 420-at! 2. Bontsa fel a et két részre úgy, hogy a részek aránya 5 : 4 legyen!

Kézikönyv. Előleg számla pénzügyi könyvelése - áfa elvezetéssel

IDE64 dokumentáció. A merevlemez előkészítése az első használatra. 1. Előkészítés. 2. Csatlakoztatás. 3. Segédprogram másolás

Disk Station DS209, DS209+II

Amit a Hőátbocsátási tényezőről tudni kell

AWP TELEPÍTÉSE- WINDOWS7 64 OPERÁCIÓS RENDSZEREN

A Budavár Tours ajándékutalvány megvételének szabályzata

VÁLTOZIK AZ ISO 9001-ES SZABVÁNY. KINEK JÓ EZ?

Töltse ki értelemszerűen a vevő nevét, irányítószámát, település, utca házszám mezőket, valamint a partner adószáma mezőket.

FENNTARTHATÓ FEJLŐDÉS

KOVÁCS BÉLA, MATEMATIKA I.

KÖZLEKEDÉSI ALAPISMERETEK (KÖZLEKEDÉS - ÜZEMVITEL, KÖZLEKEDÉS-TECHNIKA) KÖZLEKEDÉSI ALAPISMERETEK ÉRETTSÉGI VIZSGA II.

Előgyergyártott konzolos és konzolos támfalas közlekedési vasbeton elemcsaládok a kerékpáros és gyalogos közlekedési területek növelésére

ELEKTRONIKAI ALAPISMERETEK

ADATBÁZIS-KEZELÉS. Funkcionális függés, normál formák

TELJESKÖRŰ ÜGYFÉLAZONOSÍTÁSI SZOLGÁLTATÁSOK

118. Szerencsi Többcélú Kistérségi Társulás

A 27/2012 (VIII. 27.) NGM rendelet (12/2013 (III.28) NGM rendelet által módosított) szakmai és vizsgakövetelménye alapján.

Linux Mint 8 telepítése

DLookup függvény 1. (5)

Pénzmosás és fellépés a terrorizmus ellen (változó szabályok) Dr. Király Júlia MNB Budapest, november 12.

Külső eszközök Felhasználói útmutató

Gépi forgácsoló Gépi forgácsoló

SW process Feladatok. SW process Feladatok

O k t a t á si Hivatal

Egyszerű C++ program szerkezete

HWDEV-02A GSM TERMOSZTÁT

Tanúsítvány és hozzá tartozó kulcsok feltöltése Oberthur kártyára és Oberthur SIM termékre

Óravázlat. A szakmai karrierépítés feltételei és lehetőségei. Milyen vagyok én? Én és te. heterogén csoportmunka

Magyar. Biztonsági információk. Magyar

AZ EURÓPAI UNIÓ TANÁCSA. Brüsszel, július 19. (19.07) (OR. en) 13081/11 AVIATION 193

Beállítások CLASSBOOK-óratervező. Első belépés

Átírás:

Tanácsok egyszerű programok készítéséhez Egyszerű programon azt a konzolos (a felhasználóval egy konzol-ablakon keresztül kommunikáló) alkalmazást értjük, amely utasításai egyetlen forrásállományban, egy vezérlési láncra vannak felfűzve, kódja nincsen függvényekre, eljárásokra tagolva. Az alább ismertetett implementációs tanácsok természetesen az ennél összetettebb programokra is érvényesek. Program szerkesztése, fordítása, tesztelése Alkalmazásunkat minden esetben egy úgynevezett projektbe ágyazzuk. Eleinte, amíg az alkalmazásunk egyetlen forrás állományból áll, talán körülményesnek tűnik ez a lépés, de ha megszokjuk, akkor később, a több állományra tördelt alkalmazások készítése sem lesz nehéz. A bizonyítottan helyes absztrakt program kódolása többnyire nem eredményez működő programot. A kódolás során ugyanis elkövethetünk alaki (szintaktikai) hibákat (ezt ellenőrzi fordításkor a fordító program) és tartalmi (szemantikai) hibákat. Ez utóbbiak egy részét a kódolási megállapodások betartásával tudjuk kivédeni, más részét teszteléssel felfedezni, a hiba okát pedig nyomkövetéssel megtalálni. A programok kódolásánál törekedjünk arra, hogy a beírt kódot olyan hamar ellenőrizzük fordítás és futtatás segítségével, amilyen hamar csak lehet. Ezért ne a teljes kód beírása után fordítsuk le először a programot, mert a hibaüzenetek tényleges okát ekkor már sokkal nehezebb megtalálni. Eleinte ne szégyelljük, ha utasításonként fordítunk, de később se írjunk le egy program-blokknál többet fordítás nélkül. Ezzel a szerkesztés során elkövetett szintaktikai hibákat viszonylag könnyen ki tudjuk szűrni, hiszen egyszerre csak kis mennyiségű kód javításával kell számolnunk. A fordításnál keletkezett hibaüzenetek értelmezése nem könnyű. A fordítóprogram annál a sornál jelez hibát, ahol a hibát észlelte, de a hiba gyakran több sorral előbb található vagy éppen nem található (például egy változó deklarálásának hiánya). Érdemes a hibaüzeneteket sorban értelmezni és kijavítani, mert bizonyos hibák egy korábbi hibának a következményei. Fontos tudni, hogy a hibaüzenet nem feltétlenül adja meg a hiba javításának módját és helyét. Ezért nem szabad a hibaüzenet által sugallt javítást azonnal végrehajtani, hanem először rá kell jönnünk a hiba valódi okára, majd meg kell keresnünk, hol és mi módon korrigálhatjuk azt. Ne csak a fordító hibaüzeneteit (error), hanem a figyelmeztetéseit (warning) is olvassuk el. A figyelmeztetések rámutathatnak más, nehezen értelmezhető hibaüzenetek okaira, vagy később fellépő rejtett hibákra. Érdemes a kódot úgy elkészíteni, hogy annak bizonyos részei minél hamarabb kipróbálhatók, azaz futtathatók legyenek. Így a programot már akkor ki tudjuk próbálni, amikor a teljes feladatot még nem oldja meg. Ne sajnáljuk a tesztelésre szánt időt. Gondoljuk át milyen tesztesetekre (jellegzetes bemenő adatokra) érdemes kipróbálni a programunkat. A fekete doboz teszteseteket a feladat szempontjából lényeges vagy extrém bemenő adatok adják. A fehér doboz teszteseteket a programkód ismeretében állítjuk elő. Itt olyan adatok megadása a cél, amelyekkel a program minden egyes utasítása legalább egyszer végrehajtódik, továbbá az elágazási és gyűjtő pontjain mindenféle irányból keresztül megy a vezérlés. A tesztelést (akárcsak a fordítást, futtatást) menet 1

közben, már egy-egy részprogramra érdemes végrehajtani. Ha a programunk egy tesztadatra rosszul működik, akkor a hiba kijavítása után újra az összes tesztadatra meg kell ismételni a tesztelést, nemcsak a rossz működést előidézőre. A nyomkövetés egy tartalmi hiba bekövetkezésének pontos helyét segít kideríteni, noha ez nem feltétlenül az a hely, ahol programot javítani kell. A nyomkövetés a program lépésenkénti végrehajtása, melynek során megvizsgálhatjuk változóink pillanatnyi értékét. Egyszerű programok implementálása Egy program kódolása előtt ismernünk kell az általa megoldandó feladatot, annak adatait, az adatok típusát, változóik nevét, azt, hogy melyek a bemenő illetve eredményt hordozó adatok, és ezek milyen feltételeknek tesznek eleget, továbbá a megoldó program absztrakt vázát, azaz rendelkeznünk kell a program tervével. A terv általában nem tér ki arra, hogy a bemenő változók hogyan veszik fel a kezdőértékeiket, illetve az eredmény változók értékeit hogyan tudjuk a felhasználó felé láthatóvá tenni. Ezért egy működő program elkészítése nem pusztán a tervezés során előállt absztrakt program kódolásából áll, hiszen számottevő kódot kell készítenünk egyrészt az adatok beolvasásának megvalósításához, másrészt az eredmény megjelenítéséhez. Ezért nevezzük ezt a folyamatot a terv kódolása helyett a terv implementációjának (megvalósításának). Az implementálás menete 1. A program kerete Ezen azokat a kötelezően megadandó kódsorokat értjük, amelyek közé kell majd a feladat megoldásának kódját írni. Lényeges része ennek a keretnek az a pont, ahonnan a program vezérlése futtatáskor elindul. Ez azt jelenti, hogy a számítógép e pont után elhelyezett utasításokat kezdi el egymás után végrehajtani. 2. Bemenő adatok beolvasása és ellenőrzése A beolvasási szakaszban gondoskodnunk kell arról, hogy a bemenő változók megfelelő kezdőértéket kapjanak. A feladat tervéből kiderül, hogy programunknak melyek a bemenő változói, és azok kezdő értékeire milyen feltételnek kell teljesülnie. A bemenő adatok kezdőértékeihez többnyire a szabványos bemenetről vagy egy szöveges állományból nyerjük. A beolvasott adatokra meg kell vizsgálni, teljesítik-e a szükséges előfeltételeket. Ha nem, akkor hiba-jelzést kell adni, és vagy leállítani a programot, vagy újra meg kell kísérelni a beolvasást. (Ezt a kódrészt bizonyos esetekben összevonhatjuk a programnak a számítást végző részével. Ilyenkor az adatokat a számítás menetéhez igazodva, a számítással egy időben olvassuk be.) 3. Az absztrakt program kódolása A program második része az absztrakt programnak megfelelő kód. Amennyiben ez strukturált, akkor annak szerkezete alapján kívülről befelé haladó kézi fordítással állítjuk elő a kódot. Mindig az adott szerkezeti elemnek (szekvencia, elágazás, ciklus) megfelelő utasítást kódoljuk. Az elemi utasításokat közvetlenül kódoljuk. A programkódban tabulálással is jelezzük a program szerkezetét. 4. Eredmény megjelenítése 2

Az eredmény változók értékének megjelenítése (a szabványos kimeneten vagy egy szöveges állományban) alkotja a programkódunk harmadik, egyben befejező részét. Néha ezt a kódrészt összevonhatjuk az előző, számítást végző résszel, és az eredményt a számítással párhuzamosan írjuk ki. 5. Az alkalmazott változók deklarálása A programkódban használt változók típusát meg kell adni, azaz a változókat deklarálni kell. Az állapottér változóit a kód elején deklaráljuk, a segédváltozókat elég abban a blokkban, ahol használjuk őket, természetesen még az első hivatkozás előtt. (Blokknak tekintjük a teljes kódot, de az egyes programszerkezetek által befoglalt kódrészeket is. 3

Kódolási megállapodások 1. A kódot úgy kell elkészíteni, hogy annak tördelése jól tükrözze a program szerkezetét. Az utasításokat többnyire külön sorba írjuk. 2. Szimultán értékadásokat egyazon sorba írt egyszerű értékadásokkal helyettesítjük. 3. A logikailag összetartozó, például ugyanazon vezérlési szerkezetbe tartozó utasításcsoportokat (elágazás ágai, ciklusmagja) külön utasítás-blokkba helyezzük. Ez csak akkor mellőzhető, ha az ág vagy a mag egyetlen utasításból áll. Ilyenkor a teljes vezérlési szerkezet egyetlen sorban álljon. Javasolt megoldás: az elágazás ágait és a ciklusmagot akkor is tegyük utasításblokkba, ha az csak egy utasításból áll, így ha újabb utasításokat fűzünk hozzá, nem feledkezhetünk meg a blokk kijelöléséről. 4. A vezérlési szerkezeteket egymástól jól megkülönböztetve kell leírni. 5. A többágú elágazásokat nem több két-ágú elágazás (ahol az else ág üres) szekvenciájával, hanem egymásba ágyazott két-ágú elágazásokkal kódoljuk. A sok-ágú elágazás (swtich, case) csak speciális esetben használható. 6. Ciklusok kódolására az elől-tesztelős ciklus-utasítást használunk. Az általános elől-tesztelős ciklus (while) mellett gyakran használjuk az úgynevezett számlálásos (for) ciklust is, ami speciális elől-tesztelős ciklusnak számít. A hátul tesztelős ciklus-utasítást kizárólag az ellenőrzött adatbevitelhez vagy a program ismételt végrehajtásának biztosításához használjuk. 7. Az adatok beolvasása kétféleképpen történhet. Élesen elkülöníthetjük azt a számításokat végző résztől, vagy a számítások közben végzünk folyamatos beolvasást. Ez utóbbi akkor indokolt, ha több azonos típusú érték feldolgozása a feladat, amelyeket nem akarunk egy tömbben tárolni. 8. Egy adat ellenőrzését közvetlenül a beolvasás után kell elvégezni. Ha az adat értéke helytelen, akkor hiba-üzenetet generálunk. Ezt követően kétféle lehetőségünk van: vagy azonnal megállítjuk a program futását, vagy addig olvassuk az ellenőrizendő adatot újra és újra, amíg az helyes nem lesz. 9. A legtöbb fejlesztő környezet automatikusan gondoskodik arról, hogy a program befejeződése után csak egy külön <enter> leütésre szűnjön meg a konzol-ablak. Ha azonban nem egy ilyen fejlesztő környezetben indítjuk a programunkat, akkor annak befejeződésekor a program konzol-ablaka azonnal megszűnik, így nincs lehetőségünk arra, hogy elolvassuk a program futási eredményét. Ennek megakadályozására a program összes megállási pontjára egy várakozó utasítás kell elhelyezni. Az elegáns operációs rendszertől független várakozó utasítás (pl. <enter> leütéséig várakozik) nem mindig van. Univerzális megoldás viszont bár nem annyira elegáns egy karakter beolvasására való várakozás. 10. A tömb azonos típusú értékek sorozatának tárolására szolgál. Használata előtt meg kell tudnunk mondani, legfeljebb hány eleme lesz, azaz mekkora memória helyet foglaljunk le számára. Kényelmes használatot biztosít a dinamikus helyfoglalású tömb, amelynek méretét futási időben, de még a használata előtt elég megadni. Találkozhatunk dinamikus (dinamikusan nyújtózkodó) tömbbel is, de ennek használatánál körültekintően kell eljárni, mérlegelve a használatából adódó futási idő növekedést. 4

11. Szöveges állományok kezelése lehetőséget ad arra, hogy a program bemenő adatait ne közvetlenül a billentyűzetről olvassa, kimenő adatait ne a konzol ablakba írja. A beírandó értékeket előre elhelyezhetjük egy olvasásra szánt szöveges állományba, eredményeket pedig egy másik szöveges állományba írhatjuk. Ilyenkor az előbbi szekvenciális inputfájlként, az utóbbi szekvenciális outputfájlként viselkedik. 5