- •1. Подпрограммы
- •1.1. Описание подпрограмм
- •1.2. Обращение к подпрограммам
- •1.3. Виды параметров подпрограмм
- •1.3.1. Параметры-значения и параметры-переменные
- •1.3.2. Параметры процедурного типа
- •1.3.3. Параметры-константы
- •1.3.4. Нетипизированные параметры подпрограмм
- •1.4. Рекурсивные подпрограммы
- •1.3.5. Массивы и строки открытого типа
- •2. Файлы данных
- •2.1. Текстовые файлы
- •2.2. Типизированные файлы
- •2.3. Нетипизированные файлы
- •2.4. Обработка ошибок, возникающих в действиях с файлами
- •3. Указатели - ссылочные типы данных
- •4. Модули
- •5. Локальные и глобальные сети эвм
- •6. Базы данных
- •6.1. Модели организации данных
- •6.2. Нормализация данных
- •6.3. Типы связей между объектами
- •7. Основы компьютерной безопасности
- •7.1. Компьютерные вирусы
- •7.2. Защита информации в Интернете
- •Контрольные работы
- •Тема 1. Параметры-значения и параметры-переменные
- •Пример выполнения задания
- •Решение. Составляем алгоритм (изображен ниже), а затем программу.
- •Варианты задания
- •Тема 2. Процедурный тип Пример выполнения задания
- •Варианты задания
- •Тема 3. Рекурсия Пример выполнения задания
- •Варианты задания
- •Тема 4. Текстовые и типизированные файлы Пример выполнения задания
- •Варианты задания
- •Тема 5. Указатели Пример выполнения задания
- •Варианты задания
- •Тема 6. Модули Пример выполнения задания
- •Варианты задания
- •Библиографический список
- •Оглавление
- •1.1. Описание подпрограмм ……………………………………………… 1
Тема 2. Процедурный тип Пример выполнения задания
Задание. Уточнить с погрешностью 0,001 корни уравнений
exp(x) - x*x*x = 0 на отрезке [1, 2] и ln(x) – x + 1,8 = 0 на отрезке [2, 3].
Р
ешение.
Составим алгоритм и программу с
использованием, например, метода Ньютона.
Ниже представлена структурограмма
программы, а справа – блок-схема
подпрограммы-функции Koren
с параметрами-значениями a
и b, с параметрами f,
pf процедурного типа.
Ввиду простоты, алгоритмы подпрограмм
процедурного типа не приводятся.
Program Korni;
const e = 0.001;
type tip = function (x : real): real; {Процедурный тип}
{$F+} {Директива дальней компиляции}
function f1(x : real) : real;
begin f1 := exp(x) – x*x*x end;
function pf1(x : real) : real;
begin pf1 := exp(x) – 3*x*x end;
function f2(x : real) : real;
begin f2 := ln(x) – x + 1.8 end;
function pf2(x : real) : real;
begin pf2 := 1/x – 1 end;
{$F-} {Отмена директивы}
function Koren(a, b : real; f, pf : tip) : real; {Основная подпрограмма}
var q : real; {Локальная переменная}
begin q := (a + b)/2; {Начальное приближение}
repeat q := q – f(q)/pf(q) until abs(f(q)) < e;
Koren := q {Имени функции присваиваем результат} end; {Koren}
begin {Основная программа}
writeln(‘Корень уравнения exp(x)-x*x*x : ’, Koren(1, 2, f1, pf1):6:4);
writeln(‘Корень уравнения ln(x)-x+1.8 : ’, Koren(2, 3, f2, pf2):6:4);
writeln(‘Функция f1 при этом равна : ’, f1(Koren(1, 2, f1, pf1):6:4))
end.
Варианты задания
Деля отрезок пополам, уточнить с погрешностью 0.001 корни уравнений ln(x)- x +1.8 = 0 на отрезке [1; 3] и
на отрезке [3; 5].Вычислить по методу прямоугольников
,
взяв по 50 отрезков разбиения на каждом
из интервалов интегрирования.Получить векторы квадратов и кубов значений элементов исходного вектора.
С погрешностью 0.0001 вычислить для x=2.1
и
для x=2.7.
Методом перебора с шагом 0.05 определить минимумы функций f(x)=
на отрезке [1.5; 4.5] и g(x)=
на отрезке [0; 3].Протабулировать с шагом 0.1 f(x)= ln(x) - x +1.8 на отрезке [2; 3] и с шагом 0.2 - g(x)=
на отрезке [0; 2].Вычислить значения многочленов :
для x = 1.2 и
для x = 3.5 .
Методом перебора с шагом 0.1 определить максимумы функций f(x)=
на отрезке [0; 2] и g(x)=
на отрезке [-1; 1].С погрешностью 0.001 вычислить
для x=0.4 и
для x=0.3.Протабулировать функции f(x,y)= ln(x) - x + y и g(x,y)=
для 1
x
4 с шагом 0.5 и для 1
y
3 с шагом 1.С погрешностью 0.001 уточнить методом дихотомии корни уравнений
на отрезке [0; 1] и
на отрезке [2.5; 4.5].С погрешностью 0.0001 вычислить
для x=0.6 и
.
С помощью процедуры обработки матрицы с параметром процедурного типа ввести и вывести матрицу заданного размера.
С помощью процедуры обработки строки с параметром процедурного типа вывести отсортированную и перевернутую исходную строку.
С помощью процедуры обработки строки с параметром процедурного типа закодировать и декодировать строку.
С помощью процедуры с параметром процедурного типа преобразовать матрицу символов в матрицу кодов и наоборот.
Перебором с шагом 0.05 найти минимум функции g(x)= на отрезке [1; 3] и максимум функции f(x)= на отрезке [0; 2].
Отсортировать вектор исходных данных по убыванию и по нарастанию с помощью подпрограммы с параметром процедурного типа.
С помощью подпрограммы с параметром процедурного типа получить из двух векторов третий, каждый элемент которого равен меньшему элементу исходных векторов, и вектор, состоящий из сумм соответствующих компонентов исходных векторов.
С помощью подпрограммы с параметром процедурного типа вывести на экран главную и побочную диагонали матрицы.
С помощью подпрограммы с параметром процедурного типа вывести границы отрезка, на котором функции имеют корень, перебирая отрезки с шагом 0.1 для ln(x) - x +1.8 = 0 на интервале [2; 3] и x2 -1 = 0 – на интервале [1; 2].
С помощью подпрограммы с параметром процедурного типа транспонировать и вывести исходную и результирующую матрицы.
Уточнить корень уравнения ln(x)- x +1.8 =0 на отрезке [2; 3] методами деления отрезка пополам и Ньютона и вывести его на экран с помощью одной процедуры, имеющей параметр процедурного типа.
С помощью подпрограммы с параметром процедурного типа вывести матрицы, элементы которых равны сумме или произведению соответствующих элементов двух исходных матриц.
С помощью подпрограммы с параметром процедурного типа вычислить среднее значение и дисперсию для вектора из 1000 случайных значений из диапазона [0; 1).
