End
End
Begin
Var
Листинг 2.5. Вычисление даты следующего дня (фрагмент)
End.
Case r of
Begin
Begin
Implementation
Var
Type
Uses
Windows, Messages, SysUtils,
Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
TForm1 = class(TForm) Label1: TLabel;
Editl: TEdit; Label2: TLabel;
procedure EditlKeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations } public
{ Public declarations } end;
Form1: TForm1;
{$R *.dfm}
// нажатиеклавиши
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char) var
n: integer; // число
r: integer; // остаток от деления n на 10
text: string [10]; // формируемый поясняющий текст
if Key = chr(VK_RETURN) then
n:= StrToInt(Editl.Text); if n > 100
then n:=n mod 100;
if (n >= 11) and (n <= 14) then
text:=' рублей' else begin
r:= n mod 10;
1: text:=' рубль'; 2.. 4: text:=' рубля';
else text:=' рублей';
end;
end;
Label2.Caption:= IntToStr(n)+ text; end;
end;
Рассмотрим фрагмент программы (листинг 2.5), которая вычисляет дату следующего дня, используя сегодняшнюю дату, представленную тремя переменными: day (день), month (месяц) и year (год).
Сначала с помощью инструкции сазе проверяется, является ли текущий день последним днем месяца. Если текущий месяц — февраль и если текущее число — 28, то дополнительно выполняется проверка, является ли год високосным. Для этого вычисляется остаток от деления года на 4. Если остаток равен нулю, то год високосный, и число 28 не является последним днем месяца.
|
|
Если выясняется, что текущий день — последний день месяца, то следующее число — первое. Затем проверяется, не является ли текущий месяц декабрем. Если нет, то увеличивается номер месяца, а если да, то увеличивается номер года, а номеру месяца присваивается значение 1.
// вычисление даты следующего дня
day: integer; // день
month: integer; // месяц
year: integer; // гОД
last:boolean; // если день — последний день месяца,
// то last = True
r:integer; // если год не високосный, то остаток
// от деления year на 4 не равен нулю
{ переменные day, month и year содержат сегодняшнюю дату }
last:= False; // пусть день — не последний день месяца
case month of 4,6,9,11:
if day = 30 then last:= True; 2:
if day = 28 then begin
r:= year mod 4; if r <> 0 then last:= True;
end;
else: if day=31 then last:= True;
end; if last then
begin // последнийденьмесяца day:= 1;
if month =12 then
begin // последниймесяц
month:= 1;
year:= year + 1;
else month:= month + 1;
else day:= day + 1;
// переменные day, month и year // содержатзавтрашнююдату
end;
Тема:Циклические конструкции. Циклы с параметром.
Алгоритмы решения многих задач являются циклическими, т. е. для достижения результата определенная последовательность действий должна быть выполнена несколько раз.
Для того чтобы найти фамилию человека в списке, надо проверить первую фамилию списка, затем вторую, третью и т. д. до тех пор, пока не будет найдена нужная фамилия или не будет достигнут конец списка.
Алгоритм, в котором есть последовательность операций (группа инструкций), которая должна быть выполнена несколько раз, называется циклическим, а сама последовательность операций именуется циклом.
|
|