1 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:
2 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
3 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 Függvényhívást kifejezés helyére 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
4 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…
5 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
6 Tömbök fix indexhatárral, lokális és globális változók Öt vektor mindegyikét szeretnénk megszorozni egy adott vektorral… Option Explicit 'A modul globális változói Dim a#(5, 3), b#(3) 'A modul globális változói Function Function skal(sor%, n%) As Double 'A skal Function lokális változói Dim sum#, i% 'A skal Function lokális változói sum = 0 For i = 1 To n : sum = sum + a(sor, i) * b(i) : Next i skal = sum End Function Sub sokvektor Sub sokvektor() 'A főprogi lokális változói Dim c#(5), k%, j%, cim$, ures 'A főprogi lokális változói OpenFor Input As #1 Open "adat.txt" For Input As #1 Input #1, cím Input #1, cím : Cells(6, 1) = cim Input #1, b(1), b(2), b(3) For k = 1 To 3 Cells(k + 1, 5) = b(k) Next k ‘Az adatfájl üres sorának kezelése Input #1, ures ‘Az adatfájl üres sorának kezelése For j = 1 To 5 For k = 1 To 3 Input #1, a(j, k) Input #1, a(j, k) : Cells(j, k) = a(j, k) Next k Next j Close #1 For j = 1 To 5 skal(j, 3) c(j) = skal(j, 3) : Cells(j, 7) = c(j) Next j Cells(3, 4) = "*": Cells(3, 6) = "=": Cells(6, 1) = cim End Sub skalárszorzatok 1,0,1 1,3,2 -2,0,6 1,1,1 0,0,5 -3,1,4 Az adat.txt fájl A kiiratások Beolvasás fájlból
7 Ha csak lokális változókat használunk… Sub Sub sokvektor() Dim a#(5, 3), b#(3), c#(5), k%, j% OpenFor Input As #1 Open "adat.txt" For Input As #1 ‘ Itt beolvassuk a és b elemeit Close #1 For j = 1 To 5 skal(j, a, b, 3) c(j) = skal(j, a, b, 3) Cells(j, 7) = c(j) Next j End Sub Functionx#(), y#(), 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 skalárszorzatok 1,0,1 1,3,2 -2,0,6 1,1,1 0,0,5 -3,1,4 Az adat.txt fájl A kiiratások A vektorok azonosítóit is föl kell venni föl kell venni a paraméterek listájára