Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
контрольная_ОП.doc
Скачиваний:
6
Добавлен:
15.09.2019
Размер:
168.45 Кб
Скачать

Описание процедур

Описание процедуры располагается до ис­полняемой части программы и является как бы маленькой программой внутри большой. Начинается описание заго­ловком процедуры.

PROCEDURE идентификатор (параметры);

{Раздел описания локальных данных}

BEGIN

{ТЕЛО ПРОЦЕДУРЫ}

END;

Пример: процедура, издающая звуковой сигнал

procedure beep(a:integer); Begin

Sound(440);

Delay(a);

Nosound;

End;

Механизм передачи параметров в процедуру аналогичен механизму работы с параметрами функций.

Области действия имен. Локальные и глобальные переменные.

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

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

Имена, объявленные в списке параметров или внутри подпрограммы, называют локальными, область их действия и доступ к ним ограничиваются самой подпрограммой. При выходе из подпрограммы значения локальных переменных не сохраняются. Их удобно использовать в качестве вспомогательных переменных.

Таким образом, с помощью глобальных переменных можно передавать исходные данные в подпрограмму и возвращать полученные результаты. Однако в этом случае необходимо тщательно следить за всеми глобальными переменными, значения которых используются в подпрограмме, поскольку их изменения, вызванные, например, добавлением новых операторов, будут оказывать влияние на работу программы в целом.

К особенно большим трудностям приводит использование глобальных переменных в подпрограммах при независимой отладке подпрограмм и переносе их в другие программы. Поэтому рекомендуется обмен данными между программой и подпрограммой реализовывать только с помощью параметров.

Локальная и глобальная переменные могут иметь одинаковое имя. Несмотря на это они являются двумя различными переменными, которые располагаются в различных областях памяти. Причем в этом случае глобальная переменная становится недоступной в подпрограмме.

РАБОТА С ФАЙЛАМИ

Файлы на магнитном диске

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

Единицей хранения информации в библиотеке служит книга, единицей хранения информации на диске служит файл. Он имеет имя и занимает на диске область, размер кото­рой зависит от объема файла. В файлах хранят документы, программы, изображения, — одним словом, все, что можно записать при помощи чисел или символов.

Различают два вида файлов: последовательного и про­извольного доступа. Последовательные файлы состоят из элементов различной длины, между которыми стоят раз­делители. Чтобы найти элемент последовательного файла, надо просмотреть все, что ему предшествует.

Файлы произвольного доступа состоят из однотипных эле­ментов, как массивы. Найти любой элемент можно по его

порядковому номеру.

В Паскале последовательные файлы называют текстовы­ми, а файлы произвольного доступа — типизированными.

Программа может обрабатывать существующий файл или создать новый файл. В любом случае работа с файлом скла­дывается из трёх пунктов:

1) открытие файла;

2) чтение или запись;

3) закрытие файла.

Текстовые файлы

Текстовые файлы хранят информацию в виде последова­тельности символов. Символы составляют строки произвольной длины. В конце каждой строки находятся два особых символа: #13 #10, которые отделяют строку от следующей. Текстовые файлы широко распространены, их способен создавать любой экранный редактор. В программе на Паскале текстовый файл представляет файловая временная типа TEXT. Ее описывают предложением

VAR имя: TEXT

Файловой переменной назначают имя файла при помо­щи оператора

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

где имя файла — строка, содержащая дисковое имя файла.

Больше нигде в программе не появится имя файла, всюду его заменит файловая переменная.

Теперь файл необходимо открыть. Текстовый файл можно открыть:

для чтения — оператором

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

для записи — оператором rewrite (файловая переменная);

для пополнения — оператором

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

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

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

а затем снова открыть уже для чтения.

Чтение из текстового файла

Чтение из файла выполняется хорошо знакомым нам опе­ратором READ. Если перед списком ввода в операторе READ стоит файловая л временная, он вводит данные не с клавиатуры, а из файла. Например,

var ft:text;

a,b,c: integer;

read (a,b,c); {ввод с клавиатуры}

read (f,a,b,c); {ввод из файла}

Текстовый файл для оператора READ такой же источник символов, как и клавиатура, только эти символы следуют друг за другом не во времени, а в пространстве файла. Во времени можно перемещаться лишь в одну сторону, по фай­лу — тоже. Движение допускается последовательное, от на­чала к концу, поэтому текстовые файлы называют после­довательными.

Чтобы уяснить, что прочтет из файла тот или иной опера­тор READ, введем понятие указателя файла. Фактически указатель — это номер очередного символа файла, но лучше вообразить его в виде стрелки, направленной в определен­ную точку файла.

Сразу после открытия стрелка указывает на первый символ файла. Чтение очередной порции данных всегда выпол­няется, начиная с символа, на который показывает стрел­ка. После чтения стрелка автоматически передвигается впе­ред на длину прочитанного участка. Так продолжается, пока стрелка не достигнет конца файла. Дальнейшие по­пытки чтения вызовут сообщение об сшибке.

Как узнать, можно ли еще читать из файла? Для этого в Пас­кале есть логическая функция

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

Она возвращает true, если достигнут конец файла, и false в противном случае. Название функции сокращает слова «End Of File» — конец файла.

Дополнительный оператор чтения READLN вводит все, предусмотренное списком ввода, и продвигает указатель до начала следующей строки.

Запись в текстовый файл

Запись в текстовый файл выполняется оператором WRITE, в котором перед списком вывода стоит файловая переменная. Выводимая информация присоединяется к той, что была выведена в файл с момента его открытия.

Желая создать новый файл, его открывают оператором REWRITE. Если же хотят дополнить уже существующий файл, открытие выполняют оператором APPEND. Открытие существующего файла оператором REWRITE приведет к потере того, что находилось там раньше.

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

Дополнительный оператор записи WRITELN выводит все, предусмотренное списком вывода, и символы #13 #10 впридачу.

ПРИМЕР. Ввод с клавиатуры и запись в текстовый файл.

var

f: text;

s:string;

begin

assign(f, 'XXX.TXT’); rewrite (f); {открытие файла} readln (s); {ввод с клавиатуры} . while s <> ‘’ do

begin writeln (f,s); {вывод в файл} readln (s); {ввод с клавиатуры}

end {while}; close (f) {закрытие файла}

end.