Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УП(информатика).doc
Скачиваний:
225
Добавлен:
14.02.2015
Размер:
6.11 Mб
Скачать

Select Case арифметическое или текстовое выражение

Case 1список значений выражения

Серия 1

Case 2список значений выражения

Серия 2

Case n список значений выражения

Cерия n

Case Else

Cерия для Case Else

End Select

Таблица 43 – Блок схема и процедура проекта «Название весеннего месяца»

Блок схема

Текст процедуры

Private Sub Com1_Click()

Dim Nm As Integer

Nm = Val(tnm.Text)

If Nm =3 Then

Label2.Caption = " март"

ElseIf Nm =4 Then

Label2.Caption = " апрель"

ElseIf Nm =5 Then

Label2.Caption = " май"

Else

Label2.Caption= _

" № не весеннего месяца"

EndIf

End Sub

Задача. По номеру введенного месяца (переменная n) определить номер квартала.

Интерфейс программы будет похожим на интерфейс предыдущей программы (Рисунок 54), также как и описание свойств объектов (Таблица 41), за исключением заголовка формы в котором нужно написать «Квартал» блок-схемы и текст программы приведен ниже(Таблица 44).

Таблица 44 – Блок схема и процедура проекта «Квартал»

Блок схема

Текст процедуры

Private Sub Com1_Click()

Dim Nm As Integer

Nm = Val(Tnm.Text)

Select Case Nm

Case 1 To 3

Label2.Caption = " 1 квартал "

Case 4, 5, 6

Label2.Caption = " 2 квартал "

Case 7 To 9

Label2.Caption = " 3 квартал "

Case 10, 11, 12

Label2.Caption = " 4 квартал "

Case Else

Label2.Caption = _

" ошибка в номере месяца "

End Select

End Sub

      1. Циклические алгоритмы. Цикл с параметром

Повторение - это многократное выполнение одного или нескольких предписаний алгоритма. Цикл - это оператор языка программирования, с помощью которого это повторение будет выполнять компьютер - исполнитель алгоритмов.

В языке Visual Basic циклы - многострочные операторы двух видов: циклы с параметром или со счетчиком и циклы с условием.

Цикл с параметром или со счетчиком - это многострочный оператор, его синтаксис таков:

For Имя=Знач1 To Знач2 [Step Знач3]

Серия повторяющихся операторов(тело цикла)

Next [Имя],

где Имя -это имя переменной, которую называютсчетчиком; Знач1 - начальное значение счетчика; Знач2 -. конечное значение счетчика; Знач3 - величина, на которую изменяется значение счетчика при одном повторении. Она называется шагом цикла.

Серию повторяющихся операторов иначе называют телом цикла.

Л

Рисунок 55 –Проект «Сумма»

огика работы оператора цикла со счетчиком такая. Сначала цикл проверяется нанепротиворечивость, т.е. если конечное значение счетчика больше начального, то шаг цикла должен быть положительным, а если конечное значение счетчика меньше начального, то шаг должен быть отрицательным. Если проверка выявила такое противоречие, то работа цикла прекращается и выполняются операторы, следующие за оператором цикла. Если же противоречия нет, то повторяющиеся операторы будут выполнены при начальном значении счетчика. Затем начальное значение счетчика будет изменено на величину шага цикла, сделана проверка на то, что не вышло ли значение счетчика за пределы интервала между начальным и конечным значениями и если вышло, то работа цикла будет прекращена, а если нет, то повторяющиеся операторы будут выполнены при новом значении счетчика, после чего значение счетчика опять будет изменено на величину шага цикла и т. д.

Блок “Конец повтора”, изображенный на этой блок – схеме, можно не использовать, а сразу осуществить переход к блоку “Повторять, меняя имя от Знач1 до Знач2 с шагом Знач3”.

Выражение Step Знач3 может отсутствовать, в этом случае шаг считается равным единице. Шаг может быть как целым, так и дробным, как положительным, так и отрицательным.

Таблица 45 – Блок схема и процедура проекта «Сумма»

Блок схема

