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