Сделай Сам Свою Работу на 5

Листинг 2.2.Контроль веса





unitwtest_;

Interface

Uses

Windows, Messages, SysUtils, Classes,

Graphics, Controls, Forms, Dialogs, StdCtrls;

Type

TForm1 = class(TForm)

Label1: TLabel;

Label2: TLabel;

Edit1: TEdit; // поле ввода веса

Edit2: TEdit; // поле ввода роста

Button1: TButton; // кнопка Вычислить

Label3: TLabel; // поле вывода сообщения — результата работы

// программы

procedureButton1Click(Sender: TObject);

private{ Private declarations }

public{ Public declarations }

end;

Var

Form1: TForm1;

Implementation

($R *.DFM}

procedureTform1.Button1Click(Sender: TObject);

Var

w:real; { вес } h:real; { рост } opt:real;{оптимальный вес}

d:real; {отклонение от оптимального веса}

Begin

w:=StrToFloat(Edit1.text);

h:=StrToInt(Edit2.Text);

opt:=h-100;

ifw=opt then

Label3.caption:='Bы в хорошей форме!'

Else

ifw < optthen

Begin

d:=opt-w;

Label3.caption:='Вам надо поправиться, на '

+ FloatToStr(d)+ 'кг.';

End

Else

Begin

d:=w-opt;

Label3.caption:='Haдo немного похудеть, на '

+ FloatTostr(d)+ ' кг.';

end;

end;

End.

В приведенном примере множественный выбор реализован при помощи двух инструкций if, одна из которых "вложена" в другую.

Инструкция case

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



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

caseСелектор of

список 1: begin{ инструкции 1 } end;

список 2: begin{ инструкции 2 } end;

....................................

список N: begin{ инструкции N } end;

else begin{ инструкции )

end;

end;

где:

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

Выполняется инструкция case следующим образом:

1. Сначала вычисляется значение выражения-селектора.

2. Значение выражения-селектора последовательно сравнивается с константами из списков констант.

3. Если значение выражения совпадает с константой из списка, то выполняется соответствующая этому списку группа инструкций. На этом выполнение инструкции саsе завершается.



4. Если значение выражения-селектора не совпадает ни с одной константой из всех списков, то выполняется последовательность инструкций, следующая за else.

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

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

Рис. 2.7. Алгоритм, реализуемый инструкцией case

Ниже приведены примеры инструкции case.

casen_day of

1,2,3,4,5: day:='Рабочий день. ' ;

6: day:='Cyббoтa!';

7: day:='Воскресенье!';

end;

casen_day of

1..5: day:='Рабочий день.';

6: day:='Суббота!';

7: day:='Воскресенье!';

end;

casen_day of

6: day:='Суббота!';

7: day:='Воскресенье!';

elseday:='Рабочий день.';

end;

В качестве примера использования инструкции case рассмотрим программу, которая пересчитывает вес из фунтов в килограммы. Программа учитывает, что в разных странах фунт "весит" по-разному. Например, в России фунт равен 409,5 граммов, в Англии — 453,592 грамма, а в Германии, Дании и Исландии фунт весит 500 граммов.

В диалоговом окне программы, изображенном на рис. 2.8, для выбора страны используется список Страна.

Рис. 2.8. Диалоговое окно программы

Пример использования case

Для выбора названия страны используется список — компонент ListBox. Значок компонента ListBox находится на вкладке Standard(рис. 2.9). Добавляется список к форме приложения точно так же, как и другие компоненты, например, командная кнопка или поле редактирования. В табл. 2.5 приведены свойства компонента ListBox.



 

Рис. 2.9. Компонент ListBox

Таблица 2.5. Свойства компонента ListBox

       
  Свойство Определяет  
  Name Имя компонента. В программе используется для доступа к свойствам компонента  
  Items Элементы списка  
  Itemindex Номер выбранного элемента списка. Номер первого элемента списка равен нулю  
  Left Расстояние от левой границы списка до левой границы формы  
  Top Расстояние от верхней границы списка до верхней границы формы  
  Height Высоту поля списка  
  Width Ширину поля списка  
  Font Шрифт, используемый для отображения элементов списка  
  Parent-Font Признак наследования свойств шрифта родительской формы  
       

Наибольший интерес представляют свойства Items и Itemindex. Свойство items содержит элементы списка.

Свойство itemindex задает номер выбранного элемента списка. Если ни один из элементов не выбран, то значение свойства равно минус единице.

Список может быть сформирован во время создания формы или во время работы программы.

Для формирования списка во время создания формы надо в окне Object Inspectorвыбрать свойство items и щелкнуть на кнопке запуска редактора списка строк (рис. 2.10).

Рис. 2.10. Кнопка запуска редактора списка

В открывшемся диалоговом окне String List Editor(рис. 2.11) нужно ввести список, набирая каждый элемент списка в отдельной строке. После ввода очередного элемента списка для перехода к новой строке необходимо нажать клавишу <Enter>. После ввода последнего элемента клавишу <Enter> нажимать не надо. Завершив ввод списка, следует щелкнуть на кнопке ОК.

Рис. 2.11. Редактор списка

В табл. 2.6 перечислены компоненты формы приложения, а в табл. 2.7 приведены значения свойств компонентов.

Таблица 2.6. Компоненты формы

       
  Компонент Назначение  
  ListBox1 Для выбора страны, для которой надо выполнить пересчет  
  Edit1 Для ввода веса в фунтах  
  Label1, Label2, Label3 Для вывода пояснительного текста о назначении полей ввода  
  Label4 Для вывода результата пересчета  
  Button1 Для активизации процедуры пересчета веса из фунтов в килограммы  
       

 

Таблица 2.7. Значения свойств компонентов

       
  Свойство Значение  
  Form1 .Caption Пример использования case  
  Editl. Text    
  Label1 . Caption Выберите страну, введите количество фунтов и щелкните на кнопке Вычислить  
  Label2 .Caption Страна  
  Label3 . Caption Фунтов  
  Button1 . Caption Вычислить  
       

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

В листинге 2.3 приведен текст программы пересчета веса из фунтов в килограммы.

 








Не нашли, что искали? Воспользуйтесь поиском по сайту:



©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.