Скачиваний:
50
Добавлен:
02.05.2014
Размер:
341.92 Кб
Скачать

пример – различные задачи поиска, или расчеты методом последовательных приближений.

Пример:

Eps := 0.1; i := 2;

While i>Eps do begin i := i-i/2

end;

В данном примере производится расчет некоторой величины, пока получающееся значение не окажется меньше ранее заданной погрешности Eps.

Цикл с постусловием.

 

 

 

 

Обобщенный

синтаксис

этого

оператора

 

 

следующий:

 

 

 

 

 

Repeat <тело цикла> Until <условие>

 

 

Вывод

Как и в случае цикла с предусловием, условие

 

"Введите

является логическим выражением. В отличие от

 

возраст"

цикла While, этот цикл выполняется, пока условие

 

 

ложно. Как только условие принимает истинное

 

 

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

 

Ввод Age

Наиболее часто данный цикл применяется при

 

 

вводе исходных данных и контроле корректности

 

 

введенных данных. Пример:

 

 

 

 

Repeat

 

 

 

нет

Age>=18

Writeln(‘Введите возраст’);

 

 

Age<=70

ReadLn(Age);

 

 

 

 

 

Until (Age>=18) and (Age<=70);

 

 

да

В данном примере у пользователя

 

 

запрашивается возраст до тех пор, пока он не введет число из требуемого

диапазона. Ввод происходит как минимум один раз.

 

 

Пример выполнения работы

Требуется разработать программу табулирования следующей функции:

t = ln y + 3 y 2

При этом значение y рассчитывается по формуле: y =sin(ln( xx)) + ctg ( x)

Начальное и конечное значения, а также шаг равны: x [π ;2 π]; x =π4

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

Рассмотрим формализацию исходной задачи.

Некоторые математические функции в Паскале не реализованы, поэтому их требуется заменять выражениями, содержащими только реализованные функции. В рассматриваемом примере таких функций две: это кубический корень и котангенс.

В первом случае стоит обратить внимание, что выражение корня можно записать в форме y2/3. То есть задача сводится к функции возведения произвольного числа в произвольную степень. Это можно сделать, используя функции экспоненты и линейного логарифма. В общем виде эта формула выглядит так:

x y = e y ln x

То есть в рассматриваемой формуле запись будет следующая:

3 y2 = e2 / 3 ln y

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

ctg x = cos x sin x

Таким образом, после приведения формулы будут выглядеть следующим образом:

t = ln

 

y

 

+ e 2 / 3 ln y ;

y = sin( x)

+

cos x

 

 

 

 

 

 

 

ln( x)

 

sin x

 

 

 

 

 

 

Записывая эти формулы в виде выражений Паскаля, получим следующее (с учетом последовательности выполнения операторов):

y := sin(x)/ln(x)+abs(cos(x)/sin(x)) t := ln(abs(y))+exp(2/3*ln(y))

Пусть необходимо реализовать программу с использованием цикла While. В этом случае требуется задать условие окончания выполнения цикла. В данном примере этим условием будет значение переменной x больше конечного значения. Обозначим начальное и конечное значение как A и B соответственно, шаг - H. Тогда:

A := Pi;

 

 

B := 2*Pi;

 

 

H := Pi/4;

{ задаем начальное значение x }

x := A;

While x<=B do begin

 

 

y := sin(x)/ln(x)+abs(cos(x)/sin(x)); { расчет первой функции }

t := ln(abs(y))+exp(2/3*ln(y));

{ расчет второй функции }

WriteLn(x,y,t);

{ вывод на экран значений аргумента и функции }

x := x+H;

{ переход к следующему значению x }

end;

 

 

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

В случае использования цикла For задача несколько усложняется. Перед вычислением значений функции требуется определить число шагов алгоритма. Это можно сделать по следующей формуле:

N=Trunc b a

h

Функция Trunc применяется для округления дробного числа до целого путем отбрасывания дробной части. В частности, для значений аргумента 3.2 и 3.7 функция вернет одинаковое значение 3.

Таким образом, алгоритм можно расписать следующим образом:

A := Pi;

 

 

B := 2*Pi;

 

 

H := Pi/4;

{ определение числа шагов цикла }

N := Trunc((B-A)/H);

For I:=0 to N do begin

 

x := A+H*i;

{ расчет текущего значения аргумента x }

y := sin(x)/ln(x)+abs(cos(x)/sin(x));

{ расчет первой функции }

t := ln(abs(y))+exp(2/3*ln(y));

{ расчет второй функции }

WriteLn(x,y,t);

{ вывод на экран значений аргумента и функции }

end;

 

 

Реализация цикла для контроля входных значений с использованием конструкции Repeat Until оставляется студентам для самостоятельной реализации.

Задание

Разработать программу табулирования (вычисления таблицы значений) функции для произвольного диапазона изменения независимого параметра или аргумента. Выполнить расчет для заданных значений исходных данных, используя циклы For и While.

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

В программу включить ввод исходных данных и их проверку на принадлежность диапазону от –100 до 100, и корректность (начальное значение меньше конечного, шаг меньше разности начального и конечного значений).

