- •2.Строки переменной длины. Короткие и длинные строки. Формат задания. Представление в памяти. Операции, определенные над строковыми данными переменной длины.
- •1) Строковым переменным могут быть присвоены значения строковых
- •3.Процедуры и функции, определенные над строками переменной длины. Пример.
- •2) Insert (St1, St2, Poz) Вставляет строку St1 в строку St2, начиная с позиции Poz. Если значение
- •3) Str (I, St) Преобразует числовое значение величины I и помещает результат в строку St. Величина I должна иметь целочисленный или вещественный тип.
- •4) Val (St, I, Cod) Преобразует значение St в величину целочисленного или вещественного
- •4.Процедуры. Синтаксис объявления процедур. Вызов процедуры. Организация связи по данным при использовании процедур без параметров.
- •X1, y1, x2, y2, d: Real; {Объявление глобальных переменных}
- •X1, y1, x2, y2 – координаты первой и второй точек}
- •5.*Виды формальных параметров подпрограмм. Параметры-значения. Назначение, синтаксис. Механизм организации взаимосвязи с фактическими параметрами при использовании параметров-значений.
- •X1, y1, x2, y2, d: Real; {Объявление глобальных переменных}
- •7*Параметры без типа. Назначение, синтаксис. Способы обеспечения совместимости с фактическими параметрами.
- •8*Параметры процедурного типа. Назначение, синтаксис. Условия совместимости с фактическими параметрами. Пример.
- •9.Функции. Описание функций. Вызов функции.
- •10.Использование производных типов в качестве параметров подпрограмм. Открытые массивы.
- •11.Рекурсивные подпрограммы. Виды рекурсии. Достоинства и недостатки рекурсивной записи подпрограмм. Явная рекурсия.
- •12.Директива Forward. Неявная рекурсия.
- •13.Записи. Синтаксис задания. Записи без вариантной части. Операции над записями и над полями.
- •14.Записи с вариантами. Синтаксис задания. Особенности задания записей с полем признака и без него.Записи, содержащие только общую часть, имеют строго определенную структуру.
- •15.Оператор присоединения. Назначение. Формат. Полная и сокращенная формы оператора присоединения. Примеры использования.
- •I1, i2, I: Set Of 1..10; {Используется задание базового типа}
- •17.Множественные выражения. Операции и встроенные процедуры над множествами. Ввод-вывод множественных переменных.
- •If b In Mn Then {Анализ вхождения очередного значения базового
- •18. Типизованные константы-записи (с вариантами и без) и константы-множества. Назначение. Синтаксис задания. Примеры использования.
- •19.Файлы. Логический и физический файл. Способы доступа к элементам файла. Типы файлов. Синтаксис задания.
- •4)Nul – нулевое устройство. Для него при выводе не осуществляется никаких действий. При попытке чтения возникает ситуация конца файла.
- •6)‘’ – Использование пустой строки вместо имени Name. В этом случае файловая переменная f связывается с Con (по аналогии с пунктом а)).
- •1) Процедура Assign
- •3) Процедура Write (f, v1 [, v2, … , vn])
- •5) Процедура Read (f, V [, v2, …, vn])
- •6) Функция Eof(f) (End Of File) – служит для определения факта выхода при чтении за пределы файла.
- •7) Процедура Seek (f, n)
- •9) Функция Filesize(f) Функция Filesize(f) – возвращает текущий размер файла (число элементов
- •10) Процедура Close (f)Процедура Close (f) – предназначена для закрытия открытого файла f.
I1, i2, I: Set Of 1..10; {Используется задание базового типа}
B: Boolean;
В данном примере Den, L1, L, I1, I2, I – это множественные переменные
(переменные-множества).
17.Множественные выражения. Операции и встроенные процедуры над множествами. Ввод-вывод множественных переменных.
Для ввода значения множественной переменной используется операция
объединения множеств. Во входном файле необходимо подряд записать все значения,
составляющие значение данной множественной переменной.Если очередное значение переменной B не относится к базовому типу множества, то оно в множество Mn не занесется.
Для вывода значения множественной переменной используется операция
проверки вхождения элемента в множество.
Пример 4.8.
Ввод значения переменной типа множества больших латинских букв из
входного файла. Признак окончания ввода множества – точка.
Var
B: Char;
Mn: Set Of ‘A’..‘Z’; {Тип элементов вводимого множества}
Begin
Mn := []; {Начальное значение множества – пустое множество}
Repeat
Read (B); {Чтение очередного элемента множества}
77
Mn := Mn + [B] {Объединение множеств}
Until B = ’.’; {‘.’ – признак конца текста}
...
Пример 4.9.
Продолжение примера 4.8. Вывод значения переменной типа множества
латинских букв.
For B := ’A’ To ‘Z’ Do {Организация цикла по базовому типу множества}
If b In Mn Then {Анализ вхождения очередного значения базового
типа в значение множественной переменной}
Write (B: 5);
…
18. Типизованные константы-записи (с вариантами и без) и константы-множества. Назначение. Синтаксис задания. Примеры использования.
Типизованная константа-множество представляет собой, с точки зрения
синтаксиса, конструктор множества, то есть значение множественной
величины.Синтаксис константы-множества определяет рисунок 4.6.
Синтаксическая диаграмма <Константы_элемент> (см. рисунок 4.6) имеет
вид, который иллюстрирует рисунок 4.7.Таким образом, <Константа_элемент> представляет собой значения или диапазоны значений базового типа множества.
Константа-множество может использоваться как инициированная
переменная типа множество.
Пример 4.10.
Объявление типизованной константы-множества.
Const
Dig: Set Of 0..9 = [1, 3, 5];
Dig1: Set Of 0..9 = [];
Ch: Set Of ‘A’..‘Z’ = [‘A’..‘E’, ‘I’, ‘P’, ‘T’];
19.Файлы. Логический и физический файл. Способы доступа к элементам файла. Типы файлов. Синтаксис задания.
Для всех рассмотренных ранее производных типов было характерно
наличие заранее заданного числа компонент.Файловый тип – это произвольная последовательность элементов, длина которой заранее не определена, а конкретизируется в процессе выполнения программы.Это определение логического файла, т.е. того, который используется в программе (файл с точки зрения программиста).
Физический файл (набор данных) – это поименованная область памяти
на внешнем носителе, в которой хранится некоторая информация (файл с точки
зрения пользователя).Элементы файла записаны в нем последовательно (рисунок 5.1).
В Паскале возможны два способа обращения к элементам файла:
последовательный доступ и прямой доступ.
При последовательном доступе по файлу можно двигаться только
последовательно, начиная с первого его элемента. У последовательного файла
доступен лишь очередной его элемент. Чтобы добраться до n-го элемента
файла, необходимо начать с первого элемента и пройти через предыдущие n – 1
элементов. При прямом доступе можно обратиться непосредственно к элементу
файла с номером n, минуя предварительный просмотр n - 1 элемента файла. Файловый тип - это единственный тип значений, посредством которого
данные, обрабатываемые программой, могут быть получены извне, а результаты могут быть переданы человеку. Это единственный тип значений,
который связывает программу с периферийными устройствами компьютера.
В Паскале имеется три типа файлов (три вида переменных файлового типа, т.е. файловых переменных):
• текстовые файлы;• файлы с типом;• файлы без типа.
Синтаксис задания файлового типа имеет вид, который представляет
рисунок 5.2.
Рисунок 5.2 – Синтаксическая диаграмма
задания фалового типа
Над значениями файлового типа не определены никакие операции (даже
присваивание файловой переменной значения другой файловой переменной).
Все операции могут производиться лишь с элементами файлов.
Множество операций над элементами файла определяется типом элементов.
Для доступа к отдельным элементам файлов в Паскале существуют
специальные стандартные процедуры и функции. Их называют процедурами и
функциями ввода-вывода. Обращение к ним осуществляется обычным
образом.Для удобства описания действия этих процедур используется понятие
«окно файла» («окно», текущая позиция файла, указатель файла). Окно
определяет позицию доступа, т.е. тот элемент файла, который доступен для
чтения или для записи.Позиция файла, следующая за последним элементом файла (или первая
позиция пустого файла) помечается специальным маркером конца файла
(Ctrl - Z при создании текстового файла с клавиатуры). С помощью этого
маркера определяется конец файла.
20.Процедура AssignFile. Назначение. Формат. Логические имена устройств ввода-вывода.
Любым другим процедурам ввода-вывода предшествует процедура
Assign.Формат ее заголовка:
Assign (Var F; Name: String)
Здесь F – имя файловой переменной любого типа; Name – выражение строкового типа.Назначение процедуры – организует связь между конкретным
физическим файлом на внешнем устройстве (конкретным набором данных) и
файловой переменной программы (логическим файлом) F. Имя конкретного набора данных определяется переменной Name. Name –
это полное имя физического файла. В общем случае оно имеет вид:
<Диск>:\<Имя_каталога>\…\<Имя_каталога>\<Имя_файла> <Диск> задается символом от A до Z (символ логического устройства).
Если он опущен, то подразумевается логическое устройство, принятое по
умолчанию.
\<Имя_каталога>\…\<Имя_каталога>\ - это путь через подкаталоги к
фактическому имени файла. Если они опущены, то считается, что файл
находится в текущем каталоге.
<Имя_файла> - фактическое имя файла. Оно может иметь максимально 8
символов. Затем может идти уточнение (тип файла) – максимально 3 символа,отделенное от имени точкой.
Например, можно определить такие имена файлов:
Rez Rez.pas Rez.exe Rez.txt Rez.dat
Уточнение помогает программисту, пользователю, системе программирования или операционной системе работать с файлами. Пример полного имени файла:
A:\Katalog1\Katalog2\Rez.pas
Максимальная длина полного имени файла – 79 символов.Чтобы связать файловую переменную (логический файл) F с физическим
файлом Rez.dat нужно записать процедуру Assign со следующими параметрами:
Assign (F, ‘Rez.dat’);
или организовать связь в диалоге:
Var
St: String;
...
Begin
...
Writeln (‘Введите имя файла’);
Readln (St);
Assign (F, St);
Вместо имени физического файла в качестве параметра Name в списке фактических параметров процедуры Assign может использоваться любое устройство ввода-вывода (клавиатура, печать, дисплей и т. п.) В этом случае Name – это символическое (логическое) имя устройства ввода-вывода.Для использования доступны следующие символические имена устройств.1)Con – устройство консоли (при вводе – это клавиатура, при выводе –экран дисплея).Например, процедура
Assign (F, ‘Con’);означает ввод в переменную F с клавиатуры или вывод из F на экран. По умолчанию стандартные текстовые файлы Input и Output связаны с
консолью, что соответствует следующему фрагменту программы: Assign (Input, ‘Con’);
Assign (Output, ‘Con’);2)Lpt1, Lpt2, Lpt3 – устройства печати. Если подключено одно устройство печати, то используется либо имя Lpt1 либо Prn: Assign (F, ‘Prn’);
Assign (Output, ‘Prn’); С данными логическими устройствами может использоваться только имя
выходного файла. 3)Com1, Com2 – устойства последовательного ввода-вывода, используемые
для обмена данными между компьютерами. Вместо Com1 может быть использовано имя ‘Aux’.
