p:= (a + b + c)/2;
s:= SQRT(p*(p - a)*(p - b)*(p - c));
writeln(Rus('Стороны треугольника: '),'a = ',a:6:2,'b = ',b:6:2,'c = ',c:6:2);
writeln(Rus('Площадь треугольника: '),'s = ',s:6:2);
end
else begin
if not poz then//отрицательные или равные нулю длины сторон
begin
if a <= 0 then mes:= mes + 'a <= 0; ';
if b <= 0 then mes:= mes + 'b <= 0; ';
if c <= 0 then mes:= mes + 'c <= 0; ';
end
else//одна сторона меньше двух других
begin
if a >= (c + b) then mes:= mes + 'a >= (c + b); ';
if b >= (c + a) then mes:= mes + 'b >= (c + a); ';
if c >= (a + b) then mes:= mes + 'c >= (a + b); ';
end;
writeln(Rus(mes));
end;
readln;
end.
Оператор варианта (case) строится в соответствии со следующим правилом (см. также синтаксическую диаграмму):
case I of
C1 : S1;
C2 : S2;
...
Cn: Sn;
else S
end
здесь I - выражение, которое называется селектором; C1,...,Cn- списки констант выбора; S,S1,...,Sn операторы варианта; case, of, else и end – зарезервированные слова.
Оператор case состоит из выражения (селектора) и списка операторов, каждому из которых предшествует одна или более констант (они называются константами выбора) или ключевое слово else. Селектор должен иметь порядковый тип размера байт или слово. Таким образом, строковый тип и тип LongInt являются недопустимыми типами селектора.
Все константы выбора должны быть уникальными и иметь порядковый тип, совместимый с типом селектора.
Оператор case осуществляет выбор для выполнения одного оператора из множества (S1,S2,...,Sn). Выбирается оператор, которому предшествует константа выбора, равная значению селектора или диапазону выбора, в котором находится значение селектора. Если такой константы выбора или такого диапазона выбора не существует, то выполняется оператор S, следующий за ключевым словом else. Если ветвь else отсутствует, то выполняется пустой оператор.
Управляющая структура оператора case - это структура типа «case», в которой case-тест соответствует селектору I, case списки - спискам констант выбора C1, C2,..., Cn, а case-части - операторам варианта.
Пример оператора варианта case
type
Operator = (Plus, Minus, Times);
var
O: Operator; X, Y: Real; I: Integer;
begin
X:= 5; Y:= 10; O:= Minus;
case O of
Plus : X := X + Y;
Minus: X := X - Y;
Times: X := X * Y;
end;{ После выполнения оператора будет X = -5}
I:= 7;
case I of
0, 2, 4, 6, 8: Writeln('Even digit');
1, 3, 5, 7, 9: Writeln('Odd digit');
10..100 : Writeln('Between 10 and 100');
else
Writeln('Negative or greater than 100');
end; { После выполнения оператора будет выведено 'Odd digit'}
Ниже представлена управляющая структура «case», которая в зависимости от значения Case-теста обеспечивает выполнение одной из n последовательностей действий, поименованных как Case-часть 1, Case-часть 2,… Case-часть n, или Else-часть.
Здесь case-тест - выражение порядкового или строкового типа, задающее условие ветвления процесса обработки данных по одному из указанных направлений.
Case-часть i - описание процесса обработки данных, который будет выполнен, если case-тест примет значение, попадающее в case-список i.
Else-часть - описание процесса обработки данных, который будет выполнен, если значение case-теста не попадёт ни в один из case-списков.
Case- сисок i - список констант такого же типа, как и тип case-теста. Case-списки не должны содержать совпадающих элементов.
На Object Pascal она может быть частично реализована (для case-теста в виде выражения порядкового типа) посредством применения условного оператора case.
На рисунке ниже приведена Е-схемы программа с управляющей структурой «case». Как видно из Е-схемы программа имеет n + 1 путей выполнения. При выполнении программы по первому пути (Case-тест принимает значение, попадающее в Case-список 1) выполняются действия по обработке данных поименованные как «Case-часть 1». При выполнении программы по второму пути (Case-тест принимает значение, попадающее в Case-список 2) выполняются действия по обработке данных поименованные как «Case-часть 2». При выполнении программы по n-ому пути (Case-тест принимает значение, попадающее в Case-список n) выполняются действия по обработке данных поименованные как «Case-часть n». При выполнении программы по n + 1-ому пути (Case-тест принимает значение, не попадающее ни в один из Case-списков) выполняются действия по обработке данных поименованные как «Else-часть 2».
Пример 1. Приложение под Windows для вычисления площади треугольника
//-----------------------------------------------------
program PGeron;
uses
Forms,
UGeron in 'UGeron.pas' {Form1};
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
//-----------------------------------------------------
unit UGeron;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;//сторона треугольника a
Label1: TLabel;
Edit2: TEdit;//сторона треугольника b
Label2: TLabel;
Label3: TLabel;
Edit3: TEdit;//сторона треугольника c
Label4: TLabel;
Edit4: TEdit;//площадь треугольника s
Button1: TButton;//оператор if
Button2: TButton;//оператор case
procedure Button1Click(Sender: TObject);
procedure Edit1Exit(Sender: TObject);
procedure Edit2Exit(Sender: TObject);
procedure Edit3Exit(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.