
- •Начальные сведения
- •Алфавит
- •Лексемы, разделители и комментарии
- •Форма Бэкуса-Наура
- •Структура программы на Паскале
- •Типы данных
- •Базовые возможности Паскаля
- •Стандартные типы данных
- •Константы
- •Конструирование типов
- •Перечисления
- •Диапазоны (интервалы)
- •Массивы
- •Описание переменных и типов данных
- •Var a,b,c: Real; {описаны переменные вещественного типа}
- •I,j,k,l,m,n:Integer; {описаны переменные целого типа}
- •Оператор присваивания
- •Условные операторы
- •Оператор If
- •Оператор Case
- •Операторы цикла
- •Цикл While
- •Цикл Repeat-Until
- •Цикл For
- •Оператор безусловного перехода и метки
- •Пустой оператор
- •1: End; {конец тела цикла с помеченным пустым оператором}
- •Процедуры и функции
- •Описание
- •Список формальных параметров
- •Вызов процедур и функций
- •Локализация (области видимости) имен. Глобальные и локальные объявления.
- •Статическое и динамическое выделение памяти переменным
- •Рекурсия и опережающее описание
- •Стандартные функции
- •Стандартные процедуры
- •Стандартный ввод-вывод
- •Сложные типы данных и их использование
- •Квалификаторы
- •Конструкция записи, тип записи и переменная типа запись
- •Id:Person; {личные данные}
- •Id:Person; {личные данные}
- •Index: Ch; {Название/номер группы}
- •Использование записей в программе
- •Оператор With
- •Записи с вариантными полями
- •0:(I:Integer) {Два байта как одно поле Integer}
- •1:(Lo,hi:Char); {отдельно младш. И старш. Байты}
- •Var e: Integer; {в этой переменной будем менять байты}
- •Указатели и динамические структуры данных
- •Определение и описание
- •I:integer; {Информационное поле}
- •Var p,q:Point; {переменные-указатели на записи типа Rec}
- •Использование указателей и динамических переменных
- •Создание и уничтожение динамических переменных
- •Простейшие динамические структуры
- •Множества
- •Назначение и описание
- •Константы типа множество
- •Операции с множествами
- •Назначение и описание
- •Работа с файлами
- •Файлы типа Text
Операции с множествами
Два множества являются совместимыми, если их базовые типы полностью или частично перекрываются. При выполнении операции над множеством базовый тип результата является объединением базовых типов исходных множеств. При присваивании переменной-множеству некоторого значения совместимость обеспечивается, если все элементы присваиваемого значения входят в множество значений базового типа переменной, в которую это значение заносится.
Пусть A и B – множества совместимых типов, а e – элемент базового типа множества A.
Таблица операций над множествами
Результат – типа множество
Операция |
Название |
Результат |
A + B |
Объединение |
Все элементы А и те элементы В, которых нет в А |
A * B |
Пересечение |
Совпадающие элементы А и В. |
A – B |
Вычитание |
Элементы А, которых нет в В. |
Также для множеств предусмотрены операции отношений. Во всех этих операциях, кроме операции In, оба операнда – множества совместимых типов, а в операции In правый (второй) операнд – множество, а левый (первый) операнд – допустимый элемент этого множества.
Таблица операций отношений над множествами
Результат – типа Boolean
Операция |
Название |
Результат True, если |
A = B |
Равенство |
Все элементы А и В одинаковы |
A <> B |
Неравенство |
Есть хотя бы один элемент, отличающийся в А и В. |
A >= B |
Подмножество |
Все элементы B есть в A, но в A могут быть элементы, не входящие в B. |
A <= B |
Подмножество |
Все элементы A есть в B, но в B могут быть элементы, не входящие в A. |
e In A |
Вхождение |
Элемент e входит в множество A. |
Пример. Проверка, является ли введенный символ цифрой.
Program Check;
Var C: Char;
Begin
Write('Введите цифру >'); Readln(C);
If C in [0..9] then Writeln ('Введена цифра ',C)
Else Writeln('Это не цифра')
End.
Файлы
Назначение и описание
Файл в Паскале – это последовательность позиций для хранения данных одного и того же базового типа. Обычно файлы размещаются на внешних носителях – магнитных или лазерных дисках, магнитных лентах и т.п. Файлы могут использоваться для ввода данных, хранимых на внешнем носителе и для вывода данных для хранения на внешнем носителе.
Файл ввода имеет определенное количество позиций. В файле вывода изначально есть одна пустая позиция, но количество позиций увеличивается по мере вывода в файл и окончательно определяется по окончании вывода и закрытии файла.
Так как позиции файла хранят данные одного и того же типа, их размер одинаков.
В программе с каждым файлом связана файловая переменная, через которую доступна одна позиция файла, называемая текущей. Файловая переменная является как бы указателем на текущую позицию. Точнее, файловая переменная указывает на ячейку в оперативной памяти, связанную с текущей позицией на внешнем носителе.
В файле ввода по этому указателю можно прочитать содержимое текущей позиции. В файле вывода через файловую переменную можно занести значение в текущую позицию.
В стандартном Паскале перемещение текущей позиции возможно только последовательно и только в одном направлении – от начала к концу файла. Такие файлы называют файлами с последовательным нереверсивным доступом.
Синтаксис конструкции файлового типа:
<файловый тип>::="File" "of" <базовый тип>.
Здесь базовый тип – это любой базовый тип, кроме файлового.
Для работы с файлом в программе нужно определить упоминавшуюся файловую переменную, т.е., переменную файлового типа. В большинстве реализаций содержание файловой переменной недоступно программисту, однако, обратившись к ней с квалификатором указателя (знак ^) можно получить доступ к текущей позиции файла.
Пример:
Type R=Record
I,J:Integer;
Text: array[1..80] of char
End;
Var F1: file of Real;
F2: file of Boolean;
F3: file of R;
Здесь объявлено три файловых переменных для трех файлов разного типа.