Листинг 2.1. Вычисление стоимости телефонного разговора
Глава 2
Управляющие структуры языка Delphi
Условие
В программе условие — это выражение логического типа (Boolean), которое может принимать одно из двух значений: True (истина) или False (ложь).
Простое условие состоит из двух операндов и оператора сравнения. В общем виде условие записывается следующим образом:
Оп1 Оператор Oп2
где:
- Oп1 и Оп2 — операнды условия, в качестве которых может выступать переменная, константа, функция или выражение;
- Оператор — оператор сравнения.
В языке Delphi есть шесть операторов сравнения, которые приведены в табл. 2.1.
Таблица 2.1. Операторы сравнения
|
|
|
|
|
| Оператор
| Описание
| Результат сравнения
|
|
| >
| Больше
| True, если первый операнд больше второго, иначе False
|
|
| <
| Меньше
| True, если первый операнд меньше второго, иначе False
|
|
| =
| Равно
| True, если первый операнд равен второму, иначе False
|
|
|
|
|
|
|
| <>
| Не равно
| True, если первый операнд не равен второму, иначе False
|
|
| >=
| Больше или равно
| True, если первый операнд больше или равен второму, иначе False
|
|
| <=
| Меньше или равно
| True, если первый операнд меньше или равен второму, иначе False
|
|
|
|
|
|
| | | | | | | | | | Из простых условий при помощи логических операторов: and — "логическое И", or -- "логическое ИЛИ" и not - "отрицание" можно строить сложные условия.
В общем виде сложное условие записывается следующим образом:
Условие1 оператор условие2 где:
- условие1 и условие2 — простые условия (выражения логического типа);
- оператор — операторand или or.
Например:
(ch >= '0') and(ch <= '9')
(day = 7) or (day = 6)
(Form1.Edit1.Text <> ' ' ) or (Form1.Edit2.Text <> '' )
Form1.CheckBox1.Checked and(Form1.Edit1.Text <> '' )
Результат выполнения логических операторов and, or и not представлен в табл. 2.2.
Таблица 2.2. Выполнение логических операций
|
|
|
|
|
|
|
| Oп1
| Oп2
| Oп1 and Oп2
| Oп1 or Oп2
| not Oп1
|
|
| False
| False
| False
| False
| True
|
|
| False
| True
| False
| True
| True
|
|
| True
| False
| False
| True
| False
|
|
| True
| True
| True
| True
| False
|
|
|
|
|
|
|
|
|
Выбор
Выбор в точке разветвления алгоритма очередного шага программы может быть реализован при помощи инструкций if и case. Инструкция if позволяет выбрать один из двух возможных вариантов, инструкция case — один из нескольких.
Инструкция if
Инструкция if позволяет выбрать один из двух возможных вариантов развития программы. Выбор осуществляется в зависимости от выполнения условия.
В общем виде инструкция if записывается так:
ifусловие then
Begin
// здесь инструкции, которые надо выполнить,
// если условие истинно.
End
Else
Begin
//здесь инструкции, которые надо выполнить, если условие ложно.
end;
Рис. 2.2. Алгоритм, реализуемый инструкцией if-then-else
Например, если переменная t обозначает тип соединения сопротивлений в электрической цепи (t=1 соответствует последовательному соединению, t=2 — параллельному), a r1 и r2 — величины сопротивлений, то приведенная ниже инструкция if осуществляет выбор формулы, по которой будет выполнен расчет.
ift=l then
Begin
z:=r1+r2;
End
Else
Begin
z:=(r1+r2)/(r1*r2);
end;
Если в инструкции if между begin и end находится только одна инструкция, то слова begin и end можно не писать.
Например, инструкцию
ifotv=3
Then
Begin
prav:=prav+1 ;
End
Else
Begin
ShowMessage('Ошибка!');
end;
можно переписать так:
if otv=3 then
prav:=prav+l
elseShowMessage('Ошибка!') ;
Если какое-либо действие должно быть выполнено только при выполнении определенного условия и пропущено, если это условие не выполняется, то инструкция if может быть записана так:
ifусловие then
Begin
{ инструкции, которые надо выполнить, если условие выполняется, истинно }
End
На рис. 2.3 представлен алгоритм, соответствующий инструкции if-then.
Рис. 2.3. Алгоритм, реализуемый инструкцией if-then
Например, инструкция
if n=m thenc:=c+l;
увеличивает значение переменной с только в том случае, если значения переменных n и m равны.
В качестве примера использования инструкции if рассмотрим программу вычисления стоимости междугородного телефонного разговора.
Как известно, стоимость междугородного разговора по телефону в выходные дни ниже, чем в обычные. Программа, текст которой приведен в листинге 2.1, запрашивает длительность разговора и день недели, а затем вычисляет стоимость разговора. Если день недели — суббота или воскресенье, то стоимость уменьшается на величину скидки. Цена минуты разговора и величина скидки задаются в тексте программы как константы. Вид диалогового окна программы приведен на рис. 2.4.
Для ввода исходных данных (длительность разговора, номер дня недели) используются поля редактирования, для вывода результата и пояснительного текста — поля меток. В табл. 2.3 перечислены компоненты и указано их назначение, а в табл. 2.4 приведены значения свойств этих компонентов.
Рис. 2.4. Диалоговое окно программы Стоимость разговора
Примечание
Здесь и далее при описании формы приложения приводятся значения только тех свойств компонентов, которые используются в программе. Значения остальных свойств, в частности определяющих размер и положение компонентов, могут быт .оставлены без изменения или изменены произвольным образом, естественно, в разумных пределах (очевидно, что положение командной кнопки или поля редактирования может быть выбрано в пределах формы произвольным образом).
Таблица 2.3. Компоненты формы приложения Стоимость разговора
|
|
|
|
| Компонент
| Назначение
|
|
| Edit1
Edit2
Label1, Label2
| Для ввода длительности разговора в минутах
Для ввода номера дня недели
Для вывода пояснительного текста о назначении полей ввода
|
|
|
|
|
|
|
|
|
|
| Label3
Button1
| Для вывода результата вычисления — стоимости разговора
Для активизации процедуры вычисления стоимости разговора
|
|
|
|
|
|
Примечание
В таблицах, содержащих описание значений свойств компонентов формы, указывается имя компонента и через точку — имя свойства. Например, строка таблицы Form1 . Caption Стоимость разговора обозначает, что во время создания формы приложения свойству Caption формы приложения надо присвоить указанное значение — текст "Стоимость разговора".
Таблица 2.4. Значения свойств компонентов
|
|
|
|
| Свойство
| Значение
|
|
| Form1 . Caption
| Стоимость разговора
|
|
| Edit1.Text
|
|
|
| Edit2.Text
|
|
|
| Label1 .Caption
| Длительность (мин.)
|
|
| Label2 .Caption
| Номер дня недели
|
|
| Label3 .Caption
|
|
|
| Button1 . Caption
| Вычислить
|
|
|
|
|
| Программа производит вычисления в результате щелчка на командной кнопке Вычислить.При этом возникает событие onclick, которое обрабатывается процедурой TForm1.Button1Click.
Листинг 2.1. Вычисление стоимости телефонного разговора
unitPhone_u;
Interface
Windows, Messages, SysUtils, Classes,
Graphics, Controls, Forms, Dialogs, StdCtrls;
Type
TForm1 = class(TForm)
Edit1: TEdit; // поле ввода длительности разговора
Edit2: TEdit; // поле ввода номера дня недели
Button1: TButton; // кнопка Вычислить
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
procedureButtonlClick(Sender: TObject);
private {Private declarations }
public { Public declarations }
end;
Var
Form1: TForm1;
Implementation
($R *.DFM}
procedureTForm1.Button1Click(Sender: TObject);
Const
PAY =0.15; // цена одной минуты разговора 0.15 рубля
DISCOUNT = 0.2; // скидка 20 процентов
Var
Time:Real; // длительность разговора
Day:integer; // день недели
Summa:real; // стоимость разговора
Begin
// получить исходные данные
Time:=StrToFloat(Edit1.Text);
Day:=StrToInt(Edit2.Text);
// Вычислить стоимость разговора
Summa:= PAY*Time;
// Если день суббота или воскресенье, то уменьшить
// стоимость на величину скидки
if(Day = 6) OR(Day = 7)then
Surama:=Summa*(1 - DISCOUNT);
// вывод результата вычисления
label3.caption:='K оплате '+ FloatToStr(Summa) + 'руб.';
end;
End.
Часто в программе необходимо реализовать выбор более чем из двух вариантов. Например, известно, что для каждого человека существует оптимальное значение веса, которое может быть вычислено по формуле:
Рост(см)- 100.
Реальный вес может отличаться от оптимального: вес может быть меньше оптимального, равняться ему или превышать оптимальное значение.
Следующая программа, диалоговое окно которой приведено на рис. 2.5, запрашивает вес и рост, вычисляет оптимальное значение, сравнивает его с реальным весом и выводит соответствующее сообщение.
Рис. 2.5. Окно программы Контроль веса
Алгоритм программы Контроль весаизображен на рис. 2.6.
Как и в предыдущей программе, вычисления выполняются при щелчке на кнопке Вычислить(ее имя Button1). В листинге 2.2 приведен текст программы.
Рис. 2.6. Алгоритм программы Контроль веса
Не нашли, что искали? Воспользуйтесь поиском по сайту:
©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.
|