А.Н. Павлов. Высокоуровневые методы информатики и программирования

 

4.4.4. Создание программ с использованием операторов управления

Процедура для обработки события может содержать большое количество операторов, которые позволяют организовать вычисления, преобразование данных, осуществлять выполнение сложных логических процессов. В рассматриваемом примере, будущее приложение содержит форму с именем F1, которая отображает интерфейс пользователя. Основная функция пользователя – ввести с клавиатуры данные о сотрудниках в текстовое поле с именем T1. Нажатие на клавишу представляет собой событие, которое необходимо обрабатывать, при этом следует анализировать закончен ввод данных или нет, давать пользователю право выбора дальнейших действий и т.п., в программах для реализации функций выбора и управления используют условные операторы. Следует отметить, что существует два типа условных операторов: операторы IfThen и операторы Select Case. В рассматриваемом примере, остановимся на использовании условных операторов типа IfThen, и IfThenElse, эта конструкция используется тогда, когда при определенных условиях требуется выполнить один набор команд, а при их невыполнении - другой. Чтобы реализовать задачу с использованием условных операторов, целесообразно составить блок-схему процесса (см. рис. 22), в котором отражаются ключевые моменты, проводимых анализов и вычислений процедурой для ввода и обработки данных.

Рис. 22. Блок-схема работы процедуры для ввода и обработки данных

 

            На схеме (рис. 22) условный оператор If обозначен ромбом, после написания ключевого слова If (если) необходимо  указать булево выражение, определяющее выполнение условия. Если условие выполняется, то после ключевого слова Then (тогда) можно записать ту ветвь с программными кодами (последовательность операторов), которые выполняют действия над переменными. Если условие не выполняется, тогда необходимо перенаправить выполнение вычислений либо на конец оператора End If, либо вставляется ключевое слово Else (еще), после которого записываются операторы для выполнения каких либо действий с данными. В том случае, если внутри действия оператора If требуется провести еще одну проверку на выполнение условий, тогда строят аналогичную конструкцию. Необходимо только помнить, что вложение проверки внутри уже открытого оператор If, должно завершаться раньше, чем завершится его действие. Для рассматриваемого примера попробуем создать конструкцию из двух условных операторов. Предположим, что пользователь вводит в текстовое поле (Text Box с именем T1) фамилию сотрудника, с точки зрения технических средств осуществляется вызов события KeyPress – нажатие на какую-либо клавишу клавиатуры. Значение символа имеет собственный код, который обрабатывается системой и отображается в окне ввода в виде символа (при нажатии на служебные клавиши, например, Shift, Ctrl, Tab и другие значения их кодов генерируются, но символы в текстовом поле не отображаются). Логично предположить, что после того, как введена фамилия целиком, пользователь нажимает на клавишу Enter (ввод), которая также имеет собственный код в системе. Поэтому целесообразно отслеживать момент нажатия на клавишу Enter, после чего пользователю приложения следует принять решение о дальнейших действиях. Пользователь должен иметь возможность либо исправить ошибки, если их заметил, либо начать вводить новую фамилию, а уже подготовленную необходимо передать в окно со списком (Combo Box). Программный код, представленный на рис. 23 (процедура Sub T1_KeyPress(k As Integer)), осуществляет обработку события - нажатие на клавишу.

Рис. 23. Код программы для обработки события при нажатии на клавишу

 

            Следует обратить внимание, что переменная K определена непосредственно в процедуре в виде целых чисел (как Integer). Во-первых, коды клавиш представляют собой уникальный целочисленный код ASCII (American Standard Code for Information Interchange – Американский стандартный код для обмена информацией) для набора из 128 символов. Во-вторых, действие данной переменной должно распространяться только на указанную процедуру. Код клавиши Enter соответствует числу 13, поэтому в булевом условии оператора If сравниваются текущее значение кода клавиши с числом 13. В том случае, если равенство выполняется, переменной fam присваивается содержимое текстового поля (T1), свойство Text (текстовое) определяет вид представления переменной. Далее необходимо дать возможность пользователю принять решение, что достигается выводом на экран сообщения в виде диалогового окна, которое представлено на рис. 24.

Рис. 24. Диалоговое окно с вопросом для пользователя. Ответ «Да» - подтверждение согласия передачи данных в список

 

            Диалоговое окно сформировано с помощью вызова стандартной функции MsgBox() – Окно для передачи сообщения. Аргументами этой функции являются: сообщение пользователю, которое отображается на теле окна; наименование кнопок, которые должны отображаться; сообщение в информационной строке диалогового окна. Следует напомнить, что при работе в режиме создания проекта в среде Visual Basic, постоянно появляются подсказки для программиста, поэтому совсем необязательно помнить все наименования методов, названия свойств объекта и тех возможностей, которые необходимо использовать при обращении к стандартным функциям. В зависимости от выбранной кнопки (см. рис. 24), на выходе функции генерируется код этой кнопки (в данном случае, при нажатии на кнопку с наименованием «Да» генерируется код равный 6). Поэтому во втором операторе If проверяется условие на равенство цифре 6. Если пользователь нажал на кнопку «Да» (рис. 24), то выполняются последовательно три оператора.

 1) C1.AddItem fam - с помощью метода AddItem (добавить значение) в комбинированный список с именем C1 добавляется содержимое из переменной fam.

 2) T1.Text = “” – текстовое поле T1 очищается (туда заносится пустая строка).

 3) L2.Visible = True – на форме метка с именем L2 становится видимой (свойству Visible присваивается значение истина).

            На этом, действие внутреннего оператора If кончается, поэтому, чтобы подготовить поле ввода для дальнейшей работы, использован метод SetFocus - установить фокус ввода, в нашем примере курсор помещается в текстовое поле. Этот метод распространяется на объект T1, запись кода выглядит следующим образом:  T1.SetFocus.

Вторая ветвь работы внутреннего оператора If начинает действовать, если на диалоговом окне (рис. 24) нажата клавиша «Нет». В тексте программы после оператора Else стоит всего одна запись – T1.SetFocus, т.е. пользователя ориентируют (ведут) по объектам интерфейса приложения. Как только курсор устанавливается в текстовом поле, можно манипулировать клавишами для внесения необходимых изменений, при этом, тот текст, который был ранее введен в текстовое поле, не изменяется. После анализа текста и внесения исправления можно вновь нажать на клавишу Enter.

           

 

Hosted by uCoz