- •Московский государственный технический университет
- •Содержание.
- •Предисловие
- •Лабораторная работа №1 Процедурные типы
- •1. Теоретические сведения
- •Var X: real; I: integer;
- •X, y : byte;
- •VarFunc : FuncType;
- •I : integer;
- •2.Задачи для самостоятельного решения
- •Лабораторная работа №2 Модули
- •Теоретическая часть
- •Структура модулей
- •Связь модулей друг с другом
- •ISwap(a,b);
- •Var I, y :integer;
- •2.2. Практическая часть
- •Interface
- •Implementation
- •I: Integer;
- •3. Задачи, для самостоятельного решения
- •Лабораторная работа №3 Меню
- •1. Теоретическая часть
- •Var X,y,I: byte;
- •XUpLeft;
- •Var npos,I: integer;
- •Case npos of
- •Лабораторная работа №4.
- •2.Задачи, для самостоятельного решения:
- •Лабораторная работа № 5 Указатели. Связанные списки
- •1. Теоретические сведения
- •1.1. Указатели
- •1.2. Связные списки записей
- •1.3. Управление связанным списком записей (на примере)
- •1.3.1. Построение списка
- •Var ListOfChecks, CurrentCheck: pCheck;
- •1.3.2. Перемещение по списку
- •Var p: Pint;
- •2. Демонстрационные примеры
- •X1,y1,x2,y2: word;
- •Var npos,I,n,j :integer;
- •3: Begin
- •Interface
- •Задачи 1..4. Создать типизированный файл записей, содержащих сведения о багаже пассажира. Структура записи имеет следующий вид:
- •Var rec, beg, endd, current: pnt;
- •Задача 5. Создать типизированный файл записей, содержащих сведения об автомобиле. Структура записи имеет следующий вид:
- •Var rec, beg, endd, current : pnt;
- •Задача 22. Создать типизированный файл записей, содержащих сведения о книгах. Структура записи имеет следующий вид:
- •1.2.Объект и инкапсуляция
- •1.3. Иерархия объектов и наследование
- •Visible: Boolean;
- •Init(x1,y1);
- •Interface
- •Interface
- •X,y : Integer;
- •Visible : Boolean;
- •Implementation
- •Var Temp : Word;
- •Var Temp : Word;
- •Var gm,gd:Integer;
- •Xp:Point;
- •Xs:Square;
- •Xps:PaintSquare;
- •InitGraph(Gd,Gm,'');
- •2. Демонстрационные примеры
- •X,y:integer;
- •Inherited init(ax,ay);
- •Задача 12. Простые объекты.
- •Задача 14. Простые объекты.
- •Задача 15. Простые объекты.
- •Задача 20. Простые объекты.
- •Задача 21. Простые объекты.
- •Задача 22. Простые объекты.
- •Задача 23. Простые объекты.
- •Задача 25. Простые объекты.
- •Лабораторная работа №8 Статические объекты
- •Теоретическая часть
- •1.1.Вывод точек и линий
- •1.2.Вывод многоугольников
- •Виды закраски определяется константами.
- •1.3.Вывод дуг, окружностей, эллипсов
- •1.4.Вывод текста
- •Демонстрационные примеры
- •Лабораторная работа №9
- •2. Задачи, для самостоятельного решения
- •Лабораторная работа №10
- •1.2. Перенос изображения
- •1.3. Масштабирование изображения
- •1.4. Масштабирование рисунка
- •1.5. Поворот изображения
- •1.5.1.Поворот точки
- •1.5.2. Поворот рисунка
- •1.6. Композиция преобразований
- •2. Демонстрационные примеры
- •X,y:integer;
- •1: CloseGraph;
- •3.Задачи, для самостоятельного решения
- •Лабораторная работа №12 Рубежный контроль №2
- •Задачи, для самостоятельного решения
X, y : byte;
Procedure Proc1 (x : word; var y : byte); far;
begin
if x > 255 then y:= x mod 255 else y := byte (x)
end;
begin
ProcVar := Proc1;
for x := 150 to 180 do
begin
ProcVar (x + 100, y);
Write ( y : 8)
end
end.
Разумеется, такого рода присваивания допустимы и для параметров-функций, например:
Type
FuncType = Function ( i : integer) : integer;
Var
VarFunc : FuncType;
I : integer;
Function MyFunc ( count : integer) : integer; far;
begin
…….
end; {MyFunc}
begin {Основная программа}
……..
i : MyFunc ( i ); {Обычное использование результата функции}
……
VarFunc := MyFunc;{Присваивание переменной процедурного типа
имени функции MyFunc}
……
Отметим, что присваивание VarFunc:= MyFunc(1) будет недопустимым, так как слева и справа от знака присваивания используются несовместимые типы: слева – процедурный тип , а справа – Integer; имя функции со списком фактических параметров MyFunc(1) трактуется ТР как обращение к значению функции, в то время как имя функции без списка параметров рассматривается как имя функции.
Отличие от стандартного Паскаля, в ТР разрешается использовать в передаваемой процедуре (функции) как параметры-значения, так и параметры-переменные.
Основное предназначение процедурных типов – дать программисту гибкие средства передачи функций и процедур в качестве фактических параметров обращения к другим процедурам и функциям.
2.Задачи для самостоятельного решения
Задача 1.Разработать подпрограмму, которая возвращает массив значений произвольной функции при заданных интервале изменения аргумента [a,b] и количество точек n.
Задача 2.Разработать процедуру определения корня функции на заданном отрезке. Поместить процедуру в модуль. Разработать тестирующую программу.
Задача 3.Разработать подпрограмму, которая определяет корни уравнения y = x2 – 2 на заданном отрезке методом половинного деления.
Задача 4. Разработать программу с использованием подпрограммы-функции. Вычислить
Z = (Xm + Ym) / 2.
Xm ,Ym – наименьшие элементы массивов Х(25) и У(25).
Задача 5. Разработать программу с использованием подпрограммы-функции. Подсчитать число нулевых элементов для матриц А(m,n) и В(k,l).
Задача 6. Разработать программу с использованием подпрограммы-функции. Вычислить среднее арифметическое положительных элементов для массивов А(n), B(m), C(k).
Задача 7. Разработать программу с использованием подпрограммы-функции. Вычислить
Z = (V1 + V2 + V3) / 3.
V1,V2,V3 – объемы шаров с радиусами R1,R2,R3. Объемы вычислять в подпрограмме.
Задача 8. Выполнить на ПЭВМ программу с использованием подпрограммы-функции. Вычислить сумму положительных элементов для массивов X(N), Y(M), Z(К).
Задача 9. Cоставить подпрограмму-функцию TRAP для вычисления определенного интервала по формуле трапеций.
В основной программе использовать процедуру TRAP для вычисления интегралов:
∫ (х 2 + cos(x)) dx и ∫ (tg(x+1))/(x+1) dx
от –1 до 4 от 0 до 2
Задача 10.Составить подпрограмму-процедуру NEIBR отыскивания ближайшей из 10 точек, заданных массивом их декартовых координат, кривой F(x) при одной координате x.
В основной программе использовать процедуру NEIBR для функций cos(x) и sin(x).
Задача 11.Составить подпрограмму-процедуру MASSHTAB отыскивания масштаба графического изображения функции f(x) на экране размером В единиц растра по формуле M=B/max f(x).
В основной программе использовать процедуру для отыскания масштаба функций z2sin(x) и tg(x), при х<1.
Задача 12.Составить подпрограмму - процедуру RT для отыскания наименьшего положительного корня уравнения F(x)=0 c точностью =0.00001 методом итераций.
В основном программе использовать процедуру для решения уравнения x - tg(x) = 0 , используя обратную функцию x1 = arcing(x0) + k .
Задача 13. Составить подпрограмму-процедуру ВR для отыскания ближайшей из 10 точек, заданных массивом их декартовых координат, к кривой F(x) при одной и той же координате х.
В основном программе использовать процедуру ВR для функций cos(x) и sin(x).
Задача 14. Составить подпрограмму-процедуру MAXIM для отыскания максимального расстояния между двумя кривыми F(x) и G(x) при одной и той же абсциссе х на интервале от xmin до xmax.
В основном программе использовать процедуру MAXIM для функций sin(x)/x и tg(x+1)/(x+1) в интервале 0,5…1 с шагом 0,02.
Задача 15. Составить подпрограмму-процедуру ROOT отыскания минимального положительного корня уравнения f(x)=0 с точностью =0.0001 методом деления пополам отрезка, содержащего корень.
В основном программе использовать процедуру для решения уравнений x2 + sin(x/2)= 0 и arctg(x) + x = 1.
Задача 16. Cоставить подпрограмму-функцию INTG для вычисления определенного интервала по формуле прямоугольников.
В основной программе использовать процедуру INTG для вычисления интегралов:
∫ (cos(х)/(x) dx и ∫ (ctg(x+1))/(x+1) dx
от –0,1 до 4 от 0 до 2
Задача 17. Cоставить подпрограмму-функцию INTGR для вычисления определенного интервала по формуле прямоугольников.
В основной программе использовать процедуру INTGR для вычисления интегралов:
∫ ex/(x+1) dx и ∫ (sgrt(x-1)) dx
от –0 до 1 от 0 до 2
Задача 18. Cоставить подпрограмму-функцию INTEG для вычисления определенного интервала по формуле трапеций.
В основной программе использовать процедуру INTEG для вычисления интегралов:
∫ sin(х)/(x) dx и ∫ (tg(x+1))/(x+1) dx
от –0,1 до 1 от 0 до 2
Задача 19. Cоставить подпрограмму-функцию INT для вычисления определенного интервала по формуле прямоугольников.
В основной программе использовать процедуру INT для вычисления интегралов:
∫ sin(х)/(x) dx и ∫ (tg(x+1))/(x+1) dx
от –0,1 до 1 от 0.1 до 2
Задача 20. Cоставить подпрограмму-функцию INTGR для вычисления определенного интервала по формуле прямоугольников.
В основной программе использовать процедуру INTGR для вычисления интегралов:
∫ ex /(x+1) dx и ∫ sgrt(x-1) dx
от –0 до 1 от 0 до 2
Задача 21. Cоставить подпрограмму-функцию TRAP для вычисления определенного интервала по формуле трапеций.
В основной программе использовать процедуру TRAP для вычисления интегралов:
∫ (х2 + cos(x)) dx и ∫ (tg(x+1))/(x+1) dx
от –1 до 4 от 0 до 2
Задача 22. Разработать подпрограмму, которая определяет корни уравнения y = x2 – 2 на заданном отрезке методом половинного деления.
Задача 23. Cоставить подпрограмму-функцию Integr для вычисления определенного интервала по формуле прямоугольников.
В основной программе использовать процедуру INTGR для вычисления интегралов:
∫ ex /(x+1) dx и ∫ sgrt(x-1) dx
от –0 до 1 от 0 до 2
Задача 24. Составить подпрограмму-процедуру Сoren отыскания всех корней уравнения f(x)=0 с точностью =0.0001 методом Ньютана-Рафсона.
В основном программе использовать процедуру для решения уравнения x3 – 1,473x2 - 5,738х + 6,763 = 0.
Задача 25. Составить подпрограмму-процедуру Сrn отыскания всех корней уравнения f(x)=0 с точностью =0.1; 0.01; 0,001; 0,0001 методом деления отрезка пополам.
В основном программе использовать процедуру для решения уравнения ch(x) + cos(x) – 3 = 0.