Programozás alapjai, programtervezés



Hasonló dokumentumok
Programtervezés. Dr. Iványi Péter

Java programozási nyelv

Programozás alapjai (ANSI C)

Webprogramozás szakkör

Algoritmusok. Dr. Iványi Péter

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

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):

SZÁMÍTÓGÉPES PROBLÉMAMEGOLDÁS

1. Jelölje meg az összes igaz állítást a következők közül!

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):

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

A C# programozási nyelv alapjai

Bevezetés a programozásba

Tömbök kezelése. Példa: Vonalkód ellenőrzőjegyének kiszámítása

A fizetendő összegből a 35 év fölötti tulajdonos 20 % kedvezményt kap.

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

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

ALGORITMIKUS SZERKEZETEK ELÁGAZÁSOK, CIKLUSOK, FÜGGVÉNYEK

A programozás alapjai

HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport

Operációs rendszerek. 11. gyakorlat. AWK - szintaxis, vezérlési szerkezetek UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Feladat. Bemenő adatok. Bemenő adatfájlok elvárt formája. Berezvai Dániel 1. beadandó/4. feladat április 13. Például (bemenet/pelda.

Adatszerkezetek Tömb, sor, verem. Dr. Iványi Péter

Kinek szól a könyv? A könyv témája A könyv felépítése Mire van szükség a könyv használatához? A könyvben használt jelölések. 1. Mi a programozás?

OOP I. Egyszerő algoritmusok és leírásuk. Készítette: Dr. Kotsis Domokos

1. Egyszerű (primitív) típusok. 2. Referencia típusok

BASH script programozás II. Vezérlési szerkezetek

AWK programozás, minták, vezérlési szerkezetek

AZ ALGORITMUS. az eredményt szolgáltatja

Információtartalom vázlata

Szkriptnyelvek. 1. UNIX shell

Bevezetés a programozásba I 4. gyakorlat. PLanG: Szekvenciális fájlkezelés. Szekvenciális fájlkezelés Fájlok használata

Bevezetés a programozásba. 5. Előadás: Tömbök

A digitális analóg és az analóg digitális átalakító áramkör

A KÓDOLÁS TECHNIKAI ELVEI

A szerzõrõl... xi Bevezetés... xiii

Programozási alapismeretek 1. előadás

7. fejezet: Mutatók és tömbök

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

Informatika tanítási módszerek

Operációs rendszerek gyak.

Bevezetés a programozásba I 4. gyakorlat. PLanG: Szekvenciális fájlkezelés

Amortizációs költségelemzés

Az informatika kulcsfogalmai

AWK programozás, minták, vezérlési szerkezetek

I. ALAPALGORITMUSOK. I. Pszeudokódban beolvas n prim igaz minden i 2,gyök(n) végezd el ha n % i = 0 akkor prim hamis

29. Visszalépéses keresés 1.

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

B I T M A N B I v: T M A N

B I T M A N B I v: T M A N

Utasítások. Excel VII. Visual Basic programozás alapok. A Visual Basic-kel megoldható feladatok típusai Objektumok, változók Alprogramok

Egyszerű programozási tételek

S z á m í t ó g é p e s a l a p i s m e r e t e k

Adattípusok, vezérlési szerkezetek. Informatika Szabó Adrienn szeptember 14.

Vezérlési szerkezetek

C programozási nyelv Pointerek, tömbök, pointer aritmetika

Bevezetés a programozásba I 3. gyakorlat. PLanG: Programozási tételek. Programozási tételek Algoritmusok

OpenCL alapú eszközök verifikációja és validációja a gyakorlatban

10. gyakorlat Struktúrák, uniók, típusdefiníciók

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

Java II. I A Java programozási nyelv alapelemei

1. Alapok. #!/bin/bash

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.

A PROGRAMOZÁS ALAPJAI 3. Készítette: Vénné Meskó Katalin

Programozás Minta programterv a 1. házi feladathoz 1.

Algoritmizálás és adatmodellezés tanítása beadandó feladat: Algtan1 tanári beadandó /99 1

Algoritmusok Tervezése. 4. Előadás Visual Basic 1. Dr. Bécsi Tamás

Felvételi vizsga mintatételsor Informatika írásbeli vizsga

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

Programozási segédlet

Számítógép architektúra

I. A DIGITÁLIS ÁRAMKÖRÖK ELMÉLETI ALAPJAI

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

AWK programozás Bevezetés

7. Laboratóriumi gyakorlat: Vezérlési szerkezetek II.

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

A fordítóprogramok szerkezete. Kódoptimalizálás. A kódoptimalizálás célja. A szintézis menete valójában. Kódoptimalizálási lépések osztályozása

Java II. I A Java programozási nyelv alapelemei

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

Adatok ábrázolása, adattípusok

Web-programozó Web-programozó

Feladataink, kötelességeink, önkéntes és szabadidős tevékenységeink elvégzése, a közösségi életformák gyakorlása döntések sorozatából tevődik össze.

Programozás alapjai C nyelv 8. gyakorlat. Mutatók és címek (ism.) Indirekció (ism)

Mutatók és címek (ism.) Programozás alapjai C nyelv 8. gyakorlat. Indirekció (ism) Néhány dolog érthetőbb (ism.) Változók a memóriában

Programozási nyelvek JAVA EA+GY 1. gyakolat

1. Olvassuk be két pont koordinátáit: (x1, y1) és (x2, y2). Határozzuk meg a két pont távolságát és nyomtassuk ki.

Rendszer szekvencia diagram

Az iskolai rendszerű képzésben az összefüggő szakmai gyakorlat időtartama. 10. évfolyam Adatbázis- és szoftverfejlesztés gyakorlat 50 óra

Eljárások, függvények

Programozás I. 1. előadás: Algoritmusok alapjai. Sergyán Szabolcs

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, adatszerkezetek, objektumok

Gyakorló feladatok az 1. nagy zárthelyire

file./script.sh > Bourne-Again shell script text executable << tartalmat néz >>

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

Alkalmazott modul: Programozás 4. előadás. Procedurális programozás: iteratív és rekurzív alprogramok. Alprogramok. Alprogramok.

Algoritmizálás és adatmodellezés tanítása beadandó feladat: Algtan1 tanári beadandó /99 1

Szoftvertervezés és -fejlesztés I.

Készítette: Nagy Tibor István Felhasznált irodalom: Kotsis Domokos: OOP diasor Zsakó L., Szlávi P.: Mikrológia 19.

Átírás:

Programozás alapjai, programtervezés Mûszertechnika Oktatás Kft. Összállította: Kertész György tanfolyami jegyzete alapján Kovalcsik Géza 1107 Budapest Szállás u. 21 Telefon: 260-87-14 Tel/Fax: 260-43-48 Levélcím: 1475 Budapest Pf. 167

Ezúton is szeretném megköszönni Kertész Györgynek a segítségét, melyben hozzájárult ahhoz, hogy az Excel programozása könyv CD mellékletében közreadjam az általa készített Programozás alapjai, programtervezés címû jegyzet kivonatát. Ugyanitt szeretném köszönetemet nyilvánítani a Mûszertechnika Oktatás Kft-nek is. A jegyzet a Mûszertechnika Oktatás Kft tulajdona. Ennek megfelelõen bármilyen módon felhasználni akár az egészet, akár egyes részleteit csak az Õ hozzájárulásukkal lehet.

Bevezetés Elsõként gondoljuk át, hogy mi is valójában egy program? Egyáltalán mit jelent a program szó? Használjuk ezt a szót a napi társalgásban is. Például így: ez, vagy az a rendezvény egy jó program volt. Vagy máskor így: mi lesz a vasárnapi program? Mi volt a közös ebben a két mondatban? Az, hogy az esemény, ami adott helyen történik és meghatározott ideig tart, programnak neveztünk. Persze ez még nem elegendõ ahhoz, hogy valamit programnak tekintsünk. Mindkét esetben sok külsõ tényezõtõl függött az, hogy a program hogyan zajlott. Nevezzük tehát programnak azt az adott helyen és idõben meghatározott eseményt vagy eseménysorozatot, ami a külsõ tényezõket figyelembe véve, esetenként más-más módon folyhat le. A számítógép egy programozható eszköz, ami a megfelelõ programok nélkül nem képes mûködni. A számítógép programja is egy adott helyen a számítógépünkön, adott idõben a program indításától kezdve, a környezeti változásokat a megfelelõ pillanatban kiértékelve a körülmények figyelembevételével, alkalmanként máshogy folyik. A számítógép programok a számítógépet, annak központi egységét vezérlik. A vezérlés eszközei csak olyanok lehetnek, amiket a számítógép ki tud értékelni. A körülmények kiértékelésének, bár más-más programnyelvrõl legyen is szó, azonos módjai vannak, hiszen a kiértékelést minden esetben a számítógép végzi. Ez teszi lehetõvé azt,

hogy egy programot úgy tervezhessünk meg, hogy elõbb elkészítjük a program tervét, és utána választunk programnyelvet. Egy jó tervnek bármelyik programnyelven megvalósíthatónak kell lennie. Az egyes programnyelveket egy-egy feladatkör megoldására tervezték. A nyelv megválasztása így nem teljesen mindegy. Ez a gondolat nem az elõzõ állítás tagadása, csak egyszerûen azt jelenti, hogy a szerszámokat arra használjuk, amire kitalálták. Olyan ez, mint amikor egy szöget a csavarhúzó fejével szeretnénk a falba verni. Ha elég nagy a csavarhúzó, akkor a mûvelet valószínûleg sikerülni fog, de gondolom mindenki inkább kalapácsot fog használni. A mi esetünkben nem kérdés a nyelv megválasztása Visual Basic for Application, de a tervezés során nem a nyelv ismerete lesz a legfontosabb tudnivalónk. A könyvben már láttunk egy lehetséges utat a program megtervezésére és megvalósítására. Ha komolyan foglalkozunk programok készítésével, akkor minden esetben a feladat megfogalmazása és megtervezése fogja meghatározni munkánk eredményét. Ez a melléklet elsõsorban azoknak szól, akiknek még nincs gyakorlatuk összetett programok készítésében, de a könyv olvasása felkeltette érdeklõdésüket ez iránt a szép alkotó munka iránt.

Feladatmegoldás A megvalósításra szánt programozási feladatok során találkozunk gyorsan, egyszerûen átlátható feladatokkal, és olyanokkal, melyeknél már a megoldandó probléma megértése is nehéz. Az elsõ esetben csak akkor gondolunk programozásra, ha valamilyen mûveletsort gyakran hajtunk végre. Ilyenek a statisztikai feldolgozások és az adminisztratív feladatok többsége. A második esetben a feladat bonyolultabb, megoldása sok külsõ feltételtõl függhet. E körbe tartoznak a tudományos, az ipari tervezési és irányítási feladatok. A valóságban elõforduló esetek mindegyikére nem lehet példát adni. Mit kezdhetünk az egyszerû adatokkal dolgozó, de sok és sokféle eredményt adó alkalmazásokkal, melyek adminisztratív területen is sûrûn elõfordulnak, vagy a másik oldalról azokkal, melyek bonyolult adathalmazokból egyszerû következtetéseket vonnak le? Be kell látnunk, hogy a feladatokat nem válogathatjuk a fenti egyszerûséggel. Észrevehetünk azonban egy fontos szempontot: minden esetben adatokról és eredményekrõl beszéltünk. Szerencsésebb megközelítés, ha ezek alapján gondolkodunk. Egy program tervezése során a feladatot két kérdéssel közelítjük meg: Mit szeretnék eredményként kapni? és Milyen adatokból állítható elõ a kívánt eredmény? A számítástechnika fogalmaival: a program a bemeneti (input) adatokból egy meghatározott utasítássor végrehajtásával (procedure) létrehozza a kimeneti (output) adatokat. Az adatok beadásától az eredmény megjelenéséig nekünk kell meghatároznunk a megfelelõ lépéseket.

Azt a lépéssorozatot, ami a bemeneti adatokból létrehozza az eredményt, algoritmusnak nevezzük. A programozási feladatokat minden esetben felbonthatjuk az adatbeolvasás, feldolgozás és eredmény megjelenítése részekre. Erre a felbontásra gyakorlatilag mindig lehetõségünk van. Még olyan elsõ látásra nehezen ide sorolható esetekben is, mint például egy ébresztõóra program, melyben a bemeneti adat egyrészt az idõ múlása, másrészt a beállított ébresztési idõ, s ahol a kimenet az eltelt idõ jelzése, és az ébresztés. Arra a kérdésre, hogy mitõl lesz egy feladat egyszerû, vagy bonyolult, szintén nem lehet rávágni a nyilvánvalónak tûnõ választ. Sok rosszálmú programozó köszönheti kínjait a tervezéskori hibás megközelítésnek. Az egyszerû feladat (ahol a bemenetbõl egyszerûen alakítható ki a kimenet) is lehet nehezen megoldható, ha akár a kapok ; akár az adok kérdésre nem tudjuk a megfelelõ választ meghatározni. Régi tapasztalat, hogy a számítógépes programtól várt kimeneti eredménynél csak a bemeneten rendelkezésre álló adatokról tudunk nehezebben információt szerezni. Nem is az a baj, hogy a majdani felhasználó ne mondaná el készségesen a válaszokat, hanem az, hogy nehéz kiválogatni a kívánt kimenethez szükséges bemeneti adatokat. Sokféle bemeneti adat állhat rendelkezésre, de nem feltétlenül szükséges mindegyik, illetve egyik származhat a másikból. Nagyon fontos, hogy meg tudjuk határozni a szükséges és elégséges bemeneti adatok körét. Erre csak a kimeneti igények ismeretében van lehetõségünk. Tudnunk kell jól megfogalmazni a kérdéseket, és jól kiértékelni a válaszokat. A fenti probléma megoldása általában papíron a szervezõ gondja. Az életben persze ez sem ilyen egyszerû. Mindenképpen ismernünk kell a feladatmegoldás ilyen értel-

mû elõkészítését, hiszen másképp nem tudnánk értelmezni a szervezõ által megadott adatokat. Nem is beszélve azokról az esetekrõl, amikor a szervezési feladatok is a programozóra hárulnak. Foglaljuk össze, a fentiek alapján mit is nevezhetünk feladatmegoldásnak: a szükséges kimeneti adatok megfogalmazása után meghatározzuk az ezek elõállításához szükséges bemeneti adatokat, majd ezek alapján leírjuk, hogy a bemenetbõl milyen átalakítással kapjuk meg a kimenetet. Ezt a tervezési módszert az angol nyelvû szakirodalom az Input, Procedure és a Output szavak kezdõbetûinek az összeolvasásával IPO módszernek nevezi. A programkészítés lépései A feladat meghatározása, specifikáció A specifikáció egy olyan leírás, amely rögzíti a feladattal szemben támasztott igényeket, követelményeket. Ebben meg kell határozni azt, hogy mi a feladat, azt milyen környezetben kell megvalósítani, milyen bemenettel rendelkezünk és milyen kimenetet, eredményt várunk el a programtól. A specifikáció minõsége, korrektsége alapvetõen meghatározza a további munka sikerét. A hiányos feladat-meghatározás alapján készített

programról általában csak a program tesztelése során az ellenõrzéskor, vagy a program használatbavételekor derül ki, hogy nem azt teszi, amit vártunk tõle. A feladat meghatározását a programozó általában készen kapja. Ez elsõ hallásra azt jelenthetné, hogy a programozó nem felelõs annak hibáiért. Lehet így gondolkozni, de nem célravezetõ. A programozónak rendelkeznie kell annyi rálátással az adott területre, hogy a nem kellõen pontos, vagy feltételezhetõen hiányos részekre, rá tudjon kérdezni. Sokszor arra is szükség lehet, hogy egyes részleteket önállóan dolgozzon ki. Vagyis a feladat meghatározásának egy párbeszédnek kell lennie a megrendelõ és a program írója között. A feladat meghatározása A feladatok meghatározása során körültekintõen kell eljárnunk. Fel kell becsülni a célokat és lehetõségeket. Itt még azt is el kell döntenünk, hogy a feladat egyáltalán megvalósítható vagy nem. A feladatot a következõ szempontok szerint fogalmazzuk meg: A megfogalmazás legyen teljes, érthetõ, egyértelmû, pontos, tömör, szemléletes,

elõrelátó, jól felépített, tagolt. Ha az input, procedure, output tervezési módszert követjük, akkor a bemeneti és kimeneti adatokkal kapcsolatban a következõ szempontokat vegyük figyelembe: Input adatok: Mik az input adatok? Milyen a beviteli formájuk (adattípus)? Mik a bevihetõ értékek? Az adatbevitelt hogyan kell befejezni? Milyen speciális megszorítások vannak? Milyen kapcsolatok állnak fenn a beviendõ adatok között? Output adatok: Milyen adatokat kell megõrizni? Milyen formában kell megõrizni az adatokat? Mennyi adatról van szó? Melyik adatokat kell megjeleníteni? Hogyan állíthatjuk elõ ezeket az adatokat?

Tervezés A program egy idõben zajló folyamat leírása. Azt várjuk el tõle, hogy a feladatot oldja meg, illetve a feladatban kitûzött célokat valósítsa meg. A specifikációból, vagy más szóval a feladat-meghatározásából, a forrásprogram, mint a fordítás alapjául szolgáló szöveg, nem egyszerû begépeléssel jön létre. A feladatot meg kell értenünk, el kell képzelnünk a megoldás menetét, majd részletesen ki kell dolgoznunk. E folyamatban helyezkedik el a tervezés, mint olyan lépés, mely leegyszerûsíti és pontossá, hatékonnyá teszi a programkészítés folyamatát. A tervezés során arra törekszünk, hogy az emberi gondolkodással, emberi nyelven elképzelt megoldást olyan világos egyszerû szerkezetekkel fogalmazzuk meg melyek könnyen megfeleltethetõk lesznek a majdani programlépéseknek. A jó programterv nem kötõdik programnyelvhez, számítógéptípushoz, általános fogalmakkal dolgozik. Az egyes feladatok megoldásához meg kell határoznunk a megfelelõ algoritmust. A megoldandó feladatot bontsuk kisebb részekre. Kevés ember van, aki egy nagyobb feladatot egy lépésben meg tud oldani. Egy almát sem eszünk meg egyetlen harapással. A feladat megoldása szempontjából így kisebb jobban áttekinthetõ részekkel kell dolgoznunk. Hogyan bontsuk részekre a programozási feladatainkat? Arra kell törekednünk, hogy a részek minél kevésbé függjenek egymástól. Tehát az egyes részek önállóan is hasz-

nálhatóak legyenek. Ez a fejlesztési szemlélet nem csak a tervezés során teszi érthetõvé a programot, hanem késõbb könnyebb lesz a programot karbantartani is. Kódolás A kódolás az a lépés, melyet a kívülálló általában programozási tevékenységnek tart, hiszen azt látja, hogy megszállott emberek püfölik a számítógép billentyûzetét és nem figyelnek a külvilágra. Itt készül el a terv alapján a forrásprogram, az adott nyelv szabályai szerinti és annak eszközkészletére hivatkozó kód, melyet lefordítva jutunk a gépi kódú programhoz. Abban, hogy ez a fázis milyen sokáig tart, mennyire hatékony, nagy szerepe van az elõzõ lépések jó megoldásának. A rossz tervbõl szinte soha nem lesz jó program, míg a jó terv alapján hibátlan, jószerével csak elírásokat tartalmazó program készülhet. Sikerélményt nem az okoz, ha több napi fúrás-faragás után rájövünk a hibára, hanem az, amikor a kódolás gyors, egyszerû, a begépelt program a fordítás után úgy mûködik, ahogy elképzeltük. Régi mondás, hogy csak az lehet jó, ami szép is. Ha ezt gondolatmenetünk tisztaságára, megoldásaink egyszerûségére, követhetõségére, átláthatóságára értjük, elhihetjük: minél többet fúrjuk-faragjuk a programot, annál több rejtett hibát fog tartalmazni, annál nehezebb lesz igazán kijavítani. Murphy szerint: az elsõ hibátlan programot még írják. A kódolás eredménye a program maga. Ezt forráslistának nevezzük.

A forráslista akkor jó, ha: pontosan a programterv alapján készült, áttekinthetõ, olvasható, tömör és egyértelmû magyarázó megjegyzéseket tartalmaz. Tesztelés A munka során rendszeresen ellenõrizzük megoldásaink helyességét. Ilyen ellenõrzéseket nemcsak a kódolás során végzünk, hanem már a terv lépéseit is tesztelhetjük. Nyilvánvaló, hogy a terv elolvasásával is megállapítható, mi fog történni. Az ilyen ellenõrzéseket asztali- vagy száraztesztnek nevezzük. A programot természetesen mûködés közben is ki kell próbálnunk. Az ellenõrzés körülményeit gondosan meg kell határoznunk. Nem elég a mûködésnek megfelelõ (rendeltetésszerû) használatnak kitennünk. Gyakori hiba, például, ha a program egy számra vár, de a programban nem ellenõrizzük, hogy a felhasználó valóban számot írt-e be? A programozónak nem szabad csak azt ellenõrizni, hogy programja a számokra hogyan reagál, hiszen a felhasználó szöveget is beírhat, amitõl a programnak nem szabad megbolondulnia. Különös gondosságot igényel, hogy a programban elõforduló döntéseket minden szélsõ helyzetre megvizsgáljuk.

A fejlesztés lezáró ellenõrzése lehet az úgynevezett béta-teszt, ami azt jelenti, hogy a kész programot kipróbálásra átadjuk egy vagy több majdani felhasználónak, akik tapasztalataikat, a felfedezett hiányosságokat elmondják nekünk. Ilyen teszt csak a nagyobb méretû és felhasználói körû programoknál szokásos. A tesztelés eszköze a nyomkövetés. A korszerû fejlesztõrendszerek, így a Visual Basic for Application is, lehetõvé teszik a program speciális, lépésenkénti futtatását, és közben az egyes adatok, változók értékeinek a figyelését. A figyelmetlenségbõl, átgondolatlanságból eredõ hibák nagy része kiszûrhetõ így. Gyakran használjuk e lépés megnevezésére az angol debugging szót, ami szó szerint poloskátlanítást jelent. A tesztelés tulajdonképpen nem más, mint egy próbafuttatás. A próbafuttatás alatt sok hibáját fedezhetjük fel a megírt programnak. A tesztadatokat úgy kell összeállítani, hogy minden lehetséges értéket felvegyenek. A program tesztelésekor a következõkre kell figyelemmel lennünk: A program pontosan úgy mûködik-e mint azt a feladat meghatározásában leírtuk? Ne lehessen a programot elrontani. Elég hatékony-e? Biztonságos-e a használata? Felhasználóbarát-e? Mennyire szolgálja ki a felhasználó igényeit? A külsõ megjelenése elég esztétikus?

Sehol nem idegesítõ? Mennyire illeszkedik a szabványokhoz, szokásokhoz? Dokumentáció A program dokumentációja több részbõl áll. Egyik részét képezi a fejlesztéskor létrehozott írásos anyag: a specifikáció, a terv, a programkód, az abba beírt megjegyzések és a tesztek kiinduló adatai, eredményei. Másik része a felhasználáshoz szükséges segédanyag: installációs leírás, kezelési utasítás, technikai referencia. A fejlesztési dokumentáció minõsége (érthetõség, olvashatóság) fontos a kivitel, a hibakeresés és a késõbbi fejleszthetõség szempontjából is. Célszerû a program forráskódját is öndokumentáló módon elkészíteni. Ez azt jelenti, hogy a szöveget ellátjuk magyarázó megjegyzésekkel, illetve a befoglalt részeket beljebb tabuláljuk, az egyes részeket világosan elhatároljuk stb. Összefoglalóan: betartunk olyan szerkesztési konvenciókat, amelyek lehetõvé teszik, hogy a programkód szövegét bárki elolvasva megérthesse azt (akár magunk is egy késõbbi alkalommal).

A fejlesztõi dokumentációnak a következõket kell tartalmaznia: A feladat meghatározása. A programterv. A forrásprogram. A kész program forrás kódú listája. Tesztadatok listája. A felhasználói dokumentációnak más feladatokat kell kielégítenie, mint a fejlesztõi dokumentációnak. A felhasználói dokumentációnak a következõ részekbõl kell állnia: A feladat leírása, vagyis mire használható a program. Milyen legkisebb hardver konfiguráción használható. Milyen legkisebb szoftver környezetben használható. Hogyan lehet használatba venni. Telepítés. Hogy lehet elindítani a programot? A program használatának részletes leírása. Hibalehetõségek, hibaüzenetek magyarázata, útmutatás, teendõk leírása.

A programnyelvek elemei A számítógépes programok adatokkal, vezérlésekkel dolgoznak, így fontos ismernünk ezek típusait. Az adat fogalmáról megállapítottuk, hogy a körülöttünk lévõ dolgok bármely mérhetõ és nem mérhetõ jellemzõjét így nevezhetjük, ha azt egyértelmûen le tudjuk írni. Az információ fogalmával is találkoztunk: az adatokból levont következtetések eredménye. Ez utóbbi a számítógép számára ugyanúgy jelenik meg, mint az eredeti adat, ezért most nem fogunk közöttük különbséget tenni, egyszerûen mindkettõt adatnak nevezzük. A számítógépeken, függetlenül a programnyelvtõl, az adatokat különbözõ formában tároljuk. Ahhoz, hogy egy programot megvalósítsunk, ezeket az adatformákat ismernünk kell. Adattípusok Az adatokat a program futása alatt változókban õrizzük meg az éppen futó program számára. A változó nem más mint a számítógép operatív memóriájában egy névvel ellátott hely, ami alkalmas az adatok tárolására. Az egyes helyfoglalásokat deklarálással valósíthatjuk meg. Az egyes helyfoglalások, deklarálások alkalmával azt is meghatározhat-

juk, hogy az adatot milyen formában kívánjuk megõrizni. Ezzel annyi helyet fogunk lefoglalni az adataink számára, amennyire szükség van. A jegyzetben a Visual Basic for Application nyelvben használható változótípusokat mutatjuk be, de a felsorolt típusokat más programnyelvekben is meg fogjuk találni. Numerikus típusok Számszerû értékek ábrázolására szolgálnak. Megkülönböztetünk egész és valós típusokat. Az egész típusok nevükbõl adódóan egész számokat ábrázolhatnak, míg a valós típusok valós, azaz egész és tört számokat. Mindkét esetben beszélhetünk az ábrázolható számok intervallumáról (a legkisebb és a legnagyobb érték között). Az egész típusoknál a pontosság kérdése nem vetõdik fel, annál inkább érdekes a valós típusoknál. Az egész típusokat tárolási módjuk és méretük alapján osztályozhatjuk.

Egészszámok: adattípus hossza intervallum Byte 1 byte 0-tól 255-ig Integer 2 byte -32 768-tól 32 767-ig Long 4 byte -2 147 483 648-tól 2 147 483 647-ig Valós számok: Single 4 byte Negatív számok: -3,402823E38-tól 1,401298E-45 Nulla Pozitív számok: 1,401298E-45-tõl 3,402823E38-ig Double 8 byte Negatív számok: -1,79769313486231E308-tól -4,9406564584124E-324-ig Nulla Pozitív számok: 4,9406564584124E-324-tól 1,79769313486231E308-ig

Currency 8 byte -922 337 203 685 477,5808-tól 922 337 203 685 477,5807-ig Date 8 byte 100-január 1-tõl 9999-december 31-ig Szöveges típusok A program a szöveges adatokat éppúgy képes feldolgozni, azokkal mûveleteket végezni, mint a számértékekkel. A Visual Basic for Application programnyelvben kétféle String típusú változót deklarálhatunk. Fix hosszúságút és változó hosszúságút. A változó hosszúságú szöveges változó hossza körülbelül 2 milliárd karakter tárolását teszi lehetõvé. A fix hosszúságú szöveges változók hossza maximum 64 kbyte lehet. Egy tíz karakter hosszúságú szöveg befogadására alkalmas változót a következõ módon kell deklarálnunk: Dim Szoveges As String *10

Logikai típus A számítástechnika szinte legfontosabb adattípusa, bár ezt elsõ látásra nem is gondolnánk. Logikai típusú adat, kell minden döntéshez, ami a program mûködését befolyásolja. A logikai típus tárolásához 1 bit szükséges, hiszen értéke csak kétféle (hamis és igaz) lehet. A kényelem (sebesség, egyszerû programozás) érdekében az IBM PC-re írt programnyelvek általában egy egész byte-ot elhasználnak egy bit helyett. A VBA két byte-ot foglal le a Boolean típusú változóknak. Az érték True vagy False lehet. Mutató típus A mutató típus a memória egy címét tárolja, azaz egy címre mutat, ahol adat, objektum vagy alprogram található. A VBA nyelvben objektumokra hivatkozhatunk mutató típusú változóval. Az adattípus deklarálása során az Object kulcsszót használjuk. Mutató típusú változónak a Set paranccsal adhatunk értéket. Erre példa a következõ programrészlet: Dim Lap As Object Set Lap = Worksheets(1)

A Set utasítás segítségével a Worksheets(1) munkalapot elneveztük Lap névvel. A program további részeiben a Lap változóval hivatkozhatunk rámutathatunk a Worksheets(1) munkalapra. Általános adattípus Ha a program futása során egy változónak úgy adunk értéket, hogy elõre nem tudjuk annak az adattípusát, akkor a Variant változótípust használhatjuk. Adatszerkezetek Az egyedi tárolású adatok nem elégítenek ki minden igényt, hiszen sokszor fordul elõ, hogy több önálló, esetleg eltérõ típusú adat képez olyan egységet, amit a gépi feldolgozás során is szeretnénk megõrizni. Az adattípusok adatszerkezetekbe szervezhetõk, s azok újabb szerkezetekbe ágyazódhatnak. Mindig a program igényeihez legjobban alkalmazkodó szerkezeteket alakítsunk ki. A legalapvetõbb esetekre a programnyelvek általában kínálnak megoldást:

A tömb azonos típusú, méretû adatok ismétlõdése a memóriában, index-szel, az adat tömbön belüli sorszámával hivatkozhatunk a egy-egy elemére. Erre a könyvben a változókról szóló részben találunk példákat. Rekord típusú változóban eltérõ típusú, méretû adatok együttesét tárolhatjuk. Ezeket a változótípusokat nekünk kell meghatároznunk. A VBA nyelvben erre a TYPE utasítást használjuk. Az így meghatározott változók a felhasználó típusú változók. Type felhaszntípus elemnév As típusnév [ elemnév As típusnév]...... változók felsorolása... End Type A Type utasítás argumentumai a következõk: felhaszntípus A felhasználó által definiált típus neve. Erre az általános változó elnevezés szabályai érvényesek. elemnév A felhasználó által definiált típus elemének neve. Erre az általános változó elnevezés szabályok érvényesek

típusnév Az elõbb felsorolt típusok egyike lehet (típusnév nem lehet objektum adattípus). Felhasználói változótípust a következõ leírás szerint határozhatunk meg: Type HelysegAdat HelysegKod (1 To 100) As Integer Orszag As String * 30 End Type A felhasználó által meghatározott változótípust a továbbiakban ugyanúgy használhatjuk egy-egy változó típusának a megjelölésére, mintha a VBA beépített adattípusa lenne: Dim Ibafa As Helysegadat Az elõzõ példában a HelysegAdat tartalmazza a Helysegod statikus tömböt, és az Orszag stringet. Az Ibafa rekordnak ugyanaz a szerkezete, mint a HelysegAdatnak. A következõ példában a Type utasítással egy 3 elemû, a felhasználó által definiált típust hozunk létre, ennek segítségével megadunk egy ilyen típusú változót, és minden elemhez hozzárendelünk adatokat.

Type TesztRekord VevoSzam As Long VevoNev As String * 36 Hitel As String * 24 End Type Dim Vevo As TesztRekord Vevo.VevoSzám = Val(InputBox$( Írja be a vevõ számát: )) Vevo.VevoNév = InputBox$( Írja be a vevõ nevét: ) Vevõ.Hitel= InputBox$( Írjon be hitelezési információt: ) Utasítások típusai A programokban használt utasításokat az adott nyelvtõl függetlenül csoportosíthatjuk: értékadás vezérlésátadás direkt: ugrás, alprogramhívás, visszatérés feltételes: elágazás, ciklus egyéb

Vezérlõszerkezetek A program mûködését, az utasítások végrehajtási sorrendjét befolyásoló utasításokat összefoglalóan vezérlésátadó utasításoknak nevezzük. Magyarázzuk meg a kifejezést: Az utasítások azt mondják meg a processzornak, hogy milyen adatokkal, mit kell tennie, azaz vezénylik, vezérlik a processzor mûködését. A processzor az utasításokat sorban, egymás után hajtja végre. Vezérlésátadásról akkor beszélünk, amikor ettõl az automatizmustól eltérünk. A vezérlésátadó utasítások azt határozzák meg, melyik programrészlet utasításai vezérlik ezentúl a processzort. Feltételes vezérlésátadó utasításnak azokat az utasításokat nevezzük, melyek valamilyen feltétel teljesülésétõl függõen hajtják végre a program egyik vagy másik utasítássorozatát. A feltétel vizsgálata során egy vagy több változó vagy objektum állapotának pillanatnyi értékét vizsgáljuk. A vizsgálat eredménye minden esetben egy logikai érték. A modern struktúrált programozásban a feltételes vezérlésátadó utasítás és az általa végrehajtott, vagy éppen kikerült utasítások egymástól elválaszthatatlanok, egy vezérlõszerkezetet alkotnak. A vezérlõszerkezeteket két fõ és több alcsoportba oszthatjuk:

Elágazások Szelekciók egyágú: a vizsgált feltétel igaz értéke esetén a befoglalt utasítás végrehajtódik, egyébként nem kétágú: a feltétel igaz és hamis értéke esetén más-más ág hajtódik végre többágú: egy kifejezés értékétõl függ, hogy melyik ág hajtódik végre, vagy az ágak külön feltétellel rendelkeznek, közülük csak egy hajtódhat végre Ciklusok Iterációk elõl tesztelõ: a ciklus elején megvizsgálja a meghatározott feltétel teljesülését. Ha a feltétel igaz, akkor végrehajtja a ciklustestbe írt utasításokat, majd újra a feltételt vizsgálja. Mindaddig ismétli a ciklustestbe írt utasításokat, amíg a feltétel igaznak bizonyul. hátul tesztelõ: A ciklustestbe írt utasításokat legalább egyszer végrehajtja, mert a ciklustest végén vizsgálja a kilépés feltételét. A ciklustestbe írt utasítások végrehajtását, akkor hagyja abba, ha feltétel igaz.

Összegezve A programnyelvek ugyanazokkal az eszközökkel dolgoznak, csak az egyes utasítások szintaktikája, nyelvi megvalósítása más. Vagyis más szabályok szerint kell leírni a különbözõ programnyelvek utasításait, de az építõkövek megegyeznek. Ez teszi lehetõvé a nyelvtõl független programtervezést.

feltétel 1 Igaz utasítás(ok) feltétel 2 Igaz utasítás(ok) Hamis Hamis A program építõelemei A program tervezése során hasznos az egyes eljárásokat valamilyen grafikus módszer segítségével ábrázolni. Ennek egy korai változata a folyamatábra. Jegyzetünkben nem ennek a megtanulása a cél, de most az egyes vezérlõszerkezetek szemléltetésére ezt használjuk. A program tevékenységeit, szerkezetét ezzel a módszerrel mindenki számára olvashatóvá tehetjük. Ezzel a módszerrel a programnyelvtõl függetlenül írjuk le a program folyamatait. feltétel n Igaz utasítás(ok) Hamis utasítás(ok) A folyamatábra elemei Folyamatábra rajzolásakor két síkidomot és összekötõ vonalakat használunk: A folyamatábrát felülrõl lefelé kell olvasni, az utasítások, feltételek felülrõl lefelé követik egymást. Ha az elágazás miatt nem a következõ utasításnál folytatódik a

program, akkor a vonal végére rajzolt nyílhegy után kell haladnunk, ez megkönnyíti az értelmezést. Ugyancsak kitesszük a nyílhegyeket a csomópontokba befutó vonalak végén is. Szokás jelezni az ábrázolt program vagy eljárás elejét és végét külön, lekerekített sarkú négyszögbe írt start és stop, vagy begin és end szavakkal. A start illetve begin szavakat célszerû helyettesíteni a program vagy eljárás nevével. A rajztechnika a hosszabb, bonyolultabb eljárások ábrázolására is alkalmas. Elõfordulhat, hogy a rajz méretei miatt, átláthatóságának érdekében a nagyon távoli csomópontokat összekötõ vonalakat nem rajzoljuk le, hanem végeiket kis körökbe írt számokkal jelöljük meg.

Vezérlõszerkezetek Ebben a fejezetben részletesen megvizsgáljuk a vezérlõszerkezetek fajtáit, azok mûködését. A folyamatábra mellett VBA nyelvû példát is láthatunk. Szelekciók feltétel Igaz Hamis Egyágú szelekció A feltétel igaz True értéke esetén az igaz ág (Then ág) utasítását vagy utasításait hajtja végre a program, egyébként ezt kihagyva a program a csomópontot követõ utasításnál folytatódik. utasítás(ok) Kétágú szelekció A feltétel igaz értéke esetén az igaz ág (Then ág) utasítása, utasításai, egyébként a hamis ág (Else ág) utasítása, utasításai hajtódik végre, majd a program a csomópontot követõ utasításnál folytatódik. feltétel igaz utasítás(ok) hamis utasítás(ok)

feltétel 1 Igaz utasítás(ok) feltétel 2 Igaz utasítás(ok) Hamis Hamis Többágú szelekció A többágú szelekció kétágú elágazások egymásba-ágyazásából épül fel. A vizsgálat az 1. feltétel vizsgálatával indul. Ha ez igaz, akkor a hozzátartozó utasításokat hajtja végre és a program az egész szelekciós szerkezet után folytatódik. Ha az elsõ feltétel eredménye hamis, akkor a következõ feltétel vizsgálatára kerül sor, ha ez igaz, úgy az ehhez tartozó utasítás hajtódik végre, s így tovább. Bármely feltétel igaz értéke esetén a többit már nem vizsgálja. Ha egyik feltétel sem volt igaz értékû, akkor a vezérlés az utolsó feltétel hamis ágában álló utasításhoz (n+1) kerül. Az ebben az ágban álló utasítás el is maradhat, vagyis az utolsó feltétel lehet egyágú is. feltétel n Igaz Hamis utasítás(ok) utasítás(ok)

Elöltesztelõ iterációk a vezérlõváltozó kezdeti értékének a beállítása feltétel Igaz utasítás(ok) vezérlõváltozó növelése Hamis For... Next típus A For... Next típusú ciklus egy vezérlõváltozó értékét rendre megnöveli, s a ciklustestben található utasításokat minden növelés után végrehajtja. A folyamat addig tart, míg a vezérlõváltozó értéke meg nem haladja a ciklus elsõ sorában meghatározott végértéket. A vezérlõváltozó értékének vizsgálata a ciklustestbe írt utasításokat megelõzi, így abban az esetben, ha a kezdõérték eleve nagyobb a végértéknél, akkor a ciklusba zárt utasítások egyszer sem kerülnek végrehajtásra. A vezérlõváltozó növelése akkor következik be, amikor a program a Next utasításra lép. Ezután visszaadja a vezérlést a For utasítást tartalmazó sornak. Itt ismét a vezérlõváltozó ellenõrzésére kerül sor. A VBA nyelvben két For Next típusú vezérlést is találunk. Az egyik vezérlõváltozója egy számértéket tartalmazó kifejezés, a másik pedig egy objektum. Az objektum típusú For Each... Next ciklus egy gyûjtemény elemeit

veszi sorra. Ebben az esetben a ciklust egy gyûjtemény hivatkozással határozhatjuk meg. A For Each ciklus addig ismétlõdik, amíg a gyûjtemény minden objektumát sorra nem veszi. A For... Next típusú ciklusszervezés esetén az ismétlések számát elõre meghatározzuk. Do... Loop típus A Do... Loop típusú iterációt felhasználhatjuk mind elöltesztelõ, mind pedig hátultesztelõ ciklusként. Ez csak az írás módjától függ. Ha ugyanis a Do utasítássorba írjuk a feltétel vizsgálatát, akkor elõltesztelõ ciklust feltétel iterációt alakíthatunk ki, ha pedig a Loop utasítás Igaz utasítás(ok) Hamis mellé, akkor hátultesztelõt. Ebben az esetben egy külsõ változó értékének megváltozásával vezérelhetjük a ciklusok végrehajtási számát. Természetesen a vizsgált változónak változnia kell a ciklustesten belül, különben a ciklus végtelenszer ismétlõdik meg. Az iteráció elsõ sorában a feltétel teljesülését vizsgálhatjuk úgy is, hogy akkor lépünk a ciklusba, ha a feltétel igaz (While), és úgy is hogy amíg a feltétel nem igaz (Until). Mindkét vizsgálatot a ciklus elején hajtjuk végre, így az iterációnk elõl-tesztelõ lesz.