Книжка Хабы (970988), страница 7
Текст из файла (страница 7)
В основной программе использовать процедуру INTGR для вычисления интегралов:
∫ ex/(x+1) dx и ∫ (x-1) dx
от –0 до 1 от 0 до 2
Задача 7. Cоставить подпрограмму-функцию TRAP для вычисления определенного интеграла по формуле трапеций
В основной программе использовать процедуру TRAP для вычисления интегралов:
∫ (х2 + cos(x)) dx и ∫ (tg(x+1))/(x+1) dx
от –1 до 4 от 0 до 2
Задача 8. Составить подпрограмму-процедуру MINMAX, отыскивающую максимум и минимум среди значений А f(B), где Аk и Bm- элементы одномерных массивов и использовать ее для подсчета:
min(zj sin(xi)) + max(xi cos(zj))
Y = --------------------------------------
min (zj tg(xi))
где xi- элементы массива X(10), z j – элементы массива Z(5).
Подпрограммы-функции для вычисления синуса, косинуса оформить как функции дальнего вызова.
Задача 9..15. В программе, тестирующей функции модуля, сравнить методы приближенного решения алгебраических и трансцендентных уравнений (методы приближенного вычисления интеграла), поочередно используя их для решения одного и того же уравнения (для одной и той же подынтегральной функции). Значение e (точность) следует поочередно брать равными 0.01, 0.001, ..., 0.00001. Для каждого из методов построить график изменения числа потребовавшихся приближений при переходе от одного значения к другому.
Вар. зад. | Подынтеграл. функция. f (x) | Первообразные F(х)= ∫ f (x) dx | Метод решения | Число отрезков | Интерв. интегр. | Требуем. точность |
9. | Ln²(x) / x | Ln³(x)/3 | Трапец. | 60 | [1;4] | 10–4 |
10. | (1/x²)sin(1/x) | Cos(1/x) | Прям. | 50 | [1;2,5] | 0,5 10–3 |
11. | X х (1 + lnx) | X х | Трапец. | 40 | [1;3] | 10-4 |
12. | Cos(x) | Sin(x) | Трапец. | 60 | [0; /2] | 10-4 |
13. | Sin²(x) | X/2-(sin2x) /4 | Трапец. | 60 | [0; /2] | 0,5 10–3 |
14.. | X e х sin x | [x sinx + (1-x) cosx] (e х / 2) | Трапец. | 100 | [0; 1] | 10–4 |
15. | (1/x²)sin(1/x) | Cos(1/x) | Прям. | 50 | [1;2,5] | 0,5 10-3 |
Задача 16. Разработать программу исследования элементарных функций (y=sin x, y=cos x, у = tg x, у = ln x, у = e х), задаваемых пользователем. Обеспечить для каждой функции вывод таблицы значений на заданном интервале с заданным шагом, поиск корней и определение максимума и минимума. Взаимодействие пользователя и программы организуйте с использованием меню.
Задача 17. Разработать программу тестирования студентов обучающихся по теме «системы исчисления». Тестируемому должны предлагаться 6 вопросов по данной теме, включая обычные вопросы с выбором ответа из нескольких и задачи на выполнение арифметических операций, когда необходимо ввести результат указанной операции. Вопросы должны случайным образом выбираться из списка, хранящегося в файле, и не повторяться. Для ответа на каждый вопрос дается две попытки. Предусмотреть, чтобы тестирующийся мог по желанию отказаться отвечать на данный вопрос и получить правильный вопрос. Оценку проводить по соотношению правильных и неправильных ответов.
Задача 18. Разработать программу исследования элементарных функций (y=sin x, y=cos x, у = tg x, у = ln x, у = e х), задаваемых пользователем. Обеспечить для каждой функции вывод таблицы значений на заданном интервале с заданным шагом, поиск корней и определение максимума и минимума. Взаимодействие пользователя и программы организовать с использованием меню
Задачи 19..21. Создать типизированный файл записей, содержащих сведения о багаже пассажира. Структура записи имеет следующий вид:
type PNT=^B;
B = record Багаж
N: string[40]; Ф.И.О. пассажира
M: integer; Количество вещей
W: real; Общий вес вещей [кг]
next: PNT;
end;
var rec, beg, endd, current : PNT;
Создается однонаправленный список записей.
19. Найти все записи, для которых средний вес одной вещи отличается не более чем на 0.3 кг от общего среднего веса вещи. Результаты записать в новый файл. Исходный и результирующий файлы распечатать.
20. Выяснить, имеется ли пассажир, багаж которого превышает багаж каждого из остальных пассажиров и по числу вещей, и по весу. Исходный файл и результат распечатать.
21. Дать сведения о багаже, число вещей в котором не меньше, чем в любом другом багаже, а вес вещей не больше, чем в любом другом багаже с этим же числом вещей. Исходный файл и результат распечатать.
Задача 22. Создать типизированный файл записей, содержащих сведения о книгах. Структура записи имеет следующий вид:
type NT=^B;
B = record Книга
M: string[25]; Ф.И.О. автора
N: string [60]; Название
W: integer; Год издания
next: NT;
end;
var rec, beg, endd, current : NT;
Создать однонаправленный список записей.
Найти авторов, издавших более одной книги, начиная с 1980 года. Распечатать исходный файл и результаты созданного списка.
Задача 23. Создать типизированный файл записей, содержащих сведения об учениках. Структура записи имеет следующий вид:
type PT=^S;
S = record Ученик
N: string [30]; Фамилия ученика
C: 1..10; Год обучения
L: string[10]; индекс группы
next: PT;
end;
var rec, beg, endd, current : PT;
Создать однонаправленный список записей.
Выяснить, имеются ли однофамильцы в каком-нибудь классе. Исходный файл и результаты распечатать.
Лабораторная работа №7
Объектно-ориентированное программирование
Цель работы – овладение практическими приемами и навыками разработки и создания программ посредством иерархически связанных классов.
-
Теоретическая часть
1.1. Введение
Объектно-ориентированное программирование (ООП) - это результат естественной эволюции более ранних методологий программирования. Оно более структурировано и более модульно и абстрактно, чем традиционное программирование. Потребность в ООП связана со стремительным усложнением приложений и отсюда как следствие недостаточной надежностью программ и выразительными способностями языков программирования.
ООП - это моделирование объектов посредством иерархически связанных классов. Малозначащие детали объекта скрыты от нас, и если мы даем команду, например, переместить объект, то он "знает", как он это делает. Переход от традиционного программирования к ООП на начальном этапе характерен тем, что под объектами в программе подразумеваются конкретные физические объекты. В этом случае легче дается понимание различных действий над ними. В качестве примера выберем простые графические фигуры, поскольку каждая фигура представляет реальный объект на экране. Его всегда можно отобразить и тем самым проверить моделируемые действия над объектом в явном виде. После того как определены простейшие графические объекты, достаточно легко можно формировать более сложные на основе уже имеющихся. В ООП такому сложному графическому объекту соответствует список примитивных объектов, к которому применимы все те же действия, что и к составляющим его элементам: отображение, стирание с экрана, перемещение в заданном направлении.
ООП опирается на три основных понятия:
-
инкапсуляция;
-
наследование;
-
полиморфизм.
1.2.Объект и инкапсуляция
В Паскале объект очень похож на запись, которая является упаковкой для соединения нескольких взаимосвязанных элементов данных вместе, под одним именем. Данные определяют свойства объекта. С другой стороны, объект имеет свое поведение, определяемое процедурами и функциями этого объекта.
Инкапсуляция - объединение данных с процедурами и функциями для создания нового типа данных - объекта. Связанные с объектом процедуры и функции называются методами. Таким образом, поля данных объекта - это то, что объект "знает", его методы - это то, что объект делает.
Для описания объектов используется зарезервированное слово OBJECT. Описание объекта помещается в разделе описания типов. Вначале описываются все инкапсулированные в объекте данные, а затем - методы доступа к этим данным. Сами методы при описании объекта не раскрываются, указываются лишь заголовки. Методы описываются ниже по тексту программы.
В рассмотренном ниже примере тип объекта "координаты точки" может быть определен следующим образом:
Type Location = Object
X,Y: Integer; {данные}
Procedure Init(InitX, InitY: Integer); {заголовки методов}
Function GetX: Integer;
Function GetY: Integer;
End;
{описание методов}
Procedure Location.Init(InitX, InitY: Integer);
Begin
X:=InitX;
Y:=InitY;
End;
Function Location.GetX: Integer;
Begin
GetX:=X; {получение координаты Х текущей позиции на экране}
End;
Function GetY: Integer;
Begin
GetY:=Y; {получение координаты У текущей позиции на экране}
End;
1.3. Иерархия объектов и наследование
Предположим, что мы хотим высветить точку на экране в позиции, описанной типом LOCATION. Определим тип POINT, который содержит булевское поле, указывающее, светится ли пиксель в данной позиции. Так как все точки должны содержать позицию, мы говорим, что тип POINT - это тип, порожденный типом LOCATION. POINT наследует все, что имеет LOCATION и добавляет в него нечто новое (признак светимости):
Type Location = Object
X,Y: Integer; {данные}
Procedure Init(InitX, InitY: Integer); {заголовки методов}
Function GetX: Integer;