Операторы циклов с условием Синтаксис цикла с предусловием While:
While условие do
begin
{Последовательность инструкций}
end;
− Инструкции, находящиеся между begin и end выполняются до тех пор, пока условие истинно. Если условие неверно при входе в цикл, инструкции ни разу не исполняются.
− Чтобы цикл завершился, необходимо, чтобы последовательность инструкций между begin и end изменяла значения переменных, входящих в выражение условие.
Синтаксис цикла с постусловием Repeat … Until
Repeat
{последовательность инструкций}
Until условие;
Работа оператора:
− выполняются инструкции, следующие после ключевого слова Repeat;
− вычисляется значение условия. Если условие ложно, то повторно выполняются инструкции цикла. Если условие истинно, то выполнение цикла прекращается.
Замечание. При использовании цикла с постусловием нет необходимости использовать операторные скобки.
3. Листинг программы
Unit1:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Label3: TLabel;
Label4: TLabel;
Button1: TButton;
Label5: TLabel;
Button2: TButton;
Label6: TLabel;
Button3: TButton;
Button4: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses Unit2, Unit4, Unit3;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
form2.show;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
form3.Show;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
form4.show;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
close;
end;
end.
Unit2:
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, math;
type
TForm2 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Button1: TButton;
Button2: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
procedure TForm2.Button1Click(Sender: TObject);
var
a,b,h,x,y: real;
n,i: integer;
begin
a:=StrToFloat(Edit1.Text); {начало отрезка}
b:=StrToFloat(Edit2.Text); {конец отрезка}
h:=StrToFloat(Edit3.Text); {шаг табуляции}
n:=ceil((b-a)/h+1); {расчет количества точек}
x:=a;
{формирование заголовка таблицы табуляции,
которая выводится в Memo. Добавление в конец строки
chr(13)+chr(10) - кодов 13 - возврат каретки
и 10 - переход на одну строку; позволяет разбить таблицу на строки}
memo1.text:=' x | y ' +chr(13)+chr(10);
for i:=1 to n do
begin y:=1/10*(power(x,2))-x*ln(x); {вычисление следующего значения функции}
{формирование очередной строки табицы с результатами табулирования}
Memo1.Text:=Memo1.Text+FloatToStrf(x,fffixed,5,2)+' | '
+FloatToStrf(y,fffixed,5,2)+chr(13)+chr(10);
x:=x+h; {вычисление следуюшей точки табуляции}
end;
end;
procedure TForm2.Button2Click(Sender: TObject);
begin
close;
end;
end.
Unit3:
unit Unit3;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Math;
type
TForm3 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Edit1: TEdit;
Button1: TButton;
Button2: TButton;
Edit2: TEdit;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form3: TForm3;
implementation
{$R *.dfm}
procedure TForm3.Button1Click(Sender: TObject);
begin
close;
end;
procedure TForm3.Button2Click(Sender: TObject);
var
k,n: integer;
y,s: real;
begin
n:=StrToInt(Edit1.Text);
s:=0; {оргнанизация циклов по числу членов последовательности}
for K:=1 to n do
begin
y:=(k+2)/(k*k+4); {вычисление очередного члена последовательности}
s:=s+y; {вычисление суммы последовательности}
end;
edit2.Text:=FloatToStr(s);{вывод результатирующей суммы}
end;
end.
Unit4:
unit Unit4;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm4 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Button1: TButton;
Button2: TButton;
Edit1: TEdit;
Edit2: TEdit;
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form4: TForm4;
implementation
{$R *.dfm}
procedure TForm4.Button2Click(Sender: TObject);
begin
close;
end;
procedure TForm4.Button1Click(Sender: TObject);
var
a,k:integer;
begin
a:=StrToInt(Edit1.Text);
k:=0;
while a<>0 do
begin
k:=k+1;
a:=a div 10
end;
edit2.Text:=intToStr(k);
end;
end.