Варианты:

1.

y = cos( x)

 

x 2

 

+b ,

b =sin3 (π c)

,

x [1;8],

 

x =1 ,

c=0,17

 

 

 

2.

1 5

 

 

 

 

 

 

 

 

y

= 3

a

2 +

t

, t

 

[4; 6] ,

t =0,25

a =0,24

α = ln( y) , sin( y) ,

 

 

 

 

 

 

 

 

,

 

3.

z = 0,5 x3 lg

 

x 5

 

,

x=tg(θ)+a ,

θ [2,2;3,2],

 

 

θ =0,25,

a =1,12

 

 

 

 

4.

γ =0,5 x2 cos(x+π ),

x = ea +ea ,

a [

5

π ;

3

π]

a =π

4

 

 

4

 

 

 

 

 

 

 

 

 

 

 

 

4

 

 

10

5.

x = y2 4 y ln(ϕ), ϕ=yc +ec ,

 

y [2; 6],

y =0,5 , c =0,13

6.

y =sin(x)+θ e x , θ=cos2 (π k),

x [0; 2π] , x =π

,

k =1,13

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6

 

 

 

7.

β = x2 y +2,5 5x ,

 

y = arctg

(x ),

x =[−2;2],

x=0,5

8.

y =sin(0,2 γ) +cos(1 x),

γ =ex +x ,

x [−3,14; 3,14],

 

x=0,5

9.

z =

 

y3 5 y

 

2 y ,

y=ctg3(a2)+ea,

a [1,2; 5,2] a =0,75

 

 

10.

λ = 3x

7 3,7

,

x=

t

log

 

t+3

 

 

,

 

t

 

[

−2

;

2

]

 

t

=0

,

5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

 

 

 

 

 

2π

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

11.

z =

 

 

 

 

 

 

lg( x)

 

 

(θ + 2)2 ,

θ =

 

 

 

,

 

x [0,1; 3,1]

 

 

x=0,5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

π x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

12.

y =9 x3 +3 x 1,1 − x ,

x =

 

(1 + ϕ)

,

 

 

 

ϕ [1;

 

4];

 

 

ϕ=0,5

 

 

 

 

 

3 ϕ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

13.

z =x +cos(π a) , x=sin 2 (π t) ,

 

 

a [−1,2 ; 1,2] ,

 

a = 0 ,6 ,

 

t

= 0,21

14.

x =

0 17

θ

2

lg(π y) ,

θ =3

y2

 

 

 

 

 

y [0,1 ; 2,1]

 

 

 

y =0,25

 

,

 

 

 

 

 

 

 

 

 

2 ey ,

 

 

 

 

 

 

 

15.

y =

 

z λ

 

+lnz (z),

 

λ = lg2 (z +1) +

 

 

 

1

 

,

z [18; 20]

 

 

 

z =2

 

 

 

 

 

 

 

 

 

 

 

 

 

2 z

 

 

 

 

16.

ϕ=

 

 

 

 

 

 

 

 

 

 

 

 

 

 

,

a =

1+y

π

,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y

 

[15 ; 20 ]

 

y

=

0,75

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

sin(0,1a) ln( y)

 

 

 

 

2 y

 

 

 

 

 

 

 

 

 

 

 

 

17.

z =sin(

 

x3,2)+β x , β =3

 

10

 

,

 

 

x [5,2;7,2] x=0,4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

π x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

π

 

 

 

18.

x

= −

 

 

 

 

 

 

 

y)

+

ln( y) ,

a

=

 

log2 ( y) ,

 

 

 

y [π; 2π] y =

 

 

 

1 2 cos(a

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

 

 

 

19.

y =3 xln(t)5

,

 

x =sin 3 (t 2 ) ,

 

t [0,1;1,1]

 

t=0,1

 

 

 

 

 

 

 

 

20.

x

=

y

ln

2

(y) ,

y =

t+c

 

 

 

,

 

 

 

 

 

 

 

 

 

 

 

 

 

=

2 ,

c

= π

 

 

 

 

 

t c

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

8

 

 

 

 

 

 

 

 

 

t

[11;19],

 

 

 

t

 

 

3

 

 

 

 

 

 

Контрольные вопросы

1.Что такое «цикл» ?

2.Какие виды циклов есть в Паскале?

3.Чем отличается цикл с предусловием от цикла с постусловием?

4.Сколько раз минимум может выполниться цикл с предусловием?

5.Сколько раз минимум может выполниться цикл с постусловием?

6.Какой тип переменной используется для цикла с параметром?

7.Какая форма цикла с параметром применяется для цикла «от большего к меньшему значению»?

8.Какой тип должно иметь условие для цикла с постусловием?

9.Каков шаг изменения переменной-счетчика в цикле с параметром?

10.Для решения каких задач применяется цикл с параметром? 11.Для решения каких задач применяется цикл с предусловием? 12.Для решения каких задач применяется цикл с постусловием?

Соседние файлы в папке Методичка - Borland Pascal 7.0