лабораторные на Pasca (Кудрявцев)l
.pdfОператор выбора |
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 − e− x |
2 |
|
|
|
|
|
|
|
|
3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||
5) |
y = sh x = |
|
= x + |
|
|
x3 |
|
+ |
|
x5 |
|
+L; |
|||||||||||||||||||||||||||||||||
2 |
|
|
|
|
|
|
|
3! |
|
5! |
|
||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||
6) |
y = ch x = |
|
ex + e− x |
|
= 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 = òe−x2 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) |
òe− x2 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