- •СОДЕРЖАНИЕ
- •ВВЕДЕНИЕ
- •1.1. Теоретические сведения
- •1.2. Порядок выполнения работы
- •1.3. Содержание отчета
- •1.4. Контрольные вопросы
- •2.1. Теоретические сведения
- •2.2. Порядок выполнения работы
- •2.3. Содержание отчета
- •2.4. Контрольные вопросы
- •2.5. Варианты заданий
- •3.1. Теоретические сведения
- •3.2. Порядок выполнения работы
- •3.3. Содержание отчета
- •3.4. Контрольные вопросы
- •4.1. Теоретические сведения
- •4.1.1. Процедуры
- •4.1.2. Функции
- •4.2. Порядок выполнения работы
- •4.3. Содержание отчета
- •4.4. Контрольные вопросы
- •4.5. Варианты заданий
- •5.1. Теоретические сведения. Работа с компонентами
- •5.2. Порядок выполнения работы
- •5.3. Содержание отчета
- •5.4. Контрольные вопросы
- •5.5. Варианты заданий
- •6.1. Теоретические сведения. Работа с компонентами
- •6.2. Порядок выполнения работы
- •6.3. Содержание отчета
- •6.4. Контрольные вопросы
- •6.5. Варианты заданий
- •7.1. Теоретические сведения
- •7.2. Порядок выполнения работы
- •7.3. Содержание отчета
- •7.4. Контрольные вопросы
- •7.5. Варианты заданий
- •8.1. Теоретические сведения
- •8.2. Работа с компонентами
- •8.3. Порядок выполнения работы
- •8.4. Содержание отчета
- •8.5. Контрольные вопросы
- •8.6. Варианты заданий
- •9.1. Теоретические сведения
- •9.1.1. Методы сортировки
- •9.2. Сортировки обменом
- •9.2.1. Сортировка простым обменом (метод пузырька)
- •9.2.2. Сортировка простым обменом с флагом
- •9.2.3. Сортировка простым обменом с границей
- •9.2.4. Шейкер-сортировка
- •9.2.5. Быстрая сортировка
- •9.3. Сортировки включениями
- •9.3.1. Сортировка простым включением
- •9.3.2. Сортировка бинарными вставками
- •9.3.3. Сортировка Шелла
- •9.4. Сортировки выбором
- •9.4.1. Сортировка простым выбором
- •9.4.2. Пирамидальная сортировка
- •9.5. Сравнительный анализ сортировок
- •9.6. Контрольные вопросы
- •Приложения
- •Приложение А
- •Приложение Б
- •Приложение В
- •Приложение Г
- •ЛИТЕРАТУРА
else |
// |
в противном случае функция вычисляется |
рекурсивно |
|
|
NOD:=NOD(B mod A, A); end;
procedure TForm1.Button1Click(Sender: TObject); var a,b:longint; f:longint;
begin a:=StrToInt(edit1.Text); b:=StrToInt(edit2.Text); f:=NOD(a,b); Edit3.Text:=IntToStr(f);
end;
end.
5.Запустить проект на компиляцию и выполнение.
4.3.Содержание отчета
Отчет должен содержать ответы на контрольные вопросы, тексты программ и результат решения соответствующего варианта.
4.4.Контрольные вопросы
1.Что называется подпрограммой? В чем состоит сходство и различие подпрограмм-процедур и подпрограмм-функций в языке Object Pascal?
2.В чем различие между стандартными и определенными пользователем программами?
3.Опишите последовательность событий при вызове процедуры или функции.
4.Что называется параметром и каково его назначение? Что такое формальные и фактические параметры, какова их взаимосвязь?
5.Каковы отличия параметров-переменных от параметров-значений, особенности их описания и применения?
6.Чем различаются локальные и глобальные параметры? Какова область их действия?
7.Что такое рекурсия?
8.Каковы особенности параметров-процедур и параметров-функций?
62
4.5. Варианты заданий
Вариант 1
Задание 1. Написать программу для вычисления выражения z(x) =(sign(x) +sign(y)) sign(x + y) . При решении задачи определите и используйте
|
|
−1, |
x < 0, |
|
|
|
|
|
|
|
x = 0, |
|
|
|
|
функцию sign (знак числа): sign(x) = 0, |
|
|
|
||||
|
|
|
x > 0. |
|
|
|
|
|
|
1, |
|
|
|
||
Задание 2. |
Написать процедуру |
вычисления определенного интеграла |
|||||
b |
1 |
|
|
|
b −a |
(y0 + y1 +K+ yn ), где n |
|
I = ∫sin 2 x |
dx методом прямоугольников: |
I ≈ |
|||||
1+ x2 |
|
||||||
a |
|
|
|
n |
|||
– количество отрезков разбиения; y0 , y1,K, yn |
– значения функции на концах |
||||||
отрезков. Числа a и b – произвольные, вводятся с клавиатуры.
Задание 3*. Напишите рекурсивную функцию вычисления i -го число
Фибоначчи. Вычислите f (k), k =15, 20, 30, 40 . Функция |
f (n) определена для |
|
|
1, n =1 |
|
целых чисел следующим образом: |
|
. |
f (n) = n |
||
|
∑ f (n div 2), n ≥ 2 |
|
|
2 |
|
|
|
Вариант 2 |
|
|
|
|
|
|
|
||
Задание 1. |
Написать |
программу |
вычисления |
|
|
выражения |
|||||
H (s,t) + (max(H 2 (s −t, s t), H 4 (s −t, s +t)) + H (1,1) , где |
H (a,b) = |
|
a |
+ |
|
b |
−(a −b)3 . |
||||
|
+b2 |
|
|
||||||||
|
|
|
|
|
1 |
1+ a2 |
|
||||
вычисление величин H (a,b) и max(a,b) оформить в виде |
подпрограммы- |
||||||||||
функции. Числа s и t вводятся с клавиатуры. |
|
|
|
|
|
|
|
||||
Задание 2. |
Написать процедуру вычисления определенного |
интеграла |
|||||||||
I = b∫ctg(x2 +4)dx |
методом трапеций: I ≈ |
b − a |
(y0 + 2 y1 +K+ 2 yn−1 + yn ), где n – |
||||||||
|
|||||||||||
a |
|
|
2 n |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
количество отрезков разбиения; y0 , y1,K, yn – значения функции на концах отрезков. Числа a и b – произвольные, вводятся с клавиатуры.
63
Задание 3*. Создайте программу вычисления числа сочетаний из N по M .
Число сочетаний определяется по формуле CNM = |
N! |
|
. |
Для вычисления |
|||||
M!(N − M )! |
|||||||||
|
|
|
|
|
|
|
|||
факториала напишите рекурсивную функцию. |
|
|
|
|
|||||
|
|
|
|
Вариант 3 |
|
|
|
|
|
|
Задание 1. |
Написать |
программу |
вычисления |
выражения |
||||
u = |
max2 (x, y, z)−2x min(x, y, z) |
|
по заданным с |
клавиатуры |
|
числам x, y, z . |
|||
sin 2 + max(x, y, z) / min(x, y, z) |
|
||||||||
|
|
|
|
|
|
||||
Нахождение максимального и минимального значения из трех чисел оформить в виде подпрограмм-функций max(x, y, z) и min(x, y, z).
Задание 2. Написать процедуру вычисления определенного интеграла
b |
3sin(x2 |
+1)dx по формуле Симпсона |
|
b −a |
(y |
|
|
|
|
|
|
|
|
), |
||
∫ |
I ≈ |
0 |
+ 4 y |
+ 2 y |
2 |
+K+ 4 y |
2n−1 |
+ y |
2n |
|||||||
|
||||||||||||||||
|
|
6 |
n |
1 |
|
|
|
|
||||||||
a |
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
где 2 n – количество отрезков разбиения; |
y0 , y1,K, y2n |
– значения функции на |
||||||||||||||
концах отрезков. Числа a и b – произвольные, вводятся с клавиатуры. |
|
|
|
|
||||||||||||
Задание 3*. Написать программу нахождения наименьшего общего кратного (НОК) двух натуральных чисел, используя рекурсивный алгоритм нахождения наибольшего общего делителя как вспомогательный. Для любых натуральных
чисел a, |
b справедливо тождество a b = НОД(a,b) HOK(a,b) . |
|
||||||
|
|
|
|
|
Вариант 4 |
|
|
|
|
Задание 1. |
Написать |
программу |
вычисления |
выражения |
|||
|
|
x + y + z |
|
|
|
|
||
|
|
min |
|
, xyz, z |
|
|
|
|
|
|
|
|
|
|
|||
u = |
|
3 |
|
. Нахождение максимального и минимального |
||||
max2 |
(x + y + z, xyz, y)+min(x, y, z) |
|||||||
|
|
|
|
|||||
значения из трех чисел оформить в виде подпрограмм-функций max(a,b,c) и min(a,b,c).
64
b
I = ∫
a
Задание 2. Написать процедуру вычисления |
определенного |
интеграла |
||||||||||
cos x |
dx |
методом трапеций: I ≈ |
b −a |
(y |
0 |
+ 2 y |
+K+ 2 y |
n−1 |
+ y |
n |
), где n – |
|
|
||||||||||||
|
||||||||||||
1+ x |
|
2 n |
1 |
|
|
|
||||||
|
|
|
|
|
|
|
|
|||||
количество отрезков разбиения; y0 , y1,K, yn – значения функции на концах отрезков. Числа a и b – произвольные, вводятся с клавиатуры.
Задание 3*. Написать рекурсивную функцию, которая по заданному вещественному n вычисляет величину xn согласно формуле
1, xn = 1n ,
x
x (xn−1 ),
n = 0
n < 0 .
n > 0
Вариант 5
Даны координаты вершин многоугольника (x1, y1 ); (x2 , y2 );K(x5 , y5 ). Найти его периметр. Вычисление расстояния между вершинами оформить в виде подпрограммы-функции.
Задание 2. Написать |
процедуру |
вычисления |
определенного |
интеграла |
|||||||||||||||
I = b ln x dx по формуле Симпсона |
|
I ≈ b − a (y |
0 |
+ 4 y |
+ 2 y |
2 |
+K+ 4 y |
2n−1 |
+ y |
2n |
), |
||||||||
∫ x |
|
|
|
|
|
6 n |
|
1 |
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
a |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
где 2 n – количество отрезков разбиения; |
y0 , y1,K, y2n – значения функции на |
||||||||||||||||||
концах отрезков. Числа a и b – произвольные, вводятся с клавиатуры. |
|
|
|
|
|||||||||||||||
Задание 3*. Написать рекурсивную функцию, которая вычисляет y = k x |
по |
||||||||||||||||||
|
|
|
|
|
|
x |
|
− yn |
|
|
|
|
|
|
|
|
|||
следующей формуле: y0 =1; |
yn+1 = yn + |
|
|
ynk −1 |
. За ответ принять приближение, |
||||||||||||||
|
|
|
|
||||||||||||||||
|
k |
|
|
|
|||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
для которого выполняется условие |
|
yn − yn+1 |
|
< 0.0001. |
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|||||||||||
65
|
|
|
|
|
Вариант 6 |
|
|
|
|
|
|
|
||
Задание 1. |
Даны |
действительные числа s, t . Написать |
программу |
|||||||||||
вычисления выражения |
f (t,− 2s,1,17) + f (2,2,t,s −t) . |
|
Вычисление |
функции |
||||||||||
f (a,b,c) = |
2a −b −sin c |
оформить в виде подпрограммы-функции. |
|
|
||||||||||
|
|
|
||||||||||||
5 + |
c |
|
|
|
|
|
|
|
|
|
|
|
||
Задание 2. |
Написать процедуру |
вычисления |
определенного |
интеграла |
||||||||||
b |
|
|
|
|
|
b −a |
(y0 + y1 +K+ yn ), где n |
|||||||
I = ∫ 1−0.5 sin 2 xdx методом прямоугольников: |
I ≈ |
|||||||||||||
|
||||||||||||||
a |
|
|
|
|
|
n |
|
|
|
|
|
|||
– количество отрезков разбиения; y0 , y1, K, yn |
– значения функции на концах |
|||||||||||||
отрезков. Числа a и b – произвольные, вводятся с клавиатуры. |
|
|
||||||||||||
Задание 3*. Задано |
вещественное |
число |
a > 0 . |
Вычислить |
3 a −6 a2 +1 |
. |
||||||||
|
7 a |
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
||
Вычисление корней y = k x оформить в виде подпрограммы. Корни вычислять с
|
|
|
|
|
|
|
|
|
|
|
|
|
x |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
− y |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
k −1 |
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
n |
|
||
точностью E = 0.00001 по итерационной формуле: |
|
y0 = 1; |
yn +1 = |
yn + |
|
yn |
|
|
, |
||||||||
|
|
k |
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
приняв за ответ |
приближение, для которого |
|
y |
−y |
|
<E. |
Вычисление |
yk |
|||||||||
|
|
||||||||||||||||
|
|
|
|
|
|
|
n+1 |
n |
|
|
|
|
|
|
|
|
|
оформить в виде рекурсивной подпрограммы. |
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
Вариант 7 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Задание 1. |
Для двух квадратных уравнений |
|
a x2 +b x + c = 0 |
|
и |
||||||||||
|
|
|
|
|
|
|
|
|
|
1 |
1 |
|
1 |
|
|
|
|
a |
2 |
x2 +b x +c |
2 |
= 0 |
определить, имеют ли они общие корни. |
Вывести на экран |
|||||||||||
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
корни уравнения, которые не совпадают. Решение уравнений оформить в виде
подпрограммы-функции. Числа a1, |
b1, c1, a2 , |
b2 , |
c2 вводятся с клавиатуры. |
|
|||||||||
Задание 2. Написать процедуру вычисления |
определенного |
интеграла |
|||||||||||
I = b e−x 2 dx по формуле Симпсона |
I ≈ |
b − a |
(y |
0 |
+ 4 y |
+ 2 y |
2 |
+K+ 4 y |
2n−1 |
+ y |
2n |
), где |
|
|
|||||||||||||
∫ |
|
6 n |
|
1 |
|
|
|
|
|||||
a |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
66
2 n – количество отрезков разбиения; y0 , y1,K, y2n – значения функции на концах отрезков. Числа a и b – произвольные, вводятся с клавиатуры.
Задание 3*. Написать процедуру сложения двух дробей, результатом которого является несократимая правильная дробь. Использовать рекурсивную программу нахождения НОД.
Вариант 8
|
|
Задание 1. |
|
Написать |
программу |
|
вычисления |
|
|
|
выражения |
|||||||||||||||||||||
|
|
|
|
|
|
|
ctg2 (2 +sh(x −1)) |
|
|
|
|
|
|
ex −e−x |
|
|
|
|
|
sin x |
|
|
|
|||||||||
sh x + tg(x + |
1) − |
|
|
|
|
|
|
. |
Вычисление |
|
sh x = |
|
2 |
; |
|
tgx = |
cos x |
|
|
и |
||||||||||||
|
|
x +1 |
|
|
|
|
|
|
|
|||||||||||||||||||||||
ctgx = |
cos x |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
оформить в виде подпрограммы-функции. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||
sin x |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
Задание 2. |
Написать |
процедуру |
вычисления определенного |
|
интеграла |
|||||||||||||||||||||||||
I = |
b |
|
x |
|
dx методом прямоугольников: I ≈ |
b −a |
(y0 |
+ y1 |
+K |
+ yn ), где |
|
n |
– |
|||||||||||||||||||
|
|
|
|
|||||||||||||||||||||||||||||
|
|
|
|
|
|
|
||||||||||||||||||||||||||
|
a∫cos3 |
x |
|
|
|
|
|
|
|
|
|
|
|
n |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
количество отрезков разбиения; y0 , y1,K, yn |
– |
значения |
функции |
|
на концах |
|||||||||||||||||||||||||||
отрезков. Числа a и b – произвольные, вводятся с клавиатуры. |
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
A |
|
|
|
C |
|
|
E |
|
||
|
|
Задание 3*. Написать программу вычисления выражения |
|
|
|
− |
|
|
|
|
|
|
в |
|||||||||||||||||||
|
|
|
|
|
|
A −C |
F |
|||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
B +C |
|
|
|
|
|
||||||
виде правильной дроби, где |
|
|
A, B,C, E, F |
– целые числа. Сложение двух дробей |
||||||||||||||||||||||||||||
оформить как подпрограмму-функцию. Использовать рекурсивную программу нахождения НОД.
67
