рефератырефератырефератырефератырефератырефератырефератырефераты

рефераты, скачать реферат, современные рефераты, реферат на тему, рефераты бесплатно, банк рефератов, реферат культура, виды рефератов, бесплатные рефераты, экономический реферат

"САМЫЙ БОЛЬШОЙ БАНК РЕФЕРАТОВ"

Портал Рефератов

рефераты
рефераты
рефераты

Программирование на 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.ru

2. Иванюк, А. VisualBasic: Магия простоты

3. Культин, Н.Б VisualBasic. Освой на примерах/Н.Б. Культин. - СПб, 2004. -288с., ил

рефераты
РЕФЕРАТЫ © 2010