ГОУВПО
Уфимський державний авіаційний технічний університет
Кафедра Інформатики
ПОЯСНЮВАЛЬНА ЗАПИСКА
до контрольної роботи з інформатики
Програмування на Visual Basic
Уфа 2009
Завдання № 1. Сума ряду
Умова задачі:
Для числового ряду знайти
а) суму членів числового ряду при М = 10;
б) точне значення суми членів числового ряду, обчислена за формулою Sum 2 = 15е;
в) похибки обчислення суми членів числового ряду (абсолютну і відносну) по відношенню до точного значенням суми членів числового ряду.
Рішення:
Складемо блок-схему алгоритму рішення задачі (представлена на малюнку зліва).
Отже, для вирішення задачі використовуємо змінні:
М (кількість членів обчислюваного числового ряду);
f (допоміжна змінна, обчислює для циклу факторіал);
Sum 1 (сума членів числового ряду);
Sum 2 (точне значення суми);
Err 1 (абсолютна похибка);
Err 2 (відносна похибка);
і визначимося з типом даних, який вони можуть містити. Значення змінних M і k будуть короткими цілими (I nteger), значення f - довгим цілим (Long), а значення змінних Sum 1, Sum 2, Err 1, Err 2 - речові подвоєною точності [].
Для введення значень змінної M, а також виведення результатів використовуються текстові поля (об'єкт TextBox). Щоб зробити поля для виведення незмінними, при визначенні характеристик поля в рядку Enable вкажемо False [].
Складемо текст програми (наведено з коментарями).
Public Class Form1
Private Sub ButtonOK_Click (ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonOK.Click
'Опис змінних:
Dim M As Integer 'кількість членів числового ряду
Dim Sum1 As Double, Sum2 As Double 'сума і точна сума ряду
Dim Err1 As Double, Err2 As Double 'абсолютна і відносна похибки
Dim k As Integer, f As Long 'вспомогат.переменние
'Для організації циклу і підрахунку факторіала
'Кількість членів числового ряду вводяться у формі
M = Val (TextM.Text)
'Обчислення
f = 1
Sum1 = 0
For k = 1 To M
f = f * k
Sum1 = Sum1 + (k + 1) ^ 3 / f
Next k
Sum2 = 15 * 2.718281828495
Err1 = Sum2 - Sum1
Err2 = Err1 / Sum2 * 100
'Виведення результатів обчислень в поля форми
TextSum1.Text = Format (Sum1, "0.00000")
TextSum2.Text = Format (Sum2, "0.00000")
TextErr1.Text = Format (Err1, "0.00000000")
TextErr2.Text = Format (Err2, "0.00000000")
End Sub
Private Sub ButtonCancel_Click (ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonCancel.Click
End
End Sub
End Class
На рис.1 представлений варіант реалізації форми програми:
Малюнок 1 - Обчислення суми ряду
Завдання № 2. Робота з масивами
Умова задачі:
Дан двовимірний масив (матриця) розміром NxN.
1. Визначити суму елементів, значення яких кратні заданому числу F.
2. Знайти місця розташування (номери індексів) мінімальних елементів масиву.
Рішення:
Складемо блок-схему алгоритму рішення задачі
Програма буде містити кілька «циклів у циклі» з причини того, що організує роботи з масивами.
Текст програми
Public Class Form1
опис змінних рівня модуля: масив
Dim Arr (100, 100) As Integer
Dim N As Integer 'кількість елементів масиву
Private Sub ButtonGenerate_Click (ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonGenerate.Click
опис змінних:
Dim Amin As Integer, Amax As Integer 'межі значень елементів масиву
Dim i As Integer, j As Integer 'вспомогат.переменние
для організації циклу
'Кількість елементів масиву і межі значень вводяться у формі
N = Val (TextN.Text)
Amin = Val (TextMin.Text)
Amax = Val (TextMax.Text)
"Створення масиву за допомогою генератора випадкових чисел
Dim Str1 As String
ListArray.Items.Clear () 'кількість стовпців у полі виведення масиву
For i = 0 To N - 1
Str1 = ""
For j = 0 To N - 1
Arr (i, j) = Amin + Int (Rnd () * (Amax - Amin))
Str1 = Str1 + Space (3) + Str (Arr (i, j))
Next j
ListArray.Items.Add (Str1)
Next i
End Sub
Private Sub ButtonOK_Click (ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonOK.Click
'Опис змінних:
Dim F As Integer 'число (вводиться) для пошуку кратних елементів масиву
Dim Fsum As Long 'сума (шукана) кратних елементів масиву
Dim Amin As Integer 'значення мінімального елемента
Dim i As Integer, j As Integer 'вспомогат.переменние
'Для організації циклу
'Число для кратних пошуку елементів вводиться у формі
F = Val (TextF.Text)
If F = 0 Then Exit Sub
'Обчислення
Fsum = 0
If N> 0 Then Amin = Arr (0, 0)
For i = 0 To N - 1
For j = 0 To N - 1
If Arr (i, j) / F = Int (Arr (i, j) / F) Then Fsum = Fsum + Arr (i, j)
If Amin> Arr (i, j) Then Amin = Arr (i, j)
Next j
Next i
'Виведення результатів обчислень в поля форми
LabelSum.Text = Fsum
LabelMin.Text = Amin
'Очищення поля для повторних натискань кнопки "Обчислити"
ListMin.Items.Clear ()
For i = 0 To N - 1
For j = 0 To N - 1
If Arr (i, j) = Amin Then
ListMin.Items.Add ("елемент (" + Str (i + 1) + ";" + Str (j + 1) + ")")
End If
Next j
Next i
End Sub
Private Sub ButtonCancel_Click (ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonCancel.Click
End
End Sub
End Class
На рис.2 представлений варіант реалізації форми програми.
Для виведення суми елементів, кратних заданому числу і мінімальних елементів використовуються поля Label [].
Рисунок 2 - Робота з масивами
Завдання № 3. Робота з рядковими даними
Умова задачі:
Дана рядок, що закінчується крапкою. Підрахувати, скільки в ній слів.
Рішення:
Щоб визначити кількість слів у рядку, складемо цикл, який буде перевіряти кожен символ у рядку, починаючи з другого, на збіг з пропуском. Щоб виключити можливість помилки (на випадок, якщо в одному інтервалі між словами виявиться більше одного пропуску), поставимо додаткову умову: символ, наступний до перевіряється, не повинен бути пропуском. Тобто, програма буде вважати прогалини, які слідують за яким-небудь іншим символом. А так як інтервалів між словами на 1 менше, ніж самих слів, додамо до отриманої суми прогалин одиницю (але тільки за умови, що довжина рядка не дорівнює нулю, тобто жодного слова не введено).
Текст програми
Public Class Form1
Private Sub ButtonOk_Click (ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonOk.Click
'Опис змінних:
Dim Str1 As String 'вводиться рядок
Dim S As Integer 'кількість слів у рядку
Dim i As Integer 'вспомогат.переменние для організації циклу
Str1 = TextStr1.Text
S = 0
'Пошук прогалин у рядку:
'Кожен пробіл після деякого символу додає слово
'(Початкові пробіли і кілька пробілів поспіль ігноруються)
For i = 2 To Len (Str1)
If Mid (Str1, i, 1) = "" And Mid (Str1, i - 1, 1) <> "" Then
S = S + 1
End If
Next i
If Len (Trim (Str1))> 0 Then S = S + 1
'Висновок результатів
TextS.Text = S
End Sub
Private Sub ButtonCancel_Click (ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonCancel.Click
End
End Sub
End Class
На рис.2 представлений варіант реалізації форми програми
Рисунок 3 - Робота з рядковими даними
Список використаної літератури
VisualBasic-Міцний горішок!: Вступний курс в VisualBasic. - Режим доступу: http://vb.hut.ru
Іванюк, А. VisualBasic: Магія простоти
Культін, Н.Б. VisualBasic. Освой на прикладах / Н.Б.. Культін. - СПб, 2004. -288с., Іл
Посилання (links):
http://vb.hut.ru/