
3 Сурет.
// “Дистанция” өрісіне берілетін мәндер
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
case Key of
'0'..'9': ; // сандар
#8 : ; // <Backspace>
#13 : Edit2.SetFocus; // <Enter>
else Key :=Chr(0);
end;
end;
// “Время:минут” өрісіне мән беру
procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
case Key of
'0'..'9': ;
#8 : ; // <Backspace>
#13 : Edit3.SetFocus; // <Enter>
else Key :=Chr(0);
end;
end;
// “Время:секунд” өрісіне мән беру
procedure TForm1.Edit3KeyPress(Sender: TObject; var Key: Char);
begin
case Key of
'0'..'9': ;
',','.' : // бөлшек бөлігі
begin
Key := DecimalSeparator;
if Pos(DecimalSeparator,Edit3.Text) <> 0
then Key := Char(0);
end;
#8 : ; // <Backspace>
#13 : Button1.SetFocus;
else Key :=Chr(0);
end;
end;
// “Вычислить” түймесіне басу
procedure TForm1.Button1Click(Sender: TObject);
var
dist : integer; // арақашықтық - метрмен
min : integer; // минутпен берілген уақыт
sek : real; // секундпен берілген уақыт
v: real; // жылдамдық
begin
dist := StrToInt(Edit1.Text);
min := StrToInt(Edit2.Text);
sek := StrToFloat(Edit3.Text);
if (dist = 0) or ((min = 0) and (sek = 0)) then
begin
ShowMessage('Надо задать дистанцию и время.');
exit;
end;
v := (dist/1000) / ((min*60 + sek)/3600);
label5.Caption := 'Дистанция: '+ Edit1.Text + ' м' + #13 +
'Время: ' + IntToStr(min) + ' мин ' +
FloatToStrF(sek, ffGeneral,4,2) + ' сек ' + #13 +
'Скорость: ' + FloatToStrF(v,ffFixed,4,2) + ' км/час';
end;
// “Завершить” түймешелігін шерту
procedure TForm1.Button2Click(Sender: TObject);
begin
Form1.Close; // программа жұмысын тоқтату
end;
Зертханалық жұмыс №4 (1)
Іf операторын пайдаланып қалааралық телефон байланысының бағасын есептеудің программасын құрастырайық.
Қалааралық телефон байланысының жай күндерге қарағанда демалыс күндері сөйлесу бағасы төмен екені белгілі. Біздің программада сөйлесу ұзақтығын және апта күнін енгізе отырып, сөйлесу бағасын есептейміз. Егер апта күні – сенбі немесе жексенбі болса, онда сөйлесу бағасы жеңілдік бойынша азаяды. 1 минуттың сөйлесу бағасы және жеңілдік пайызы тұрақты ретінде енгізіледі.
Берілгендерді (сөйлесу ұзақтығын және апта күнінің номерін) енгізу үшін редактрлеу компоненттерін (Edit1, Edit2), ал нәтижесі мен түсіндірме үшін белгі компоненттерін (Label1, Label2, Label3) аламыз.
Кесте1. Жобаға қойылатын компоненттер
|
Edit1 Edit2 Label1, Label2 |
Сөйлесу ұзақтығын (минутпен) енгізуге арналған Апта күнінің номерін енгізу үшін Түсіндірме сөздер жазу үшін |
|
||
|
Label3
Button1 |
Жауабын шығару үшін (телефон байланысының сөйлесу бағасын) Сөйлесу бағасын есептеу процедурасының жұмысын орындау үшін |
|
Кесте2. Компоненттер қасиеттерінің мәндері.
Ескерту. Компоненттер қасиеттерінің мәндері көрсетілген кестеде компонент атауы және нүктеден кейін оның қасиеті көрсетілген.
|
Қасиеті |
Мәні |
|
|
Form1 . Caption |
Стоимость разговора |
|
|
Edit1.Text |
|
|
|
Edit2.Text |
|
|
|
Label1 .Caption |
Длительность (мин.) |
|
|
Label2 .Caption |
Номер дня недели |
|
|
Label3 .Caption |
|
|
|
Button1 . Caption |
Вычислить |
|
unit Phone_u;
interface
Windows, Messages, SysUtils, Classes,
Graphics, Controls, Forms, Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Editl: TEdit; // поле ввода длительности разговора
Edit2: TEdit; // поле ввода номера дня недели
Button1: TButton; // кнопка Вычислить
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
procedure ButtonlClick(Sender: TObject); private
/ Private declarations } public
{ Public declarations } end;
var
Form1: TForm1;
implementation
($R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
const
PAY =0.15; // цена одной минуты разговора 0.15 рубля
DISCOUNT = 0.2; // скидка 20 процентов
var
Time:Real; // длительность разговора
Day:integer; // день недели
Summa:real; // стоимость разговора
begin
// получить исходные данные
Time:=StrToFloat(Editl.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.