 
        
        - •Практическое задание № 1. Знакомство с vba
- •Практическое задание № 2. Линейное программирование
- •Практическое занятие № 3. Программирование ветвлений
- •Практическая работа № 4. Программирование повторений
- •Практическая работа № 5. Работа с массивами
- •6. Практическая работа № 6. Процедуры и функции
- •7. Практическое занятие № 7. Файлы. Последовательный доступ
- •8. Практическое занятие № 8. Файлы с произвольным доступом
- •Задания самостоятельной работы
- •1. Линейное программирование
- •2. Программирование ветвлений
- •3. Программирования циклов
- •4. Массивы
- •5. Файлы
- •Список литературы
Практическое занятие № 3. Программирование ветвлений
Задача.
| Брокер получает процент от суммы сделки. Для сделок, сумма которых составляет меньше 150т.р. вознаграждение брокера составит 5%, если сумма договора составляет от 150 т.р. до 500 т.р. – 4,5%, а для сделок, сумма которых составляет больше 500 т.р. – 3,5%. Составить программу для расчёта вознаграждения брокера. | 
С помощью линейных алгоритмов решаются самые примитивные задачи. Более сложные и серьезные задачи решаются с помощью более сложных алгоритмов, в которых последовательность выполнения команд зависит от выполнения или не выполнения некоторых условий. Такого рода задачи называются нелинейными. Алгоритмы в данных задачах называются алгоритмами ветвления.
Прежде чем рассматривать алгоритмы ветвления, объясним понятие логического выражения. Это выражения неарифметического типа, такие выражения называют также условными.
Рассмотрим операции сравнения:
| Операция | Описания операции | 
| > | Больше | 
| > = | Больше или равно | 
| < | Меньше | 
| < = | Меньше или равно | 
| < > | Не равно | 
| = | Равенство | 
Наиболее простым шагом в рассмотрении нелинейных алгоритмов является оператор условного перехода. Данный оператор имеет две формы синтаксиса: упрощённая однострочная форма и более сложная ступенчатая или многострочная.
Однострочная форма имеет следующий синтаксис:
If УсловноеВыражение Then Оператор1 [Else Оператор2]
Многострочная форма синтаксиса более сложная:
If УсловноеВыражение Then
ПоследовательностьОператоров1
[Else
ПоследовательностьОператоров2]
End if
На схеме показаны основные конструкции условного перехода:
 
Часто на практике приходится решать задачи, когда нужно проверить несколько условий. Тогда условные переходы получаются вложенными друг в друга. На блок-схеме это выглядит следующим образом:
 
Такая ступенчатая схема в программном коде выглядит так:
If Условие1 Then
СписокОператоров1
Elseif Условие2 Then
СписокОператоров2
Elseif Условие3 Then
СписокОператоров3
……………………..
End if
В такой многоступенчатой схеме было применено ключевое слово Elseif, которое переводится как ИначеЕсли. Заметим, что вся эта многоступенчатая схема заканчивается только одним End if.
Составим блок-схему для нашей задачи:
 
- Откройте приложение MS Excel. 
- Выполните команду СервисàМакросРедактор Visual Basic или нажмите <Alt+F11>. 
- Добавьте форму (команда Insert UserForm). 
- Для изменения размеров формы используйте указатель мыши помещённый в правый нижний угол окна Формы(UserForm). 
- Разработайте пользовательский интерфейс, расположив на форме с помощью панели инструментов управления (ViewToolBox), следующие объекты управления: Label (Метка), TextBox (Текстовое поле), CommandButton (Командная кнопка). 
- В окне Properties (Свойства) для каждого объекта управления установить свойства, приведённые в таблице 2. 
Таблица 2.
| Элемент управления | Свойства | Значения | 
| UserForm | Caption | Программирование ветвлений | 
| Label1 | Caption | Вычисление вознаграждения брокера | 
| Label2 | Caption | Сумма сделки | 
| Label3 | Caption | Вознаграждение | 
| TextBox1 | Name | txtSummaSdelki | 
| TextBox2 | Name | txtNagrada | 
| CommadButton1 | Name | cmdRun | 
| Caption | Расчёт | |
| CommadButton2 | Name | cmdClear | 
| Caption | Очистка | 
- Примерный интерфейс программы может выглядеть так: 
 
- Код программы: 
Private Sub cmdRun_Click()
Dim S As Single
Dim P As Single
S=Val(txtSummaSdelki.Text)
If S<= 150000 Then
P=S*0.05
ElseIf S>= 500000 Then
P=S*0.03
Else
P=S*0.04
End If
txtNagrada.Text = Str(P)
End Sub
- Сделайте расчёты для трёх случаев. 
- Удалите текстовое поле с именем «txtSummaSdelki» и в коде программы строку «S=Val(txtSummaSdelki.Text)». 
- На место удалённого объекта вставьте метку и именем «lblSummaSdelki» (обратите внимание, впереди стоит латинская буква «L» малая, а не «1 (единица)»). 
- На место удалённой строки в коде программы вставьте следующую запись: 
S=InputBox(“Введите значение суммы сделки”)
lblSummaSdelki=Str(S)
В приведённой выше части кода программы использовалась функция InputBox. Данная функция предназначена для ввода данных в программу. Она имеет следующий синтаксис:
InputBox (Запрос [, Заголовок] [, По_умолчанию] [, Xpos] [ Ypos] [, Справка, Раздел])
 
- Сохраните файл под именем «Брокерское вознаграждение». 
