Учебная работа. Контрольная работа: Программирование на Visual Basic
Уфимский муниципальный авиационный технический институт
Кафедра Информатики
ПОЯСНИТЕЛЬНАЯ ЗАПИСКА
к контрольной работе по информатике
Программирование на VisualBasic
Уфа 2009 г.
Задание № 1. Сумма ряда
Условие задачки:
Для числового ряда отыскать
а) сумму членов числового ряда при М=10;
б) четкое
в) погрешности вычисления суммы членов числового ряда (абсолютную и относительную) по отношению к четкому значению суммы членов числового ряда.
Решение:
Составим блок-схему метода решения задачки (представлена на рисунке слева).
Итак, для решения задачки используем переменные:
М (количество членов вычисляемого числового ряда);
f (вспомогательная переменная, вычисляющая для цикла факториал);
Sum1 (сумма членов числового ряда);
Sum2 (четкое
Err1 (абсолютная погрешность);
Err2 (относительная погрешность);
и определимся с типом данных, который они могут содержать. значения переменных M и k будут маленькими целыми (Integer),
Для ввода значений переменной M, также вывода результатов употребляются текстовые поля (объект TextBox). Чтоб создать поля для вывода неизменяемыми, при определении черт поля в строке Enable укажем False [2].
Составим текст программки (приведен с комментами).
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
EndSub
EndClass
На рис.1 представлен вариант реализации формы приложения:
Набросок 1 – Вычисление суммы ряда
Задание № 2.
Работа с массивами
Условие задачки:
Дан двумерный массив (матрица) размером NxN.
1. Найти сумму частей, значения которых кратны данному числу F.
2. Отыскать местоположения (номера индексов) малых частей массива.
Решение:
Составим блок-схему метода решения задачки
Fsum=0
Amin=Arr (0, 0)
Fsum=Fsum+Arr(i,j)
Amin = Arr(i,j)
программка будет содержать несколько «циклов в цикле» в виду того, что организует работы с массивами.
Текст программки
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].
Набросок 2 – Работа с массивами
Задание № 3.
Работа со строковыми данными
Условие задачки:
Дана строчка, заканчивающаяся точкой. Подсчитать, сколько в ней слов.
Решение:
Чтоб найти количество слов в строке, составим цикл, который будет инспектировать любой знак в строке, начиная со второго, на совпадение с пробелом. Чтоб исключить возможность ошибки (на вариант, если в одном интервале меж словами окажется больше 1-го пробела), поставим доп условие: знак, последующий до проверяемого, не должен являться пробелом. Т.е, программка будет считать пробелы, которые следуют за любым иным эмблемой. А потому что интервалов меж словами на 1 меньше, чем самих слов, добавим к приобретенной сумме пробелов единицу (но лишь при условии, что длина строчки не равна нулю, т.е. ни 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 – Работа со строковыми данными
Перечень использованной литературы
1. VisualBasic
-Крепкий орех!: Вводный курс в VisualBasic. – Режим доступа: HTTP://vb.hut.ru
2. Иванюк, А.
VisualBasic: Мистика простоты
3. Культин, Н.Б VisualBasic. Освой на примерах/Н.Б. Культин. – СПб, 2004. -288с., ил
]]>