Utworzenie funkcji użytkownika w Visual Basic Po co? Potrzebna jest nam funkcja, która nie występuje w Excelu. Zadanie 1. Utwórz funkcję użytkownika kotek, która będzie funkcją dwóch zmiennych b i h i będzie opisana wzorem: 3 bh kotek ( b, h) = 1 Rozwiązanie Zadania 1. Pisanie funkcji zaczynamy od Function [nazwa funkcji] i w nawiasie definiujemy jej zmienne czyli (b, h) Przypominam, że instrukcje pisane od apostrofu są tekstem nie kolidującym z kodem programu Oczywiście piszemy w utworzonym Module Function kotek(b, h) Definiujemy zmienną, czyli tak naprawdę wzór funkcji kotek kotek = b * h ^ 3 / 1 No i koniec czyli End Function
Wywołanie funkcji kotek sposób pierwszy z menu programu tu można również podać adresy komórek ze zmiennymi zamiast wartości
Wywołanie funkcji kotek sposób drugi pisząc funkcję w komórce z podaniem wartości zmiennych po średniku
Zadanie. Utwórz funkcję użytkownika ola, która będzie funkcją dwóch zmiennych x i i oraz będzie opisana wzorem: ola ( x, i) x = 1+ i i Rozwiązanie Zadania. Pisanie funkcji zaczynamy tak samo jak poprzednio Function ola(x, i) Przed zdefiniowaniem zmiennej czyli naszej funkcji dobrze by było się zabezpieczyć przed dzieleniem przez 0 wtedy, gdy i=0 najszybciej zrobimy to poprzez funkcję If, symbol <> oznacza różny od If i<>0 Then ola = ( 1 + x / i ) ^ i ola = 0 opcjonalnie można dodać to, oznacza to o przewidywaniu programisty msgbox Wybierz inną wartość i, ponieważ nie mogę dzielić przez 0 oczywiście zakończenie polecenia If End Function Oczywiście wszystkie funkcje można pisać po sobie w jednym Module.
Wywołanie funkcji ola sposoby jak poprzednio dodatkowo sprawdzenie działania Teraz podstawiamy i=0
Dopiero po kliknięciu OK, w funkcji pojawia nam się wartość 0 (ale może również pojawić się symbol nieoznaczony ;??? ; - lub cokolwiek co będzie zaprogramowane)
Zadanie 3. funkcja w funkcji Utwórz funkcję użytkownika burek, która będzie funkcją dwóch zmiennych x i N oraz będzie wykorzystywała funkcję ola. Funkcje są opisane wzorami: Rozwiązanie Zadania 3. ola burek ( x, i) x = 1+ i N ( x, N ) = ola( x, i) Mamy funkcję w funkcji, ale dlaczego w funkcji burek nie definiujemy zmiennej i? dlatego, że i zmienia się od wartości 1 do N co 1, ponieważ funkcja burek jest ciągiem Function burek (x, N) znowu, zabezpieczamy się przed ciekawskimi, którzy będą chcieli obliczyć sumę 153434434 wyrazów ciągu czyli If N>0 And N<100 Then następnie wprowadzamy pętlę For, co oznacza mniej więcej tyle, że to, co jest w pętli będzie wykonywane aż do spełnienia następującego warunku For i=1 To N suma ciągu równa się starej wartości sumy powiększonej o nowy, kolejny wyraz ciągu burek = burek + ola (x, i) zakończamy pętlę poleceniem Next Next skoro użyliśmy polecenia If, musimy wprowadzić jego drugi człon czyli co, gdy N>100 lub N<0 Msgbox Podaj N z zakresu (0,100) dodatkowo czyścimy wartość funkcji burek = End Function i= 1 i
Sprawdzenie działania funkcji
Teraz podajemy N spoza zakresu (0,100) Po wciśnięciu OK, wartość funkcji jest czyszczona, inaczej pozostałby poprzedni wynik funkcji, który może czasami wprowadzić w błąd
Zadanie 4. Utwórz funkcję użytkownika, która będzie sprawdzać położenie punktu o współrzędnych x, y względem okręgu o współrzędnych środka x 0, y 0 i promieniu r w punkcie oraz będą informować o położeniu punktu. Przydatny wzór: ( x x ) + ( y y ) = oraz warianty do ropzatrzenia: 1. ( x x ) + ( y y ) < - punkt leży wewnątrz okręgu 0 0 r 0 + y y0 r x x = - punkt leży na okręgu. ( ) ( ) 0 + y y0 r 3. ( ) ( ) 0 0 r x x > - punkt leży na zewnętrz okręgu Przykładowe rozwiązanie zadania 4. Jedyna nowość operator Or czyli jeśli jeden lub drugi warunek będzie spełniony to Function okrag1(x_0, y_0, x, y, r) If r < 0 Or r = 0 Then okrag1 = "???" MsgBox "Promień musi mieć wartość dodatnią, różną od 0" If (x - x_0) ^ + (y - y_0) ^ > r ^ Then okrag1 = "Punkt leży poza okręgiem" If (x - x_0) ^ + (y - y_0) ^ = r ^ Then okrag1 = "Punkt leży na okręgu" If (x - x_0) ^ + (y - y_0) ^ < r ^ Then okrag1 = "Punkt leży wewnątrz okręgu" End Function
Zadanie 5. Utwórz funkcję użytkownika, która będzie sprawdzać pierwiastki równania kwadratowego postaci ax + bx + c i informować użytkownika o wyniku sprawdzenia. Przydatny wzór: ax + bx + c oraz warianty do rozpatrzenia: 1. > 0 - dwa rozwiązania rzeczywiste, podana wartość x 1 i x,. = 0 - jedno rozwiązanie rzeczywiste, podana wartość x 0, 3. < 0 - brak rozwiązań rzeczywistych 4. gdy a=0 - jest to funkcja liniowa i gdzie ma miejsce zerowe, 5. gdy a=0 oraz b=0 - jest to funkcja stała, 6. gdy wprowadzone będą dane nieliczbowe. Przykładowe rozwiązanie zadania 5. Function kwadrat(a, b, c) 'sprawdzanie czy są to liczby If IsNumeric(a) And IsNumeric(b) And IsNumeric(c) Then 'sprawdzenie czy jest to funkcja liniowa If a = 0 And b <> 0 Then x0 = -c / b MsgBox ("Jest to równanie prostej." & Chr(10) & "Jest jeden pierwiastek:" & Chr(10) & "x0 = " & x0) 'sprawdzenie czy jest to funkcja stała If a = 0 And b = 0 Then MsgBox ("Jest to funkcja stała.") 'obliczanie delty Delta = (b * b) - (4 * a * c) 'są pierwiastki If Delta > 0 Then x1 = (-b + Sqr(Delta)) / ( * a) x = (-b - Sqr(Delta)) / ( * a) MsgBox ("Są dwa pierwiastki równania:" & Chr(10) & "x1 = " & x1 & Chr(10) & "x = " & x) 'jest 1 pierwiastek If Delta = 0 Then x0 = -b / ( * a) MsgBox ("Jest jeden pierwiastek równania:" & Chr(10) & "x0 = " & x0) 'nie ma pierwiastków rzeczywistych MsgBox ("Nie ma pierwiastków rzeczywistych tego równania") 'gdy nie są to liczby MsgBox ("Parametry a, b i c muszą być liczbami") End Function
Zadanie 6. Utwórz funkcję użytkownika, która będzie sprawdzać sumę kątów (α, β, γ, δ) w czworokącie i informować użytkownika o wyniku sprawdzenia. Przydatny wzór: suma = α + β + γ + δ oraz warianty do rozpatrzenia: 1. kąty są po 90 z danych kątów można utworzyć prostokąt,. kąty α i β oraz γ i δ są sobie równe, ale inne niż 90 z danych kątów można utworzyć trapez, 3. kąty α i γ oraz β i δ są sobie równe, ale inne niż 90 z danych kątów można utworzyć romb, 4. kąty α, β, γ i δ są różne od siebie, z danych kątów można utworzyć czworokąt, 5. gdy suma 360 - z danych kątów nie można utworzyć czworokąta, 6. gdy co najmniej jeden kąt = 0 - z danych kątów nie można utworzyć czworokąta, 7. gdy wprowadzone będą dane nieliczbowe. Przykładowe rozwiązanie zadania 6. Function czworokat(a, b, c, d) If IsNumeric(a) And IsNumeric(b) And IsNumeric(c) And IsNumeric(d) Then suma = a + b + c + d If suma = 360 And a > 0 And b > 0 And c > 0 And d > 0 Then If a = b And c = d And a = c Then MsgBox ("Jest to prostokąt") If a = c And b = d And a <> b Then MsgBox ("Jest to prostokąt") If a = b And c = d And a <> c Then MsgBox ("Jest to trapez") MsgBox ("Jest to czworokąt") MsgBox ("Nie jest to czworokąt") MsgBox ("Podaj liczby") End Function