- •Основы информационной культуры
- •2. Техническая база информационной технологии
- •2.1 Представление информации в эвм
- •2.2 Системы счисления
- •2.3 Форматы чисел в эвм
- •2.4 Представление символьной информации
- •Программное обеспечение Вычислительной системы
- •Архивация данных
- •Концепция Visual Basic
- •Основное меню
- •Объекты управления
- •Форма (Form)
- •Командная кнопка (CommandButton)
- •Метка (Label)
- •Текстовое окно (TextBox)
- •Типы данных
- •Переменные и константы
- •Область видимости переменных и констант
- •Выражения
- •Стандартные функции
- •Программирование линейных вычислительных процессов
- •Программирование разветвляющихся вычислительных процессов
- •Программирование циклических вычислительных процессов
- •Итерационные циклы
- •Добавление изображений в форму
- •Массивы
- •Поиск в массиве элементов, удовлетворяющих заданным условиям
- •Группировка объектов
- •Создание меню
- •Ввод информации с использованием переключателей и флажков проверки
- •Процедуры и функции
- •Информационно вычислительные сети
- •Базовая модель взаимодействия открытых сетей
- •Топология ивс
- •Сетевое по. (спо)
- •Глобальная компьютерная сеть Internet. Основы функционирования Интернет.
- •Структура Интернет
- •Адресация в сетях.
- •Адресация в Интернет
- •Основные службы Интернет
- •Многоуровневое представление средств сетевого взаимодействия.
- •Коммуникационные службы
- •Прямое общение в Интернет
- •Отложенное общение в Интернет
- •Информационные службы.
- •Поиск информации в Интернет.
Программирование разветвляющихся вычислительных процессов
Разветвляющимся называется процесс, вычисления в котором могут выполняться различными способами. Способ вычисления определяется выполнением соответствующих ему условий.
Рассмотрим следующую задачу: вычислить значение у для различных значений х по формуле
Рассмотрим область определения функции:
X
y =
y =
y =
y =
Функция определена на всей числовой оси Х.
Рассмотрим алгоритм вычисления значения функции в зависимости от значения аргумента х. (рис. )
Для организации ветвлений используются операторы 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). Запись в строку (линейная форма). Синтаксис оператора:
I
(если) (то) (иначе)
Это полная форма оператора 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 |
1 2 3 4 5 6 7 8 9 10 11 |
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.
