MKdI - Metody komputerowe dla inżynierów Laboratorium nr 1
Dim Tabl(1 To 5) As Single
Option Explicit
Program 1
Obliczanie pola i obwodu koła. Dane są: stała pi = 3.14, zmienne: R - promień koła, Pole - pole koła, Obwod - obwód koła, wszystkie typu Single (liczba rzeczywista). Należy obliczyć pole i obwód koła i wyświetlić wyniki.
Sub PierwszyProgram()
' Pierwszy program: Deklaracja stałych i zmiennych
Const pi = 3.14
Dim R As Single
Dim Pole, Obwod As Single
' Wprowadzanie danych
R = InputBox("Podaj promień koła R", "Wprowadzanie danych")
' Obliczenia
Pole = pi * R * R
Obwod = 2 * pi * R
' Wyświetlenie wyników
MsgBox ("Dla promienia R =" + Str(R) + ", pole koła =" + Str(Pole))
MsgBox ("Dla promienia R =" + Str(R) + ", obwod koła =" + Str(Obwod))
End Sub
Program 2
Obliczanie wartości maksymalnej z trzech liczb, przykład zastosowania instrukcji IF.
Sub PrzykladInstrukcjiIF()
'Deklaracja stałych i zmiennych
Dim A, B, C, Max As Integer
A = 20
B = 3
C = -2
' Wyznaczanie max 3 liczb
Max = A
If B > Max Then Max = B
If C > Max Then Max = C
' Wyświetlenie wyniku
MsgBox ("Maximum =" + Str(Max))
End Sub
Zadanie 1: Należy tak przerobić program, aby wartości A, B i C były podawane z klawiatury przez użytkownika.
Program 3
Przykład zastosowania instrukcji CASE do podpowiadania pisowni cyfr.
Sub PisowniaCyfr()
' Deklaracja zmiennych
Dim No As Integer
Dim Pisownia As String
' Program
No = InputBox("Podaj cyfrę", "Wprowadzanie danych")
Select Case No
Case 1
Pisownia = "jeden"
Case 2
Pisownia = "dwa"
Case 3
Pisownia = "trzy"
Case 4
Pisownia = "cztery"
Case 5
Pisownia = "pięć"
End Select
' Wyświetlenie wyniku
MsgBox ("Cyfrę" + Str(No) + " pisze się: " + Pisownia)
End Sub
Zadanie 2: Przerobić program, aby podawał pisownię cyfr od 0 do 9 po angielsku.
Program 4
Przykład zastosowania pętli iteracyjnej do budowy generatora liczb losowych.
Sub GeneratorLiczbLosowych()
' Deklaracja zmiennych
Dim LiczbaProb As Integer
Dim i As Integer
Dim srednia As Single
' Wprowadzanie danych
LiczbaProb = InputBox("Podaj liczbę prób", "Wprowadzanie danych")
srednia = 0
' Pętla iteracyjna sumująca losowane liczby
For i = 1 To LiczbaProb
srednia = srednia + Rnd
Next i
' Obliczenie średniej z losowanych liczb
srednia = srednia / LiczbaProb
' Wyświetlenie wyniku
MsgBox ("Średnia wartość dla" + Str(LiczbaProb) + " liczb z generatora wynosi =" + Str(srednia))
End Sub
Zadanie *: Przerobić program, aby zapisywał losowane zmienne do tablicy i wyświetlał je w wyniku.
Program 5
Przykład korzystania z macierzy i podprogramów do obliczenia średniej arytmetycznej wyników. Program wymaga zdeklarowania na początku programu (globalnie) tablicy Tabl (wektora o 5 elementach) oraz zdefiniowania podprogramu WczytajMacierz, programu zasadniczego ObliczanieSredniejArytmetycznejWynikow.
Dim Tabl(1 To 5) As Single
Sub WczytajMacierz()
Dim i As Integer
' Pętla iteracyjna wczytująca dane do tablicy
For i = 1 To 5
Tabl(i) = InputBox("Podaj wartość elementu: " + Str(i), "Wprowadzanie danych")
Next i
End Sub
Sub ObliczanieSredniejArytmetycznejWynikow()
' Deklaracja zmiennych
Dim srednia As Single
Dim i As Integer
' Wywołanie podprogramu wczytującego dane
Call WczytajMacierz
' Obliczanie średniej
srednia = 0
For i = 1 To 5
srednia = srednia + Tabl(i)
Next i
srednia = srednia / 5
' Wyświetlenie wyniku
MsgBox ("Średnia wynosi =" + Str(srednia))
End Sub
Program 6
Przykład obliczania wyrażeń numerycznych.
Sub Zadanie1()
' Deklaracja stałych i zmiennych
Const pi = 3.1415926535898
Const A = 4
Const B = -2
Const C = 3
Dim Wynik As Single
' Obliczenia i wyświetlanie wyniku
Wynik = (A + 2 * B) / C
MsgBox Wynik
Wynik = (3 + C) / (A * Abs(B))
MsgBox Wynik
Wynik = Sqr(B ^ 5 + Sqr(3) * (A + 1) ^ 2)
MsgBox Wynik
Wynik = (1 + Exp(2 * A)) ^ 0.3 + Log(7.5) / Log(3)
MsgBox Wynik
Wynik = (Tan((A + 3 * B) / C) + Cos(2 * pi / 180)) * Sin(pi / 7)
MsgBox Wynik
End Sub
Zadanie 3: Przerobić program, aby wartości A, B i C były podawane z klawiatury przez użytkownika oraz ulepszyć wyświetlanie wyników (tak aby pokazywał dane A, B, C oraz co policzył).
Program 7
Obliczanie pola powierzchni i objętości prostopadłościanu. Funkcja Val() zmienia łańcuch na liczbę.
Sub Zadanie2()
' Deklaracja zmiennych
Dim A, B, C As String
Dim Objetosc As Single
Dim Pole As Single
' Wprowadzanie danych
A = InputBox("Wprowadź wymiar A", "Wprowadzanie danych prostopadłościanu")
B = InputBox("Wprowadź wymiar B", "Wprowadzanie danych prostopadłościanu")
C = InputBox("Wprowadź wymiar C", "Wprowadzanie danych prostopadłościanu")
' Obliczenia
Objetosc = Val(A) * Val(B) * Val(C)
Pole = (2 * (Val(A) * Val(B) + Val(A) * Val(C) + Val(B) * Val(C)))
' Wyświetlenie wyniku
MsgBox ("Objetość prostopadłościanu =" + Str(Objetosc))
MsgBox ("Pole powierzchni prostopadłościanu =" + Str(Pole))
End Sub
Zadanie 4: Zmodyfikować wyświetlanie wyniku, aby pokazane były wprowadzone przez użytkownika wartości A, B i C oraz aby podane były jednostki otrzymanego wyniku.
Program 8
Obliczanie długości odcinka AB i współrzędnych środka odcinka AB. Punkt A(x1, y1), punkt B(x2, y2).
Długość odcinka AB:
Współrzędne środka odcinka:
,
Sub Zadanie3()
' Deklaracja zmiennych
Dim X1 As Single, Y1 As Single, X2 As Single, Y2 As Single
Dim Dlugosc, Srodek_X, Srodek_Y As Single
' Wprowadzanie danych
X1 = InputBox("Wprowadź współrzędną X1", "Wprowadzanie wpsółrzędnych odcinka AB")
Y1 = InputBox("Wprowadź współrzędną Y1", "Wprowadzanie wpsółrzędnych odcinka AB")
X2 = InputBox("Wprowadź współrzędną X2", "Wprowadzanie wpsółrzędnych odcinka AB")
Y2 = InputBox("Wprowadź współrzędną Y2", "Wprowadzanie wpsółrzędnych odcinka AB")
' Obliczenia i wyświetlanie wyników
Dlugosc = Sqr((X2 - X1) ^ 2 + (Y2 - Y1) ^ 2)
MsgBox ("Długość odcinka wynosi = " + Str(Dlugosc))
Srodek_X = (X1 + X2) / 2
Srodek_Y = (Y1 + Y2) / 2
MsgBox ("Środek odcinka AB ma współrzędne (" + Str(Srodek_X) + "," + Str(Srodek_Y) + ")")
End Sub
Program 9
Program, który dla danych rzeczywistych a, b, c wylicza wartości funkcji f1, f2 według wzoru:
Dla a < 0: f1 = |a|, f2 = min(a, b, c)
Dla a = 0: f1 = 0, f2 = 0
Dla a > 0: f1 = a+b+c, f2 = max(a, b, c)
Sub Zadanie4()
' Deklaracja zmiennych
Dim A As Single, B As Single, C As Single 'zmienne do przechowywania wartości A, B i C
Dim Temp As Single 'zmienna do przechowywania max(A,B,C)lub min(A,B,C)
Dim Dane As String, Wynik As String, strF2 As String
' Wprowadzanie danych
A = InputBox("Podaj A: ", "Wprowadzanie danych")
B = InputBox("Podaj B: ", "Wprowadzanie danych")
C = InputBox("Podaj C :", "Wprowadzanie danych")
' Utworzenie tekstu zawierającego wprowadzone dane
Dane = "Dane: A=" + Str(A) + " B=" + Str(B) + " C=" + Str(C)
' Funkcja warunkowa IF która wybiera odpowiedni przypadek obliczeniowy w zależności od wartości A
If A < 0 Then ' sprawdzenie czy A<0, jeżeli tak to
' szukamy min(A,B,C)
Temp = A
If B < Temp Then Temp = B
If C < Temp Then Temp = C
Wynik = Dane + Chr(13) + "F1 = |A| = " + Str(Abs(A)) + Chr(13) + "F2 = min(A,B,C) = " & Str(Temp)
ElseIf A = 0 Then ' jeżeli A=0
Wynik = Dane + Chr(13) + "F1 = 0, F2 = 0"
Else ' jeżeli A nie jest mniejsze od 0 i A nie jest równe 0 to A>0
' szukamy max(A,B,C) podobnie jak min(A,B,C)
Temp = A
If B > Temp Then Temp = B
If C > Temp Then Temp = C
Wynik = Dane + Chr(10) + "F1 = (A+B+C) =" + Str((A + B + C)) + Chr(13) + "F2 = max(A,B,C) = " + Str(Temp)
End If
' Wyświetlenie wyniku
MsgBox (Wynik)
End Sub
1