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