Ответы на экзаменационные вопросы № 1-34 по дисциплине "Программирование" (Средства модульного программирования в системе Турбо-Паскаль. ООП. Объекты в динамической памяти), страница 14

assign(output,'t_c1.txt');

rewrite(output);  reset(input);

read(x); max:=x;

while not eof(input) do

begin

read(x);

if x>10 then write(x,' ');

if x>max then max:=x

end;

writeln('max=',max);

close(output);

close(input);

end.

5.Файловый тип данных – текстовые файлы. Характеристика, объявление файлового типа и файловой переменной. Способы создания текстового файла. Процедуры и функции для работы с текстовыми файлами.

6.Файловый тип данных – текстовые файлы. Стандартные файловые переменные. Перенаправление ввода/вывода.

7.Файлы из записей: объявление типов, приемы обработки, пример.

8.Процедурный тип данных в языке Паскаль: описание, подпрограммы как параметры других подпрограмм, операция присваивания с данными процедурного типа, пример использования.

Процедурный тип относится к структурированным (компонентным) типам данных. Как все структурированные типы данных (кроме типа string), процедурный тип является пользовательским. Указанный тип данных используется в тех случаях, когда в ходе выполнения программы переменной величиной является процедура или функция. Приведем примеры.

1.  Требуется составить программу, которая вычисляла бы таблицу значений функции на заданном интервале с заданным шагом разбиения.

2.  Программа вычисляет размер заработной платы различным сотрудникам. Алгоритм расчета общий, но ряду сотрудников могут быть начислены премии, доплаты за должность. Начисление налога (вычета из заработной платы) также производится различным образом и зависит от количества детей у работника, размера заработной платы и т.д. Следовательно, при одном и том же алгоритме работы основной программы функция расчета зарплаты должна быть разной.

3.  Программа должна перемещать по экрану различные геометрические объекты (точки, круги, треугольники и т.п.). Понятно, что сам алгоритм перемещения будет одинаков для всех фигур, разница лишь в процедуре рисования объектов.

4.  Численные методы решения задач: метод деления пополам, методы для вычисления интегралов, производных и др. Все эти методы формулируются в общем виде относительно некоторой функции f(x)  и могут быть применены к целому классу функций. Т. е. Программа должна содержать описание метода и вызов этого метода для конкретной функции (или нескольких функций).

Рассмотрим, как можно использовать процедурный тип для решения таких задач.

Во-первых, должны быть определены переменные, значениями которых могут быть определенные процедуры или функции:

 Type   <имя процедурного типа>=procedure(<список формальных параметров>);

<имя процедурного типа>=function(<список формальных параметров>):<тип значения>;

 После того, как процедурный тип определен, можно объявить переменные этого типа. Такие переменные называются процедурными переменными и могут быть использованы двумя способами:

-  в качестве переменной, которой можно присвоить имя процедуры или функции;

-  в качестве формальных параметров при описании процедур и функций.

В обоих случаях встает вопрос о совместимости типов. Для того, чтобы считаться совместимыми, процедурные типы должны иметь одинаковое число параметров одинаковых типов (списки формальных параметров должны совпадать). Если речь идет о процедурных типах для функций, помимо списка параметров, должны быть идентичными типы результатов.

На процедуры и функции, которые могут быть присвоены переменной процедурного типа или переданы в подпрограмму в качестве фактического параметра, накладываются определенные ограничения:

-  они не должны быть стандартной процедурой или функцией;

-  они не могут быть вложенными процедурами и функциями;

Для того чтобы использовать процедуру или функцию в качестве параметра или присваивать процедурной переменной, необходимо компилировать их с директивой {$F+} – дальний вызов (в среде Turbo Pascal это связано с особенностями операционной системы DOS).

В качестве примера рассмотрим первую задачу – табуляцию произвольной функции.

Пример: Требуется вывести на экран таблицы значений функций: