Контрольная работа по предмету "Информатика"


Программирование на Visual Basic

ГОУВПО


Уфимский государственный авиационный технический университет


Кафедра Информатики


ПОЯСНИТЕЛЬНАЯ ЗАПИСКА


к контрольной работе по информатике


Программирование на VisualBasic


Уфа 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].


Составим текст программы (приведен с комментариями).



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 меньше, чем самих слов, добавим к полученной сумме пробелов единицу (но только при условии, что длина строки не равна нулю, т.е. ни одного слова не введено).



Текстпрограммы


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с., ил



Не сдавайте скачаную работу преподавателю!
Данную контрольную работу Вы можете использовать для выполнения своих заданий.

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :