Материал: Методические указания к лабораторным работам № 5-6 по дисциплине «Информатика» для студентов направления подготовки 11.03.03. Ромащенко М.А

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

1.даны четыре двумерных массива A, B, C, D, преобразовать каждый из них в одномерный массив

2.даны четыре двумерных массива A, B, C, D, для каждого из них вычислить суммы элементов на главных диагоналях

3.даны четыре двумерных массива A, B, C, D, для каждого из них вычислить суммы элементов на побочных диагоналях

4.даны четыре двумерных массива A, B, C, D, выполнить транспонирование (заменить строки на столбцы) каждого массива

5.даны четыре двумерных массива A, B, C, D, для каждого из них определить количество отрицательных элементов

6.даны четыре двумерных массива A, B, C, D, для каждого из них определить количество положительных элементов

7.даны четыре двумерных массива A, B, C, D, для каждого из них найти среднее арифметическое

8.даны четыре двумерных массива A, B, C, D, для каждого из них найти индекс минимального элемента

9.даны четыре двумерных массива A, B, C, D, для каждого из них найти индекс максимального элемента

10.даны четыре двумерных массива A, B, C, D, для каждого из них найти максимальное и минимальное значение

2.3. Контрольные вопросы для отчета работы

1.Какие преимущества дает использование подпрограмм?

2.В чем отличие процедуры от функции?

3.В чем заключается описание подпрограммы? Приведите примеры описания процедуры и функции.

4.Приведите пример структуры подпрограммы.

5.Как происходит локализация имен в Паскале?

6.Что такое глобальные объекты?

7.Что произойдет, если в подпрограмме описать идентификатор, который ранее был использован для глобального объекта?

8.Что такое формальные и фактические параметры?

9.Чем отличаются параметр-значение, параметр-переменная и параметр-константа.

10.Что такое рекурсия? Приведите пример вычисления факториала.

11.Для какого максимального числа можно найти факториал при помощи программы приведенной после рисунка 2? Каким образом можно увеличить диапазон вычисляемых значений?

9

2.ЛАБОРАТОРНАЯ РАБОТА №6

РАБОТА С ФАЙЛАМИ СРЕДСТВАМИ ЯЗЫКА ПАСКАЛЬ.

Цель работы: закрепить знания об использовании файлов в языке Паскаль. Изучить процедуры и функции для работы с файлами разных типов (текстовый, типизированный, нетипизированный). Получить навык работы с файлами средствами языка Паскаль.

Время работы: 8 часов.

2.1. Домашние задания и методические указания по их выполнению

Задание 1 – расширить и закрепить знания о файлах.

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

Переменную файлового типа можно задать следующим образом:

<имя>=file of <тип>; {типизированный файл} <имя>=text; {текстовый файл}

<имя>=file; {нетипизированный файл}

Такое объявление файла соответствует трем видам файлов: типизированные; текстовые; нетипизированные.

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

Для сопоставления файловой переменной и реального физического файла, расположенного на жестком диске, используется стандартная процедура

assign(файловая переменная, ‘имя файла’);

10

Имя файла это любое выражение строкового типа, которое строится по правилам определения имен в MS-DOS.

Затем необходимо инициировать файл, т.е. указать направление передачи данных. Доступны варианты позволяющие производить только чтение, только запись или чтение и запись одновременно. Для чтения файл инициируется с помощью стандартной процедуры

reset(файловая переменная);

В результате специальная переменная-указатель, связанная с этим файлом, будет указывать на начало файла, т.е. компонент с порядковым номером 0.

Для записи информации в файл используется стандартная процедура

rewrite(файловая переменная);

Этой процедурой нельзя инициировать запись в ранее существовавший файл, так как он будет полностью удален. Используется только для записи в новый файл.

Для записи в ранее существовавший файл используется стандартная процедура

append(файловая переменная);

Данная процедура применима только к текстовым файлам (тип файловой переменной text).

Задание 2 – закрепить знания о стандартных процедурах и функциях для работы с файлами на языке Паскаль.

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

close(файловая переменная);

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

Процедура rename переименовывает файл

rename(файловая переменная, `новое имя`);

11

Перед выполнением процедуры необходимо закрыть файл. Процедура erase удаляет файл

erase(файловая переменная);

Перед выполнением процедуры необходимо закрыть файл.

Процедура flush очищает внутренний буфер файла и таким образом гарантирует сохранность всех последних изменений файла на диске

flush(файловая переменная);

Любое обращение к файлу осуществляется через некоторый буфер, что необходимо для согласования с MS-DOS. В ходе выполнения процедуры flush все новые записи будут действительно записаны на диск.

Функция EOF тестирует конец файла и возвращает значение типа Boolean

EOF(файловая переменная);

Функция возвращает True, если файловый указатель расположен в конце файла. При записи это означает, что очередной компонент будет добавлен в конец файла, при чтении, что файл исчерпан.

Процедура ChDir обеспечивает изменение текущего каталога

ChDir(‘путь’);

Процедура GetDir позволяет определить имя текущего каталога

GetDir(<устройство>, <каталог>);

<устройство> - выражение типа word, содержащее номер устройства (1

– диск А, 2 – диск В и т.д.); <каталог> - переменная типа String в которой возвращается путь к текущему каталогу на указанном диске.

Процедура MkDir создает новый каталог на указанном диске

MkDir(<каталог>);

Процедура RmDir удаляет каталог

RmDir(<каталог>);

Удаляемый каталог должен быть пустым. 12

Функция IOResult возвращает условный признак последней операции ввода-вывода в виде значений типа word. Если операция завершилась успешно функция возвращает 0, иначе код ошибки. Функция становится доступной только при отключенном автоконтроле ошибок ввода-вывода. Директива компилятора {$I-} отключает, а директива {$I+} включает автоконтроль. Если операция привела к возникновению ошибки, устанавливается флаг ошибки, и все последующие попытки ввода-вывода блокируются, пока не будет вызвана функция IOResult.

Задание 3 – изучить особенности текстовых файлов языка Паскаль.

Текстовые файлы в Паскале предназначены для хранения текстовой информации. Компоненты текстового файла могут иметь переменную длину, что влияет на характер работы с ними. Текстовый файл трактуется как совокупность строк переменной длины. Доступ к каждой строке возможен лишь последовательно, начиная с первой. В конце каждой строки ставится признак EOLN, в конце всего файла EOF. Эти признаки можно протестировать одноименными функциями.

Для доступа к строкам применяются процедуры Read, ReadLn – (чтение из файла в переменную), Write, WriteLn.

Read(файловая переменная, <список ввода>);

Пример программы заполнения массива вещественных чисел из файла

Program Files; const

N=1000; {максимальная длина ввода}

var

F: text;

M: array [1..N] of real; I, J: integer;

begin

assign(F, 'prog.dat'); reset(F);

I:=0;

while not EOF(F) and (I<=N) do begin

I:=I+1; read(F, M[I]);

end;

13

Смотрите также:

0501_5+6
1-1
11
11 Горм +
113
1198
14
1433
1511
1632