Professional Documents
Culture Documents
xIIx
xi
,.ouwúlhru
INFORMATIKA
8. Szoftverfejlesztés — Visual Basic
2006
[W
onfhnlé
.luvr
az
U?!
Infonnatika 5.
8. Szoftverfejlesztés
2003
bővített, átdolgozott kiadása
Magánkiadás
_
.ja, _
, A
, .; .;
.1 '.' '—
__._, . .
,. v _ .
!. : _ ,
_ ._g- —_ ;
8. Szoftverfejlesztés
8.1. Előszó
Tisztelt Olvasó!
Képszerkesztés
Szoftverfejlesztés — Visual Basic
Adatbázis—kezelés alapjai
—8.3—
8. Szoftverfejleszte's
A tankönyvsorozathoz tartozik egy példatár is, amely CD—lemezen kerül for-
galomba. Ezt a példatárt elsősorban azoknak ajánljuk, akik önállóan, vagy levele-
ző oktatás keretében szeretnék elsajátítani a tankönyvsorozat ismereteit. A példa-
tár tartalmazza a tankönyv egyes részeiben bemutatott feladatokat.
A jegyzetben használt jelölésrendszer
A tananyagban való könnyű tájékozódást többszintű fejezetszámozás és arra
épülő tartalomjegyzék segíti. Az egyes fejezeteken belül lapszélen elhelyezett
kulcsszavak hívják fel a figyelmet az ismertetett témakörök egyes elemeire. Java—
soljuk, hogy Ön a jegyzet áttanulmányozása során saját emlékeztetőivel bővítse a
széljegyzetek körét!
A tananyag elsajátítását a jegyzetben használt egységes jelölésrendszerrel is
szeretnénk elősegíteni. A szabványos jelölések a következőkre utalnak:
-8.4-
8. Szoftverfej lesztés
8.2. Alapfogalmak
lunk ki.
Algoritmus
m Algoritmus
Az algoritmus egy olyan feldolgozási előírás, amelyet olyan pontosan fogalmaz-
tak meg, hogy az mechanikus vagy elektronikus berendezéseken végrehajtható.
Lásd 1. fejezet algoritmus fogalmát is!
Az algoritmus egy probléma egyértelmű megoldására vonatkozó útmutatás.
Egy algoritmus készítése során meg kell adnunk, hogy egy adott probléma megol—
dásához milyen elemi lépéseket használhatunk fel. Ezen elemi lépések legyenek
egymástól fuggetlenek, legyenek szükségesek a probléma megoldásához, és al-
kossanak teljes rendszert. Minden elemi lépésre legyen szükség legalább egyszer,
és az elemi lépések összessége elég legyen a probléma megoldásához.
' Pontosság: olyan pontos, hogy a szabad értelmezést megakadályozza (pl. ,,a
királynét megölni nem kell félnetek jó lesz ha mindenki beleegyezik én nem
ellenzem..." jellegű kijelentés elkerülése).
. Hatékonyság: az algoritmus végrehajtása alacsony erőforrás— és időfelhasz—
nálás mellett is lehetséges legyen (idő- és tárhatékonyság alacsony költségek
mellett).
Az algoritmus fogalmára építve vezetjük be a program fogalmát.
-8.5-
8. Szoftverfejlesztés
Program % Program
A program nem más, mint egy algoritmus és a hozzátartozó adatterületek egy
programozási nyelv segítségével történő leírása.
A program a számítógépnek szóló utasítások sorozata, amely egy algoritmus
alapján megadja, hogy a számítógép milyen módon végezzen el egy adott felada-
tot. A definíció következménye, hogy egy adott algoritmus különböző program-
nyelvekcn is megfogalmazható, a különböző programnyelveken megírt progra-
moknak azonban ugyanazt az eredményt kell szolgáltatniuk.
Programnak nevezzük:
m Szoftver
Szoftver A számítógépes programok összességét szoftvernek nevezzük.
Software-
m Software-engineering
engineering tudománya (Software-engineering) a programok és program-
A szoftverkészl'te's
rendszerek tervezése és létrehozása (implementála'sa) során használt elvekkel,
módszerekkel és technikákkal foglalkozik.
A 60-as évek szoftverkrízise nyomán megszületett fogalom bevezetése azt a fel-
fogást tükrözi, hogy a szoftverkészítés nem ,,művészi", hanem sokkal inkább ,,tu-
datos, műszaki-tudományos jellegű" tevékenység. A felfogás szellemében a szoft-
ver egy minőségileg magas értékű termék.
Program minösége A programnak, mint magas értékű terméknek a minőségét meghatározó tényezők
az alábbiak:
m A programfejleszte's célja
A programfejleszte's célja az adott probléma megoldását elvégző, helyesen míl— Programfcjlesztés
ködó' olyan program előállítása, amely egy adott számítógépen végrehajtható. célja
A szoftverfejlesztés során a következő feladatokat kell megoldani:
Megvalósítás (20%) —— *
Program
P ro gram-
fejlesztés
Rendszerteszt (40%) §
Tesztelt program
_—
_.
-8.7—
8. Szoftverfejlesztés
8.4.1. A problémaelemzés
2
A gyorsan kialakított működőképes modell létrehozását ,,rapid prototyping"—nak (gyors prototí-
pusalkotásnak) nevezzük.
-8.8-
8. Szoftvcrfejlesztés
8.4.2. A tervezés
8.4.3. Megvalósítás
vényesüljenek:
3
Ez a modell az egy adott programnyelven történő megvalósíthatóság követelményeit is kielégíti.
-8.9-
8. Szoftverfejlesztés
* A modul hívása: *
* Verziószám *
* Szerző Dátum *
*************************************************************
—8.lO—
8. Szoftverfejlesztés
Az átvételi teszt során a megrendelő azt vizsgálja, hogy a program eleget tesz- Átvételi teszt
e valamennyi, a szerződésben rögzített megállapodásnak (a vizsgálat alapja a kö-
vetelményjegyzék).
A rendszerteszt és funkcióvizsgálat fázisának eredményeként egy olyan módo—
sított program és egy ehhez kapcsolódó dokumentáció áll rendelkezésre, amely a
követelményjegyzékben foglaltaknak megfelel.
A fázis befejezéseként általában egy teljesítmény vizsgálatra is sor kerül, Teljesítmény
amelynek célja a program elméleti és gyakorlati hatékonyságvizsgálata (pl. futás- vizsgálat
idő vizsgálata, tárterület felhasználásának vizsgálata).
A szoftverek életciklusának végén — csakúgy, mint más terméknél - a meg- Szoftver életciklus
szüntetés áll. Bár igen nagy erőfeszítéseket tesznek a szoftverek (vagy legalább vége
-8.11-
8. Szoftverfejlesztés
8.4.8. Szoftverköltségek
lémája).
o Az üzemeltetési költségek (az adatrögzítés, az előkészítés, az anyag, vala—
mint a számítógép költségei) a hardver, a szoftver és a feladat minőségé-
nek Higgvényei, s így nehezen becsülhetők.
o Rejtett költségek, következményjellegű költségek (a bevezetésből valamint
az esetleges késleltetett bevezetésből adódó költségek) jelentkezhetnek.
A költségek csakis a vállalati, intézményi keretek összefüggéseiben vizsgálha—
tók. A költségek elemzése igen összetett probléma, s így a költségek csak külön-
leges megfontolást és körültekintést igénylő döntésekkel kezelhetők.
A költségek csökkentése területén egyre nagyobb szerepe van a minőségbizto-
sításnak. A szoftverek minősége az MSZ EN ISO 9000 alapján biztosítható. Az
ISO 9000-3 irányelveket ad az ISO 9001 szoftverre való alkalmazásához. Az ISO
9001 azt fogalmazza meg, hogy mely működési folyamatokat milyen követelmé—
nyek szerint kell kialakítani a termékek és szolgáltatások megfelelő minőségi
szintjének eléréséhez. Egyre terjednek a TOM (Total Ouality Management) rend-
szerek a szakterületen. 1995-ben jött létre az ISO 12207 szoftveréletciklus-
követési szabvány. Tartalmazza, hogy egy szoftver elkészítéséhez milyen specifi—
kációt kell kiadni a fejlesztőnek, milyen specifikáció szerint kell átvenni a termé—
ket, és foglalkozik a teszteléssel is.
-8.12-
8. Szoftverfejlesztés
A bemutatott szoftver fázismodell a kb. 100.000 programsor nagyságú szoft-
vertermékek kifejlesztéséhez adhat útmutatót. Az ennél nagyobb szoftverrendsze—
rek kifejlesztéséhez más módszereket (is) használnak. Az áttekinthetőség és köny-
nyű kezelhetőség érdekében a szoftverfejleszte'st különböző speciális szoftverek
felhasználásával támogatják. Ezeket a szoftvereket a CASE (Computer-Aided
Software Engineering) gyűjtőfogalma alá sorolhatjuk. A CASE-rendszerek a
szoftverfejlesztés valamennyi fázisát hatékonyan támogató eszközökkel rendel-
keznek.
Szoftver
%
4. generáció -
Mikrooperációk
A számítógépek száma, amelye-
Hardver ken a nyelv közvetlenül, vagy új—
rafordítás után felhasználható.
"
8-3. sz. ábra: A programozási nyelvek hierarchiája
—8.13-
8. Szoftverfejlesztés
T
Moduláris
Tervezési fázis programnyelv
l
Módszerek
Program- Megvalósítás
és
fejlesztés (Programozás)
eszközök
felhasználása
Megvalósítási
fázis
Funkció— és
teljesítményteszt
(Rendszerteszt)
-8.15-
8. Szoftverfejlesztés
őrizhetővé tegye,
. a modulokat egymástól függetlenül lehessen kifejleszteni és ezt követően ösz—
szefogni, integrálni,
o valamennyi modul helyettesíthető legyen olyan más modullal, amely ugyan—
azt a funkciót elégíti ki.
Hierarchikus A modularizálás egyik legelterjedtebb alkalmazása a hierarchikus modulari—
modularizálás zálás. Természetesen a gyakorlatban számtalan más módszert is használnak a
programtervezés és programfejlesztés támogatására. Ilyenek pl. a Jackson mód-
szer, a pszeudókód, a döntési táblák, a HIPO, stb. Ezekre a módszerekre, eszkö-
zökre a jegyzetben részletesen nem térünk ki.
-8.16-
8. Szoftverfejlesztés
funkcióknak tekintve további integrációval új főfunkciókat nyerünk mindaddig,
amíg a lépésenkénti integrációval a teljes funkcióig (a rendszer) el nem jutunk.
Egy problémamegoldási eljárás a redukció, amikor a problémát két részre
osztjuk, egy megoldható problémarészre és egy maradék (nehezen megoldható)
problémarészre. Egy probléma dekompozíciója azt jelenti, hogy több részre bont-
juk a problémát (összetettebb probléma esetén javasolt).
A hierarchikus modularizálás módszerét a számítógép—beszerzés példáján mutat—
juk be.
Számítógép beszerzése
Folyamatábra L
Struktogram
1
3. utasítás 1. utasítás
l l
Eredmény :A % B
Eredmény :A % B
Eredmény kiírása
"
Eredmény kiírása
-8.19-
8. Szoftverfejlesztés
Kiválasztás [: Egy eset kiválasztása egy esetből
Folyamatábra Struktogram
Logikai kifejezés
igaz hamis
utasítas(ok)
utasítás(csoport) %
8.2. Példa
olvasása
Szülév : 1956?
hamis
Szülév : 1956 igaz amis
- 8.20 -
8. Szoftverfejlesztés
iif—§? hamis !
igaz
Logikai kifejezés
hamis
v 1.utasítás 2.utasítás
[. utasitás(0k) 2. utasítás(ok) (csoport) (csoport)
8.3. Példa
Nem : l?
hamíc
igaz hamis
LA
-8.21-
8. Szoftverfejlesztés
1
változó, vagy kifejezés
értéke
1.utasí- 2
tás(ok)
2.utasí-
1
2
' 1. utasitás(ok)
tás ( ok )
n
_,
,
2. utasítás(ok) 112128?)—
n
___. n. utasítás(ok)
,
Évf ?
Evf l
?
Kiírás l. 2
adathor—
1 ,
dozora ., , 2"
Knras
—5 Ki l. adathordozóra
adathor-
3
dozóra
L, Ki 2. adathordozóra
., , 3-
Knras
adathor-
dozóra
_,
3 ,
KI 3. adathordozora
_
— 8.22 -
8. Szoftverfejlesztés
vonásával
Folyamatábra Strukto gram
$
változó, vagy kifejezés
]
értéke-,
változó, vagy
1. utasí— 2
tás(ok) ülönben
2 utasí- ,
tás(ok) 3. utasí— n. utasí-
V 1
. utasítás(ok) tás(ok) tás(ok)
_, "
2.
3.
utasítás(ok)
utasítás(ok)
külön; n. utasítás(ok)
ben
8.5. Példa
Ki 1.
adathor— " "
3 ulonben
dozóra Ki 2.
adathor- Ki 3. Ki 4.
Ki 1
. adathordozóra dozora
adathor- adathor—
dozóra dozóra
Ki 2. adathordozóra
Ki 3. adathordozóra
Ki 4, adathordozóra
Ismétlés Az ismétlés, vagy iteráció programvezérlési konstrukciója egy vagy több blokk
többszörös végrehajtásának leírását teszi lehetővé az algoritmusban. Az ismétlés
vagy iteráció háromféle módon valósítható meg:
I. tipus: Előlvizsgáló (elutasító) ciklus
II. tipus: Hátulvizsgáló (nem elutasító) ciklus
III. típus: Számláló ciklus
Folyamatábra Struktogram
utasítás(ok) utasítás(csoport)
8.6. Példa
§ Adjuk meg a két természetes szám legnagyobb közös osztóját kiszámító Euk-
lideszi algoritmust. Ha a/b esetén b osztója a-nak, akkor az eredmény a b ér—
téke. Ha nem, akkor a-t osszuk el maradékosan b—vel (mod).
a:b*hányados—l-maradék. Most a két kisebb számmal (a értéke legyen b, és
b értéke legyen a maradék) folytatjuk a műveletet. CI
- 8.24 —
8. Szoftverfejlesztés
Folyamatábra Strukto gram
OT
hamis
Hajtsd Végre, amíg b $ O teljesül
i igaz r : a mod b
r : a mod b a:b
'
b:r
b :r
8-18. sz. ábra: Legnagyobb közös osztó előltesztelő ciklussal
ll. típus: A hátulvizsgáló ciklus a ciklustörzs utasításait legalább egyszer végre— Hátulvizsgáló
hajtja, majd ezt követően vizsgálja a végrehajtási feltételt. ciklus
Folyamatábra Struktogram
V
8.7 Példa
E Adjuk meg a két természetes szám legnagyobb közös osztóját kiszámító Euk—
lideszi algoritmust, hátulvizsgáló ciklussalEl
Folyamatábra Struktogram
r : a mod b
a: b
b:r
Ismételd mindaddig, amíg az
:
b O feltétel nem teljesül.
Számláló ciklus III. típus: a számláló ciklusnál a ciklusok végrehajtását egy változó, a ciklusvál-
tozó számlálja, amely értékét egy kezdeti értéktől egy végértékig egy meghatá-
rozott értékkel, az ún. lépésközzel változtatja (növeli, vagy csökkenti).
A végérték elérésekor hajtódik végre utoljára a ciklus. A ciklusváltozót, a kezdeti—
és a végértéket, valamint a lépésközt a ciklusfej határozza meg.
:
Számláló SZ KE-től
L lépésközzel
VE—ig,
hamls
_
utasítás(csoport)
utasítás(ok)
SZ:SZ-l-L
8.8. Példa
l
összeg :0
l [: l—től lO-ig l lépésközzel
_A
I : 1
hamis
. összeg : összeg % I
igaz ( )
összeg : összeg * l
l
I:I*l
8-22. sz. ábra: 1-10 természetes számok összege
8.7.1.4 Modulblokkok
Modulnév
Modulleírás
. Számábrázolás
a ) 0; b ) O
a, b EN, ahol N a természetes számok halmaza (8.1)
Csakhogy - az 12. Adatábrázolás, adattárolás fejezetben tárgyaltak alapján - a 16
biten ábrázolható egész számok a (——215) (4-215 — l) zárt intervallumban helyez-
——
kednek el (16 bites ábrázolás). Ha nem 16 biten, hanem 32, 64 vagy akár 128 bi-
ten ábrázolnánk is az egész számokat, mindenképpen keletkezne a számítógépes
számábrázolásból következően egy felső korlát a még ábrázolható legnagyobb
egész számra. Ennek következtében érvényesülnie kell az alábbi összefüggésnek:
—
8.27 -
8. Szoftverfejlesztés
0 ( a S MAXINT ( b S MAXINT, ahol
O (8.2)
EREDMÉNY :a * b (8.3)
alapján az EREDMÉNY nevű változóra is teljesülnie kell az alábbi feltételnek:
0 ( EREDMÉNY s MAXINT (8.4)
Azt, hogy a szorzatot (EREDMÉNY) is ábrázolnunk kell a számítógépben, termé—
szetesnek tartjuk. Ez azonban a és b értékére vonatkozóan további megszorításo—
kat tartalmaz, hiszen így a és b értéke sem külön-külön, sem pedig együttesen
nem lehet tetszőleges érték a (8.2)—ben megadott intervallumban. További meg-
szorításokat kell tennünk az a és b által felvehető értéktartományára! Természete—
sen többféle megoldás lehetséges, ezek közül itt csak néhányat sorolunk fel:
a és b értéke egyszeri pontossággal (16 biten), míg az EREDMÉNY értéke kétsze-
res pontossággal (32 biten) kerüljön meghatározásra,
a és b-re teljesüljön, hogy kisebb MAXINT négyzetgyökének egészértékénél [je—
O
( A, B ( INT (,IMAXINT ) (8.5)
ami az előző megoldáshoz hasonlít, s így a és b lehetséges értékeinek tartományát
egyformán ,,csonkítottuk".
a szorzó által felvehető értékek tartománya függjön a szorzandó előre adott érté—
kétől a következőképpen:
54-54-5215
3t3t3r3t3215
Nyilvánvaló, hogy az első megvalósítás hatékonyabb. A technikai megvalósítás
során csak arra kell ügyelni, hogy a és b értékét figyelembe véve hajtsuk végre a
műveletet (a nagyobbik számot adjuk össze a kisebbik szám által meghatározott
alkalommal).
- 8.28 -
8. Szoftverfejlesztés
A feladat három általános funkcióra osztható. (lásd 824. sz. ábra hierarchia diag-
ramj át)
Szorzás
Folyamatábra Struktogram
l.
Adatbevitel 1
.
1 Adatbevitel
Számítás Számítás
*
Adatkivitel
Adatkivitel , , , .. ,
Ismetles, amlg szukseges
igaz
16111
— 8.29 -
8. Szoftverfejlesztés
A Beolvasás modul A és B Változók hibátlan adatbevitelét két lépésben oldja
meg; először A-t és B-t beviszi, majd egymástól függetlenül, ezt követően pedig
együtt ellenőrzi.
Az Összehasonlítás modul A és B értékét hasonlítja össze a hatékony számítás
elvégzése céljából, az Összeadás modul a szorzás műveletét valósítja meg több—
szörös összeadással.
1.1 Modul
1.1
Adatbevitel
1.1.1 [ ] 1.1.2
A és B A és B
beolvasása ellenőrzése
A beolvasása
"
B beolvasása B beolvasása
A és B ellenőrzése
l
A és B ellenőrzé- Mindaddig, amíg A és B
se nem lesz OK.
A, B
megadása
— 8.30 -
8. Szoftverfejlesztés
1.2 Modul
1.2
Számítás
!
1.2.1 ] !
1.2.2
Összehasonlítás Összeadás
l 1.2
__
Összehasonlítás ..
Összehasonlítás
ll
Összeadás
Összeadás
8
1
G HzA
l
N
1
1.2.1
:
ASB
1
AzB : %
1
:
BzH
l
Eredményzo 1 2 2
0
Eredmény: O
Eredmény : Eredmény * B
1
Zzz—l-l
1.3
- 8.32 -
8. Szoüverfejlesztés
A, B beolvasása
é
A, B ellenőrzése
ASB
N
H:A
AzB %
BZH
Eredményzo
ZZO
Eredmény : Eredmény * B
Z———Z
ll
Mindaddig, amíg Z S A igaz
Eredmény kiíratása
—
8.33 -
8. Szoftverfejlesztés
A, B beolvasása
l
A, B ellenőrzése
v
Eredmény :0
Eredmény kiíratása
Eredmény : Eredmény % B
l
ZZZ-Fl
5
7
7
5 l Az eredmény megjele—
nik chs
.
A program hibaüzene—
32767 32767 § tet ad k1 HA NEM
C:) Adatellenőrzés beépí—
tese a programba
- 8.34 -
8. Szoftverfej lesztés
8.8. Válogatott algoritmusok
8.9. Példa
Tervezzen egy menüvezérelt programot, amely egy háromszög, egy kör, egy
gömb és egy kúp jellegzetes adatait számítja ki. A felhasználóval párbeszédben
készítse el az adatbevitelt a következő módon: a háromszög esetében a három 01-
dal, a kör és a gömb esetében a sugár, a kúp esetében az alap sugara és a kúp ma-
gassága kerüljön megadásra. A feladat megoldása során használatos összefüggé—
sek a következők:
Kör:
Terület:
Kerület:
t/s-(s—a)-(s—b)-(s—c) , ahol
d n -
:2 -
r - Tt
S:? (8.8)
(8.9)
Terület: r2 -
1: (8.10)
M
Gömb: Felület: 4 rz n
- -
(8.11)
Térfogat: (8. 12)
3
l l
.
l 1
[_
Adatkivi— Adatbevi— Számítá— Adatkivi—
tel sok tel tel sok tel
'
%
bevitele bevitele bevitele együttes kiszámítá- kiszámí-
vizsgálata sa tása
a beolva— a ellen-
sása őrzése
8—33. sz. ábra: Hierarchiadiagram
- 8.35 -
8. Szoftverfejlesztés
A háromszög oldalainak megadásakor a, b, c értékeire egyenként és együttesen
is teljesülnie kell bizonyos feltételeknek. Ezek a feltételek a következők:
a)0;b)0;c)0 (8.15)
arb)c;a4-c)b;b-i-c)a (8.16)
Az a, b, c értékeire vonatkozó egyedi vizsgálatot az 1.l.l.l, az l.l.l.2 és az
l.l.1.3 modulokban végezhetjük el. A modulok felépítése egyező, a különbség
csak az, hogy más változót ellenőriznek. Az a, b, c értékeire vonatkozó együttes
vizsgálatot az l.1.l.4 modulban végezzük el.
A feladat tervezését a menütervvel kezdjük. A struktogram segítségével történő
ábrázolást az alábbi ábrán mutatjuk be.
A VÁLASZ bevitele
2 VÁL AS 2?'
Három-
3
szö Kör 4
számígtá- számítá— Gömb , ,
- számítá— KUP , , ,
EEVeb
Számítá_ Szamita-
-
sai 531 .
sai Hlba'
_
Bevitel
Számítás
Kivitel
Mindaddig, amíg kívánatos
Bevitel a
Bevitel b
Bevitel c
Mindaddig, amíg a -lr b5c
Mindaddig, amíg b 4—
c 5a
Mindaddig, amíg a -l- c 5b
- 8.36 -
8. Szoftverfejlesztés
Beolvasás a 1.1.1.1
Mindaddig amíg a ( 0 Bevitel a
Beolvasás b
Mindaddig, amíg a S 0
Mindaddig, amíg b S O
Mindaddig, amíg a * b S 0
Számítás K
Számítás T 1.1.2.2
1.1.2.l s : K/2
K :a Jr b Jr 0 T : SORT [s*(s-a)*(s-b)*(s-c)]
8—35. sz. ábra: Háromszög modul struktogramjai
Feladat: lrjon teszt-tervet a háromszög-számítási modul teszteléséhez!
8.10. Példa
Állítsunk elő adott számú (n db.) Fibonacci számot!
általánosan
szFk-l "l'Fk-Z , (8-17)
ahol k ) 2 , egész szám és Fk a k-adik Fibonacci szám és F] : 1, F; : 1.
- 8.37 -
8. Szoftverfejlesztés
n elemszám megadása n elemszám megadása
a :l a kivitele FIB [1]: 1
B Feladat:
Ellenőrizze az algoritmusok működését n: 10 esetén! Állítsa elő a Fibonacci
számokat! El
8.11. Példa
A 8.10. példában egy egydimenziós tömb elemeit generáltuk egy adott szabály
(8.17) alapján. Gyakori eset, hogy a tömb elemeit egy külső adathordozóról kell
beolvasni.
Olvassuk be egy n elemű tömb adatait úgy, hogy az első adat a tömb elemszá—
mát tartalmazza, az azt követő n adat pedig a tömbelemek értékét.
Például, ha az adatok sorban 5, 21, 18, 34, 3, 5, akkor ez azt jelenti, hogy n 5; :
A[l] : 21; A[2] : 18; A[3] : 34; A[4] :3; A[S] : 5.
A[I] beolvasása
- 8.38 —
8. Szoftverfejlesztés
Számláló I
: l-től N-ig l le'pe'sközzel
Olvasd A[I]-t
8.12. Példa
Válasz
N 1
B Feladat:
Hajtsa végre az algoritmust az alábbi tesztadatok felhasználásával!
8.13. Példa
- 8.39
8. Szoftverfejlesztés
Szám :0
I számláló 2-től N-ig l lépésközzel
A[I] mod 2 :0
1 N
Szám : Szám %
: !
Szám kivitele
Megjegyzés:
Különösen valós számokkal történő hasonló műveletvégzés esetén a számábrázo-
lási pontatlanságból származó veszélyek elkerülése érdekében célszerű az :0 he-
lyett például a 510"5 feltétel vizsgálata.
§ Feladat:
Hajtsa végre az algoritmust az alábbi tesztadatok felhasználásával!
A[l] : 3; A[2] : 4; A[3] : 19; A[4] :4; A[5] :16
Készítse el a struktogramnak megfelelő folyamatábrát!
Ellenőrizze a folyamatábrát ugyanazokkal a tesztadatokkal! E]
8.14 Példa
Készítsünk struktogramot, amelyben összegezzük az N elemű egydimenziós
tömb páros számú (2, 4, 6, ...) azaz A[2], A[4] , A[6], tömbelemeit.
SUM :0
I számláló 2-től N—ig 2 lépésközzel
SUM : SUM * A[I]
SUM kivitele
Megjegyzés:
Természetesen valamennyi változó értékét nem szükséges nullára állítani, szorzat
képzése esetén a nullára állítás pedig végzetes következménnyel jár.
- 8.40 —
8. Szoftverfejleszte's
§ Feladat:
Hajtsa végre az algoritmust az alábbi tesztadatok felhasználásával!
a. : : :
A[l] 3; A[2] 4; A[3] 7; A[4] :6; A[S] :1; A[6] :10; A[7] :3
b. A[l] : 3; A[2] : 4; A[3] : 7; A[4] :6; A[5] :1;A[6] :10
Készítse el a struktogramnak megfelelő folyamatábrát!
Ellenőrizze a folyamatábrát ugyanazokkal a tesztadatokkal! EI
8.15. Példa
Készítsünk struktogramot, amelyben meghatározzuk egy N elemű egydimenzi—
ós tömb minimális tömbelemének az értékét, s azt, hogy hány helyen (hol) fordul
elő a tömbben.
Minimum meghatározása
Minimum előfordulása
:
Szám Szám 4- 1
%
Min : A[I] % Hely [Szám] I :
Min kiírása Hely[.] és Szám kiírása
Feladat:
Hajtsa végre az algoritmust az alábbi tesztadatok felhasználásával!
a. A[l]:-12;A[2]:0; A[3]:5;A[4] :-14; A[S] :72
b. A[l]:3; A[2]:—3;A[3]:3;A[4]:3; A[S]:O;A[6]:1
Készítse el a struktogramnak megfelelő folyamatábrát!
Ellenőrizze a folyamatábrát ugyanazokkal a tesztadatokkal! Cl
— 8.41 -
8. Szoftverfejlesztés
8.16 .Példa
Készítsünk struktogramot egy N elemű egydimenziós X tömb elemeinek csök—
X[K] ) X[H]
1 N
U : X[H]
X[H] : X[J] %
xm:u
Megjegyzés:
Többfajta, különböző számítási igényű sorbarendezési algoritmus létezik a feladat
megoldására.
B Feladat:
Hajtsa végre az algoritmust az alábbi tesztadatok felhasználásával!
a. xm : 9; xm : 7; xm : 4; X[4] :4; X[5] :1
b. xm : 9; xm : 1; X[3] : 4; X[4] :0; X[5] :10
Készítse el a struktogramnak megfelelő folyamatábrát!
Ellenőrizze a folyamatábrát ugyanazokkal a tesztadatokkal! El
8.17. Példa
Készítsünk struktogramot egy N elemű rendezett egydimenziós tömbben tör-
(
ténő keresésre. Valamennyi I J—re teljesül, hogy A[I] S A[J] A tömbben keresni.
— 8.42 —
8. Szoftverfejlesztés
:l
J:N
O:False
K:(l-I-J)X2
N
AK:X
[ ]
I
A[K](X
1 N
O:True
I:KH J:K—1
Megjegyzés:
A rendezett tömbben történő keresés leghatékonyabb módja az úgynevezett biná-
ris (felezős) keresés. Az algoritmus ezt a keresést mutatja be.
B Feladat:
Hajtsa végre az algoritmust az alábbi tesztadatok felhasználásával!
: :
A[l] :9; A[2] 7; A[3] 5;A[4]:3;A[5]:1;A[6]:O
a. X :1
b. X :6
Készítse el a struktogramnak megfelelő folyamatábrát!
Ellenőrizze a folyamatábrát ugyanazokkal a tesztadatokkal! Cl
8.18. Példa
— 8.43 -
8. Szoftverfejlesztés
B Feladat:
Hajtsa végre az algoritmust az alábbi tesztadatok felhasználásával: M : 3; N : 5.
A tömb elemeinek értékeit az alábbi táblázat tartalmazza:
l 2 3 4 5
6 7 8 9 10
5 4 3 2 l
8.19. Példa
Készítsünk struktogramot egy M x N—es kétdimenziós tömb oszlopmaximuma-
inak (az oszlopokban levő maximális értékű tömbelem) meghatározására.
J számláló l-től N-ig l lépésközzel
Max[J] : Minint
Iszámláló l—től M-ig 1
lépésközzel
Tömb[I,J] ) Max[J]
1 N
Max[J ]
Tömb[l,J ] %
§ Feladat:
Hajtsa végre az algoritmust az alábbi tesztadatok felhasználásával: M : 5; N: 3.
A tömb elemeinek értékeit az alábbi táblázat tartalmazza:
l 5 7
3 3 9
5 4 5
l l 2
2 9 7
- 8.44 -
8. Szoftverfejlesztés
8.20. Példa
ERG[I,J]
ERG[I,J] % (A[I,H]
:
* B[H,J])
ERG[. ] kivitele
§ Feladat:
Készítsen teszt—tervet olyan esetre, ahol M : 3 ; N : K : 5 L : 2!
;
A makró billentyű lenyomások révén kiadott utasítások és/vagy Visual Basic Makró
nyelven írt utasítások sorozata, melyeket Microsoft Visual Basic modulban táro-
lunk. Ez egy program, amely egyetlen parancs kiadása után az adott feladat bár—
- 8.45 -
8. Szoftverfejlesztés
Minden makrónak egyedi nevet kell adni, amelyre a későbbiek során hivatkozha—
tunk. Egy adott munkafüzethez, táblázathoz létrehozható makrók száma nem kor-
látozott.
A makrók előnyei:
Makró beírással Beírással ekkor Visual Basic utasításokat tartalmazó programot írunk. Ilyen
-
utasításokkal a Visual Basic módban feljegyzett makrók is módosíthatók. Makró-
ink átírásához az Eszközök / Makrók / Makrók... menüpont választása után a
megfelelő makrónevet kiválasztjuk, majd a Szerkesztés gombot választjuk.
Új makró létrehozásához az Eszközök / Makrók / Makrók... menüpont segít—
ségével ugyanebben az ablakban egy nevet kell adnunk. Ennek hatására a Szer-
kesztés helyett a Létrehozás nyomógombunk él. Ezt kiválasztva megkapjuk a
makró kódszerkesztési területét, ahova beírjuk a kívánt utasítássorozatot.
? Makrók. .. Albi-FB
a Új makgó rögzítése. ..
Biztonság. ..
[gifzfagiguaiéas'ic Édítor'f'; _
';41GF1'1 "
69 Microsoft §cript Editor AIt—I—ShiFt-t-Fll
—
8.46 -
8. Szoftverfejlesztés
filmeknek. Minden más aláirtes alá nem irt makró le van tiltva.
Telep—tett víruskuesöoo.
III—___i—W
.
'B'EüWMWWMIMBN-WWM
a
:- w
:]
nw aga-ru; e
Proiekt ablak
Modulablak
-' í-i
Eszköz—
készlet HÉEHtELBuaUHHL
Tulajdonsá-
Úrlan ablak
gok ablak
4
Integrated Development Environment: IDE
—
8.47 -
8. Szoftverfejlesztés
A Visual Basic szerkesztő indításakor az alkalmazás ablaka jelenik meg menü-
vel és eszközsorral.
Projekt ablak A képernyő bal oldalán egy projekt (Project) ablakot jeleníthetünk meg. A
projekt egy fejlesztési feladat, az elkészítendő alkalmazás fájljainak együttese,
azaz egy projekt fogja össze a fejlesztett alkalmazás összes állományát és tartal—
mazza a fejlesztőrendszer adott alkalmazáshoz tartozó beállításait, működési pa—
ramétereit.
Ez az ablak tartalmazza az aktuális projekthez tartozó modulok, űrlapok és
egyéb fájlok listáját a megfelelő csoportosításban. A jobb egérgomb lenyomásával
megjeleníthető menü segítségével kedvünk szerint módosíthatjuk a projektet.
Hozzáadhatunk, illetve elvehetünk elemeket a listából. Ilyenkor természetesen a
módosítások elmentődnek a projektünkbe is.
Tulajdonság ablak Képemyőnk bal oldalán, a projekt ablak alatt láthatjuk a tulajdonság (Proper-
ties) ablakot is. Ebben az ablakban az aktuális objektum tulajdonságait tekinthet—
jük meg és módosíthatjuk. Az ablakban megjelenő jellemzők köre függ attól,
hogy milyen objektumot (űrlap, gomb, címke, stb.) jelöltünk ki.
Ha valamelyik ablakot nem látjuk, megjelenítését bekapcsolhatjuk a View
(Nézet) menü segítségével:
Égi Ereje-zt Explorer Ctrl-t-R
§ Properties Window F4
Feladat:
Készítsük el az első Visual Basic szerkesztésű feladatunkat. Hozzunk létre egy
űrlapot, majd helyezzünk két nyomógombot és egy címkét az űrlap felületre. Az
egyik nyomógomb kiírása legyen ,,Indít", a másiké ,,Vége". Az Indít hatására je—
lenjen meg ,,Az első programom" kiírás, a ,,Vége" nyomógombra, pedig fejeződ—
jön be a futás.
Úrlap beszúrásához az Insert / UserForm menüpontot használhatjuk. Ezután Urlap beszúrása
beállíthatjuk az űrlap tulajdonságait a tulajdonság ablakban.
Propartiésf— UserForml" —-
*
O
" ,
picture (Nome) _
megfelelo szmt. A System (rend-
PictureAlignment 2-meictureAlignmentCer szer) fülön a rendszer előre beá11í_
PictureSizeMode [] - meictureSizeModeClip
:J tott színei közül választhatunk.
A vezérlőelemek űrlapra helyezéséhez használjuk a ToolBox (Vezérlőelem)
készlet jeleit.
A Label
l—Á
(címke) kiválasztásával, majd az űrlapon a hely kijelölésével tu- Címke
dunk szöveg megjelenítéséhez vezérlőelemet elhelyezni. A CommandButton —-' Parancsgomb
(parancsgomb) kiválasztásával, majd az űrlapra kattintva, ill. helyet kijelölve tu—
dunk parancsgombokat űrlapunkra tenni.
Az űrlapon tehát három objektumot helyezünk el, két parancsgombot és egy
címkét. A címke mérete akkora legyen, hogy elférjen benne a kiírandó szöveg. A
nyomógombok általában egyformák.
— 8.49 -
8. Szoftverfejleszte's
CommandButtc-nl
CommandButtonZ
Lü'lL'Öí—lgg!
ÉE'I'UELILZ
Properties Helló —
Properties Indít
—
[Helló Label
É ]Indít CommandButton _vj
Alphabetic lCategorizecl ! Alphabetic !Categorized ]
(Name) Helló
_: (Name) Indil:
_:
Accelerator Accelerator
AutoSize False AutoSize False
BackColor El siHoochFFFFsi BackColor [] aHeooooooFe
.
BackStyle 1 - meackStyleOpaciue BackStyle 1 - FmBackStyleOpaciue
BorderColor SiHBOÚOUDOSBi Cancel False
BorderStyle O - FmBorderStyleNone Indít
Caption ControlTipText
ControlTipText Default False
Enabled True Enabled True
. .
_
- 8.50 -
8. Szoftverfejlesztés
Az elhelyezett vezérlőelemekre kattintva az elem aktívvá válik: mozgatható,
méretezhető, törölhető, tulajdonságait ellenőrizhetjük e's beállithatjuk.
Első üdvözlet
:j lCHck
M
.
la
rll—L
_Mmg
—(Generah
Helló _!.e
UserForn1 ___"
Vége
Private Sub Indít_Click[]
rad Sah ,A
End Sub
A (85) jel a szöveg összefűzést segíti, a CHR(13) pedig a beépített standard ka-
rakterüíggvény, mely a 13 paraméterrel a soremelés (Enter) karakterét adja meg
megjelenítéskor.
A Vége nyomógomb hatására befejeződik a program. Ez utóbbi minden űrla—
pon elvárható esemény. Ez az End parancs hatására hajtódik végre, amikor min-
den megnyitott objektum bezáródik, és haladéktalanul befejeződik az alkalmazás
futása.
Private Sub Vége_Click()
End
End Sub
Mentés A megtervezett és modulkódok megírása után nem marad más feladatunk, mint
a program elmentése, majd kipróbálása, futtatás. Programunkat egy Excel munka-
füzetbe mentjük. Ehhez szokás szerint választhatjuk a H Mentés gombot, vagy a
File (Fájl) / Save... (Mentés...) parancsot.
Vége
Amikor először veszünk fel alkalmazásunkhoz egy objektumot (űrlap, pa- Elnevezési
rancsgomb, stb.), vagy vezérlő elemet, a Visual Basic beállítja annak Name (Név) konvenciók
tulajdonságát egy kezdő értékre. Például a parancsgomb név tulajdonságértéke
CommandButtonl, illetve CommandButton2 lett. A felvett címke név értéke pe-
dig Labell. Nem célszerű az így kapott nevet megtartani, de néhány hagyományos
irányelvet tartsunk be. A program olvashatóságát megkönnyíthetjük beszédes ne—
vek használatával.
Az objektum megnevezését például az adott objektumra utaló rövid előtaggal
kezdhetjük, ez segít a funkciók közötti eligazodásban (pl. cdendít, lblHelló).
Névadási szabályok:
EÉDEÉ! ,—
választható tulajdonságok). _MMW...
§]
Private Sub Indít_Click[J Compile error:
Helló.Caption :
"Első programom UB—ben" ; Chrílel ; "HELLÓ" '! Expected: expression
,,
End 51133
Súgó !
'
- 8.53 -
8. Szoftverfejlesztés
. Ha egy utasítást több sorba kell írnunk (hosszú az utasításunk), akkor a sor
folytatását a ( _) szóköz és az aláhúzás karakterek egymás utáni írásával je-
lezzük.
. Több utasítást akarunk egy sorba írni, akkor a kettősponttal különítjük el az
utasításokat.
. Utasításokhoz megjegyzés írása a későbbi jobb érthetőséghez. Az aposztróf
(,) karakterrel kezdjük a megjegyzést, akár az utasítás sorában, akár külön
sorba írva a megjegyzést.
Adatok, adattípusok, változók, konstansok
Elemi objektum
g Elemi objektum
Elemi objektum alatt egy megnevezés és érték által definiált együttest értünk.
Az objektum egy tárolási helyből és egy értékből áll. A tárolási hely egy cí-
mezhető tárterület, amelyet egy szimbolikus névvel (változóne'v) nevezhetünk el.
A programozási nyelvek adatobjektumai megnevezhető tárterületekből és az
ezekhez rendelt meghatározott adattípusokból állnak.
így az adatot tartalmazó adatterület helye és az adattartalom mellett az adat-
típus megadásával a memóriabeli tárolási módját is meghatározhatjuk.
A Visual Basic végrehajtási időben ellenőrzi az adattípust (dinamikus típuske—
zelés), így a típus hibákat is futás közben jelzi ki. A Visual Basic nem kívánja
meg a feltétlen adattípus deklarálását. Ha egy változót explicit módon deklará-
lunk, akkor nekünk kell gondoskodnunk a típus megadásáról és a konverziókról.
— 8.54 —
8. Szoftverfejlesztés
A programokban használhatjuk a különböző típusú adatokat. Ha alkalmazá-
sunkban csak ideiglenesen van rá szükségünk bizonyos műveletek eredményeinek
tárolására, akkor változókat használunk. Több azonos típusú változott kényelme—
sebb együtt kezelni, akkor tömbbe rendezzük őket. Ha olyan értékeket szeretnénk
tárolni, amelyek értéke nem változik az alkalmaz futása alatt, akkor ezeket, mint
úgynevezett állandókat, konstans változóként definiálhatjuk.
Visual Basic—ben az adat típusa egyértelműen utal az adat tárolási módjára.
Alapértelmezett adattípus a Variant, amely elég rugalmasan kezeli a benne tárolt
adatokat, és a szükséges konverziókat.
A változók működési területe háromféle lehet: Változók
§ %% 8L % $ jeleket.
A programban felhasznált változókat és konstansokat a programleíró részben
kell megadni.
—
8.55 —
8. Szoftverfejleszte's
Relációs műveletek:
) nagyobb,
( kisebb,
: egyenlő,
() nem egyenlő.
Az alábbi standard függvények egész e'rte'kű eredményeket szolgáltatnak:
ABS (I) az 1 egész adat abszolút értéke,
SOR (I) az 1 egész adat négyzete,
TRUNC (R) az R valós adat egészre vágott értéke,
- 8.57 -
8. Szoftverfejlesztés
%% O.,O
7 x ,,
Aritmetikai műveletek:
-I- összeadás
- 8.58 -
8. Szoftverfejlesztés
— kivonás
-!—
szorzás
/ valós osztás, ahol a hányados a törtrészt is tartalmazza
X ; egész osztás, ahol a nem egész számok előbb egészre kerekítődnek, a
hányados a törtrésze törlődik
- 8.59 -
8. Szoftverfejlesztés
Public csillag, pont As String Const Aposztróf : " ' " Dim jel AS String *5
Dim neve$ Dim név$
BOOLEAN adattípus
Boolean George Bool-ról (1815-1864) kapta nevét. A Boolean (logikai) adattípushoz
két konstans, két egymást kizáró érték: a TRUE (igaz) és a FALSE (hamis) tarto-
zik.
P O P OR O P AND O NOT P
F F F E T
T F T F F
F T T F T
T T T T F
— 8.60 —
8. Szoftverfejlesztés
-8.6l —
8, Szoftverfejleszte's
,
InputBox utasítást használunk az adatbekérésre.
dátum : InputBox(üzenet)
If IsDate(dátum) Then ,dátum
_;
_
51;
l
Születési dátum:
i
Microsoft Eat: *
.En—CÉLJ- l
Születési dátum: 1985. december 5.
l
l
,
[1985.12.5
l
Microsoft Excel 35]
LI
_,
Születési dátum:
ÚKl
Cancel
nem dátum
[198513.51
l
A variant változó kezdetben az Empty értéket veszi fel. Az Empty egy speciá-
lis érték, mely nem azonos a (0) nullával, és nem azonos a nulla hosszúságú ka-
raktersorral.
A másik speciális érték a Null érték, melyet az adatbázisok hiányzó értékeinek
vizsgálatára használunk. A változó tartalmának tesztelésére az IsNullO Híggvényt
használhatjuk.
- 8.63 -
8. Szoftverfejleszte's
Összetett adattípusok
Tömb A tömb típus olyan összetett adattípus, amely azonos típusú adatok csoportját
tartalmazza. Az adatcsoportban az elemek száma rögzített, az adatcsoport egyes
_-
elemeihez közvetlenül is hozzá tudunk férni. Az így kialakított típust tömbnek5 is
nevezzük.
(
[ indextípus ) As elemtípus
_a
c) Sub MintaplO
Dim He't (6) As String * 10
5
A matematikában használt megnevezéssel egyezően.
- 8.64 -
8. Szoftverfejleszte's
—— tömbnév V FN
n—u
: indexérték "
O.—
8-65. sz. ábra: Indexes változó használatának szintaxisdiagramja
'r'r
dextípussal meg kell egyeznie. Az indexkifejezések számának l és a deklarált
dimenziószám közé kell esnie.
A tömbelemre hivatkozáskor az indexértékeknek a megadott maximális mére-
ten belül kell esniük
Felhasználói adattípusok
End Type
Például definiáljunk egy Személy típust.
Public Type Személy
Vezetéknév As String * 20
Keresztnév As String * 15
Szülidő As Variant
Kód As String *6
End Type
A létrehozott adattípust felhasználva alkalmazásunkban deklaráljuk a Hallgató
változót Személy tipusúként.
- 8.65 -
8. Szoftverfejlesztés
8.10.Pr0gramstruktúrák
Jegyzetünk Szabványosított programkonstrukciók részében foglalkoztunk a
szekvencia, döntés és iteráció különböző megvalósulásaival. Most tekintsük át
ezek Visual Basic programnyelvi megvalósitásait.
8.10.1. Szekvencia
Szintaktikája:
változónév : kifejezés
Pl. A:3
I:I—F2
Terület:A*A
_—8.66-
8. Szoftverfejlesztés
§ Kérjük be egy négyzet oldalát (az egyszerűség kedvéért egy egész számot),
majd számoljuk ki a kerületét és területét. lrassuk ki a kerület és terület érté-
ke't egy ablakba, külön sorbalcl
Sub négyzetO
Dim A, Terület, Kerület As Integer
A : InputBox(,,Kérem a négyzet oldalátl")
Kerület: 4 * A
Terület :A * A
eredményül.
Szintaktikája:
If feltétel Then Ha a feltétel igaz, akkor
§ Számoljuk ki a havi fizetés nettó értékét. Tegyük fel, hogy éves szinten
(
egyenletesen keresünk. Ha a fizetés (600 000/ 12), akkor 20%—ot vonunk le,
(
ha a fizetés (1 200 000/ 12) akkor 30%-ot, különben 40% a bruttó fizetésből
a levonás. Ezt a nettó értéket mutatjuk meg. Ennek megoldására egy egymás-
ba skatulyázott If— Else utasítássorozatot használtunklEl
A feladatmegoldás során használjuk az STR(számérték) függvényt, ami a szá—
mot szöveges (string) formára konvertálja.
- 8.67 -
8. Szoftvcrfejlesztés
Sub adóelőleg()
Dim fizetés, x As Long
Dim adó, nettó As Double
x : lnputBox("Havi fizetés")
Ifx ( 600000 / 12 Then
adó : 0.2
Else
Ifx ( 1200000/ 12 Then
adó : 0.3
Else
adó : 0.4
End If
End If
nettó :x * (1 - adó)
" 85
MsgBox ("Nettó érték: Str(nettó))
End Sub
Select Case A Select Case struktúra valósítja meg a kiválasztás III. és IV. esetét (lásd 8.7.
End Select fejezet). Az utasítás többszörös, Összetett IF utasítással kiváltható.
A CASE utasítás speciális szelekció, ahol a szelekció feltételei úgy fogalmaz—
hatók meg, hogy egy kifejezés a típusának megfelelően éppen melyik konstanst
veszi fel értékül. A tesztkifejezés a struktúra elején értékelődik ki. A kifejezés ér-
tékét hasonlítja össze a Case struktúra tesztlistájában szerepelő értékekkel. Az
egyezőség függvényében hajtja végre az utasítást.
Az utasítás Case Else ágára a kiválasztás IV. esténél van szükség, amikor a
Case struktúrában nem szereplő értékeket (egyéb eset) összevontan kezeljük,
Szintaktikája:
Select Case tesztkifejeze's
Case Mintal
utasítások. ..
Case Minta2
.. .. utasítások. ..
Case Else
utasítások. ..
End Select
—
8.68 -
8. Szoftverfejlesztés
B A beolvasott szöveg első karaktere alapján a munkanapok nevét, mint szöve-
get beteszi a nap változóba, majd kiírja. Nagybetűt, kisbetűt vizsgáljuk. Be—
tűk, amire figyelünk: h,k,s,c,p.El
Sub napok_case()
Dim kar As String * l
:
kár InputBox("Melyik nap?")
Select Case kar
Case "H", "h"
nap : "Hétfő"
Case "K", "k"
nap : "Kedd"
Case "S", "s"
:
nap "Szerda"
Case "C", "c"
nap : "Csütörtök"
Case "P", "p"
nap : "Péntek"
Case Else
" Hibás adat! "
MsgBox
nap : ""
End Select
MsgBox(,,A nap:" 84 nap)
End Sub
End Select
MsgBox (msg)
End Sub
- 8.69 -
8. Szoftverfejlesztés
8.10.4. Ciklusok
For Next A számláló ciklus egy speciális előlvizsgáló ciklus. E ciklusszerkezetet akkor
használjuk, ha ismerjük, hogy hányszor akarjuk végrehajtani az utasításokat. A
számláló (ciklusváltozó) határozza meg az utasítások végrehajtásának számát a
mettől a meddig és a lépésköz függvényében. Ha a lépésköz hiányzik, akkor alap-
értelmezésben annak értéke 1. így az ismétlések száma (meddig—mettől)/lépésköz
egész része. A lépésköz értéke negatív szám is lehet, de akkor a mettől értéke na-
gyobb kell legyen, mint a meddig értéke.
Szintaktikája:
For Számláló : Mettől To Meddig [Step lépésköz]
... utasítások. ..
Next Számláló
Határozzuk meg 3-tól (megadott értéktől kezdődően) sorban a ciklusváltozó érté-
két és négyzetét a 37 (megadott Végértékig), 3-as lépésközzel haladva. A C válto—
zóba írjuk folyamatosan a ciklusváltozó értékét, a D változóba pedig a négyzetét.
A megoldás számláló ciklussal történjen! E]
Sub Ciklusl()
For I
: 3 To 37 Step 3
C: C 8: str(l) 8L", ,,
Next ]
MsgBox(,,Ciklusváltozó: ,,
SL C 85 Chr(l3) 8c ,,Négyzete: ,, SL D)
End Sub
- 8.70 —
8. Szoftverfej lesztés
Az előltesztelő Do ...Loop ciklusszerkezet esetében a feltétel kiértékelésének Előltesztelő
eredményétől függően hajtódnak végre, illetve nem hajtódnak végre a ciklusutasí-
tások. Ennél a szervezési struktúránál az is előfordulhat, hogy egyszer sem kerül
végrehajtásra az utasításblokk. Ha egyszer végrehajtódott, akkor a vezérlés visz-
szaadódik a De While, vagy a Do Until utasítássorra, és kezdődik az újbóli kiérté-
kelés. Ebből következik, hogy mindig kell az utasításblokkban egy olyan utasítás—
nak lennie, ami a feltételben szereplő változó tartalmát változtatja.
Do While feltétel (:True) Do Until feltétel (:False)
Utasítások Utasítások
Loop Loop
A While kulcsszót használva, a feltétel : True értéke esetén kerülnek az utasí—
i
: i 4- 1
Loop
MsgBox(,,Az eredmény: ,, 85 összeg)
End Sub
szorzat: l
i: l
Do Until i
) lO
- 8.71-
8. Szoftverfejlesztés
szorzat : szorzat * i
i
: i -l- 1
Loop
MsgBox(,,Az eredmény: ,,
85 szorzat)
End Sub
Do Do
Utasítások Utasítások
Do
kocka : Int(Rnd() *
12) -l- 1
C: C str(kocka) 8: ", ,,
ők
Loop While i
(: 10
MsgBox(,,Kockadobások: ,, 85 C 8c Chr(l3) 8c ,,Az eredmény: ,,
8L számol)
End Sub
Do
- 8.72 -
8. Szoftverfejlesztés
kocka : Int(Rnd() * 12) 4- 1
C: C 62 str(kocka) 8c ", ,,
If kocka ) 9 Then számol : számol * 1
i
: t
i 1
Loop Until i
) 10
MsgBox(,,Kockadobások: ,, 85 C 85 Chr(13) 85 ,,Az eredmény: ,, SL számol)
End Sub
8.11. Vezérlőelemek
:,
!, ;
v
TabStrip
Görgetősáv
Karton
Léptetőgomb
§; [EI
Kép RefEdit
- 8.73 -
8. Szoftverfejlesztés
Választókapcsoló (OptionButton): A felkínált választási lehetőségek csoportjá—
ból időben mindig csak egy elem kiválasztására használható gomb. Olyankor
használjuk, amikor több lehetőség közül csak egy kiválasztását engedjük meg.
Kép (PictureBox): Vezérlőelem, amely képet ágyaz be, tálcaként szolgál külön—
böző információk elhelyezésére. Képi (*.bmp, *.jpg, *.ico, *.gif) információk fo-
gadására.
§ Hozzunk létre egy űrlapot (Négyzet területe felirattal). Jelenítsünk meg rajta
két feliratot: Négyzet oldala és Négyzet területe szöveggel. A harmadik cím-
ke a terület megjelenítésére szolgál (felirat nélkül, lblTerület néven). A négy-
zet oldalához egy beviteli mezőt vigyünk fel (txtOldal néven). Szokás szerint
űrlapunkra helyezzünk egy OK és egy Kilép gombotis. E]
Négyzet területe -
Négyzet oldalai ,
I 10.
Négyzet területe: r
_
_
Kilép; !
- 8.75 -
8. Szoftverfejlesztés
Hozzunk létre egy űrlapot, ahol pizzánkat megrendelhetjük. A pizza me'rete't
választókapcsolóval, a feltéteket pedig jelölőnégyzettel választhatjuk ki. lras-
suk ki egy címkén a választott pizza árát. Cl
Pizza rendelés
!"
i—(_
:
lblÁr.Caption —(0pt26.Value
200 Jr cthomba.Value * 150
*
4—
1000 opt32.Value * 1300 * chkSajt.Va1ue
4-
chkSonka.Va1ue * 200)
*
End Sub
Az egyes elemeknek van alapértelmezett tulajdonsága. Pl. címkének a Caption,
jelölőnégyzetnek és választókapcsolónak a Value. Ezért az utasításunk egysze-
rűbben is leírható:
Private Sub cmeK_C1ick()
:
lblÁr -(opt26 * 1000 * opt32
chkSonka * 200)
* 1300 * chkSajt * 200 -l- cthomba * 150 4-
End Sub
Ha szeretnénk, hogy már az egyes elemek választásakor kiszámításra kerüljön
és megjelenjen az ár, akkor a jelölőnégyzetek és választókapcsolók kattintásra
(Click) eseményéhez rendeljük hozzá a cmeK_Click parancsot. Például:
Private Sub opt26_Click()
cmeK_Click
End Sub
— 8.76 -
8. Szoftverfejlesztés
Pizza rendelés '
1350
;
Fizetendő:
— Méret --———————
;— Feltétek ——————————————
26 cm Tv"
G
-
(moon)
-
(nem) _
, !" Sonka (200 Ft)
§ Visual Basic szerkesztővel hozzuk létre az alábbi User Form űrlapot, a megfe—
lelő objektumokkal és a hozzájuk tartozó utasításokkal. Generáljunk 8 vélet-
len számot 0 és 100 között, ezek jelenjenek meg, egy Címke objektumon. Ha—
tározza meg igény szerinti sorrendben a generált számok közül a legkisebbet,
legnagyobbat, a kettő különbségét, átlagát. A különbséget csak akkor tudjuk
meghatározni, ha a minimumot és a maximumot már látjuk. Ha ezek nem tel—
jesülnek, adjunk figyelmeztetést. Új sorozat generálásakor töröljük le az elő-
ző eredményeketEl
íj Microsoft Visual Basic - Összefoglaló feladat űrlappalmls ' *f'f
;.
Elle Edit !,low [mert Fgmat Debug gun Iools Add-ms Mndow Help ví.
sans
!
'líl'n'd
Proiect—VBAPi—oiect
'
"DH—my
X
urd%—€§'ÉT§-iléi' §
:
Összefoglaló feladat űrlappalmls - űrlap (UserForm)
Y
El
aa Összefoglaló feladat
f—i
§ VBAProiect (Összefoglaló feladat űrlap
!; %t; Microsoft Excel objects
!] Munka! (Munka!)
!] mmz (MunkaZ)
. Munka3 (Munka3)
ThisWorkbook
-'-v if'f! Forms
űrlap
foi C; Modules
§ rá'?
Generál
'
_
..- un _x A.
_.
Properties - Cmdűeneral
'
ii
lCdeeneral CommandButton
;]
Alphabetic Icateoorlzed ]
Cdeeneral
AutoSize False
BackColor [] waomooom
Backstyle l —
meackStyleOpaclue
Cancel False
Caption Generál
Default False
Enabled True
.
Font l'ahoma
_'..l
ForeColor waoooomza
Cdeeneral
AutoSize False
BackColor [] aHsooooooFa
BackStyle 1 - meackStyleOpaclue
Cancel False
Caption Generál
Tulajdonságok beállítása
A Visual Basic szerkesztésénél a felhasználói felületen az objektumok, illetve
a munkaüizeten elhelyezett vezérlők (AktívX vezérlők) tulajdonságainak beállítá-
sa hasonló módon történik.
. F4 gyorsbillentyűvel.
A Properties aktivitás tartalomérzékeny, az aktuális Form, a kiválasztott
controljához, illetve a vezérlőelemhez tartozó Tulajdonságok tábla jelenik meg.
Például Properties — Cdeenerál. Nézzük meg egy kiválasztott objektumhoz,
amihez automatikusan hozzárendelődik egy tulajdonságkészlet beállított értékek-
kel. Nézzük meg az egyes részek funkcionális jelentését részletesebben!
- 8.78 -
8. Szoftverfejlesztés
' roperties —.Cdeeneral
IEdeeneral CommandButton 4————— Obj ektummező
X
Alphabetic lCategorized !
Tulajdon—
Cmcheneral Rendezési fülek
ság lista
False
Beállítási mezők
[! aHsooooooFa
1 - meackStyleOpaaue
False
Generál
.
Cancel False ControlTipText
Caption Generál ForeColor aHsuooootza
ControlTipText Visible True
Default False El Behavior
Enabled True AutoSize False
.
Font Tahoma Cancel False
ForeColor wennoomza Default False
Height 24 Enabled True
HelpContextID O Locked False
Left 6 TakeFocusOnClick True
Locked False WordWrap False
MouseIcon (Nene) El Font
MousePointer D - FmMousePointerDeFault Font Tahoma
Picture (None) El Misc
PicturePosition ? - FmPicturePositionAboveCentt Accelerator
TabIndex O HelpContextID D
'
- 8.79 —
8. Szoftverfejlesztés
. Tulajdonságlista
. Beállító mező
Tulajdonságlista az objektum választható tulajdonságainak listája. Minden
objektumnak más összetételű a listája, de természetesen vannak olyan tulajdonsá-
gok, melyek mindegyik része.
Beállító mező a tulajdonságlista egy adott tulajdonságeleméhez rendelt aktuá—
lis érték. A beállító mezőben beállíthatjuk, vagy szerkeszthetjük. Ezek a tulajdon—
ságértékek három csoportba sorolhatók
. Szabadon szerkeszthetők.
. (V) Legördülő listából válaszhatók, az eredeti érték megjelölésével.
. (...) Párbeszédpanel jelenik meg, a tulajdonságtól függ, milyen típusú fájl
hozzárendelését engedi meg.
Ugyanígy a címkék méretezését (60 x 72). A magasság azért 60, hogy két sorban
tudjuk kiírni a szöveget és a kiszámolt tartalmat. A középre igazítást is adjuk meg.
A címke objektumok betű (Font) tulajdonságát Times New Roman, 12-re állít—
§
-----
É Munkal (Munkal)
§É
§
8
'
""" MunkaS (MunkaS)
_
ThisWorkbook
Él %? Forms
űrlap
EEC] Modules
j.
!! Összefoglaló feladat űrlappaluls —
űrlap (Code)
[(Generalt :J !(Declal ationsl
'Összefüglalo feladat
Dim t[0 To 7) As Integer *Gene rált számok tömbje ü— tül T—ig, ez 8 elem
(Dim max, min As Integer
Private Sub CmdÁtlag_Click[)
Dim i, ossz As Integer
ossz : 0
For i : D To ?
ossz : ossz * tti]
Next
LblÁtlag.Caption : "Átlag" ; Chr(13] .; Str(Application.Round[ossz / s, 21;
End Sub
Next i
End Sub
Minimum A következő lépés, hogy kiszámoljuk, mennyi a legkisebb érték. Abból indu-
lunk ki, hogy az első érték a legkisebb, majd megnézzük a többi elemet. Ha talá-
lunk egy nála kisebbet, akkor az a legkisebb. Ellenőrizzük, hogy van-e a tömbben
érték.
—
8.82 -
8. Szoftverfejleszte's
min: t(0)
For i : 0 T0 7
]ft(z) ( min Then min : t(i)
Next i
Endlf
End Sub
Ugyanígy kell kiszámolnunk a legnagyobb értéket is. Mivel a műveletek na- Maximum
gyon hasonlítanak, használhatjuk a másolás (Copy) és beillesztés (Paste) jól be—
vált módszerét. Ne felejtsük el a neveket és a relációjeleket kijavítani!
Private Sub CmdMaximum_Click()
'Dim max As Integer már definiáltuk
—
— 8.83 —
8. Szoftverfejlesztés
Private Sub CmdÁtlag_Click()
Dim i, ossz As Integer
ossz :0
If t(0) : Empty Then
MsgBox ("Számokat generálj ! '?
Else
For : 0 T0
i 7
Generál !
_
Vége !
Eredmény: A Jr B
Eredmény kiírása
A Val(szöveg) függvényre azért van szükség, hogy az InputBox utasítással beol-
vasott szöveg formátumú számok szám értékét meghatározzuk. Ha elhagyjuk, ak—
"
MsgBox ("Eredmény: (% eredmény)
End Sub
8.2. Példa: Olvassuk be az egy adott személyre vonatkozó alábbi adatokat: Név,
Születési év, Jövedelme. írassuk ki a személy adatait, ha a személy 1956-ban szü-
letett.
8.3. Példa: Olvassuk be az egy adott személyre vonatkozó alábbi adatokat: Név,
Születési év, Neme, Jövedelme. lrassuk ki az adott személy nevét és születési
évét, ha az adott személy nő, a nevét és jövedelmét, ha férfi. Az adatok között a
feladatokban (a személyi számhoz hasonlóan) a férfiakat l—es, a nőket 2-es kód-
számmal jelöljük.
Név, Szülév, Nem, Jövedelem beolvasása
Ha Nem : 1 akkor
Név, Jövedelem kiírása
különben
Név, Szülév kiírása
(elágazás vége)
A feladatok leírásakor célszerű a szerkezet könnyebb áttekintése végett az össze—
tartozó utasításokat azonos szinten kezdeni. A tagolást tabulálással szemléltethet—
jük. Az elágazás végét nem kell külön jelölni, de most még a sematikus leírás és a
kód könnyebb összevetése miatt kiírjuk.
Sub döntés2()
Dím ne'v As String
Dim szülév As Integer
Dim neme As Byte
Dim jövedelem As Long
ne'v: InputBox( "Személy neve: '?
szülév : InputBox("Születe'sí éve: '?
neme : InputBox( "Neme: férji ] / nő 2) ")
—
8.86 —
8. Szoftverfejlesztés
8.4. Példa: Az AVF hallgatóinak adatait kívánjuk feldolgozni. Az alábbi adatok
ismertek: Név, Születési év, Evfolyam, Tanulmányi átlag. A hallgatók adatait év—
(elágazás vége)
A feladatot egy kisség leegyszerűsítettük. Nem különböző adathordozóra, hanem
különböző szöveget írunk ki. Ha űrlapon oldanánk meg a feladatot, akkor lehető—
ségünk lenne más-más címkére kiírni a különböző évfolyamos hallgatók adatait.
Sub döntésNO
Dim név As String
Dim szülév As Integer
Dim évf As Byte
Dim átlag As Double
név : InputBox( "Személy neve: '?
szülév : InputBox( "Születési éve: ')
évf : lnputBox( "Évfolyam száma: ')
átlag : InputBox("Átlaga: '?
Select Case e'vf
Case "] "
MsgBox ( "Kil'rás: ]. évfolyam '?
Case "2"
MsgBox ( "Kiírás: 2. évfolyam '?
Case "3 "
MsgBox ( "Kiírás: 3. évfolyam")
End Select
End Sub
- 8.87 -
8. Szoftverfejlesztés
ha 1, akkor kiírás: ,,1. évfolyam"
ha 2, akkor kiírás: ,,2. évfolyam"
ha 3, akkor kiírás ,,3. évfolyam"
különben kiírás ,,egyéb évfolyam"
(elágazás vége)
Az előző feladatnál csak azon hallgatóknál volt kiírás, akik az 1—2-3 évfolyamra
járnak. Ennél a feladatnál minden egyéb (pl. hibás begépelés) egy közös ágon ke-
rül kiírásra. Vegyük észre, hogy az évfolyamot definiálhatjuk számként (byte) és
szövegként (string) is.
Sub DöntéstülönbenO
Dim ne'v, évf As String
Dim szülév As Integer
Dim átlag As Double
név : InputBox( "Személy neve: '?
szülév : InputBox( "Születési éve: ")
Case "2"
MsgBox ( "Kz'írás: 2. évfolyam '?
Case "3"
MsgBox ( "Kiírás: 3. évfolyam ')
Case Else
MsgBox ( "K iírás: egyéb '?
End Select
End Sub
8.6. Példa: Adjuk meg a két természetes szám legnagyobb közös osztóját kiszá—
- 8.88 —
8. Szoüverfejlesztés
Ez egy előltesztelő ciklus. Úgyeljünk arra, hogy a programozási nyelvek a nem
egyenlő kifejezést a ()
jelekkel ábrázolják.
Sub előlvizsgálóO
Dim a, b, r As Integer
a : InputBox( szám: '9
"A
8.7 Példa: Adjuk meg a két természetes szám legnagyobb közös osztóját kiszámí-
tó Euklideszi algoritmust, hátulvizsgáló ciklussal.
Beolvasás a, b
Ciklus
r:amodb
a:b
b:r
amíg b nem 0
Ez egy hátultesztelő ciklus. Ekkor a művelet legalább egyszer végrehajtódik. Fel—
adatunkban a nem O kifejezés miatt a feltételt most megfordítottuk: amíg nem
igaz, hogy 0.
Sub Hátulvízsgálo'O
Dim a, b, r As Integer
a : 1nputBox( szám: '9
"A
b
: InputBox( "B szám: '?
Do
r:aM0db
a:b
b:r
Loop Until b :0
"
MsgBox ("A legnagyobb osztó: (% a)
End Sub
- 8.89 -
8. Szoftverfejlesztés
8.8. Példa: Adjuk össze az első 10 pozitív természetes számot.
Összeg legyen 0
Ciklus I: l-től lO-ig l-vel
Növeld az Összeg értékét I-vel
ciklus Vége
Ez egy számláló ciklus. A Next utasítás után nem kötelező odaírni az I változót,
mert ez az alapértelmezés. Szintén nem kell a lépésköz, ha l—vel lépünk.
Sub számlálóO
Dim i, összeg As Integer
összeg :0
Fori : I T0 10
összeg : összeg 4- i
Next i
8.9. Példa: Tervezzen egy menüvezérelt programot, amely egy háromszög, egy
kör, egy gömb és egy kúp jellegzetes adatait számítja ki. A felhasználóval párbe-
szédben készítse el az adatbevitelt a következő módon: a háromszög esetében a
három oldal, a kör és a gömb esetében a sugár, a kúp esetében az alap sugara és a
kúp magassága kerüljön megadásra. A feladathoz ismertek a kerület, felület, terü-
let és térfogat képletek.
Be menüválasztás (m)
m értékétől függően
ha 1
(háromszög)
Be a, b, c
kerület és terület kiszámítása, kiírása
ha 2 (kör)
Be r
kerület, terület kiszámítása, kiírása
ha 3 (gömb)
Be r
felület, térfogat kiszámítása, kiírása
ha 4 (kúp)
Be r, h
felület, térfogat kiszámítása, kiírása
különben
- 8.90 -
8. Szoüverfejlesztés
Ki ,,rossz választás)
(elágazás vége)
A feladat jelenlegi formájában csak egyszeri választást tesz lehetővé. Ha egy cik-
lusba zárnánk, akkor ismételt végrehajtást tenne lehetővé.
Sub MenüO
m : InputB0x("1. Háromszög" * Chr(13) *
Gömb" * Chr(l3) *
Kör" * Chr(13)
Kúp" Chr(13) * "Választása: 1-4")
"4. 4-
"2. 4- "3.
Select Case m
Case "[ "
'Háromszög
a : InputB0x( "a oldal: '9
b : InputBox( "b oldal: '9
kerület : 2 r *P
*
terület : r r *P
*
- 8.91-
8. Szoftverfejlesztés
s :Sar(r *r—Fh *h)
felület: *r *s) 4- (P *r *r)
(P
térfogat: r *r *P/3
MsgBox ( "Felület: " ők ői "
Te'lfogat: "
felület (fc térfogat)
Case Else
MsgBox ("Rossz választás. '9
End Select
End Sub
FIB(2): 1
fzb(1) : ]
jib(2) : 2
For : i n 3 To
Nexti
Fori :] To n
"
MsgBox (i (§ ". elem: áfib(i))
Next z'
End Sub
8.11. Példa: Olvassuk be egy n elemű tömb adatait úgy, hogy az első adat a tömb
elemszámát tartalmazza, az azt követő 11 adat pedig a tömbelemek értékét. Az
elemszám 0 és 20 közé essen.
Ciklus
n beolvasása
- 8.92 -
8. Szoftverfejlesztés
amíg 04n420 nem lesz
Ciklus l: l—től n-ig
Tömb(i) beolvasása
Ciklus I: l-től n—ig
Tömb(i) kiírása
Ennél a feladatnál három ciklust is használunk. Az adatbeolvasás ellenőrzésére
általában hátulvizsgáló ciklust használunk. A számláló ciklusokat adott elemszá-
mú tömbök feldolgozására alkalmazzuk.
Sub BeolvasásO
Dim tömb(O To 20) As Integer
Do
n : 1nputBox("Elemszám, max. 20: '?
Loop Until (n ) OAndn ( 20)
For i : ] To n
tömb(i) : InputBox( "Elem értéke: ")
Next i
For i : ] To n
MsgBox (i dí ". elem: " á tömb(w
Next i
End Sub
- 8.93 —
8. Szoftverfejlesztés
Dim válasz As Boolean
Dim tömb(O To 20) As Integer
N : lnputBox("Elemszám: '?
Fori : ] To N
tömb(i) : lnputBox( "Elem értéke: ")
Next í
: True
válasz
Fori : ] To N —
]
Iftömb(i * I) (: tömb(i) Then válasz : False
Next i
If válasz Then
Fori : ] To N
tömb(i) : lnputBox( "Elem értéke: '?
Next i
szám :0
Fori : ] To N
Iftömbű) Mod2 : 0 Then szám : szám 4—
]
Next i
— 8.94 —
8. Szoftverfejleszte's
MsgBox (,,Párosok száma: ,,
őz szám)
End Sub
For i : T0 n1
Fori : I T0 n
If Min : tömbú) Then
Szám : Szám ] 4—
hely(Szám) : i
End If
Next i
"
MsgBox ("Szám: (fc Szám)
Fori :] To Szám
" ói
MsgBox ( "Helye: hely(ü)
Next i
End Sub
Next i
Forh:1T0n—1 'Rendezés
For k :h 4- ] To n
IfX(k) ) X(h) Then
u : X(k)
X(k) : X(h)
X(h) : u
Endlf
Next k
Next h
Fori : ] To n 'Kiírás
MsgBox (l' á ". elem: " (?:
X(z))
Nexti
End Sub
n beolvasása
Ciklus I: l-től n-ig
A(i) beolvasása
X beolvasása
I: 1
J: n
0 legyen hamis
Ciklus
K: (I % J) X
2
Ha A(K) : X akkor
- 8.97 -
8. Szoftverfejlesztés
0 legyen igaz
különben
Ha A(K) ( X akkor
1
:K 4- 1
különben
J :K — 1
Next 1"
j:n
4 : False
Do 'Cíklus eleje
k : (i —l-j)X 2
- 8.98 -
8. Szoftverfejlesztés
8.18. Példa: Készítsünk programot egy M x N-es (M sorból és N oszlopból álló)
kétdimenziós tömb sorösszegeinek megállapítására.
n, m beolvasása
Ciklus I: l-től m-ig
Ciklus J: l—től n-ig
tömb(i,j) beolvasása
Ciklus I: l—től m-ig
SUM(i) ürítése
Ciklus J: l—től n—ig
Forí : I T0 m
For j : ] To n
tömb(í, j) : InputB0x(i áj (fc ", " (§ ", Elem értéke."?
Next j
Next i
For i
: ] T0 m 'Összegzés
SUM(I) : 0
For j : ] To n
SUM(i) : SUM(i) -l—
tömöm/)
Next j
"
MsgBox (i dí ". sor összege: (fc SUM(i))
Next i
End Sub
tömb(i,j) beolvasása
Ciklus J: l-től n-ig
-899-
8. Szoftverfejlesztés
MAXG) ürítése
Ciklus I: l—től m—ig
Fori : T0 m 1
For j : I T0 n
tömb(i, j) : InputBox(i áj ők ", " (% ". Elem értéke:")
Next j
Next i
- 8.100 -
8. Szoüverfejlesztés
C(iJ) : C(íJ) * A(Lh) *
Büki)
Ciklus I: l-től m-ig
Ciklus J: l-től l-ig
C(i,j) kiírása
Sub MátrixszorzásO
Dim A(O To 20, 0 To 20) As Integer
Dim B(0 To 20, 0 To 20) As lnteger
Dim C(O To 20, 0 To 20) As Integer
m : InputBox( "M' '? 'Beolvasás
n : InputBox( "N : K: ")
Fori : ] To m
For j : ] To n
A(i, j) : InputBox(í á ", "
á j őz ". A tömbelem értéke: '?
Next j
Next i
Fori : ] To k
For j : I T0 !
Fori : ] To m 'Kiz'rás
For j : ] To !
MsgBox (i di ", " (§ j (§ ". tömbelem értéke: " ói
C(i, j))
Next j
Next !"
End Sub
—8.101-
8. Szoftverfejlesztés
Az en szamologepem 25]
' -
,. —
1. szám
! 3
i"
[
§
M"velet ,__,___V____,
(" Összeadás
]
!
1
"7
!
!
2. szám i
i
i
(: Kivonás '
..
"m'—"_
l
- Opcmk ***" _
F Szorzás
l— egész
(' Osztás
.
. Felirat
. Beviteli mező
. Keret
. Jelölő négyzet
' Választókapcsoló
. Parancsgomb
A jelölő négyzetet és választó kapcsolót Keretbe (Frame) foglaljuk. Az egyes
vezérlőelemek nevét, megjelenési formáját a feladatnak megfelelően módosítsuk.
A kód elkészítéséhez használjuk mintaként az előző feladatokat.
-8.102-
8. Szoftverfejlesztés
A. A változónevek tartalmazhatnak betűket, számokat, pont (.) és felkiáltójel
(!) karaktereket.
Összeg: l , BE szam
Szam)0
N l
összeg2összeg*2
KI negatív szamzszam-l
érték
szasz
KI összeg
—8.lO3—
8. Szoftverfejlesztés
7:
összeg ]
BE szam
KI negatív N
érték
l
összeg :összeg*2
szamzszam- 1
KI összeg
A
c.) írja meg a Visual Basic programot rá!
Sub Hf()
Összeg :1
:
Szám InputBox ,,Kérem a számot!"
)
If Szám 0 Then
Do
:
Összeg Összeg * 2
:
Szám Szám - l
Loop Until Szám 0:
Else
MsgBox( "Negatív érték")
End If
MsgBox(,,Eredmény: ,, 8L Összeg)
End Sub
d.) Milyen feladatot old meg a leírás?
5. Mit old meg a következő feladat?
Sub FeladatO
Dim x As Integer
:
x InputBox("Adjon meg egy számot!")
Select Case x
Case l
MsgBox "A megadott szám: 1"
Case 2
MsgBox " A megadott szám: 2"
-8.lO4-
8. Szoftverfejlesztés
Case 3
" A megadott szám: 3"
MsgBox
Case Else
MsgBox " A megadott szám nem: 1, 2, vagy 3"
End Select
End Sub
6. lrja át a Case szerkezetet If szerkezetekre! Hasonlítsa össze a kétféle eljárást!
lf x : l then
MsgBox "A megadott szám: 1"
else
lf x : 2 then
MsgBox "A megadott szám: 2"
else
If x : 3 then
MsgBox "A megadott szám: 3"
else
" A megadott szám nem: 2, vagy 3"
MsgBox 1,
end if
end if
end if
8.14.Webes parancsfájlok
-8.105-
8. Szoftverfejlesztés
A Microsoft Visual Basic Scripting Edition (VBScript) vagy JavaScript
nyelven írt programok egyaránt hozzáadhatók a Microsoft Office dokumentumai-
hoz.
, Makrók. .. Alta-FB
. Új makró
Biztgnság.
rögzüése. ..
. .
a
[% :
!ísual Basic szerkesztő
Micrpsoft'gcri'pt Editor ,
Albi-Flt
Alttíhifltm
-8.106-
8. Szoftverfejlesztés
Munk—dual] —
Mluumlt Sumi ldllol —
Munka!
(nem! mulna:o-"utn:schem-microsott-com:office:office"
*
*
xmlns:x-"uzn:schem-mxcrosutt—com:ottweuxcel"
xmln:-"hbtpz//wvv.v3.ozg/TR/REC—htm140")
(head)
(meta hccp—eguw-Contenc—Type connenc-"uxclhnml: chusec-uindowa-lzsu")
(maca name-Prowld concent-Exceláheec)
(menu name-theracor content-"Hictoantt Excel ID")
(% ld-Haín—Fue rel-Hatn—Fil:
(WE ::L-File-Lxs: hrez-tilelxst.xmb
hiret-"..IHunka-fuzeclmtm")
rel-Edin-Time-Ducn hrer-edicduamsa)
(AZ-!!)?
(%
(aus)
(elzsnylesheec hretnatylesheecxss)
[] Tau: ( '-—£abl':
E ""le FN
D %,.pr
__
?
epen):
(Inso—ama layed—der:nnal—separator :
mao—dxspiayed—chcusand—separator;
"X
"
,
"::
":
mlm-o- ?
l
..-,
(lscyle)
(fu:
(n--
'supporn'l'ahünrlp))(script language-"JavaScript")
;
1
function tnUpdaceTnbs ()
'
(
;! (parent.v1ndnu.g iIEVEK)'4) (
: hasat MNE maps:
it (patent. .document:.:eadyscaze--"complete ,. "."—MGM"
ax
parencJumeat'nTabs']
VBScrlot
EG .documenc.zeadyScate--"complece")
,a
!
_
else n'"— !
Lim—m
'
i
)
l
alv' , ,. " - -
!
Bow !Em—
, '
" ' ' '
'
Hx'lnl, (oli
-8.107-
Irodalomjegyzék
INFORMATIKA
7. Szoftverfejlesztés — Visual Basic
írták: Lévayné Lakner Mária
Molnár István
Orbán Anna
2003
8. SZOFTVERFEJLESZTÉS 8.1
8.10. PROGRAMSTRUKTÚRÁK
............................................................................................. 8.66
8. 10. l . Szekvencia ....................................................................................................... 8. 66
8.1 1. VEZÉRLÖELEMEK
...................................................................................................... 8.73
8. ll l
. . Címke e's szövegmező ...................................................................................... 8. 74