Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛЗ2.doc
Скачиваний:
0
Добавлен:
21.08.2019
Размер:
462.85 Кб
Скачать

11. Разкажите о операторе for.

Синтаксис оператора For:

Последовательность операторов, находящаяся между begin и end, будет выполнена (кон_зн_счетчика - нач_зн_счетчика_цикла + 1) раз. Если начальное значение счетчика превышает конечное значение счетчика, при шаге цикла равным 1, то последовательность операторов, находящаяся между begin и end ни разу не будет выполнена.

Пример: Вычислить сумму конечного ряда , т.е. сумму первых n членов последовательности (k=1,2,3..,n).

Программа, реализующая данный алгоритм будет иметь вид:

 Замечание. В том случае, если тело цикла состоит только из одной инструкции, нет смысла использовать составной оператор (операторные скобки Begin…End)

12. Синтаксис цикла с предусловием While (пока)?

-     Инструкции, находящиеся между begin и end выполняются до тех пор, пока условие истинно. Если условие неверно при входе в цикл, инструкции ни разу не исполняются.

-     Чтобы цикл завершился, необходимо, чтобы последовательность инструкций между begin и end изменяла значения переменных, входящих в выражение условие.

Пример.

var k:integer;

n,y,s:real;

begin

n:=strtofloat(edit1.text);

k:=1;

s:=0;

while y>=n do begin {цикл с предусловием}

y:=(k+0.3)/(3*k*k+5);

s:=s+y;

k:=k+1;

end;

edit2.text:=floattostr(s)+' '+inttostr(k-1);

end;

Замечание. В том случае, если тело цикла состоит только из одной инструкции, нет смысла использовать составной оператор (операторные скобки Begin…End)

13. Синтаксис цикла с постусловием Repeat … Until (повторять до)?

Работа оператора:

-     выполняются инструкции, следующие после ключевого слова Repeat;

-     вычисляется значение условия. Если условие ложно, то повторно выполняются инструкции цикла. Если условие истинно, то выполнение цикла прекращается.

Замечание. При использовании цикла с постусловием нет необходимости использовать операторные скобки.

Пример.

var k:integer;

n,y,s:real;

begin

n:=strtofloat(edit1.text);

k:=1;

s:=0;

repeat

y:=(k+0.3)/(3*k*k+5);

s:=s+y;

k:=k+1;

until

y<=n;

edit2.text:=floattostr(s)+' '+inttostr(k-1);

end;

14. Компонент Memo.

Практическая часть.

Разработать программу для вычисления значений функции Z(x), заданной соотношением:

Параметры А и В задать в программе (в разделе Const и оператором присвоения), а значения Х вводить с клавиатуры с помощью компоненты однострочного редактора. Вводу значения Х должен предшествовать вывод на экран подсказки, например «Введите значение Х». Использовать все виды циклов.

А

В

Х

1

0,6

5,5

1,2

2,9

4,8

2

0,2

0,6

0

0,5

1

3

2,3

6,8

1,9

2,6

3,3

4

0,1

2,5

0,8

1,6

2,4

5

4,7

8,2

4,5

5,0

5,5

6

0,6

5,5

1,2

2,9

4,8

7

0,2

0,6

0

0,5

1

8

2,3

6,8

1,9

2,6

3,3

9

0,1

2,5

0,8

1,6

2,4

10

4,7

8,2

4,5

5,0

5,5

11

0,6

5,5

1,2

2,9

4,8

12

0,6

5,5

1,2

2,9

4,8

13

0,2

0,6

0

0,5

1

14

2,3

6,8

1,9

2,6

3,3

15

0,1

2,5

0,8

1,6

2,4

16

4,7

8,2

4,5

5,0

5,5

17

0,6

5,5

1,2

2,9

4,8

18

0,2

0,6

0

0,5

1

19

2,3

6,8

1,9

2,6

3,3

20

0,1

2,5

0,8

1,6

2,4

21

4,7

8,2

4,5

5,0

5,5

22

0,6

5,5

1,2

2,9

4,8

23

0,2

0,6

0

0,5

1

24

2,3

6,8

1,9

2,6

3,3

25

0,1

2,5

0,8

1,6

2,4

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls,math;

type

TForm1 = class(TForm)

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

Edit1: TEdit;

Label6: TLabel;

Button2: TButton;

Button1: TButton;

Button3: TButton;

Memo1: TMemo;

Edit2: TEdit;

Edit3: TEdit;

Edit4: TEdit;

Label7: TLabel;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

x,a,b,nz,kz,dx,F,G:real;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

const a=0.2;

b=0.6;

begin

nz:=strtofloat(edit1.Text);

kz:=strtofloat(edit2.Text);

dx:=strtofloat(edit3.Text);

x:=strtofloat(edit4.Text);

while (x>=nz)and(x<=kz) do begin

if (x>a)and(x<b) then begin

F:=round(ln(abs(6-x))/(sin(x)+x));

memo1.Lines.Add('F='+floattostr(F));

end

else begin

G:=round(x*ln(abs(x-2.5)));

memo1.Lines.Add('G='+floattostr(G));

end;

x:=x+dx;

end;

end;

procedure TForm1.Button2Click(Sender: TObject);

const a=0.2;

b=0.6;

begin

nz:=strtofloat(edit1.Text);

kz:=strtofloat(edit2.Text);

dx:=strtofloat(edit3.Text);

x:=strtofloat(edit4.Text);

for x:=nz to kz do

begin

if (x>a)and(x<b) then

begin

F:=round(ln(abs(6-x))/(sin(x)+x));

memo1.Lines.Add('F='+floattostr(F));

end

else

begin

G:=round(x*ln(abs(x-2.5)));

end;

memo1.Lines.Add('G='+floattostr(G));

end;

end;

procedure TForm1.Button3Click(Sender: TObject);

const a=0.2;

b=0.6;

begin

nz:=strtofloat(edit1.Text);

kz:=strtofloat(edit2.Text);

dx:=strtofloat(edit3.Text);

x:=strtofloat(edit4.Text);

repeat

if (x>a)and(x<b) then begin

F:=round(ln(abs(6-x))/(sin(x)+x));

memo1.Lines.Add('F='+floattostr(F));

end

else begin

G:=round(x*ln(abs(x-2.5)));

memo1.Lines.Add('G='+floattostr(G));

end;

x:=x+dx;

until (x>kz);

end;

end.

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