КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Программирование разветвляющихся вычислительных процессов
Разветвляющимся называется процесс, вычисления в котором могут выполняться различными способами. Способ вычисления определяется выполнением соответствующих ему условий. Рассмотрим следующую задачу: вычислить значение у для различных значений х по формуле Рассмотрим область определения функции:
Функция определена на всей числовой оси Х. Рассмотрим алгоритм вычисления значения функции в зависимости от значения аргумента х. (рис.) Для организации ветвлений используются операторы GOTO, IF и Select Case. Оператор GOTO GOTO – оператор безусловного перехода. Синтаксис: GoTo Метка. Метка – это обычный идентификатор. Меткой помечается оператор, на который происходит переход. Одной меткой может быть помечен только один оператор Стандартный порядок выполнения программы – выполнение операторов в порядке их записи. Если нужно изменить последовательность выполнения операторов, используют оператор GoTo.
Блок-схема алгоритма Пример: ... Goto Num1 Метки: Num1 и Num2 ... Num1 BtnStart. Enable = true Goto Num2 ... Num2: Имя метки может заканчиваться «:» TxtY.text = CStr(Y) ... Оператор GoTo часто использовать не рекомендуется, т.к. это делает текст программы мало понятным. Условный оператор if (если) Оператор If реализует ветвление и изменяет порядок выполнения операторов программы в зависимости от истинности или ложности некоторого условия. Имеет три формы записи: 1). Запись в строку (линейная форма). Синтаксис оператора:
Это полная форма оператора If. Раздел Else не обязателен - сокращенная форма if. Синтаксис: If Условие Then группа_операторов «Условие» в операторе – это выражение логического типа, составленное с помощью операций отношения (сравнения), >, <, < > и др. и логических операций and, or, not, xor и др. Результат вычисления логического выражения имеет тип Boolean, т.е. может принимать значения true и false. Полной форме оператора If соответствует блок-схема:
Сокращенной форме If соответствует блок-схема: Если «условие» выполняется, т.е. логическое выражение имеет значение true, то выполняется группа операторов, записанная между Then и Else, а операторы после Else пропускаются, и выполняется следующий за if оператор. Если «условие» не выполняется, (false), то операторы между Then и Else пропускаются, выполняются операторы после Else, а затем следующий за if оператор. При использовании сокращенной формы if выполняются операторы после Then, если условие выполняется. Если условие не выполняется, то операторы после Then пропускаются, и управление передается следующему за if оператору. Линейная форма оператора if может приводить к длинной строке (когда «группы операторов» содержат большое число операторов), неудобной для чтения. В этом случае применяется блоковая форма записи if. 2). Блоковая форма записи if. Синтаксис оператора: If Условие Then Оператор 1 Полная форма Оператор 2 …………. Оператор n Else Оператор n+1 ………….. Оператор m End if
Раздел Else не обязателен (сокращенная форма): If Условие Then Оператор 1 Оператор 2 …………. Оператор n End if
Напишем фрагмент программы для вычисления у с использованием оператора GoTo и линейной и блоковой записи оператора if: · линейная форма оператора if If x < -5 Then y = x + 1 Else (x > = -5) and (x < 0) Then _ y = x + 2 Else if (x > = 0) and (x < -10) Then y = x + 3 else y = x + 4 · блоковая форма оператора if: if x < - 5 Then y = x + 1 Else If (x > = -5) and (x < 0) Then Y = x + 1 Else If x > = 0 and x < = 10 Then Y = x + 3 Else Y = x + 4 End if End if End if · С оператором GoTo If x < -5 Then GoTo 1 Else GoTo 2 1: y = x + 1 GoTo 5 2: if (x > = -5) and (x < 0) Then GoTo 3 Else GoTo 4 3: y = x + 2 GoTo 5 4: if(x > = 0) and(x < = 10) Then y = x + 3 Else y = x + 4 5: txtY.Text = y
3). Блоковая форма записи оператора if с разделом Elseif При необходимости проверить несколько условий подряд, как в нашем примере, пришлось использовать несколько операторов if. В этом случае удобнее использовать if в форме, где Else заменяется произвольным числом разделов Elseif. Запишем фрагмент программы с использованием этой формы if. If x < -5 Then Y = x + 1 Elseif (x > = -5) and (x < 0) Then Y = x + 2 Elseif (x > = 0) and (x < = 10) Then Y = x + 3 Else Y = x + 4 End if
Оператор выбора Select Case Оператор позволяет выбрать одну из нескольких групп операторов в зависимости от значения некоторого выражения.
Синтаксис оператора: Select Case Выражение Case Список 1 Группа_опер_1 Case Список 2 Группа_опер_2 … Case Список n Группа_опер n Case Else Группа_опер n+1 End Select
Здесь «Выражение» может быть любым числовым или строковым выражением, в том числе константой, логическим выражением, переменной, функцией. «Список» - список одного или нескольких значений, список интервалов значений, с которыми сравнивается значение «Выражения». Если «Выражение» имеет значение, указанное в «Списке», то выполняется группа операторов, следующая за Case с этим списком, если нет – Else. Пример записи «Списков»: Case 3, 5, 10 – если «Выражение» = 3 или 5 или 10 Case 0 To 2- - если «Выражение» ³ 0 и £ 20 (в литер.) Case is > 15 - если «Выражение» > 15 Case a - если «Выражение» = a Фрагмент программы вычисления Y с оператором Select Case. Select Case Х Case is < -5 Y = x + 1 Case –5 To 0 Y = x + 2 Case 0 To 10 Y = x + 3 Case else Y = x + 4 End Select Блок-схема, соответствующая оператору Select Case:
Создадим приложение (проект) для вычисления у в нашем примере. 1). Введем переменные: х – значение аргумента типа Single y – значение функции типа Single 2). Создадим форму следующего вида:
Решение задачи начинается со щелчка на кнопке Start. В текстовом окне для ввода Х появляется курсор ввода, а рядом с окном подсказка «Введите значение Х и нажмите Enter». Вводится значение Х и нажимается Enter. Появляется подсказка «Нажмите кнопку Вычислить», и кнопка Вычислить становится активной. При нажатии кнопки Вычислить вычисляется y, и его значение выводится в соответствующее текстовое окно, обе подсказки убираются из окна формы, кнопка Вычислить становится недоступной. Если нужно ввести другое значение Х, нажимается Start: появляется подсказка «Введите …», текстовые окна для ввода х и вывода у очищаются. Далее действия повторяются. 4). Зададим начальные значения свойств объектов управления.
5). Напишем программный код. Процедуры, реализующие алгоритм работы с приложениями, имеют следующий вид: Private Sub btnStop_Click() End End Sub
Private Sub btnStart_Click() Label1.Caption=”Введите значение Х и нажмите клавишу Enter” txtX.SetFocus ‘курсор помещается в текстовое окно для ввода Х txtX.Text=”” ‘очистка текстового окна для ввода Х txtY.Text=”” ‘очистка текстового окна для вывода Y Label2.Caption=”” ’убирается 2-я подсказка из окна формы End Sub
Private Sub btnOption_Click() Dim x as Single, y as Single ‘объявляются переменные Label1.Caption=”” ‘убираются подсказки ‘из окна формы Label2.Caption=”” BtnOption.Enabled = False ‘кнопка «Вычислить» становится ‘недоступной x=Val(txtX.Text) ‘присваивание переменной Х введенного значения if x<-5 then ‘вычисление Y с использованием ‘оператора if end if txtY.Text=CStr(Y) ‘вывод Y в текстовое окно End Sub Когда при выполнении приложения пользователь нажимает клавишу клавиатуры, происходит событие KeyPress (нажатие клавиши), с которым связана процедура обработки события: Private Sub ControlName_KeyPress (KeyASCii as Integer), где ControlName – имя элемента управления, вызвавшего событие; KeyPress – имя события; KeyASCii – параметр процедуры – код ASCII той клавиши, которая была нажата. Каждой клавише соответствует свой код ASCII – целое число в диапазоне 0 ¸ 255. Когда нажимается клавиша, VB записывает код этой клавиши в переменную KeyASCii, и код становится доступным данной процедуре. Например, при нажатии клавиши с буквой «F» значение переменной KeyASCii будет = 70, т.к. 70 – код заглавной «F», и при нажатии «f» - KeyASCii = 102; цифры 0 – 9 имеют коды 48 – 57. В нашем приложении пользователь вводит в текстовое окно txtХ значения Х – несколько символов (например, «1», «.», «5»). При нажатии очередной клавиши ее код записывается в переменную KeyASCii, заменяя код предыдущей клавиши. Таким образом, в переменной KeyASCii находится код последней нажатой клавиши. После ввода значения Х пользователь нажимает клавишу Enter, и ее код 13 запишется в KeyASCii, т.е. нажатие клавиши Enter можно считать признаком конца ввода значения Х. Напишем процедуру обработки события KeyPress, в которой анализируем код нажатой клавиши. При нажатии Enter (код 13) выведем подсказку и сделаем активной кнопку Вычислить. Private Sub txtX_KeyPress(KeyASCii as Integer) If KeyASCii = 13 then Label2.Caption = «Нажмите кнопку Вычислить» BtnOption.Enabled=True End if End Sub Для вывода в окно программных кодов шаблона этой процедуры нужно дважды щелкнуть на текстовом окне для ввода Х и из списка событий в окне кодов выбрать событие KeyPress.
Дата добавления: 2014-01-07; Просмотров: 628; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |