Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
delphi.docx
Скачиваний:
27
Добавлен:
03.03.2015
Размер:
116.59 Кб
Скачать

12. Оператор цикла while.

while <логическое выражение> do <оператор>;

(пока) (выполнить)

Пока логическое выражение истинно, то будет выполняться оператор. Когда оно станет ложным, выполнение оператора прекратиться и начнет выполняться следующий оператор.

Пример бесконечного повторения (точнее, до переполнения разрядной сетки числа a):

while true do a:=a+1;

Пример, когда оператор не выполнится ни разу:

while false do a:=a+1;

Операторы цикла for и while - операторы с предварительной проверкой условия (циклы с предусловием).

4.3. Программа с использованием оператора while.

Напишем программу, которая решает уравнение x-0,5sinx+2=0. Перепишем это уравнение в виде x=0,5sinx-2. Зададим начальное приближение x1 к корню. Здесь можно принять x1=-2. Затем производим вычисления по итерационной формуле: xk+1=0,5sinxk-2. Процесс заканчивается при выполнении неравенства  xk+1- xk,(k=1,2,3,…) где  - малое число, например, ε= 0,001. Приведем программу, решающую поставленную задачу.

Сначала создадим форму. Создаем в левом верхнем углу формы три компонента класса Tlabel, переименовываем их с помощью строки Caption Object Inspector в x11, eps1 и корень соответственно. Создаем прямо под ними три компонента класса TЕdit и переименовываем их в x11, eps1, x соответственно с помощью строки Name Object Inspector.

Прямо под ними расположим два управляющих компонента Button1 и Button2 (пиктограмма ok) и кнопку √ok страницы Additional. Выбираем строку Kind и, нажав на стрелку в конце этой строки, в выпавшем наборе возможностей выбираем bkClose.

Рис.4.1. Вид формы после выполнения программы.

Код программы приводится ниже.

unit Unit1;

Interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics,

Controls, Forms,

Dialogs, Buttons, StdCtrls;

type

TForm1 = class(TForm)

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

x11: TEdit;

eps1: TEdit;

x: TEdit;

Button1: TButton;

Button2: TButton;

BitBtn1: TBitBtn;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

var

x1,x2,eps:Extended;

procedure clearr;// процедура очистки компонентов класса ТEdit формы

begin

Form1.x11.Text:=''; Form1.eps1.Text:='';

end;

procedure TForm1.Button1Click(Sender: TObject);

//установка фокуса ввода

begin

Clearr;

Form1.x11.SetFocus;

end;

procedure TForm1.Button2Click(Sender: TObject); //вычисление корня

begin

x1:=StrToFloat(Form1.x11.Text);

eps:=StrToFloat(Form1.eps1.Text);

x2:=0.5*sin(x1)-2;

while abs(x1-x2)>=eps do

begin x1:=x2;x2:=0.5*sin(x1)-2; end;

Form1.x.Text:=FloatToStrF(x2,ffFixed,8,2);//вывод результата

end;

end.

13. Оператор цикла repeat … until.

repeat <набор операторов> until <логическое выражение>;

(повторять) (пока)

В начале выполняется набор операторов. Затем вычисляется логическое выражение. Если оно ложно, то снова выполняется набор операторов и так до тех пор, пока это выражение не станет истинным. Это оператор повторения с проверкой истинности логического выражения (условия) после выполнения набора операторов, т.е. оператор с постусловием.

Перед until точка с запятой может не ставиться.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]