Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Алгоритмизация и языки программирования. Учебно-методический комплекс.pdf
Скачиваний:
0
Добавлен:
06.09.2026
Размер:
1 Мб
Скачать
end;
2
10
1,
!jii
p
ji
+
=
=
=
=
=
10
1
1
!
sin
k
k
n
k
kn
S
( )
=
+
+
n
i
ii
i
1
2
!3
!12
9996...63 +
+++=y
n
x
xxxy
cos...coscoscos
32
++++
=
end.
Упражнения:
1. Вычислить
2. Вычислить
3. Напечатать в возрастающем порядке все трехзначные числа, в десятичной записи которых нет одинаковых цифр.
4. Напечатать в возрастающем порядке все трехзначные числа, сумма цифр которого равна заданному числу n (n=9)
5. Напечатать в возрастающем порядке все трехзначные числа, в десятичной записи которых все одинаковые цифры.
6. Определить, является ли заданное число совершенным, т.е.
равным сумме всех своих (положительных) делителей, кроме самого
этого числа (например, число 6- совершенно: 6=1+2+3).
7. Дано целое n>2. Напечатать все простые числа из диапазона [2,n].
8. Вычислить
9. Вычислить
10. Вычислить
ЛАБОРАТОРНАЯ РАБОТА 4
ПРОГРАММИРОВАНИЕ ЦИКЛОВ С УСЛОВИЕМ
Цель работы: Овладеть навыками программирования на языке
Паскаль алгоритмов циклической структуры с использованием опе­раторов цикла с предусловием и постусловием.
КРАТКИЕ СВЕДЕНИЯ ИЗ ТЕОРИИ
Для программирования циклов ПОКА в Паскале существуют
оператор цикла с предусловием WHILE и оператор цикла с посту­словием REPEAT.
91
...
5
*4
3
4*3
2
3*
2
1
+
++=s
ПРИМЕР 1: Алгоритм Евклида для подсчета НОД (наиболь-
шего общего делителя) двух натуральных чисел.
П Р О Г Р А М М А
program Evklid; var a,b,x,y,z: integer; begin writeln ('Введите числа'); readln (a,b); x:=a; y:=b; while (x< >y) do if x > y then x:=x-y else y:=y-x; z:=x; writeln ('НОД=',z) end.
ПРИМЕР 2: Вычислить сумму членов ряда
с точностью до члена ряда, меньшего Е.
П Р О Г Р А М М А
program Summa; var n:integer; S,Z,E: real; begin writeln ('ввести точность'); readln (E); n:=1; Z:=1/6; S:=0; While abs(z) >=E do begin S:=S+Z; n:=n+1; Z:=n/((n+1)*(n+2)) end;
92
writeln ('S=', S:10:2)
n
S
n
ππππ
π
sin)1(...
4
sin
3
sin
2
sinsin
1+
+++=
ε
ε
xxxxS
nn
sin)1(...sinsinsin1
32
+++=
ε
001,0=
ε
n
n
x
n
xxx
y
)1(...
321
1
3
2
++
+
=
ε
001
,
0=
ε
12
2
7
6
5
4
3
2
2
...
642
+
+++++=
n
n
n
xxxx
xS
ε
001,0=
ε
=
=
2
2
ln
)1(
n
n
nn
S
ε
001,
0=
ε
x
x
y+=
1
cos
)1(cos3+n
ne
),...,
1( mn
=
)1cos(
)1sin(+⋅+
kxe
kx
),...,1( nk =
ε
,...,,...,,
2121
yyxx
end.
Упражнения:
1. Вычислить
. Расчет про-
изводить до тех пор, пока слагаемое по абсолютной величине не станет меньше заданной точности
. Значение
задать вводом.
2. Составить программу вычисления суммы
. Расчет ввести до тех пор, пока
разность между значениями двух соседних членов ряда по абсолютной величине не станет меньше заданной точности
3. Составить программу вычисления
.
.
.
Счет окончить, когда разность между значениями двух соседних слагаемых по абсолютной величине станет меньше заданной точности
.
.
4. Составить программу вычисления суммы
. Расчет вести до тех пор, пока разность
между значениями двух соседних членов ряда по модулю не станет меньше заданной точности
5. Составить программу вычисления величины
.
.
.
Суммирование производить до тех пор, пока слагаемое по абсолют-
ной величине не станет меньше заданной точности
6. Найти наибольшее значение функции
.
и значение, при
.
котором оно получено. Значения аргумента x изменяются от 0 до 10 с шагом 0,1.
7. Дано натуральное число m. Найти наименьшее среди чисел
, а также сумму этих чисел.
8. Дано натуральное число n. Найти наибольшее среди чисел
, а также сумму этих чисел.
9. Дано натуральное число n. Получить все его натуральные делители.
10. Даны действительные, положительные числа a, b,
.
Последовательности
образованы по закону:
93
111111
),(
2
1
,,
=+===
kkkkkk
yxyyxxbyax
. Найти первое n такое, что
ε
<
n
n
yx
.
ЛАБОРАТОРНАЯ РАБОТА 5
ПРОГРАММИРОВАНИЕ ЦИКЛОВ С УСЛОВИЕМ
ЦЕЛЬ РАБОТЫ: Овладеть навыками программирования на
языке Паскаль алгоритмов циклической структуры с использованием операторов цикла с предусловием и постусловием.
КРАТКИЕ СВЕДЕНИЯ ИЗ ТЕОРИИ
Для программирования циклов ПОКА в Паскале существуют
оператор цикла с предусловием WHILE и оператор цикла с посту­словием REPEAT.
ПРИМЕР 1: Написать программу, вычисляющую сумму и
среднее арифметическое последовательности положительных чисел.
П Р О Г Р А М М А
PROGRAM PR1; VAR a: integer; n: integer; S: integer; m: real; BEGIN Write (‘введите числа’); Readln (a); S:=0; n:=0; REPEAT S:=S+a; n:=n+1; UNTIL a<=0; n:=n-1; Writeln (‘сумма чисел:’,S);
94
m:=S/n;
( )
x
xxf
1
1 +=
[ ]
3;1x
)1ln(1
sin
1
+−−=x
x
y
0,31,0 x
72 = xz
<
++
=
5,0,1
5,0,1
2
yеслиy
yеслиyy
x
1
0 y
05,0=
h
Writeln (‘среднее арифметическое:’,m:6:2); END.
ПРИМЕР 2. Вычислить значение функции
меняет значения на интевале
П Р О Г Р А М М А
Program step; const a=’--------------------‘ var f,x,h : real; begin x:=1; h:=0.2; writeln(a); writeln(‘x’:8, ‘h’:8, ‘f’);
writeln(a); repeat f:=sqrt(x+1) – 1/x; writeln(x:0:2, ‘’:4, h:0:1,’’:4, f:0:2);
, если х
с шагом h=0.2.
x:=x+h; until x>3; writeln(a);
end.
Упражнения:
1. Составить программу вычисления количества положитель-
ных и отрицательных значений функции
нении аргумента x в интервале
с шагом h=0,1.
2. Написать программу вычисления функции
которой
с шагом
.
. Значение y изменяется в интервале
при изме-
, для
95
3. Написать программу вычисления пары функций z и y:
 
 
>
<+
=
12,ln
121,2
1,
2
xеслиx
xеслиx
xеслиx
z
 
 
>
<
=
12,lg
121,
1,5,0
xеслиx
xеслиx
xеслиx
y
232 x
1=h
75
,0
ln
+
= x
x
y
52,0 x
25,0=h
 
 
<
<+
=
25,1,sin
5,11,
10,
)(
xеслиxe
xеслиex
xеслиx
xf
x
x
x
xxy
1
5
2
+=
1
3
x
 
 
<
+
+
<+
=
43,
31,
2
1ln
10,1sin
)(
чеслиe
xесли
x
x
xеслиx
xf
x
xxy 5,07,1 +=
xx
z cossin=
)3ln( xy +=
b
ce
am2
=
в интервале
,
с шагом
.
. Значение x изменяется
4. Составить программу вычисления и печати среднего
арифметического положительных и среднего арифметического отрицательных значений функции
няется в интервале
с шагом
.
. Аргумент x изме-
5. Рассчитать и выдать на печать таблицу значений функции
. Шаг аргумента 0,1.
6. Найти минимальную ординату функции
интервале
, с шагом 0,1 и зафиксировать ее абсциссу.
в
7. Составить программу вычисления сумму функции
. Шаг аргумента 0,1.
8. Составить программу вычисления функций
и
при изменении аргумента x в интервале [1,5…2,5] с шагом
0,1. Найти сумму тех значений z, которые удовлетворяют условию
z<1, и сумму значений y, которые удовлетворяют условию 1<y<3.
9. Вычислить сумму значений функции
, если
известно, что аргумент x в интервале [0..1] изменяется с шагом 0,1, а в интервале [1..2] с шагом 0,2.
10. Для 6 произвольных пар чисел (a, b) подсчитать и напечатать
, где с наибольшее по абсолютной величине из чисел a и b.
ЛАБОРАТОРНАЯ РАБОТА 6
Цель работы:
1. Усвоить правила работы с переменными типа массив языка программирования Паскаль.
96
2. Научиться составлять алгоритмы и программы для обработки одномерных массивов.
КРАТКИЕ СВЕДЕНИЯ ИЗ ТЕОРИИ
Под массивом понимается упорядоченная совокупность
конечного числа данных одного типа, об"единенных под общим именем. Имена массивов образуются так же, как и имена простых
переменных. Одномерный массив называется вектором. Для опи­сания массивов используется служебное слово array. Массив в Турбо­Паскале можно описывать двумя способами:
а) в разделе описания переменных VAR: var <имя переменной>: array [тип индекса] of <тип
компоненты>;
б) определить сначала тип, а затем описать массив этим типом
type <имя типа>: array [тип индекса] of <тип компоненты>; var <имя переменной>: <имя типа>; где <тип индекса> - порядковый тип; <тип компоненты> - любой тип.
ПРИМЕР 1: В векторе найти номера и значения первого
минимального и последнего максимального элементов.
П Р О Г Р А М М А
program min_and_max; const n1=100; var a: array [1 .. n1] of real; n,i,nmin, nmax: integer; amin, amax: real; begin writeln ('n='); readln (n); writeln ('Вводите элементы вектора'); for i:=1 to n do readln (a[i]); amin:=a[1]; nmin:=1; amax:=a[1]; nmax:=1;
97
for i:=1 to n do begin if a[i] < amin then begin amin:=a[i]; nmin:=i end; if a[i] >= amax then begin amax:=a[i]; nmax:=i end end; writeln ('min=', amin:8:3,',nmin=', nmin:3); writeln ('max=', amax:8:3,',nmax=', nmax:3); end.
ПРИМЕР 2: Создать массив из N случайных целых чисел,
равномерно распределенных в диапазоне от 0 до 100. Вычислить
среднее арифметическое этих чисел.
П Р О Г Р А М М А
program SRED; const nmax=1000; type x=array [1 .. nmax] of integer; var m:x; i,n:integer; s:real; begin writeln ('n='); readln(n); {создание массива} for i:=1 to n do begin m[i]:=random (101); writeln (m[i]) end; s:=0;
98
for i:=1 to n do
),...,,(
5021
bbbB
),...,,(
4021
xxxX
),...,,(
2421
aaaA
2423222187654321
... aaaaaaaaaaaas +++=
),...,,(
5021
aaaA
),...,,(
24
21
xxxX
),...,,(
2421
yyyY
n
aa
,...,
1
n
aa
,...,
1
n
aa
,...,
1
n
aa
,...,
1
n
aa
,...,
1
s:=s+m[i]; s:=s/n; writeln ('s='s) end.
Упражнение:
1. В массиве
вычислить сумму отрицательных,
произведение положительных и количество нулевых элементов.
2. Ввести массив
. Подсчитать количество всех
чисел, расположенных в промежутке [-1,1] и сумму всех остальных.
3. Дан массив
. Вычислить сумму
.
4. Дан массив
. Найти произведение всех элементов,
значения которых меньше 50, и сложить его с произведением
элементов больших 100.
5. Даны два массива
и
. На место
массива X записать массив Y, а на место массива Y – массив X.
6. Написать программу, которая проверяет, представляют ли
элементы введенного с клавиатуры массива неубывающую
последовательность.
7. Написать программу, которая определяет количество сту- дентов в группе, чей рост превышает средний.
8. Даны целые числа
. Если в данной последователь-
ности ни одно четное число не расположено после нечетного, то
получить все отрицательные члены последовательности, иначе – все положительные.
9. Даны действительные числа
последовательность
, если она упорядочена по не убыванию
. Оставить без изменения
или не возрастанию; в противном случае удалить из последова-
тельности те члены, порядковые номера которых кратны четырем,
сохранив прежним порядок остальных членов.
10. Даны действительные числа
среди чисел
совпадающие, и если есть, то определить их
. Выяснить, имеются ли
количество и порядковые номера.
99
ЛАБОРАТОРНАЯ РАБОТА 7
РАБОТА С МАТРИЦАМИ
Цель работы: Научиться составлять алгоритмы и программы
для обработки двумерных массивов.
КРАТКИЕ СВЕДЕНИЯ ИЗ ТЕОРИИ
Двумерный массив состоит из элементов с двумя индексами:
один показывает номер столбца в массиве, другой - номер строки.
В Турбо-Паскале возможны массивы и большей размерности.
Для их описания возможны два подхода:
а) массив рассматривается как массив других массивов:
type x=array[1..100] of real; y=array[1..2] of x; или type y=array[1..100,1..2] of real;
б) массив рассматривается как многоиндексный type y=array [ 1...100, 1...2 ] of real;
Оба описания равноценны.
ПРИМЕР 1: Получить матрицу, элементами которой являются
произведения номеров строк i и номеров столбцов j.
П Р О Г Р А М М А
program umnog; type mat=array[1..9,1..9] of integer; var i,j:integer; p:mat; begin for i:=1 to 9 do begin for j:=1 to 9 do begin p[i,j]:=i*j;
100
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]