Текст процедуры расчёта суммы значений функции Z

Private Sub C1_Click()

Dim S, Y, Z, X As Single, i, n As Integer

Y = Val(Ty.Text)

Sheets("Результат").Select

Cells.Select

Selection.ClearContents

Range("A1").Select

Range("A1").Value = "Аргумент Х"

Range("b1").Value = "Функция Z"

i = 2

S = 0

For X = 1 To 10 Step 0.5

Z = 2 * X ^ 3 - 5 * Log(X + 10)

Cells(i, 1).Value = X

Cells(i, 2).Value = Z

S = S + Z

i = i + 1

Next X

Label2.Caption = " Cумма значение функции Z "

+ Format(S, "0.000")

End Sub

Например, решим такую задачу:

Задача. Подсчитать сумму значений функции Z=y*Ln(x)+x3 здесь y=5 ввести его из специального поля формы. X изменяется от 1 до 10 шаг 0,5. Сумма выдаётся на форму, а таблица значений функции записывается на лист «Результат».

Алгоритм расчета суммы.

1. Ввести дополнительную переменную для расчета суммы и записать в нее 0.

2. Каждый раз после вычисления значения функции прибавить его к значению этой переменной.

После того как будут подсчитаны все значения функции, в дополнительной переменной накопится их сумма.

Интерфейс программы (Рисунок 55), описание иизмененных свойств объектов (Таблица 46) их блок-схемы и тексты программ (Таблица 45)приведены ниже.

Таблица 46 - Изменённые свойства объектов проекта «Сумма»

Объект

Свойство(Properties)

Новое значение

1

UserForm1(форма)

Caption (Заголовок)

Сумма

2

CommandButton1 (Кнопка)

Caption (Заголовок)

старт

Name(Имя)

C1

3

Textbox1

Name

Тy

4

Label1

Caption

Значение Y

5

Label2

Caption

Задача. Ввести N чисел. Найти их произведение.

На листе «Произведение» расположить кнопку, вызывающую форму с окном для ввода количества вводимых чисел и кнопкой «Старт», запускающей расчёт произведения. Числа вводить с помощью диалогового окна, вызываемого командой InputBox. Результат расположить на листе «Произведение» и в диалоговом окне. Для того чтобы создать кнопку на листе необходимо: включить ПИ «Формы»; щёлкнуть по объекту кнопка и нарисовать её на листе, после этого появляется окно «Назначить макрос объекту» (Например, имя макроса «Кнопка2­_Щёлкнуть); далее нужно щёлкнуть по кнопке «Создать» и в появившееся окно подпрограммы между заголовком процедуры «Sub Кнопка2_Щелкнуть()» и её концом «End Sub» ввести программный код( Например текст процедуры для вызова диалоговой формы F(Таблица 47))

Таблица 47 – Блок схема и процедура проекта «Произведение»

Блок схема

Текст процедуры вызова формы F

Sub Кнопка2_Щелкнуть()

F5.Show

Range("A1").Select

F5.Hide

Range("A1").Select

End Sub

Текст процедуры расчёта произведения

Private Sub Com1_Click()

Dim N, X, P As Integer

N = Val(Ty.Text)

P = 1

For i = 1 To N

X = Val(InputBox("веди" + Str(i) + " число"))

P = P * X

Next i

Label2.Caption = " Произведение чисел = " _

+ Format(P, "0.000")

Sheets("Произведение").Select

Selection.ClearContents

Range("A1").Value = "Произведение чисел ="

Range("b1").Value = Format(P, "0.0")

End Sub

Алгоритм расчета произведения.

1. Ввести дополнительную переменную для расчета произведения и записать в нее 1.

2. Каждый раз после вычисления значения функции умножить его на значение этой переменной.

После того как будут подсчитаны все значения функции, в дополнительной переменной накопится их произведение.

Интерфейс программы анологичен проекту «Сумма» (Рисунок 55), как и описание изменённых свойств объектов (Таблица 46), с той лишь разницей что вместо «Сумма» форма называется «Произведение», а в заголовок объекта Label1 вместо «Значение Y» записано «Количество чисел». Блок-схемы и тексты процедур вызова диалоговой формы и расчёта произведения приведены ниже(Таблица 47).

