1 Mivel foglalkozunk a laborokon? 7. hét: Do-Loop-Until Do-Until-Looptömbök Function 7. hét: Do-Loop-Until és Do-Until-Loop ciklusok. Egy indexes tömbök, fájlból olvasás. Function. 8. hét: Function paraméteres Sub. Tömbök 8. hét: Function és paraméteres Sub. Tömbök(2) 9. hét: VBA makrók 9. hét: VBA makrók rögzítése és testreszabása 10. hét: Nov. 11. oktatási szünet a TDK konferencia miatt!! 11. hét: 11. hét: Gyakorlás a 2. géptermi beszámolóra 12. hét, nov. 25: 12. hét, nov. 25: 2. géptermi beszámoló
Sub kobok_H2U() k = 1: Cells(k, 1) = "x" Cells(k, 2) = "x köbe" x = InputBox("x?") Do k = k + 1: Cells(k, 1) = x Cells(k, 2) = x ^ 3 x = x + 1 Loop Until x > 8 End Sub Sub kobok_H1W() k = 1: Cells(k, 1) = "x" Cells(k, 2) = "x köbe" x = InputBox("x?") Do k = k + 1: Cells(k, 1) = x Cells(k, 2) = x ^ 3 x = x + 1 Loop While x <= 8 End Sub 2 Start Kiír: „x” „x köbe” megad: x kiír: x, x 3 x=x+1 x<=8 ? igen nem Stop Do - Loop While Do - Loop While ciklus hátul tesztelő ciklusok Start Kiír: „x” „x köbe” megad: x kiír: x, x 3 x=x+1 x>8 ? nem igen Stop Do – Loop Until Do – Loop Until ciklus
3 elől tesztelő ciklusok Start Kiír: „x” „x köbe” megad: x kiír: x, x 3 x=x+1 x<=8 ? igen nem Stop Sub kobok_E1W() k = 1: Cells(k, 1) = "x" Cells(k, 2) = "x köbe" x = InputBox("x?") Do While x <= 8 k = k + 1: Cells(k, 1) = x Cells(k, 2) = x ^ 3 x = x + 1 Loop End Sub Do While - Loop Do While - Loop ciklus Start Kiír: „x” „x köbe” megad: x kiír: x, x 3 x=x+1 x>8 ? nem igen Stop Sub kobok_E2U() k = 1: Cells(k, 1) = "x" Cells(k, 2) = "x köbe" x = InputBox("x?") Do Until x > 8 k = k + 1: Cells(k, 1) = x Cells(k, 2) = x ^ 3 x = x + 1 Loop End Sub Do Until - Loop Do Until - Loop ciklus
4 3 Első: 1, -2, 2 Második: 3, 0, 4 Egyindexes tömbök, fájlból olvasás A feladat a KetVektor.txt fájl adatainak (2 db 3 dimenziós vektornak) a beolvastatása, majd a vektorok skalárszorzatának kiszámítása és kiiratása az alábbiak szerint: Sub Vektorok() Dim a#(3), b#(3), cim$(2) Dim a#(3), b#(3), cim$(2), Skal#, n%, k% Open "KetVektor.txt" For Input As #1 Input #1, n, cim(1) Cells(1, 1) = cim(1): Skal = 0 For k = 1 To n Input #1, a(k) Input #1, a(k): Cells(1, k + 1) = a(k) Next k Input #1, cim(2) Input #1, cim(2): Cells(2, 1) = cim(2) For k = 1 To n Input #1, b(k) Input #1, b(k): Cells(2, k + 1) = b(k) Skal = Skal + a(k) * b(k) Next k Close #1 Cells(4, 1) = "skalárszorzat=": Cells(4, 2) = Skal End Sub Tömbök „dimenzionálása” Fájl megnyitásaFájl bezárása Adatok beolvasása fájlból
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:
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
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 A függvényhívást a megfelelő típusú kifejezésbe lehet írni Function f(x#) As Double f = x ^ * x + 8 * Cos(x + 1) - x / (x + 2) End Function A függvénynek típusa van, itt: “ As Double ” Nevének értéket kell adni: “ f = … ” A függvény neve: f formális paramétere: x