BME VEGYSZMRNKI S BIOMRNKI KAR Mszeres Analitikai Kmia
BME VEGYÉSZMÉRNÖKI ÉS BIOMÉRNÖKI KAR Műszeres Analitikai Kémia Szakirányú Továbbképzési Szak INFORMATIKA (GYAKORLATI SZÁMÍTÁSTECHNIKA) 2016. tavaszi félév Tanár: Kollárné Dr. Hunek Klára, (kollarne@mail. bme. hu) Szervetlen és Analitikai Kémia Tanszék, Ch. I/9 tárgy honlapja: http: //goliat. eik. bme. hu/~kollarne/szakmern 1
Programozás • a program az utasításokat sorban hajtja végre, kivéve…. (ld. később) • pontosan olyan, mintha egy könyvet olvasnánk, amiben le van írva, hogy sorjában mit kell tennünk éppen most, beleértve, hogy hova lapozzunk a következő teendő elolvasásához • kicsit kínai, de meg lehet szokni • sokféle kínai van, de ha egyet ismer az ember, az nagyon segít a többi megismerésében • a programozás filozófiáját érdemes megtanulni 2
A múlt heti VBA program - 1 A blokkdiagram: A VBA program: Sub elso() Dim A As Double, D#, c#, s As Integer A = Input. Box("A? ", , 1. 83) D = Input. Box("D=? ", "add meg az értéket") Cells(2, 3) = "I(lin)": Cells(2, 4) = "hiba„ s=3 ide: c = Cells(s, 1) Cells(s, 3) = A * c + D Cells(s, 4) = 1 - Cells(s, 3) / Cells(s, 2) Amit a program kiírt s=s+1 If s <= 10 Then Go. To ide End Sub 3
A múlt heti VBA program - 2 VBA program felépítése: Sub <neve> ( ) <esetleg deklarációk> <utasítások> End Sub A deklaráció a változók típusát adja meg: Sub elso() Dim A As Double, D#, c#, s As Integer A = Input. Box("A? ", , 1. 83) D = Input. Box("D=? ", "add meg az értéket") Cells(2, 3) = "I(lin)": Cells(2, 4) = "hiba" s=3 ide: c = Cells(s, 1) Cells(s, 3) = A * c + D Cells(s, 4) = 1 - Cells(s, 3) / Cells(s, 2) s=s+1 If s <= 10 Then Go. To ide End Sub Ha pl. a és b számok, és értékük 1 ill. 2, akkor a+b kifejezés értéke 3 lesz. De ha a ás b típusa string, és értékük „ 1” ill. „ 2”, akkor a+b értéke „ 12” lesz. 4
Változók, típus, műveletek, értékadás A programban fontos a változó típusa (műveletek eredménye függ a típustól!) egész : integer tört: single, double szöveg: string pl. ha x egész és x=5/2, akkor 2 lesz x értéke pl. ha y tört és y=5/2, akkor 2. 5 lesz y értéke de pl. „nótás”/2 nem lesz „félnótás”… Matematikai alapműveletek x=1+2 y=18 -2*x x=y/24 String műveletek ha s=”osztogat”, akkor s=”f”+s (vagy s=”f”&s) után s=„fosztogat” Értékadó utasítás: Változó = Kifejezés Értéket adhatunk az Excel munkalap egy cellájának is: Cells(sor, oszlop) = Kifejezés cellájából is: Változó = Cells(sor, oszlop) 5
feltételesen végrehajtandó utasítás és feltételes utasítás Az X értékek (mindkét esetben): 2 , -4 , 3 , -1 megad: X , kiír: X igen Y = X*X X páros ? igen Y = X*X nem Y=X+8 kiír: Y IF <log. kif. > THEN <utasítás> Kiírás: (2, 4) ; (-4, 16 ) ; (3, 16 ) ; (– 1, 16 ) kiír: Y IF <log. kif. > THEN <ut. 1> ELSE <ut. 2> Kiírás: (2, 4 ) ; (-4, 16 ) ; (3, 11 ) ; (-1, 7 ) 6
Visual Basic for Excel – elméleti összefoglaló Változók típusai, kifejezések, értékadó, feltételes, átirányító utasítások Néhány alaptípus: Integer Single Double String Boolean Date % ! # $ Típus deklarálása nem kötelező, de nagyon ajánlott! Alapműveletek: + - * / ^ (aritmetikai) And Or Not (logikai) Reláció jelek: = < > <= >= <> Aritmetikai kifejezés: a*a*a*a - 81 Logikai kifejezés: a*b<0 Értékadás: változó = kifejezés Pl: b = a^4 - 81 Egy feltételes utasítás: If x < 4 Then a = 4 -x : b = a+1 Beolvasás-1: Else x=Cells(1, 3) a = x-4 : b = a-1 End If Beolvasás-2: Átirányító utasítás: x=Input. Box(”x? ”, , 4) Go To <cimke> Kiiratás-1: Cells(1, 3)=x Kiiratás-2: Msg. Box(”x= ”+CStr(x)) 7
Hátul tesztelő ciklus If – Then – Go. To <cimke> szerkezettel Két ZH átlagának kiszámítása n hallgató esetén. start megad: n k=1 Visual Basic program részlet megad: NEV, Z 1 , Z 2 ZH=(Z 1+Z 2)/2 kiír: NEV , ZH k=k+1 igen k<=n ? nem vége n=Input. Box(“n=? ”): k=1 Uj. Nev: NEV=Input. Box(“NEV=? ”) Z 1=Input. Box(“Z 1=? ”) Z 2=Input. Box(“Z 2=? ”) ZH=(Z 1+Z 2)/2 : Cells(k, 1)=NEV Cells(k, 2)=ZH : k=k+1 If k<=n Then Go. To Uj. Nev hátul tesztelő ciklus 8
Hátul tesztelő ciklus Do – Loop – While szerkezettel Két ZH átlagának kiszámítása n hallgató esetén. start megad: n k=1 Visual Basic program részlet megad: NEV, Z 1 , Z 2 ZH=(Z 1+Z 2)/2 kiír: NEV , ZH k=k+1 igen k<=n ? nem vége n=Input. Box(“n=? ”): k=1 Do NEV=Input. Box(“NEV=? ”) Z 1=Input. Box(“Z 1=? ”) Z 2=Input. Box(“Z 2=? ”) ZH=(Z 1+Z 2)/2 : Cells(k, 1)=NEV Cells(k, 2)=ZH : k=k+1 Loop While k<=n hátul tesztelő ciklus 9
Hátul tesztelő ciklus Do – Loop – Until szerkezettel Két ZH átlagának kiszámítása n hallgató esetén. start megad: n k=1 Visual Basic program részlet megad: NEV, Z 1 , Z 2 ZH=(Z 1+Z 2)/2 kiír: NEV , ZH k=k+1 nem k>n? igen vége n=Input. Box(“n=? ”): k=1 Do NEV=Input. Box(“NEV=? ”) Z 1=Input. Box(“Z 1=? ”) Z 2=Input. Box(“Z 2=? ”) ZH=(Z 1+Z 2)/2 : Cells(k, 1)=NEV Cells(k, 2)=ZH : k=k+1 Loop Until k>n hátul tesztelő ciklus 10
Elől tesztelő ciklus If – Then – Go. To <cimke> szerkezettel Két ZH átlagának kiszámítása n hallgató esetén. start elől tesztelő ciklus megad: n k=1 Visual Basic program részlet nem k<=n ? igen megad: NEV, Z 1 , Z 2 ZH=(Z 1+Z 2)/2 kiír: NEV , ZH k=k+1 vége n=Input. Box(“n=? ”): k=1 Ujnev: If k<=n Then NEV=Input. Box(“NEV=? ”) Z 1=Input. Box(“Z 1=? ”) Z 2=Input. Box(“Z 2=? ”) ZH=(Z 1+Z 2)/2 : Cells(k, 1)=NEV Cells(k, 2)=ZH : k=k+1 Go to Ujnev End If
Elől tesztelő ciklus Do – While – Loop szerkezettel Két ZH átlagának kiszámítása n hallgató esetén. start elől tesztelő ciklus megad: n k=1 Visual Basic program részlet nem k<=n ? igen megad: NEV, Z 1 , Z 2 ZH=(Z 1+Z 2)/2 kiír: NEV , ZH k=k+1 vége n=Input. Box(“n=? ”): k=1 Do While k<=n NEV=Input. Box(“NEV=? ”) Z 1=Input. Box(“Z 1=? ”) Z 2=Input. Box(“Z 2=? ”) ZH=(Z 1+Z 2)/2 : Cells(k, 1)=NEV Cells(k, 2)=ZH : k=k+1 Loop
Elől tesztelő ciklus Do – Until – Loop szerkezettel Két ZH átlagának kiszámítása n hallgató esetén. start elől tesztelő ciklus megad: n k=1 Visual Basic program részlet igen k>n? nem megad: NEV, Z 1 , Z 2 ZH=(Z 1+Z 2)/2 kiír: NEV , ZH k=k+1 vége n=Input. Box(“n=? ”): k=1 Do Until k > n NEV=Input. Box(“NEV=? ”) Z 1=Input. Box(“Z 1=? ”) Z 2=Input. Box(“Z 2=? ”) ZH=(Z 1+Z 2)/2 : Cells(k, 1)=NEV Cells(k, 2)=ZH : k=k+1 Loop
Elől tesztelő ciklus Do – While – Loop és For – To – Next szerkezettel n=Input. Box(“n=? ”) k=1 Do While k<=n NEV=Input. Box(“NEV=? ”) Z 1=Input. Box(“Z 1=? ”) Z 2=Input. Box(“Z 2=? ”) ZH=(Z 1+Z 2)/2 : Cells(k, 1)=NEV Cells(k, 2)=ZH k=k+1 Loop n=Input. Box(“n=? ”) For k=1 To n NEV=Input. Box(“NEV=? ”) Z 1=Input. Box(“Z 1=? ”) Z 2=Input. Box(“Z 2=? ”): ZH=(Z 1+Z 2)/2: Cells(k, 1)=NEV Cells(k, 2)=ZH Next k A kétféle ciklusnak megfelelő Visual Basic program részlet
1. HF 1. Készítsen Hurok 1 nevű VBA programot az itt megadott blokkdiagram alapján. A programban használt összes változót deklarálja, a beolvasások Input. Box-szal történjenek, a „hurok” leírásához If-Then és Go. To utasításokat használjon. A programban az „m=0” karakterlánc kiírása a Msg. Box(”m=0”) utasítással, a többi kiiratás az alábbi táblázatok szerint, egy-egy munkalap celláiba történjék. Az alábbi táblázatban látható kiírások a hiba és az x input adatok 0, 000001 ill. -2 értékeinek felelnek meg. A fenti táblázatban látható kiírások a hiba és az x input adatok 0, 000001 ill. -1 értékeinek felelnek meg. 2. Készítsen másolatot a Hurok 1 programról, nevezze át Hurok 2 -re, majd írja át úgy, hogy a „hurok” leírásához Do – Loop While utasítást használjon. A programot egészítse ki a Cells(1, 3)= ”Hurok 2” utasítással, valamint a saját nevének a D 1 cellába való kiiratásával. A megoldás Sajat. Nev. xlsm fájlként legkésőbb máj 16 -án küldendő el a kollarne@mail. bme. hu címre.
- Slides: 15