Пример выполнения задания




Лабораторная работа № 12

Тема: Программы с ветвлениями

Условный оператор

Различают однострочный и многострочный условные операторы If:

а) однострочный оператор

If <условие> Then <операторы> [Else <операторы>]

При выполнении оператора If проверяется условие и, если оно исти­нно, то выполняется действие, указанное после опции Then. Если вы­ражение ложно, то выполняется действие, указанное после опции Else. Затем управление передается на оператор, следующий за опе­ратором If.

После опций Then и Else может быть указано несколько опера­торов, разделенных двоеточием.

б) многострочный оператор If:

а) простой If <условие> Then <первая группа операторов> [Else <вторая группа операторов>] End If б) расширенный If <условие> Then <первая группа операторов> [ElseIf <условие> Then <вторая группа операторов> ] [Else <третья группа операторов> ] End If

Достоинство многострочного оператора If состоит в том, что число операто­ров в группах не ограничено.

Оператор выбора

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

Пример использования оператора Select Case.

Select Case nkl ' nkl - переключающее выражение

Case 1 ‘ условие выборки

<блок операторов 1>

Case 2

<блок операторов 2>

...

Case Else

MsgBox "Неправильный ввод. Введите пункт меню"

Beep ‘ Выдача звукового сигнала

End Select

В опции Case могут использоваться следующие формы:

- число, или список значений, например: Case 1, 3, 5, 8;

- выражение, например (Case 1 Тo 10);

- Is выражение. Ключевое слово Is представляет собой условие, например (Case Is <5).

Задание

1. Вычислите значение разветвляющейся функции согласно варианту задания.

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

2. Изобразите условия задачи графически согласно варианту задания.

3. Составьте схему алгоритма решения задачи.

4. Решите задачу двумя способами:

- с помощью простого однострочного оператора IF;

- с помощью многострочного оператора IF.

Программа должна сопровождаться текстовыми сообщениями, поясняю­щими получаемые результаты.

5. Решите задачу с помощью оператора Select Case.

6. Сделайте распечатку одного из вариантов решения задачи.

Указания к решению задачи:

- установите на форму три кнопки. Каждую кнопку используйте для запуска одного из вариантов решения задачи;

- введитезначения переменных a и b;

- введите значение независимой переменной х на первом отрезке и запишите результат;

- повторите вычисления при значениях аргументов на других отрезках области определения функции;

- чтобы результаты вывода информации на форму не пропадали при выходе за границы формы, перед каждым запуском программы ее необходимо очищать оператором Cls.

Варианты заданий

   
   
   
   
   
   
   
   

Пример выполнения задания

Вычислить разветвляющуюся функцию

2x2 - 4x + 5, х<a-b (1)

y= 10sin(x2) + 5cos(x), a-b<=x<=a+b (2)

ex – 17, x>a+b (3)

при а=1, b=2

Решение.

1. Функция определена на всех отрезках. Группа событий полная, следовательно, для решения задачи достаточно сделать две проверки.

2. Условия решения задачи представим графически.

 

 

 
 

3. Составим схему алгоритма решения задачи.

 

 

 
 

 

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

Option Explicit

Dim a As Single, b As Single, c As Single, d As Single

Dim x As Single, y As Single

-----------------------------------------------------------------------

Private Sub cmdIfPrima_Click()

Rem Разветвляющаяся программа

' решение с использованием однострочного If

Cls

a = Val(InputBox("Введите переменную а "))

b = Val(InputBox("Введите переменную b "))

c = a - b: d = a + b

Print "C="; c, "D="; d

x = Val(InputBox("Введите переменную x "))

If x < c Then y = 2 * x ^ 2 - 4 * x + 5: GoTo M1

 

If x > d Then y = Exp(x) - 17: GoTo M1

y = 10 * Sin(x ^ 2) + 5 * Cos(x)

M1:

Debug.Print "x="; x, "y="; y

End Sub

-------------------------------------------------------------------------

Private Sub cmdIfSecond_Click()

Rem Разветвляющаяся программа

' решение с использованием многострочного If

Cls

a = Val(InputBox("Введите переменную а "))

b = Val(InputBox("Введите переменную b "))

c = a - b: d = a + b

Print "C="; c, "D="; d

x = Val(InputBox("Введите переменную x "))

If x < c Then

y = 2 * x ^ 2 - 4 * x + 5

ElseIf x >= c And x <= d Then

y = 10 * Sin(x ^ 2) + 5 * Cos(x)

Else

y = Exp(x) - 17

End If

Debug.Print "x="; x, "y="; y

End Sub

------------------------------------------------------------------------

Private Sub cmdSelectCase_Click()

Rem Разветвляющаяся программа

' решение с использованием оператора Select Case

Cls

a = Val(InputBox("Введите переменную а "))

b = Val(InputBox("Введите переменную b "))

c = a - b: d = a + b

Print "C="; c, "D="; d

x = Val(InputBox("Введите переменную x "))

Select Case x

Case Is < c

y = 2 * x ^ 2 - 4 * x + 5

Case Is >= d

y = Exp(x) - 17

Case Else

y = 10 * Sin(x ^ 2) + 5 * Cos(x)

End Select

Debug.Print "x="; x, "y="; y

End Sub

 

5. Проверка алгоритма

При a=1 и b=2 С=-1, D=3

Для проверки правильности работы алгоритма необходимо три раза запустить программу при значениях аргумента принадлежащих всем трем участкам определения функции, например: x= -2, x=2, x=4. Для проверки правильности полученных результатов необходимо сравнить их с известными значениями функций или вычислить эти выражения другими средствами, например, с помощью математической системы MathCad.

Результаты проверки:

1) x = -2 y = 21

2) x = 2 y = -9.648759

3) x = 4 y = 37.59815

Контрольные вопросы

1. Приведите структуру и поясните принцип работы оператора IF.

2. Приведите структуру и поясните принцип работы расширенного оператора IF.

3. Приведите структуру и поясните принцип работы многострочного оператора IF.

4. Поясните синтаксис оператора Select Case.

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-08-20 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: