Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

лабораторные на Pasca (Кудрявцев)l

.pdf
Скачиваний:
32
Добавлен:
18.03.2015
Размер:
1.63 Mб
Скачать

Оператор выбора

73

 

 

Var Mon: Month; Sn: Season;

Определить Sn сезон, на который приходится месяц Mon.

6)Type Units = (decimeter, kilometer, meter, millimeter, centimeter); Var х: integer; p: Units;

Значение переменной х, означающее некоторую длину в единицах p, заме- нить на величину этой же длины в метрах.

7)Var k: 1..9;

Напечатать значение переменной k римскими цифрами.

8) Type Month = (jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec);

Var Day: 28..31; Mon: Month;

Переменной Day присвоить количество дней в месяце Mon (год считать не ви- сокосным).

9)Для целого числа k от 1 до 99 напечатать фразу «мне k лет», учитывая при этом, что при некоторых значениях k слово «лет» надо заменить словом «год» или «года».

74

Лабораторная работа № 7

ЦИКЛЫ

Циклы (многократно повторяемые действия) могут быть заданы в Turbo Pascal следующим образом:

a) Цикл со счетчиком:

for i := A to[downto] B do P

где i переменная типа Integer; А и B константы или выражения типа Integer; при to значение i при каждом повторе увеличивается на 1 (при А > В оператор Р не выполняется ни разу); при downto уменьшается на 1 (при А < В оператор Р не выполняется ни разу); Р

оператор (тело цикла),который может быть и составным:

for i := A to[downto] B do begin

<операторы>

end;

b) Цикл с завершением по нарушению условия:

while B do P;

где В условие (при невыполнении условия оператор Р не выпол- няется ни разу); Р оператор (тело цикла), который может быть и составным:

while B do begin

<операторы>

end;

Выполнение: проверяется условие В, и, если оно удовлетворено, то выполняется Р, а затем вновь проверяется В и т.д. Как только на очередном шаге окажется, что условие В не удовлетворяется, то выполнение цикла прекратится.

c)Цикл до выполнения условия (с завершением по достижению условия)

repeat <операторы>

Циклы

75

 

 

until <условие>;

Выполнение: выполняются операторы и проверяет условие. Если оно не выполнено, то вновь выполняются операторы и т.д. При удовлетворении условия выполнение цикла прекратится. В любом случае операторы выполняются хотя бы раз.

Пример 1. Составить программу вычисления n!. а)

Program fact1;

var n, i, p: integer; Begin

write('n='); readln(n); p := 1;

for i := 1 to n do p := p i; write('n!=', p)

End.

b)

Program fact2;

var n, i, p: integer; Begin

write('n='); readln(n); p := 1;

i := 0;

while i < n do begin

p := p i; i := i + 1 end;

write('n!=', p) End.

c)

Program fact3;

var n, i, p: integer; Begin

write('n='); readln(n); p := 1 ;

76

Лабораторная работа № 7

 

 

i := 0; repeat

p := p i; i := i + 1 until i >= n;

write('n!=', p) End.

Пример 2. Составить программу, печатающую таблицу значений функции у=sqrt(x) на отрезке [0,3] с шагом 0,3.

Program t;

var i: integer; Begin

write('x', ' ': 6);

for i := 0 to 10 do write(i*0.3: 6: 1); writeln;

for i := 1 to 75 do write('-'); writeln;

write('sqrt(x)', ' '); for i := 0 to 10 do

write(sqrt(i*0.3): 6: 2) End.

Таблица будетизображена на экране в виде:

x

0.0

0.3

0.6

0.9

1.2

1.5

1.8

2.1

2.4

2.7

3.0

---------------------------------------------------------------------------------------------------

sqrt(x)

0.00

0.55

0.77

0.95

1.10

1.22

1.34

1.45

1.55

1.64

1.73

Пример 3. Не используя стандартные функции (за исключением abs), вычислить с точностью до 0.0001 функцию y=f(x). Считать, что требуемая точность достигнута, если очередное слагаемое по модулю меньше 0.0001, все последующие слагаемые можно уже не учитывать. Привести и значение функции у, найденное с помощью стандартных функций.

y = cos x = 1

x2

+

x4

x6

+ K

 

 

 

2!

4!

6!

 

Program f1;

var x, y, n, u: real;

Циклы

 

77

 

 

 

Begin

 

 

write('x='); readln(x);

 

 

y:= 1;

{задается начальное значение для суммы}

n:= 1;

{номер слагаемого : y = 1–u1+u2–...}

u:= 1;

 

 

repeat

 

 

u := –u x x/((2 n – 1) 2 n);

{u n = un-1(–x2)/((2n – 1)2n)}

y:= y + u; n:= n + 1

 

 

until abs(u) < 0.0001;

 

 

write('полученное y=',y:6:2,'стандартное x=', cos(x):6:2) End.

Program f2;

var x, y, n, u: real; Begin

write('x='); readln(x);

y:= 1;

{задается начальное значение для суммы}

n:= 1;

{номер слагаемого : y=1–u1+u2–...}

u:= 1;

 

 

while abs(u)>=0.0001 do

 

 

begin

 

 

y:= y + u;

 

 

u:= –u x x/((2 n–1) 2 n);

{un =un-1(–x2)/((2n – 1)2n)}

n:= n+1;

 

 

end;

write('полученное x=',x:8:4,'стандартное x=',cos(x):8:4) End.

Пример 4. Дана непустая последовательность положительных ве- щественных чисел, за которой следует отрицательное число. Со- ставить программу вычисления среднего арифметического этих чи- сел.

Program s1;

var x, s: real; i: integer; Begin

write('x='); readln(x);

78

Лабораторная работа № 7

 

 

i := 0; s := 0; repeat

s := s + x; i := i + 1;

write('x', i + 1, '='); readln(x); until x < 0;

write('cp. арифм. =', s/i)

End.

Program s2;

var x, s: real; i: integer; Begin

write('x='); readln(x); i := 0; s := 0;

while x >= 0 do begin

s := s + x; i := i + 1;

write('x', i + 1, '='); readln(x) end;

write('cp. арифм. =', s/i)

End.

Пример 5. Дано целое n > 0. Составить программу, печатающую все простые числа из диапазона [2, n].

Program p1;

var n, m, k, p: integer; Begin

write('n='); readln(n); for m := 2 to n do

begin

p := 0;

for k := 2 to trunc(sqrt(m)) do if m mod k = 0 then p := 1;

if p = 0 then write(m,' ')

end

End.

Program p2;

var n, m, k: integer; t: boolean; Begin

write ('n='); readln(n); for m := 2 to n do

begin

Циклы

79

 

 

k := 2; repeat

t := m mod k = 0; k := k + 1

until t or (k>= trunc(sqrt(m))); if not t then write (m, ' ')

end

end.

Недостатком программы р1 является неэкономное использование машинного времени: проверка на делимость делителем k каждый

раз осуществляется во всем диапазоне [2, m ].

В программе р2 выход из цикла организован с помощью булевой переменной t.

КОНТРОЛЬНЫЕ ЗАДАНИЯ

1. Сформировать таблицу значений функции у = f(x) на отрезке [a, b] с шагом h в виде:

x

0

0.1

1

(y = sin x, a = 0, b = 1, h = 0.1)

----------------------------

 

 

××× -------

sin(x)

0.000

0.010

0.841

 

1) y = ex a = 0 b = 2 h = 0.2

6) y = ctg x a = 0.9

b = 0.1 h = 0.1

2. Вычислить:

1001

1)åi=1 i2 ;

2) y=10x

3) y = sin x

a = 0

a = 0.2

b = 2

b = 1.2

h = 0.2

h = 0.1

7) y = ln x

8) y = arctg x

a = 1

a = 0

b = 4

b = 2

h = 0.4

h = 0.2

4) y = cos x

5) y = tg x

a = 1

a = 0.1

b = 0

b = 0.9

h = 0.1

h = 0.1

9) y = arcctg x a = 3

b = 1 h = 0.3

52

 

 

i

2

 

n

 

 

2) Õ

 

 

 

;

3) åln 1+ i2 ;

i

2

+ 2i + 3

i=1

 

 

i=1

80

Лабораторная работа № 7

 

 

 

n

k

 

 

 

 

 

k

 

 

 

 

4)

Õ

 

 

coskx;

5)

åln(n2 + 2n + 2);

k +1

 

k=1

 

 

 

n=1

 

 

 

 

 

n

1+ sin kx

 

 

20

 

 

 

 

6)

Õ

;

7)

åln(i2 + 2);

 

k

 

 

k=1

 

 

 

 

n=2

 

 

 

 

 

30

ln n

 

 

 

 

 

n

 

 

k

 

8)

Õ

;

 

 

 

9)

å

 

 

;

n

 

 

 

1

3

 

n=3

 

 

 

 

 

k=1

+ k

3. Не используя стандартные функции (за исключением abs), вычислить с точностью до 0.0001 функцию y=f(x). Считать, что требуемая точность дос- тигнута, если очередное слагаемое по модулю меньше 0.0001, все последую- щие слагаемые можно уже не учитывать. Для задач 1) – 6) привести и значе- ние функции у, найденное с помощью стандартных функций.

1)y = ex = 1+ 1!x + x2!2 +L;

2)

y = arctg x = x

x3

+

x5

 

 

L (

 

x

 

< 1);

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3)

y = sin x = x

x3

+

x5

 

L;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3!

 

 

 

 

 

 

5!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4)

y = ln(x +1) = x

 

x2

+

x3

L (

 

x

 

< 1);

 

 

 

 

 

 

 

 

 

 

 

 

 

ex ex

2

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5)

y = sh x =

 

= x +

 

 

x3

 

+

 

x5

 

+L;

2

 

 

 

 

 

 

 

3!

 

5!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6)

y = ch x =

 

ex + ex

 

= 1+

 

x2

+

 

x4

 

+L;

2

 

 

 

 

 

 

 

2!

4!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

sin x

 

 

 

 

 

 

 

 

 

 

1 x

3

 

 

 

 

1 x

5

 

 

 

 

 

 

 

 

 

 

 

 

7)

y = ò

dx = x

 

 

 

+

 

 

 

 

L

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

3 3!

 

5 5!

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

sin

x

 

 

 

x

 

 

 

 

 

1 x

3

 

 

 

 

 

1 x

5

 

 

 

 

 

 

 

 

8)

y = ò

 

dx =

 

 

 

 

 

+

 

 

 

 

 

L

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

2 x

3

 

 

 

 

 

7 3!

 

 

 

11 5!

 

 

 

 

 

 

 

 

 

x

 

 

 

 

 

 

 

 

 

x

3

 

 

 

 

 

 

1 x

5

 

 

 

 

 

1 x

7

 

 

9)

y = òex2 dx = x

 

+

 

 

 

 

 

 

+L

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2!

5

 

3!

7

 

 

0

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

( найти y(1));

( найти y(1));

(найти y(1));

Циклы

81

 

 

4. Приближенно вычислить интегралы, используя метод средних прямо- угольников при n =100

b

ò f (x)dx = h[ f (x1 ) + f (x2 ) +K+ f (xn )],

a

где h =

b a

,

 

 

xk = a + kh h .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

dx

 

 

 

 

 

 

 

xdx

 

 

 

 

xdx

 

 

1)

ò

 

 

 

 

 

;

2)

ò

 

 

;

3)

ò

 

 

 

;

 

 

 

 

 

 

 

 

 

 

 

x

 

 

 

 

 

 

 

1+ sin

2

x

 

 

x

 

1

 

 

 

 

1

 

1+ e

 

0

 

1+ e

 

 

 

2

 

dx

 

 

 

 

 

 

 

 

1

 

dx

 

 

1

 

 

 

 

 

 

 

 

4)

ò

 

 

 

 

;

 

 

 

5)

ò

 

;

6)

ò

 

1+ x6

dx;

 

 

 

 

 

 

 

 

 

 

 

4

1+ x

4

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

0

1+ x

 

0

 

 

 

 

 

 

 

 

 

1

sin x

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

1

sin

x

 

 

 

 

7)

ò

dx;

 

 

 

8)

òex2 dx;

9)

ò

dx;

 

 

 

 

 

 

 

0

 

x

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

0

2 x

 

 

7) – 9) сравнить с результатомпредыдущего задания. 5. Вычислить:

1)Сколько членов суммы 1 + 1/2 + 1/3 + ... нужно взять, чтобы результат превысил 4?

2)Сколько членов суммы 1 + 1/4 + 1/9 + ... нужно взять, чтобы результат превысил 1.6?

3)Сколько членов суммы 1+1/2+1/4+1/8+1/16 + ... нужно взять, чтобы ре- зультатоказался не менее 1.999?

Числами Фибоначчи называют числа следующей последовательности: 1, 1, 2, 3, 5, 8, ... . Здесь каждое следующее число равно сумме двух предыдущих.

4)вычислить двадцатое число Фибоначчи;

5)вычислить сумму 10 первых чисел Фибоначчи;

6)найти первое число Фибоначчи, большее m (m > 1);

7)вычислить сумму всех чисел Фибоначчи, которые не превосходят 1000;

8)Вычислить сумму квадратов всех целых чисел, попадающих в интервал (ln x, ex), x > 1;

9)Вычислить количество точек с целочисленными координатами, попадаю- щих в круг радиуса r (r > 0) с центром в начале координат.

82

Лабораторная работа № 7

 

 

6. Решить следующие задачи:

1)Дано 15 вещественных чисел. Вычислить разность между максимальным и минимальным из них.

2)Дана непустая последовательность различных натуральных чисел, за кото- рой следует 0. Определить порядковый номер наименьшего из них.

3)Даны целое n > 0 и последовательность вещественных чисел, среди кото- рых есть хотя бы одно отрицательное число. Найти величину наибольшего среди отрицательных чисел этой последовательности.

4)Дано 12 вещественных чисел. Определить, образуют ли они воз- растающую последовательность.

5)Дана последовательность из 14 целых чисел. Определить, со скольких от- рицательных чисел она начинается.

6)Дано 15 вещественных чисел. Найти порядковый номер того из них, кото- рое наиболее близко к какому-нибудь целому числу.

7)Даны натуральное n и вещественные числа x1, у1, x2, у2, ..., xn, уn. Рассмат- ривая пары xk, уk как координаты точек на плоскости, определить радиус наименьшего круга (с центром в начале координат), внутрь которого попа- дают все эти точки.

8)Дана последовательность различных натуральных чисел, за которой следу- ет 0. Определить два наибольших числа среди них.

9)Дана последовательность различных натуральных чисел, за которой следу- ет 0. Определить, сколькоиз этих чисел больше предыдущего числа.

7) Вычислить:

 

10

2

 

 

1)

 

å

i

;

 

3

 

 

i, j=1

 

j

 

 

 

 

k

 

 

10

åsin kn

 

4)

å

n=1

;

 

 

k=1

 

 

k!

 

20

1

 

 

 

12 i

1

 

2) Õ

 

;

3) Õå

;

 

2

 

i, j=1 i + j

 

 

 

i=1 k=1

k +1

 

 

20

n!

 

 

 

 

5) å

;

 

 

 

n

 

 

 

 

 

n=1

åk2

 

 

k=1