Лекция 43 Begin

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;

Тема:Циклические конструкции. Циклы с параметром.

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

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

Алгоритм, в котором есть последовательность операций (группа инструкций), которая должна быть выполнена несколько раз, называется циклическим, а сама последовательность операций именуется циклом.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: