Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Экзамен инфа.doc
Скачиваний:
12
Добавлен:
20.04.2019
Размер:
9.15 Mб
Скачать

Билет № 38 Понятие блока операторов в pascal. Понятие локальных и глобальных переменных

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

Пример

begin

a:=5;

b:=a-2;

end;

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

Глобальная переменная - переменная, объявленная за пределами всех функций. Областью видимости глобальных переменных является вся программа. Глобальная переменная не локализована ни на каком уровне. Глобальная переменная может быть проинициализирована только соответствующей ее типу константой (но не выражением). Инициализация глобальных переменных производится однократно перед началом исполнения специальных функций.

Билет №39 Организация ввода-вывода в pascal

В данном разделе рассмотрим организацию ввода и вывода данных с терминального устройства. Терминальное устройство - это устройство, с которым работает пользователь, обычно это клавиатура и экран (дисплей).

Ввод данных

Для ввода исходных данных чаще всего используется процедура ReadLn:

ReadLn(A1,A2,...AK);

Процедура производит чтение К значений исходных данных и присваивает эти значения переменным А1, А2, ..., АК.

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

Значения исходных данных могут отделяться друг от друга пробелами и нажатием клавиш табуляции и Enter.

Не допускается разделение вводимых чисел запятыми!

Вывод данных

Для вывода результатов работы программы на экран используются процедуры:

Write(A1,A2,...AK);

WriteLn(A1,A2,...AK);

Первый из этих операторов производит вывод значений переменных А1, А2,...,АК в строку экрана. Второй оператор, в отличие от первого, не только производит вывод данных на экран, но и производит переход к началу следующей экранной строки. Если процедура writeln используется без параметров, то она просто производит пропуск строки и переход к началу следующей строки.

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

Форма представления значений в поле вывода соответствует типу переменных и выражений: величины целого типа выводятся как целые десятичные числа, действительного типа - как действительные десятичные числа с десятичным порядком, символьного типа и строки - в виде символов, логического типа - в виде логических констант TRUE и FALSE.

Оператор вывода позволяет задать ширину поля вывода для каждого элемента списка вывода. В этом случае элемент списка вывода имеет вид А:К, где А - выражение или строка, К - выражение либо константа целого типа. Если выводимое значение занимает в поле вывода меньше позиций, чем К, то перед этим значением располагаются пробелы. Если выводимое значение не помещается в ширину поля К, то для этого значения будет отведено необходимое количество позиций.

Для величин действительного типа элемент списка вывода может иметь вид А:К:М, где А - переменная или выражение действительного типа, К - ширина поля вывода, М - число цифр дробной части выводимого значения. К и М - выражения или константы целого типа. В этом случае действительные значения выводятся в форме десятичного числа с фиксированной точкой.

Пример записи операторов вывода:

var rA, rB: Real;

iP,iQ:Integer;

bR, bS: Boolean;

chT, chV, chU, chW: Char;

begin

. . .

WriteLn(rA, rB:10:2);

WriteLn(iP, iQ:8);

WriteLn(bR, bS:8);

WriteLn(chT, chV, chU, chW);

end.

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

Перед тем, как осуществлять ввод-вывод, файловая переменная должна быть связана с конкретным внешним файлом с помощью процедуры Assign. Этим файлом может быть файл на магнитном диске или ленте, а также устройство вычислительного комплекса (клавиатура, экран дисплея, принтер и т.д.). Затем файл должен быть открыт для чтения и/или записи. После этого можно осуществлять организацию ввода-вывода.

В Turbo Pascal имеется 3 категории файлов: текстовые (тип Text), типизированные (file of <тип>) и файлы без типа (file) (см. п. 6.6). Работа с этими категориями файлов несколько отличается друг от друга.

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

После работы с файлом он, как правило, должен быть закрыт процедурой Close. Это требование обязательно должно соблюдаться для файла, в который производилась запись.

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

11.1. Стандартные процедуры и функции для всех файлов

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

ПРОЦЕДУРЫ

Assign (F, Name) - связь файловой переменной с внешним файлом. Связывает файловую переменную F с внешним файлом, имеющим имя Name. Name - переменная или константа типа string (или совместимого для присваивания с ним типа) или типа PChar. Имя типа должно быть написано в соответствии с правилами MS DOS, может включать путь и не должно превышать 79 символов. Если строка имени пустая, осуществляется связь со стандартным файлом ввода или вывода (как правило, консолью).

ChDir(Path) - изменение текущей директории. Устанавливает новый текущий каталог, путь к которому (включая, быть может, и имя устройства) находится в параметре Path. Параметр Path по своим характеристикам аналогичен параметру Name в процедуре Assign, но в него не должно входить имя файла и он может быть только типа string (или совместимого для присваивания с ним типа).

Close (F) - закрытие открытого файла. Закрывает внешний файл, с которым связана файловая переменная F. При этом в случае необходимости в содержимое файла вносятся все произведенные изменения.

Erase (F) - уничтожение внешнего файла. Удаляется внешний файл, с которым связана файловая переменная F.

GetDir(N,S) - получение текущего каталога накопителя. В переменную S типа string записывается текущий каталог накопителя, номер которого указан параметром N. Параметр N имеет следующие значения: 0 -текущий накопитель, 1 - накопитель А:, 2 - накопитель В: и т. д.

MkDir(Path) - создание каталога. Создается новый каталог, путь до которого указан параметром Path. Параметр Path по своим характеристикам аналогичен параметру Name в процедуре Assign, но в него не должно входить имя файла, и он может быть только типа string (или совместимого для присваивания с ним типа).

Rename (F, NewName) - переименование внешнего файла. Внешний файл, с которым связана файловая переменная F, получает новое имя, заданное параметром NewName. Параметр NewName по своим характеристикам аналогичен параметру Name в процедуре Assign.

Reset(F[,Size]) - открытие существующего файла. Открывается существующий файл, с которым связана файловая переменная F, и указатель текущей компоненты файла настраивается на начало файла. Необязательный параметр целого типа Size используется только с файлами без типа и задает размер пересылаемого элемента информации в байтах. По умолчанию этот размер равен 128.

Rewrite(F[,Size]) - открытие нового файла. Открывается новый пустой файл, и ему присваивается имя, заданное процедурой Assign. Если файл с таким именем уже существует, то он уничтожается. Необязательный параметр Size имеет тот же смысл, что и в процедуре Reset.

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

ФУНКЦИИ

Eof (F) - конец файла. Принимает значение True, если указатель текущей компоненты файла находится за последней компонентой файла (за последним символом, если файл текстовый) , и False - в противном случае.

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