bsc sz ámítástechnika 2008 tavaszknight.kit.bme.hu/sztechbscx2008/sztechbsccross_02.pdf · ©...
TRANSCRIPT
©© Papp EszterPapp Eszter 2008 tavasz2008 tavasz
BSc SzBSc Száámmííttáástechnikastechnika
2008 tavasz2008 tavasz
Visual Basic elmVisual Basic elmééleti alapok 2.leti alapok 2.
©© Papp EszterPapp Eszter 2008 tavasz2008 tavasz
AnyagAnyag
http://www.kit.bme.hu/http://www.kit.bme.hu/
vagyvagy
http://http://knight.kit.bme.hu/knight.kit.bme.hu/ (egyel(egyelőőre itt)re itt)
a a BSc SzBSc Száámmííttáástechnika 2008 tavaszstechnika 2008 tavasz alattalatt
©© Papp EszterPapp Eszter 2008 tavasz2008 tavasz
Mai nap: VB elmMai nap: VB elméélet 2.let 2.
�� TTöömbmböökk
�� Ciklusok (For..Next, Do..Loop)Ciklusok (For..Next, Do..Loop)
�� FeltFeltéételek telek éés els eláágazgazáásoksok
�� Mire jMire jóó a Function?a Function?
�� BeolvasBeolvasáás, kis, kiííratratááss
�� IDE IDE éés Object Browsers Object Browser
©© Papp EszterPapp Eszter 2008 tavasz2008 tavasz
TTöömbmböökk
�� MiMiéért?rt?
Bizonyos Bizonyos éértrtéékeket egykeket együütt szeretntt szeretnéénk tnk táárolni,rolni,
�� pl. egy adatsor elemeit, egy vektor xpl. egy adatsor elemeit, egy vektor x--yy--z koordinz koordinááttááit it stb.stb.
�� fontos: azonos tfontos: azonos tíípuspusúú éértrtéékekrkekrőől van szl van szóó, ,
pl. mindegyik szpl. mindegyik száám, vagy csupa szm, vagy csupa szöövegveg
©© Papp EszterPapp Eszter 2008 tavasz2008 tavasz
TTöömbmböök tk tíípusaipusai
Mint a vMint a vááltozltozóóknknáál:l:
�� Integer, Long (egInteger, Long (egéész)sz)
�� Single, Double (tSingle, Double (töörtszrtszáám)m)
�� String (szString (szööveg)veg)
�� Boolean (igazBoolean (igaz--hamis)hamis)
A tA tíípus a tpus a töömbben tmbben táárolt rolt éértrtéékeket jellemzi, pl. egy keket jellemzi, pl. egy Integer tInteger töömbben csupa egmbben csupa egéész szsz száám lehetm lehet
©© Papp EszterPapp Eszter 2008 tavasz2008 tavasz
TTöömbmböök dimenzik dimenzióóii
DimenziDimenzióó: kiterjed: kiterjedééss……
�� 1D t1D töömb: sor mb: sor [1.00; 2.82; 3.63; 4.11; 100.75]�� 2D t2D töömb: tmb: tááblbláázat [1 2 3 4 5zat [1 2 3 4 5
10 20 30 40 5010 20 30 40 508 5 1 3 9]8 5 1 3 9]
pl. itt 3 sor pl. itt 3 sor éés 5 oszlop s 5 oszlop ––> 3*5> 3*5--öös ms máátrixtrix�� 3D t3D töömb: kockamb: kocka�� 4D, 5D, 6D... (ritka)4D, 5D, 6D... (ritka)
©© Papp EszterPapp Eszter 2008 tavasz2008 tavasz
TTöömb deklarmb deklaráácicióó
�� Szintaxis (Szintaxis („„helyeshelyesíírrááss””):):
Dim MyArray(100) As Single
Dim My2DArray(3,5) As Integer
�� mmááskskéépp:pp:
Dim MyArray(1 to 25) As Single
Dim My2DArray(3, 8 to 12) As Integer
©© Papp EszterPapp Eszter 2008 tavasz2008 tavasz
TTöömb elemeimb elemei
�� a benne ta benne táárolt rolt éértrtéékekkek
�� index azonosindex azonosíítja tja őőket (hket (háányadik elem)nyadik elem)
MyElement = MyArray(12)
�� MyElement egy megfelelMyElement egy megfelelőő ttíípuspusúú vvááltozltozóó
�� a MyArray ta MyArray töömbben kell lennie 12mbben kell lennie 12--es indexes indexűű elemnekelemnek
�� ha nincs: ha nincs: ‘‘Subscript out of rangeSubscript out of range’’
©© Papp EszterPapp Eszter 2008 tavasz2008 tavasz
ÉÉrtrtéékadkadáás ts töömbmböökbenkben
�� Legyen az 5Legyen az 5--öös indexs indexűű elem elem éértrtééke 8.314:ke 8.314:
MyArray(5) = 8.314
�� SzSzööveges tveges töömbnmbnéél:l:
MyStringArray(7) = ”béka”
Mindig használnom kell az indexet, hiszen valahogy meg kell adnom, melyik elemre gondolok…
�� TTöömb feltmb feltööltltéése elemekkel: ciklusse elemekkel: ciklus
�� tipikusan For .. Nexttipikusan For .. Next
©© Papp EszterPapp Eszter 2008 tavasz2008 tavasz
CiklusokCiklusok
�� MiMiéért kell?rt kell?bizonyos utasbizonyos utasííttáásokat ismsokat isméételtetni szeretnteltetni szeretnéékk
�� FajtFajtáái:i:
� For .. Next ----> adott, hogy h> adott, hogy háányszor ismnyszor isméétltlőődjdjöön n pl. 25pl. 25--szszöör r íírja ki, hogy rja ki, hogy ””Hello, World!Hello, World!””
� Do .. Loop ----> addig ism> addig isméétel, amtel, amííg a megadott feltg a megadott feltéétel tel teljesteljesüüllpl. ampl. amííg van adat a fg van adat a fáájlban, addig olvasjlban, addig olvas
©© Papp EszterPapp Eszter 2008 tavasz2008 tavasz
For .. NextFor .. Next
�� pontosan tudom, hogy az ismpontosan tudom, hogy az isméétlendtlendőő rréészt szt hháányszor kell vnyszor kell véégrehajtani (pl. 25grehajtani (pl. 25--szszöör)r)
�� pl. egy 25 elempl. egy 25 eleműű ttöömb feltmb feltööltltéése 5se 5--ttőől 29l 29--ig:ig:
For Index = 1 To 25
MyArray(Index) = Index + 4
Next Index
©© Papp EszterPapp Eszter 2008 tavasz2008 tavasz
For .. NextFor .. Next
�� Szintaxis:Szintaxis:
For Count = 1 To 25
[utasítás1]
[utasítás2]
...
[utasításN]
Next Count
Count: ciklusv: ciklusvááltozltozóó, , éértrtééke egyeske egyeséével nvel nöövekszikvekszik
©© Papp EszterPapp Eszter 2008 tavasz2008 tavasz
For .. NextFor .. Next
�� LLééptetptetéés felfels felfeléé kettesketteséével: vel: Step 2
�� lefellefeléé hháármasrmasáával: val: Step -3
For Count = 1 To 30 Step 2 ’15-ször fut le
[utasítás1]
[utasítás2]
...
[utasításN]
Next Count
©© Papp EszterPapp Eszter 2008 tavasz2008 tavasz
Do .. LoopDo .. Loop
�� nem tudom elnem tudom előőre megmondani, hre megmondani, háányszor fog nyszor fog lefutni az ismlefutni az isméétlendtlendőő rréészsz
�� hogy kellhogy kell--e me méég ismg isméételni, azt egy felttelni, azt egy feltéétel tel teljesteljesüülléése alapjse alapjáán dn dööntntööm elm el
1.1. elelööltesztelltesztelőő
�� While / UntilWhile / Until
2.2. hháátulteszteltultesztelőő
�� While / UntilWhile / Until
©© Papp EszterPapp Eszter 2008 tavasz2008 tavasz
ElElööltesztelltesztelőő Do .. LoopDo .. Loop
�� While While éés Until: ellents Until: ellentéétes jelenttes jelentéés !s !
Do While Area<=5
[utasítások]
Loop
Do Until Area>5
[utasítások]
Loop
©© Papp EszterPapp Eszter 2008 tavasz2008 tavasz
HHáátulteszteltultesztelőő Do .. LoopDo .. Loop
�� While While éés Until: ellents Until: ellentéétes jelenttes jelentéés !s !
Do
[utasítások]
Loop While Area<=5
Do
[utasítások]
Loop Until Area>5
©© Papp EszterPapp Eszter 2008 tavasz2008 tavasz
EgymEgymáásbasbaáágyazott ciklusokgyazott ciklusok
�� KKéét vagy tt vagy tööbb ciklus egymbb ciklus egymáás belsejs belsejéében:ben:
Do Until Error < 0.001
[utasítás1]
For Count = 1 To 100
[utasítások]
Next Count
[további utasítások]
Loop
©© Papp EszterPapp Eszter 2008 tavasz2008 tavasz
FeltFeltéételek kezeltelek kezeléésese
�� FeltFeltéétel lehet igaz vagy hamis: True/Falsetel lehet igaz vagy hamis: True/False
�� vagy lehet 3, 4, 5 vagy lehet 3, 4, 5 …… varivariáácicióó ----> el> eláágazgazááss
�� Mikor mit hasznMikor mit hasznáálunk?lunk?
�� igaz/hamis lehet igaz/hamis lehet ----> > If..Then..ElseIf..Then..Else
�� 33--4 vari4 variáácicióó ----> > If..Then..ElseIf..ElseIf..Then..ElseIf..Else
�� ttööbb varibb variáácicióó ----> > Select CaseSelect Case
©© Papp EszterPapp Eszter 2008 tavasz2008 tavasz
If..Then..ElseIf..Then..Else
If x<=5 Then ‘ha a feltétel igaz
[utasítások]
Else ‘ha a feltétel hamis (vagyis x>5)
[más utasítások]
End If
©© Papp EszterPapp Eszter 2008 tavasz2008 tavasz
Egysoros If..Then..ElseEgysoros If..Then..Else
EgyszerEgyszerűű esetekben:esetekben:
If x<=5 Then [utasítás1] Else [utasítás2]
©© Papp EszterPapp Eszter 2008 tavasz2008 tavasz
If..Then..ElseIf..ElseIf..Then..ElseIf..Else
If x<2 Then
[utasítások1]
ElseIf x<4 Then
[utasítások2]
ElseIf x<6 Then
[utasítások3]
Else ‘ha eddig semmi sem teljesült
[utasítások4]
End If
©© Papp EszterPapp Eszter 2008 tavasz2008 tavasz
EljEljáárráások sok éés fs füüggvggvéényeknyek
�� EljEljáárráás: Subs: Sub
�� FFüüggvggvéény: Functionny: Function
�� Az alapvetAz alapvetőő kküüllöönbsnbséég: vang: van--e visszate visszatéérréési si éértrtéékk
�� nincs nincs ----> Sub (> Sub (öönnáállllóó program)program)
�� van, pl. egy szvan, pl. egy száám m ----> Function (pl. t> Function (pl. tééglalap terglalap terüületletéét t szszáámolja)molja)
�� a Function egy ja Function egy jóól behatl behatáárolt feladatra valrolt feladatra valóó, a , a Sub Sub ááltalltaláában nagyobb ban nagyobb éés teljes programs teljes program
©© Papp EszterPapp Eszter 2008 tavasz2008 tavasz
KommunikKommunikáácicióó
Sub
Function
Mennyi egy 2*3-as téglalap területe?
6
Egyik sem tud semmit a másik belsejéről (pl. milyen változókat használ, mit hogyan számol stb.). Ebből a szempontból olyanok, mint két külön program.
©© Papp EszterPapp Eszter 2008 tavasz2008 tavasz
EljEljáárráás (Sub)s (Sub)
Sub MyProgram()
[utasítások]
End Sub
©© Papp EszterPapp Eszter 2008 tavasz2008 tavasz
FFüüggvggvéény (Function)ny (Function)
Function Area(a As Single, b As Single) As Single
Area = a * b
End Function
HHíívváás a Subs a Sub--bbóól:l:
Dim Result As Single
Dim x As Single, y As Single
x = 2.5
y = 3.5
Result = Area(x,y)
©© Papp EszterPapp Eszter 2008 tavasz2008 tavasz
FFáájlkezeljlkezelééss
�� ffáájl megnyitjl megnyitáásasa
�� olvasolvasáás a fs a fáájlbjlbóól / l / íírráás a fs a fáájlbajlba
�� ffáájl bezjl bezáárráásasa
�� txt ftxt fáájlokat fogunk hasznjlokat fogunk hasznáálnilni
�� csak megnyitjuk, olvasunk belcsak megnyitjuk, olvasunk belőőle le éés bezs bezáárjukrjuk
©© Papp EszterPapp Eszter 2008 tavasz2008 tavasz
FFáájl megnyitjl megnyitáása sa éés bezs bezáárráásasa
Dim FileNum as Integer
FileNum = FreeFile
Open ”MyText.txt” For Input As #FileNum
[itt pl. kiolvassuk az adatokat]
Close #FileNum
Vagy:Vagy:
Open ”MyText.txt” For Input As #1
[...]
Close #1
©© Papp EszterPapp Eszter 2008 tavasz2008 tavasz
FFáájlbjlbóól olvasl olvasááss
Open ”MyText.txt” For Input As #1
Do While Not EOF(1)
Input #1, x, y
...
Loop
Close #1
EOF: End Of File rEOF: End Of File röövidvidííttéésese
�� igaz/hamis igaz/hamis éértrtééket ad visszaket ad vissza
�� zzáárróójelben: a fjelben: a fáájl sorszjl sorszáámama
©© Papp EszterPapp Eszter 2008 tavasz2008 tavasz
KiKiííratratáás Excel cells Excel celláábaba
Cells(Sor,Oszlop)=Cells(Sor,Oszlop)=””HellHellóó, Vil, Viláág!g!””
©© Papp EszterPapp Eszter 2008 tavasz2008 tavasz
InputBox()InputBox()
BeBeééppíített VB ftett VB füüggvggvéény (Function)ny (Function)MyString = InputBox(Prompt, Title, Default)
String vString vááltozltozóó KKéérdrdéés Cs Cíím Alapm Alapéért.rt.éértrtéékk
©© Papp EszterPapp Eszter 2008 tavasz2008 tavasz
VB for Excel IDE VB for Excel IDE
�� Project ExplorerProject Explorer
�� objektumok: munkalapok, kobjektumok: munkalapok, kóódmodulokdmodulok……
�� Properties WindowProperties Window
�� munkatermunkaterüületlet
�� Object BrowserObject Browser
�� Modul beszModul beszúúrráása: Insert sa: Insert --> Module> Module
©© Papp EszterPapp Eszter 2008 tavasz2008 tavasz
A VB tA VB tíízparancsolata :)zparancsolata :)1. Thou Shalt comment heavily. Not only on the first throug1. Thou Shalt comment heavily. Not only on the first through sixth days, but h sixth days, but
even on the seventh day, thou shalt comment thy code.even on the seventh day, thou shalt comment thy code.
2. Thou shalt name thy variable with sensible names. Names like iAccountNum, sLastName, these shalt thou use, and thou shalt avoid confusing names like I, x, and s.
3. Thou shalt not use the latest technology or buzzword with3. Thou shalt not use the latest technology or buzzword without some good out some good reason and a good understanding of it.reason and a good understanding of it.
4. Thou shalt write easy to read code with good indentations.
5. Thou shalt use proper naming conventions for all controls5. Thou shalt use proper naming conventions for all controls and variables.and variables.
6. Thou shalt Always use the “Option Explicit”.
7. Thou shalt avoid nested loops that are too deep.7. Thou shalt avoid nested loops that are too deep.
8. Thou shalt strive to create code that other programmers can read and understand.
9. Thou shalt strive for a user friendly interface.9. Thou shalt strive for a user friendly interface.
10. Thou shalt go forth and program fruitfully!!
©© Papp EszterPapp Eszter 2008 tavasz2008 tavasz
JJöövvőő hhééten ugyanitt:)ten ugyanitt:)
[8:30[8:30--kor VB elmkor VB elméélet diger(!)]let diger(!)]