Задача. Посчитать количество значений функции Z больших 16. Z = e x-x , а x изменяется от 1 до 20 шаг 0.1. Результаты вывести на Лист1: количество в ячейку С5, а таблицу значений функции записывается в столбцы А и В.

Алгоритм расчета количества.

1. Ввести дополнительную переменную для расчета количества (в нашем случае значений функции Z > 16)и записать в нее 0.

2. Каждый раз, когда условие выполняется (в нашем случае Z > 16), прибавлять единицу к значению этой переменной.

После того как будут подсчитаны все значения функции, в дополнительной переменной накопится количество значения функции(в нашем случае Z > 16).

Проект состоит из кнопки расположенной на листе «Лист1», которая вызывает процедуру расчёта количества значений функции Z >16. Название кнопки «Кнопка2» заменено на «Расчёт количества значений Z > 16» . Заголовок процедуры обработки события щелчёк по кнопке «Sub Кнопка2_Щелкнуть()»и её конец «EndSub» был создан автоматически при размещении кнопки «Кнопка2» на листе, а текст процедуры(Алгоритм расчета произведения.) размещен между этими командами.

Таблица 48 – Блок схема и процедура проекта «Расчёт количества значений функции Z >16»

Блок схема

Текст процедуры расчёта количества значений функции Z >16

Sub Кнопка2_Щелкнуть()

Dim S, Y, Z, X As Single, i, K As Integer

Sheets("Лист1").Select

Cells.Select

Selection.Clear

Range("A1").Select

Range("A1").Value = "Аргумент Х"

Range("b1").Value = "Функция Z"

i = 2

K = 0

For X = 1 To 20 Step 0.1

Z = Exp(X)- X

If Z > 16 Then K = K + 1

Cells(i, 1).Value = X

Cells(i, 2).Value = Z

i = i + 1

Next X

Range(Cells(2, 1), Cells(i - 1, 1)).Select

Selection.NumberFormat = "0.0"

Range(Cells(2, 2), Cells(i - 1, 2)).NumberFormat = "0.000"

Range("C5").Value =

" Количество значение функции Z>16 " + Format(К, "0 ")

EndSub

Рассмотрим некоторые особенности команд процедуры:

Cells.Selectвыбор всех ячеек листа;

Selection.Clearполная очистка выбранного диапазона;

Range(Cells(2, 1), Cells(i - 1, 1)).Select - выбор диапазона куда были записаны значения Х.

Selection.NumberFormat = "0.0"

Range(Cells(2, 2), Cells(i - 1, 2)).NumberFormat = "0.000" - присвоение всем числам диапазона куда были записаны значения Y числового формата с тремя знаками после запятой

Задача. Ввести N чисел и выбрать максимальное из них.

Интерфейс программы анологичен проекту «Сумма» (Рисунок 55), как и описание изменённых свойств объектов (Таблица 46), с той лишь разницей что вместо «Сумма» форма называется «Максимум», а в заголовок объекта Label1 вместо «Значение Y» записано «Количество чисел». Блок-схема и текст процедуры поиска максимума приведены ниже (Таблица 49).

Таблица 49 – Блок схема и процедура проекта «Максимум»

Блок схема

Алгоритм поиска максимального числа

1. Ввести переменную для максимального числа.

2. Записать в нее значение первого числа.

3. Сравнить переменную со вторым числом и если число больше чем значение переменной, то оно записывается в переменную.

4. Повторять пункт 3 для всех остальных чисел

После того как будут введены все числа в переменной накопиться их произведение

Текст процедуры

Private Sub Com1_Click()

Dim M, X, P As Integer

N = Val(Ty.Text)

M = Val(InputBox("веди 1 число"))

For i = 1 To N

X = Val(InputBox("веди" + Str(i) + " число"))

If X >M Then M = X

Next i

Label2.Caption = " Максимальное число = " _

+ Format(M, "0.000")

End Sub