1 ANALITIKAI KÉMIAI SZAKMÉRNÖKI TANFOLYAM INFORMATIKA (SZÁMÍTÁSTECHNIKA) 2007/2008. őszi félév Tanárok: Kollárné Dr. Hunek Klára, Papp Eszter, Szervetlen és Analitikai Kémia Tanszék, tárgy honlapja: és :
2 Előadás: jan. 24-én 8:15-10:30 (CH. Gépterem, mindkét csoportnak) Gyakorlatok (CH. gépterem): A csop.: jan :00-14:00 ; 14:45-17:00 és 17:15-18:45 B csop.: jan :15-11:15 ; 11:30-13:45 és 14:30-16:00 Követelmények A géptermi gyakorlatok gyakorló feladatainak megoldása A komplex szakmai feladat legalább 40%-os szinten (min. 40p, max 100p.) történő megoldásával megajánlott vizsgajegy szerezhető, amely a két házi feladat beadásával (max. 5 p/HF) beadásával javítható A komplex szakmai feladattal ill. a kijelölt hf beadásokkal szerzett félévközi pontok alapján a megajánlott vizsgajegyek ponthatárai: 40 – 59 pont: 2 ; 60 – 74 pont: 3 ; 75 – 89 pont: 4 ; 90 ponttól: 5
3 MS Office részei Ezekkel foglalkozunk
4 Az Ms Excel részei: Worksheet (Munkalap) Diagram (Ábra-lap) Modul (Modul-lap) UserForm (Űrlap)
5 Egy kis Excel emlékeztető Excel alapjai: Cellák típusa, szegély, háttérszín Munkalap létrehozása, átnevezése Adatfájl betöltése, tizedesvessző! Grafikon készítése: Diagram varázsló Pont XY ( Grafikon !) Tengelyek (feliratok, skála) Adatsor hozzáadás Adatsor törlés
6 ProgramozásProgramozá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
7 Egy „programocska” A VBA program: Amit a program kiír A blokkdiagram: Start Kiír: „x” „x köbe” x=2 kiír: x, x 3 x=x+1 x<=8 ? igen nem Stop
8 Egy „programocska” Sub ( ) End Sub VBA program felépítése: Amit a program kiír A deklaráció a változók típusát adja meg: 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.
9 VáltozókVáltozók változókA program az adatokat változókban tárolja papírfecnik (pl. kis papírfecnik, amikre számokat/betűket írunk) axpl. ha a=2, akkor x=a^3-15 = -7 byvagy, pl. ha b=8, akkor y=3*b/2 = 12 a, b,változóta számítógép az a, b, vagy bármely más változót mindig az értékével helyettesíti akkor is, ha nem adtunk neki értéket, csak akkor nem tudjuk, milyen értékkel…
10 A számítógép szempontjából fontos a változó típusa a műveletek miatt –egész : integer –tört: single, double –szöveg: string xxxpl. ha x egész és x=5/2, akkor 2 lesz x értéke yyypl. 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”… VáltozókVáltozók
11 MűveletekMűveletek Matematikai alapműveletek x=1+2 y=18-2*x x=y/24 String műveletek ha s=„osztogat”, akkor s=„f”+s után s=„fosztogat” Kiiratás cells(1,1)=„Sziasztok!!” Adatbeolvasás cellából A=cells(1,1)
12 Deklarációk: Sub () Dim k As Integer, n% Dim cim As String, nevem$ Dim a As Double, b # cim=“mi ez?” : nevem=“Jancsi” k=3 : n=k-15 a=atn(1) b=cos(4*a)+2.5 End Sub Adatbevitel: x = Inputbox(“x?”) y = Inputbox(“y értéke”) Adatbevitel és konverzió: x = CDbl(Inputbox(“x?”)) y = CInt(Inputbox(“y értéke”)) Visual Basic for Excel – elméleti összefoglaló
13 Két ZH átlagának kiszámítása n hallgató esetén. elől tesztelő ciklus hátul tesztelő ciklus megad: n k=1 megad: NEV, Z1, Z2 ZH=(Z1+Z2)/2 kiír: NEV, ZH k=k+1 k<=n ? vége start nem igen Melyiknél mi történik, ha n=0 ? Ciklusok start megad: n k=1 k<=n ? nem vége igen megad: NEV, Z1, Z2 ZH=(Z1+Z2)/2 kiír: NEV, ZH k=k+1
14 For To - Next ciklus elől tesztelő ciklus n=InputBox(“n=?”) FOR k=1 TO n NEV=InputBox(“NEV=?”) Z1=InputBox(“Z1=?”) Z2=InputBox(“Z2=?”): ZH=Z1/2+Z2/2 Cells(k,1)=NEV : Cells(k,2)=ZH NEXT k Visual Basic program részlet start megad: n k=1 k<=n ? nem vége igen megad: NEV, Z1, Z2 ZH=(Z1+Z2)/2 kiír: NEV, ZH k=k+1 Két ZH átlagának kiszámítása n hallgató esetén. Ciklusok
15 Do - Loop While ciklus hátul tesztelő ciklus megad: n k=1 megad: NEV, Z1, Z2 ZH=(Z1+Z2)/2 kiír: NEV, ZH k=k+1 k<=n ? vége start nem igen n=InputBox(“n=?”): k=1 Do NEV=InputBox(“NEV=?”) Z1=InputBox(“Z1=?”) Z2=InputBox(“Z2=?”) ZH=Z1/2+Z2/2 : Cells(k,1)=NEV Cells(k,2)=ZH : k=k+1 Loop While k<=n Visual Basic program részlet Két ZH átlagának kiszámítása n hallgató esetén. Ciklusok
16 Do While - Loop ciklus n=InputBox(“n=?”): k=1 Do While k<=n NEV=InputBox(“NEV=?”) Z1=InputBox(“Z1=?”) Z2=InputBox(“Z2=?”) ZH=Z1/2+Z2/2 : Cells(k,1)=NEV Cells(k,2)=ZH : k=k+1 Loop Visual Basic program részlet Két ZH átlagának kiszámítása n hallgató esetén. Ciklusok start megad: n k=1 k<=n ? nem vége igen megad: NEV, Z1, Z2 ZH=(Z1+Z2)/2 kiír: NEV, ZH k=k+1 elől tesztelő ciklus
17 Függvények használata – az első függvénynél a formulát háromszor be kell írni, rendre az x, x+h, x-h argumentumokkal, – a második függvénynél az új (feltételes utasítást is tartalmazó) formulát ismét mindhárom helyen be kell írnunk. Példa: A [0;50] intervallumot n=100 részre osztva h=0,5 lépéssel minden x (belső) osztóponthoz kiszámítandó f(x) és Ha nem használunk Function-t: A feladatot az alábbi két függvényre kell elvégezni:
18 Függvények használata Sub szelo() Dim n%, h#, x#, i% n = 100: h = 0.5 x = 0 For i = 2 To 100 x = x + h Cells(i, 1) = x Cells(i, 2) = f(x) Cells(i, 3) = (f(x + h) - f(x - h)) / (2 * h) Next i End Sub Function f(x#) As Double f = x ^ * x + 8 * Cos(x + 1) - x / (x + 2) End Function Function g(x#) As Double If x < 20 Then g = Exp(x - 20) + 2 * Sin(2 * x - 40) Else g = 5.4 * x / (x + 5) End If End Function Sub szelo() Dim n%, h#, x#, i% n = 100: h = 0.5 x = 0 For i = 2 To 100 x = x + h Cells(i, 1) = x Cells(i, 2) = g(x) Cells(i, 3) = (g(x + h) - g(x - h)) / (2 * h) Next i End Sub
19 Függvények használata Function f(x#) As Double f = x ^ * x + 8 * Cos(x + 1) - x / (x + 2) End Function A függvénynek típusa van: “ As Double ” Azonosítójának értéket kell adni: “ f = … ” Sub szelo() Dim n%, h#, x#, i% n = 100: h = 0.5 x = 0 For i = 2 To 100 x = x + h Cells(i, 1) = x Cells(i, 2) = f(x) Cells(i, 3) = (f(x + h) - f(x - h)) / (2 * h) Next i End Sub Függvényhívást kifejezés helyére lehet írni
20 Egy Function-nak több paramétere is lehet… Sub tobbvaltozo() Dim suly#, j% suly = 1.5 For j = 3 To 8 Cells(j, 1) = suly Cells(j, 2) = eger("kandur", suly) Cells(j, 3) = eger("cica", suly) suly = suly Next j End Sub Function eger(macska$, kg#) As Integer If macska = "kandur" Then eger = CInt(kg * 3.6) Else eger = CInt(kg * 2.4) End If End Function Kandúrok és cicalányok napi egérfogyasztása testsúlyuk szerint…
21 Egy Function-nak lokális változói is lehetnek… Öt vektor mindegyikét szeretnénk megszorozni a hatodik vektorral… Sub sokvektor() Dim a#(5, 3), b#(3), c#(5), k%, j% Open "adat.txt" For Input As #1 ‘ Itt beolvassuk a és b elemeit Close #1 For j = 1 To 5 c(j) = skal(j, a, b, 3) Cells(j, 7) = c(j) Next j End Sub Function skal(sor%, x#(), y#(), n%) As Double Dim sum#, i% sum = 0 For i = 1 To n sum = sum + x(sor, i) * y(i) Next i skal = sum End Function
22 Macska-egér példa Függvénnyel Sub tobbvaltozo() Dim suly#, j% suly = 1.5 For j = 3 To 8 Cells(j, 1) = suly Cells(j, 2) = eger("kandur", suly) Cells(j, 3) = eger("cica", suly) suly = suly Next j End Sub Function eger(macska$, kg#) As Integer If macska = "kandur" Then eger = CInt(kg * 3.6) Else eger = CInt(kg * 2.4) End If End Function Sub eger (macska$, kg#, n%) If macska = "kandur" Then n = CInt(kg * 3.6) Else n = CInt(kg * 2.4) End If End Sub Sub tobbvaltozo() Dim suly#, j%, db% suly = 1.5 For j = 3 To 8 Cells(j, 1) = suly Call eger("kandur", suly, db): Cells(j, 2) =db Call eger("cica", suly, db): Cells(j, 3) =db suly = suly Next j End Sub és Eljárással