- •В.Н.Агеев
- •А23 Программирование и основы алгоритмизации. Конспект лекций – м.: мгуп, 2012.– *** с.
- •Содержание
- •Предисловие
- •1. Понятие алгоритма в информатике. Блок-схемы алгоритмов
- •2. Типовые алгоритмы и их блок-схемы.
- •3. Алгоритмические языки и их классификация
- •Языки программи- рования
- •4. Методы объектно-ориентированного программирования
- •5. Интегрированная среда разработки Visual Basic
- •6. Программирование на языке Visual Basic
- •7. Программирование разветвляющихся процессов
- •If условие Then Оператор1 [ Else Оператор2]
- •8. Программирование циклических процессов
- •9. Графические возможности языка Visual Basic
- •10. Функции даты и времени. Объект Timer
- •11. Работа с внешними файлами и устройствами
- •Input # номер, имя_переменной
- •12. Работа с дисками и папками
- •CommonDialog1.ShowOpen
- •Open CommonDialog.FileName For Input As # 1
- •13. Работа с базой данных
- •14. Типы ошибок и методы отладки программ.
- •1. Синтаксические ошибки.
- •2. Ошибки в структуре программы.
- •3. Ошибки, возникающие во время выполнения программы.
- •4. Логические ошибки или ошибки алгоритма.
- •15. Примеры проектов
7. Программирование разветвляющихся процессов
Изменить последовательность выполнения операторов можно с помощью операторов ветвления.
Одним из них является условный оператор If…Then. Он имеет два форматов записи.
1. Однострочный формат
If условие Then Оператор1 [ Else Оператор2]
(в квадратные скобки взята необязательная часть). Если условиеистинно,Оператор1выполняется, в противном случае он пропускается и выполняетсяОператор2, если он указан.
2. Блочный формат.
If условие Then
Операторы1
[ Else
Операторы2]
End If
Эта форма применяется, когда нужно при выполнении или не выполнении заданного условия выполнить не один, а несколько операторов.
В качестве примера рассмотрим задачу вычисления корней квадратного трехчлена с коэффициентами A,B,C. Как известно, вещественные корни существуют при условии, что дискриминант больше либо равен нулю:D=B2– 4AC 0. Ниже приведен фрагмент программы, в котором дискриминант сравнивается с нулем и если он оказывается меньше нуля, выводится сообщение «Вещественных корней нет», противном случае подсчитываются значения корней.


D
D
= B^2 – 4*A*C If
D < 0 Then
Print
“ Вещественных корней нет ” Else
X1
= (–B
+ sqr
(D))
/ (2*A)
X2
= (–B
– sqr
(D))
/ (2*A)
Print
“ Вещественных корней нет ”
End
If


да нет



D < 0

“Решений
Вычисление
нет” корней X1, X2



Вывод X1, X2



Конец
Рис. 10. Фрагмент программы вычисления корней квадратного уравнения и его блок-схема
Еще одним оператором ветвления является Select Case.
Select Case Выражение
Case Список_значений1
Операторы1
Case Список_значений2
Операторы2
……….
[Case Else Список_значений3
Операторы3 ]
End Select
Здесь в качестве параметра Выражениеможет быть как имя переменной, так и арифметическое выражение, а параметрыСписок_значений1,Список_значений2 и т.д. могут быть как одиночными числовыми значениями, так и списками – несколькими числами, разделенными запятыми.
Если значение выражения не совпадет ни с одним из значений, указанных в списках, будет выполнены операторы, указанные в разделе Case Else(если таковой присутствует, если же его нет, то следующим будет выполнен оператор, следующий за операторомSelect.
В качестве списка значений можно указывать не только одно из возможных значений, но и несколько значений, разделенных запятыми. Можно также указать интервал значений (например, 4 To6), или задать его с помощью ключевого словаISи одного из знаков отношения < , <=, >, >=, < >, = (например,IS>= 10).
В качестве примера рассмотрим следующую задачу. Пусть задана кусочно-непрерывная функция f (x) следующим образом:
y




–1 дляx< –1,
1
f (x) = 0 для –1x < 1,

2
дляx 1.–2–10
1 2 x

–1
Требуется написать программу, вычисляющую значение этой функции для любого заданного значения x. Воспользуемся для этой цели оператором ветвленияSelect Case:
Select Case X
Case IS < –1
Y = –1
Case IS < 1
Y = 2
Case IS >= 1
Y = 1
End Select
Предположим, что X= –2. Тогда истинными являются условияIS <= –1 и IS < 1. Однако проверка условия IS < –1 идет первой и Y получит значение –1. Хотя второе условие также истинно для текущего значения X, оператор Y = 0 выполняться не будет, поскольку выбор уже будет сделан.
