Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Программирование разветвляющихся вычислительных процессов




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

Рассмотрим следующую задачу: вычислить значение у для различных значений х по формуле

Рассмотрим область определения функции:

y =
y =
y =
y =
X

Функция определена на всей числовой оси Х.

Рассмотрим алгоритм вычисления значения функции в зависимости от значения аргумента х. (рис.)

Для организации ветвлений используются операторы 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 Условие Then группа_операторов 1 Else группа_операторов 2

Это полная форма оператора 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). Создадим форму следующего вида:

 

 


Конец
3). Разработаем алгоритм работы с приложением.

Решение задачи начинается со щелчка на кнопке Start. В текстовом окне для ввода Х появляется курсор ввода, а рядом с окном подсказка «Введите значение Х и нажмите Enter». Вводится значение Х и нажимается Enter. Появляется подсказка «Нажмите кнопку Вычислить», и кнопка Вычислить становится активной. При нажатии кнопки Вычислить вычисляется y, и его значение выводится в соответствующее текстовое окно, обе подсказки убираются из окна формы, кнопка Вычислить становится недоступной. Если нужно ввести другое значение Х, нажимается Start: появляется подсказка «Введите …», текстовые окна для ввода х и вывода у очищаются. Далее действия повторяются.

4). Зададим начальные значения свойств объектов управления.

  Свойства
  Объект Name Caption Text Enabled
  Form 1 Comm 1 Comm 2 Comm 3 Text1 Text2 Label1 Label2 Label3 Label4 OLE Vetvlen btnStart btnOption btnStop txtX txtY Label 1 Label2 Label3 Label4 OLE1 Разветвляющиеся ВП Start Вычислить Конец     «пусто» «пусто» Значение Y Расчетные формулы     «пусто» «пусто»     false

 

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; Просмотров: 604; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.046 сек.