Операторы условного перехода

Операторы условного перехода проверяют, какие операторы далее следует выполнять и, таким образом, строить разветвляющиеся вычислительные процессы. Сначала рассматривается некоторое условие, а затем, в зависимости от того, ложно это условие или истинно, осуществляется переход на выполнение тех или иных действий. Существует два оператора условного перехода: IF и CASE. В операторе IF осуществляется выбор одного из двух вариантов расчёта. В операторе CASE осуществляется выбор одного из нескольких вариантов расчёта.

ОПЕРАТОР IF

Возможны 2 варианта записи этого оператора:

A. IF <условие> THEN <оператор 1>;

B. IF <условие> THEN <оператор 1> ELSE <оператор 2>;

Условие ветвления для оператора IF задаётся логическим выражением. Если <условие> возвращает true, то выполняется <оператор 1>. Если <условие> возвращает false, то в случае:

A. Оператор IF пропускается,

B. Выполняется <оператор 2>.

Например,

IF X < 0 THEN Y:= -X;

IF X > 25 THEN Y:= X + 5 ELSE Y:= A + X;

В первом операторе присваивание Y:= -X выполняется, если логическое выражение X < 0 истинно. Во втором случае имеется выбор, какой оператор выполнить.

ПРИМЕР 2

Ввести целое число Х и вывести на экран символ, соответствующий этому числу в кодировке ANSI (форма рис.14).

операторы условного перехода - student2.ru

Рис. 14 Форма примера 2

Пусть Х типа Word, значит, значение Х лежит в диапазоне 0..65535. В таблице ANSI всего 256 символов, они пронумерованы от 0 до 255. Часть этих символов является управляющими (0..31) и не все из них можно увидеть на экране дисплея. Остальные символы (32..255), кроме пробела (символ 32), имеют графическое представление. С помощью оператора IF заданная выше ситуация описывается следующим образом:

IF (X > 31) AND (X <= 255) THEN <вывод символа>

ELSE IF (X <= 31) THEN <вывод 'Управляющий символ'>

ELSE <вывод 'Символа нет'>;

В этом примере используются 2 новых компонента: TPanel и ТBitBtn. На форме (рис. 14) изображены 7 объектов: 2 метки Label1, Label2, 2 однострочных редактора Edit1, Edit2, панель Panel1, простая кнопка Button1 и комбинированная кнопка BitBtn1. Для Panel1 установлено свойство Align равным alBottom, для Label2 - свойство WordWrap равно true и Alignment равно taCenter, чтобы название (Caption) записывалось в две строки и выравнивалось по центру, для BitBtn1 свойство Kind выбрано равным bkClose.

Элемент управления TPanel представляет собой вдавленный или выпуклый (Beveled) прямоугольник, в котором может содержаться несколько элементов управления. Таким образом, этот компонент используется в качестве контейнера других элементов. Выпуклость и вогнутость определяется следующими свойствами: BevelInner – вогнутый, BevelOuter – выпуклый, BevelWidth - ширина (глубина). Если на панели расположить метку (TLabel), то полученный элемент можно использовать в качестве строки состояния, указывающей ход выполнения программы.

Компонент TBitBtn называют комбинированной кнопкой, очень похож на TButton. Находится на второй странице Additional палитры компонентов. Этот компонент вместе с текстом позволяет разместить на себе маленький рисунок (в виде пиктограммы), причем позволяет размещать одновременно до 4-х рисунков. Эти рисунки могут выбираться в процессе выполнения программы, в зависимости от возникшей ситуации. Рисунок задаётся с помощью свойства Glyph и должен быть предварительно создан с помощью любого графического редактора, например, встроенного в Delphi. Рисунок должен представлять собой файл типа BMP. Количество рисунков в файле определяется свойством NumGlyphs. В свойстве Kind существуют встроенные кнопки с заданными операциями и соответсвующими этим операциям рисунками - можно выбирать встроенные операции, например операцию выхода (без написания кода) из обработчика событий.

При задании значений свойств TabOrder нужно учитывать, что объект Panel1 содержит внутри себя 2 объекта, и по отношению к форме все эти объекты являются одним элементом. Поэтому свойство TabOrder объекта Edit1 должно быть равно 0, объекта Panel1 равно 1. Нет необходимости задавать значение свойству TabOrder для Edit2. Поэтому следует присвоить связанному с TabOrder свойству TabStop этого объекта значение false. TabOrder у элементов Button1 и BitBtn1 задаются по отношению к контейнеру Panel1 равными сответственно 0 и 1.

Интерфейс разработан. Теперь в соответствии со схемой рис. 1 выберем необходимые обработчики событий. Для объекта Edit1 следует организовать ввод только цифровых символов, для Button1 и BitBtn1 необходима обработка нажатий на эти кнопки. Таким образом, потребуется разработать три обработчика событий. Текст программы модуля приводится ниже.

unit prim2;

Interface

Uses

Windows, Messages, SysUtils, Classes, Graphics,

Controls, Forms, Dialogs, StdCtrls, Buttons,

ExtCtrls;

Type

TForm1 = class(TForm)

{список интерфейсных элементов}

Panel1: TPanel;

Button1: TButton;

BitBtn1: TBitBtn;

Label1: TLabel;

Edit1: TEdit;

Label2: TLabel;

Edit2: TEdit;

{объявления обработчиков событий}

Procedure Edit1KeyPress

(Sender: TObject;var Key: Char);

procedure Button1Click(Sender: TObject);

end;

var Form1: TForm1;

Implementation

{$R *.DFM}

{программный код обработчиков событий}

Наши рекомендации