Вторник, Октябрь 20Добро пожаловать!

Понятие инструкции case в языке Delphi

Как мы уже знаем, в исходном коде программы возможно использование вложенных инструкций if. Данный подход не всегда эффективен, особенно тогда, когда число вариантов  дальнейшего выполнения программы достаточно велико. Разработчики это предусмотрели и внесли в библиотеку языка цикл case в языке Delphi, способствующую эффективной реализации множественного выбора.

Цикл case в языке Delphi имеет общий вид:

откуда

  • Селектор подразумевает выражение, от значения которого зависит дальнейший вариант выполнения программы (т.е. определяет последовательность инструкций, которой будет руководствоваться программа в процессе своего выполнения);
  • Список N обозначает список констант. Если они представлены в виде диапазона чисел, то список можно опустить и вместо него следует подстановка первой и последней констант диапазона, разделенных двумя точками (список 1, 2, 3, 4 можно заменить диапазоном 1..4).

Последовательность выполнения инструкции case такова:

  1. Вначале производится вычисление значения выражения-селектора;
  2. Затем происходит последовательное сравнение этого значения  с константами, входящими в список констант.
  3. Далее, если произошло совпадение значения выражения-селектора с одной из констант списка, то осуществляется выполнение соответствующей этому списку группы инструкций, и на этом инструкция caseзавершает свое выполнение.
  4. Если произошло несовпадение значения выражения ни с одной из констант из всех списков, то производится выполнение последовательности инструкции, следующей за служебным словом else.

Использование синтаксиса инструкции case дает возможность не использовать служебное слово else вместе с соответствующей ему последовательностью инструкций. Тогда, если значения выражения-селектора не равно ни одной из констант из всех списков, то осуществляется выполнение следующей за служебным словом caseинструкции программы.

Ниже представлен алгоритм, который реализует цикл case в языке Delphi.

Примеры цикла case в языке Delphi

Приведем примеры использования инструкции case в различных ее вариантах.

Пример 1.

цикл case delphi

Пример 2.

Пример 3.

Теперь рассмотрим уже известную программу перевода веса из фунтов в килограммы на примере инструкции case. Данная программа будет учитывать тот факт, что в разных странах величина одного фунта измеряется по-разному. Например, в Англии 1 фунт = 453,592 гр, в России 1 фунт = 409,5 гр, в Дании, Исландии и Германии 1 фунт = 500 гр. На рисунке ниже представлено диалоговое окно программы, позволяющее выбрать страну на основе списка Страна.


Выбор страны осуществляется при помощи списка — компонента ListBox. Значок этого компонента расположен на вкладке Standard (рис. ниже — указан курсором).

Добавление списка ListBox на форму приложения проводится так же, как и добавление других компонентов: командной кнопки, поля редактирования и т. д. В таблице ниже представлены свойства списка — компонента ListBox.

Больший интерес вызывают свойство Items и свойство Itemindex. Первое из этих свойств включает в себя элементы списка, а второе свойство определяет, как номер был выбран из списка. В случае, когда не выбран ни один элемент из списка, свойство Itemindex принимает значение, равное -1. Что удобно и эффективно, список можно сформировать в процессе создания формы, либо в момент работы программы.

Чтобы сформировать список в процессе создания форма, необходимо в окне Object Inspector осуществить выбор свойства Items нажать на кнопку запуска редактора, позволяющим редактировать список строк (рис. ниже).

Появилось диалоговое окно String List Editor (рис. ниже).

В этом окне необходимо ввести список, печатая каждый его элемент в одной строке, нажимая на клавишу Enterпри переходе на новую строку. Когда был введен последний элемент списка, на клавишу Enter не рекомендуется нажимать. Завершив ввод всех элементов списка, нажмите на кнопку OK.

В таблице ниже представлены компоненты, располагающиеся на форме приложения нашей программы:

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

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

Листинг программы перевода веса из фунтов в килограммы:

unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes,
Graphics, Controls, Forms, Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Label2: TLabel;
Editl: TEdit; // поле ввода веса в фунтах
Button1: TButton; // кнопка Вычислить
Label1: TLabel;
LabelS: TLabel;
ListBox1: TListBox; // список стран
Label4: TLabel; // поле вывода рез-та — веса в килограммах
procedure FqrmCreate(Sender: TObject);
procedure ButtonlClick(Sender: TObject); private

{Private declarations } public
{ Public declarations } end;

var
Form1: TForml;
implementation

{$R *.DFM}

procedure TForml.FormCreate(Sender: TObject);
begin
{ListBox1.items.add(‘Россия’);
ListBox1.items.add(‘Австрия’);
ListBox1.iterns.add(‘Англия’);
ListBox1.items.add(‘Германия’);
ListBox1.iterns.add (‘Дания’);
ListBoxl.iterns.add(‘Исландия’);
ListBox1.iterns.add (‘Италия’);
ListBox1.items.add (‘Нидерланды’); }
ListBox1.itemindex:=0;
end;

procedure TForm1.ButtonlClick(Sender: TObject);
var
funt:real; // вес в фунтах
kg:real; // вес в килограммах
k:real; // коэффициент пересчета
begin
case ListBoxl.Itemindex of
0: k:=0.4095; // Россия
1: k:=0.453592; // Англия
2:k:=0.56001; // Австрия
3..5,7:k:=0.5; // Германия, Дания, Исландия, Нидерланды
6: k:=0.31762; // Италия
end;
funt:=StrToFloat(Editl.Text);
kg:=k*funt;
label4.caption:=Editl.Text + ‘ ф. — это ‘ + FloatToStrF(kg,ffFixed, 6,3) + ‘кг.’;
end;
end.

После загрузки в исходном тексте программы обратите внимание на процедуру FormCreate, обрабатывающую событие, которое возникает во время создания формы (ее создание осуществляется автоматически в процессе запуска программы). Данная процедура не только инициализирует переменные программы, но и может использоваться для добавления необходимых элементов списка. В листинге данной программы, как Вы можете заметить, инструкции создания списка помещены в комментарии. Это сделано для того, чтобы список был организован редактором строк в процессе создания формы.

Новички, надеюсь статья охарактеризовала цикл case в языке Delphi. Увидимся.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *