- •Эвм. Различные виды обеспечения эвм. Аппаратное обеспечение эвм.
- •10) Алфавит и лексемы языка Pascal. Идентификаторы. Нотации идентификаторов.
- •11) Понятие оператора. Операторы описания. Исполняемые операторы.
- •12) Структура программы. Правила оформления программы. Комментарии.
- •13) Константы.
- •14) Переменные. Понятие. Изменение значений. Описание.
- •15) Понятие типа данных. Классификация типов данных.
- •16) Логический, целые и вещественные типы. Понятие. Основные операции и функции.
- •17) Символьный и порядковые типы данных. Понятие. Основные операции и функции.
- •18. Выражения. Приоритеты операций.
- •19. Операторы ввода-вывода. Форматированный вывод.
- •20. Условный оператор. Оператор выбора.
- •21. Циклы. Цикл с параметром. Циклы с пост и предусловием. Операторы циклов
- •Инкрементный цикл с параметром
- •Декрементный цикл с параметром
- •Оператор безусловного перехода goto
- •22. Одномерные массивы. Понятие. Описание. Инициализация. Ввод-вывод. Понятие структуры
- •Массив – однородная совокупность элементов
- •Индекс массива
- •Вычисление индекса массива Паскаля
- •Основные действия с массивами Паскаля
- •Ввод массива Паскаля
- •Вывод массива Паскаля
- •22. Одномерные массивы. Понятие. Описание. Инициализация. Ввод-вывод. Массивы
- •Описание массива
- •Нумерация
- •Описание переменных размерностей
- •Обращение к компонентам массива
- •Задание массива константой
- •23. Сортировка массивов простым выбором и «пузырек».
- •24. Многомерные массивы. Понятие. Описание. Инициализация. Ввод-вывод. Двумерные массивы Паскаля – матрицы
- •Описание двумерного массива Паскаля.
- •Основные действия с двумерными массивами Паскаля
- •Ввод двумерного массива Паскаля.
- •Вывод двумерного массива Паскаля на экран.
- •Представление двумерного массива Паскаля в памяти
- •Сколько памяти выделяется для массива?
- •25. Строки. Типы строк. Описание. Операции, процедуры и функции обработки строк.
- •Описание строк
- •Стандартные функции и процедуры обработки строк
- •26. Записи. Описание. Обработка записей. Записи с вариативной частью. Записи
- •Описание записей
- •Задание записей константой
- •Доступ к полям
- •Оперирование несколькими полями
- •Вложенные операторы with
- •Запись с вариантной частью
- •Описание записи с вариантной частью
- •27. Множества. Описание. Операции, процедуры и функции обработки множеств. Множества
- •Описание множеств
- •Множество-константа Неименованная константа
- •Нетипизированная константа
- •Типизированная константа
- •Представление множеств массивами
- •Представление множеств линейными массивами
- •28. Текстовые файлы. Доступ к данным в текстовых файлах. Работа с текстовыми файлами. Описание файлов
- •Пробельные символы
- •Работа с текстовыми файлами
- •29. Бестиповые файлы. Доступ к данным в бестиповых файлах. Работа с бестиповыми файлами. Процедуры и функции обработки бестиповых файлов.
- •Поиск в нетипизированном файле
- •Запись и чтение
- •Подпрограммы обработки директорий
- •30. Компонентные файлы файлы. Доступ к данным в компонентных файлах. Работа с компонентными файлами. Процедуры и функции обработки компонентными файлов. Типизированные файлы
- •Описание типизированных файлов
- •Назначение типизированного файла
- •Открытие и закрытие типизированного файла
- •Считывание из типизированного файла
- •Поиск в типизированном файле
- •Запись в типизированный файл
- •31. Подпрограмма. Понятие. Виды. Синтаксис. Вызов подпрограмм. Локальные и глобальные переменные. Подпрограммы
- •Вызов подпрограмм
- •Побочный эффект
- •Совпадение имен
- •32. Подпрограммы. Виды параметров. Обмен данными между подпрограммами и основной программой. Список параметров
- •Возвращаемые значения
- •Способы подстановки аргументов
- •Параметр-значение Описание
- •Механизм передачи значения
- •Параметр-переменная Описание
- •Механизм передачи значения
- •Параметр-константа Описание
- •Механизм передачи значения
- •Нетипизированные параметры
- •Явное преобразование типа
- •Совмещение в памяти
- •Открытые массивы
- •33. Модули. Синтаксис. Создание и использование модуля.
- •Подключение модулей
- •Секция реализации
- •Секция инициализации
- •Взаимодействие модулей
- •Компиляция модулей
- •34. Стандартные модули языка Pascal. Стандартные модули языка Pascal
- •35. Указатели. Виды указателей. Операции и функции обработки указателей. Статически выделяемая память
- •Разыменование
- •Присваивания
- •Сравнения
- •36. Динамические переменные. Процедуры и функции работы с динамическими переменными. Работа с динамическими переменными. Динамическое выделение памяти Типизированные указатели
- •Нетипизированные указатели
- •Динамическое освобождение памяти Типизированные указатели
- •Нетипизированные указатели
- •Процедуры работы с динамической памятью
- •37. Стек. Добавление и выборка элемента из стека. Стеки Pascal-Паскаль
- •Занесение элемента в стек
- •Извлечение элемента из стека
29. Бестиповые файлы. Доступ к данным в бестиповых файлах. Работа с бестиповыми файлами. Процедуры и функции обработки бестиповых файлов.
Предназначены для хранения участков оперативной памяти на внешних носителях. После описания файловой переменной
var <имя> : file;
ее требуется связать с физическим файлом с помощью процедуры assign. Обмен производится через буфер «порциями», равными размеру буфера.
Размер буфера, отличающийся от стандартного (128 байт), можно задать в reset или rewrite (от 1 до 64K):
reset(var f : file; bufsize : word)
rewrite(var f : file; bufsize : word)
Чтение и запись:
blockread(var f : file; var x; count : word; var num : word);
blockwrite(var f : file; var x; count : word; var num : word);
Поиск в нетипизированном файле
Все подпрограммы, описанные в разделе " Поиск в типизированном файле ", будут работать и для нетипизированного файла. Но, поскольку тип элементовнетипизированного файла не определен, то размер одного "элемента" принимается равным 128 байт (по умолчанию) или указанному в переменной size во время открытия файла.
Запись и чтение
Для осуществления записи в нетипизированный файл и считывания из него применяются две специальные процедуры blockread() и blockwrite().
Процедура blockread(f:file; buf,count:word [;result:word]) предназначена для считывания из файла f нескольких элементов разом (их количество указывается в переменной count, а длина устанавливается во время открытия файла) при помощи буфера обмена данными buf. Необязательная переменная result может хранить количество элементов, фактически считанных из файла.
Процедура blockwrite(f:file; buf,count:word [;result:word]) производит запись данных в нетипизированный файл при помощи буфера buf.
Подпрограммы обработки директорий
Приведем здесь также несколько стандартных процедур, осуществляющих работу с директориями, а также с файлами, но внешним относительно самих файлов образом (без их открытия).
Процедура erase(f: file) удалит файл, связанный с файловой переменной f. Если такого файла нет, произойдет ошибка, реакцию на которую можно отрегулировать при помощи директивы компилятора {$I} (см. лекцию 6).
Процедура rename(f: file; s: string) даст файлу, связанному с файловой переменной f, новое имя, указанное в строке s. Если такого файла нет, произойдет ошибка.
Процедура chdir(s: string) сделает текущей директорию, указанную в строке s. Если такой директории нет, произойдет ошибка.
Процедура getdir(disk: byte; s:string) запишет в строку s имя текущей директории на указанном диске ( 0 - текущий диск, 1 - диск А , 2 - диск В и т.д.).
Процедура mkdir(s: string) создаст в текущей директории новую поддиректорию с указанным в строке s именем. Если в текущей директории уже существуют файл или директория с указанным именем, произойдет ошибка.
Процедура rmdir(s: string) удалит пустую директорию с заданным в строке s именем. Если такой директории нет, произойдет ошибка.
30. Компонентные файлы файлы. Доступ к данным в компонентных файлах. Работа с компонентными файлами. Процедуры и функции обработки компонентными файлов. Типизированные файлы
Переменные структурированных типов данных (кроме строкового) невозможно считать из текстового файла. Например, если нужно ввести из текстового файла данные для наполнения записи toy информацией об имеющихся в продаже игрушках (название товара, цена товара и возрастной диапазон, для которого игрушка предназначена):
type toy = record name: string[20];
price: real;
age: set of 0..18; {в файле задано границами}
end;
то придется написать следующий код:
var f: text;
c: char;
i,j,min,max: integer;
a: array[1..100] of toy;
begin
assign(f,input);
reset(f);
for i:=1 to 100 do
if not eof(f)
then with a[i] do
begin readln(f,name,price,min,max);
age:=[];
for j:= min to max do age:=age+[j];
end;
close(f);
...
end.
Как видим, такое поэлементное считывание весьма неудобно и трудоемко.
Выход из этой ситуации предлагают типизированные файлы - их элементы могут относиться к любому базовому или структурированному типу данных. Единственное ограничение: все элементы должны быть одного и того же типа. Это кажущееся неудобство является непременным условием для организации прямого доступа к элементамбинарного файла: как и в случае массивов, если точно известна длина каждого компонента структуры, то адрес любого компонента может быть вычислен по очень простой формуле:
<начало_структуры> + <номер_компонента>*<длина_компонента>
