BSc Számítástechnika 2008 tavasz Visual Basic elméleti alapok 2.
© Papp Eszter
2008 tavasz
Anyag http://www.kit.bme.hu/ vagy http://knight.kit.bme.hu/
(egyelőre itt)
a BSc Számítástechnika 2008 tavasz alatt
© Papp Eszter
2008 tavasz
Mai nap: VB elmélet 2.
Tömbök Ciklusok (For..Next, Do..Loop) Feltételek és elágazások Mire jó a Function? Beolvasás, kiíratás IDE és Object Browser
© Papp Eszter
2008 tavasz
Tömbök
Miért? Bizonyos értékeket együtt szeretnénk tárolni,
pl. egy adatsor elemeit, egy vektor x-y-z koordinátáit stb. fontos: azonos típusú értékekről van szó, pl. mindegyik szám, vagy csupa szöveg
© Papp Eszter
2008 tavasz
Tömbök típusai Mint a változóknál:
Integer, Long (egész)
Single, Double (törtszám)
String (szöveg)
Boolean (igaz-hamis)
A típus a tömbben tárolt értékeket jellemzi, pl. egy Integer tömbben csupa egész szám lehet © Papp Eszter
2008 tavasz
Tömbök dimenziói Dimenzió: kiterjedés…
1D tömb: sor [1.00; 2.82; 3.63; 4.11; 100.75] 2D tömb: táblázat [1 2 3 4 5 10 20 30 40 50 8 5 1 3 9] pl. itt 3 sor és 5 oszlop –> 3*5-ös mátrix 3D tömb: kocka 4D, 5D, 6D... (ritka)
© Papp Eszter
2008 tavasz
Tömb deklaráció
Szintaxis („helyesírás”): Dim MyArray(100) As Single Dim My2DArray(3,5) As Integer
másképp: Dim MyArray(1 to 25) As Single Dim My2DArray(3, 8 to 12) As Integer
© Papp Eszter
2008 tavasz
Tömb elemei
a benne tárolt értékek index azonosítja őket (hányadik elem) MyElement = MyArray(12)
MyElement egy megfelelő típusú változó
a MyArray tömbben kell lennie 12-es indexű elemnek
ha nincs: ‘Subscript out of range’
© Papp Eszter
2008 tavasz
Értékadás tömbökben
Legyen az 5-ös indexű elem értéke 8.314: MyArray(5) = 8.314
Szöveges tömbnél: MyStringArray(7) = ”béka”
Mindig használnom kell az indexet, hiszen valahogy meg kell adnom, melyik elemre gondolok…
Tömb feltöltése elemekkel: ciklus
tipikusan For .. Next
© Papp Eszter
2008 tavasz
Ciklusok
Miért kell? bizonyos utasításokat ismételtetni szeretnék
Fajtái:
For .. Next --> adott, hogy hányszor ismétlődjön pl. 25-ször írja ki, hogy ”Hello, World!” Do .. Loop --> addig ismétel, amíg a megadott feltétel teljesül pl. amíg van adat a fájlban, addig olvas
© Papp Eszter
2008 tavasz
For .. Next
pontosan tudom, hogy az ismétlendő részt hányszor kell végrehajtani (pl. 25-ször) pl. egy 25 elemű tömb feltöltése 5-től 29-ig: For Index = 1 To 25 MyArray(Index) = Index + 4 Next Index
© Papp Eszter
2008 tavasz
For .. Next
Szintaxis: For Count = 1 To 25 [utasítás1] [utasítás2] ... [utasításN] Next Count
Count: ciklusváltozó, értéke egyesével növekszik © Papp Eszter
2008 tavasz
For .. Next
Léptetés felfelé kettesével: Step 2 lefelé hármasá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 Eszter
2008 tavasz
Do .. Loop
nem tudom előre megmondani, hányszor fog lefutni az ismétlendő rész hogy kell-e még ismételni, azt egy feltétel teljesülése alapján döntöm el 1.
elöltesztelő
2.
While / Until
hátultesztelő
© Papp Eszter
While / Until
2008 tavasz
Elöltesztelő Do .. Loop
While és Until: ellentétes jelentés !
Do While Area<=5 [utasítások] Loop Do Until Area>5 [utasítások] Loop © Papp Eszter
2008 tavasz
Hátultesztelő Do .. Loop
While és Until: ellentétes jelentés !
Do [utasítások] Loop While Area<=5 Do [utasítások] Loop Until Area>5 © Papp Eszter
2008 tavasz
Egymásbaágyazott ciklusok
Két vagy több ciklus egymás belsejé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 Eszter
2008 tavasz
Feltételek kezelése
Feltétel lehet igaz vagy hamis: True/False vagy lehet 3, 4, 5 … variáció --> elágazás Mikor mit használunk?
igaz/hamis lehet --> If..Then..Else
3-4 variáció
--> If..Then..ElseIf..Else
több variáció
--> Select Case
© Papp Eszter
2008 tavasz
If..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 Eszter
2008 tavasz
Egysoros If..Then..Else Egyszerű esetekben: If x<=5 Then [utasítás1] Else [utasítás2]
© Papp Eszter
2008 tavasz
If..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 Eszter
2008 tavasz
Eljárások és függvények
Eljárás: Sub Függvény: Function
Az alapvető különbség: van-e visszatérési érték
nincs --> Sub (önálló program) van, pl. egy szám --> Function (pl. téglalap területét számolja)
a Function egy jól behatárolt feladatra való, a Sub általában nagyobb és teljes program
© Papp Eszter
2008 tavasz
Kommunikáció Sub Mennyi egy 2*3-as téglalap területe?
Function 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 Eszter
2008 tavasz
Eljárás (Sub) Sub MyProgram() [utasítások] End Sub
© Papp Eszter
2008 tavasz
Függvény (Function) Function Area(a As Single, b As Single) As Single Area = a * b End Function
Hívás a Sub-ból: Dim Result As Single Dim x As Single, y As Single x = 2.5 y = 3.5 Result = Area(x,y) © Papp Eszter
2008 tavasz
Fájlkezelés
fájl megnyitása olvasás a fájlból / írás a fájlba fájl bezárása txt fájlokat fogunk használni csak megnyitjuk, olvasunk belőle és bezárjuk
© Papp Eszter
2008 tavasz
Fájl megnyitása és bezárása Dim FileNum as Integer FileNum = FreeFile Open ”MyText.txt” For Input As #FileNum [itt pl. kiolvassuk az adatokat] Close #FileNum
Vagy: Open ”MyText.txt” For Input As #1 [...] Close #1 © Papp Eszter
2008 tavasz
Fájlból olvasás Open ”MyText.txt” For Input As #1 Do While Not EOF(1) Input #1, x, y ... Loop Close #1
EOF: End Of File rövidítése
igaz/hamis értéket ad vissza
zárójelben: a fájl sorszáma
© Papp Eszter
2008 tavasz
Kiíratás Excel cellába Cells(Sor,Oszlop)=”Helló, Világ!”
© Papp Eszter
2008 tavasz
InputBox() Beépített VB függvény (Function) MyString = InputBox(Prompt, Title, Default) String változó
© Papp Eszter
Kérdés
Cím
Alapért.érték
2008 tavasz
VB for Excel IDE
Project Explorer
objektumok: munkalapok, kódmodulok…
Properties Window munkaterület Object Browser Modul beszúrása: Insert -> Module
© Papp Eszter
2008 tavasz
A VB tízparancsolata :) 1.
Thou Shalt comment heavily. Not only on the first through sixth days, but 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 without some good 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 controls and variables.
6.
Thou shalt Always use the “Option Explicit”.
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.
10. Thou shalt go forth and program fruitfully!! © Papp Eszter
2008 tavasz
Jövő héten ugyanitt:) [8:30-kor VB elmélet diger(!)]
© Papp Eszter
2008 tavasz