Экзаменационные вопросы (230Б)
- Разработка программ, язык программирования Pascal.
Инструментальные средства разработки программ: система (среда) программирования, редактор текста, транслятор, компилятор, интерпретатор,
компоновщик, отладчик. История развития языка Pascal, распространенные диалекты и компиляторы Pascal:
Turbo Pascal, Delphi, PascalABC.NET, Free Pascal.
Кроссплатформенный компилятор Free Pascal. Состав системы программирования Free Pascal, утилиты.
Структура программы Free Pascal. Режимы совместимости.
Подготовка текста программы, компиляция, запуск программы.
- Выражения и операции во Free Pascal.
Структура выражений. Унарные и бинарные операции, типы аргументов и результата, автоматическое преобразование типа во время выполнения операций. Типы операций: арифметические, логические, строковые, операции над множеством, отношения, операция @. Приоритет операций. Перегрузка операций, разработка перечислителей для операции in.
- Простые операторы.
Понятие оператора, отличия от операции. Составной оператор. Простые операторы. Оператор присваивания. Особенности оператора присваивания. Перегрузка оператора присваивания. Оператор вызова процедуры, операция вызова функции. Оператор перехода goto. Ограничения в применения оператора перехода. Причины нежелательности применения оператора перехода.
- Операторы ветвлений и циклов.
Условный оператор if. Полная и сокращенная запись. Вложенные операторы if. Оператор выбора сase. Взаимозамена условного оператора и оператора выбора. Виды циклов. Цикл со счетчиком for, Ограничения на переменную-счетчик. Цикл for in. Цикл с предусловием while. Цикл с постусловием repeat. Области применения каждого вида цикла. Вложенные циклы одинаковых и разных видов. Прерывание и переход на следующую итерацию цикла: операторы break и continue. Выход из вложенных циклов с помощью оператора goto и процедуры exit.
- Процедуры и функции.
Понятие функции. Синтаксис и семантика определения функции. Формальные параметры. Параметры-значения, параметры-переменные, параметры - нетипированные переменные. Возврат результата из функции. Вызов функции, фактические параметры. Использование функций в выражениях. Процедуры: отличия от функций. Процедурные типы данных. Перегрузка процедур и функций. Рекурсия.
- Модули.
Понятие модуля, модульного программирования. Модульные программы. Модули в различных языках программирования. Объектные файлы, динамические и статические библиотеки. Компоновка программы из набора модулей. Синтаксис и семантика определения модулей. Подключение модулей. Структура модуля: интерфейсная секция, секция реализации, секции инициализации и финализации. Области видимости в модуле. Подключение модулей в модулях: прямые и косвенные ссылки. Решение проблемы циклических ссылок.
- Типы данных и переменные
Понятие типа данных.
Дихотомия типов данных и переменных. Объявление переменных. Глобальные, локальные, статические переменные, ограничения на размер переменных.
Совмещение переменных различного типа в оперативной памяти с помощью модификатора absolute.
Стандартные типы данных. Простые и структурные типы.
Статические и динамические типы. Пользовательские типы данных.
Преобразования типов, прямое и косвенное, перегрузка прямого преобразования типов.
Принципы описания характеристик типа данных: объем, байтовая последовательность расположения в оперативной памяти,
битовая структура, диапазоны значения, точность (для вещественных типов данных), операции и функции для работы с типом данных.
Функции для получения информации о размере типа данных, границах типа, модификации байтовой структуры,
перемещения и заполнения больших объемов данных в оперативной памяти.
- Простые типы данных.
Порядковые типы. Встроенный порядковый тип: целочисленные, логические, символьные типы. Характеристики встроенных порядковых типов. Производные порядковые типы: перечислимый тип и тип поддиапазона. Вещественные типы. Использование математического сопроцессора для выполнения операций над вещественными типами. Характеристики вещественных типов данных.
- Тип данных массив.
Понятие массива. Одномерные и многомерные массивы. Типы индекса. Литералы массива. Обращение к элементу массива. Итерация по массиву. Заполнение и обработка массива циклами. Индуктивные алгоритмы на массивах. Платформо-зависимые ограничения на объем массива. Битовые массивы. Динамические массивы, автоматическое выделение и освобождение памяти при манипуляциях с динамическими массивами. Характеристики массива как типа данных.
- Строковый тип.
Понятие строки в языках программирования. Литералы строк. Обращение к отдельным символам строки. Строка статичного максимального объема, с хранением актуальной длины (короткие строки). Строка, как последовательность символов, заканчивающаяся нулем (pchar). Гибридные (длинные) строки. Реализация всех типов строк в языке программирования. Переключение между длинными и короткими строками опциями компилятора. Сравнительные характеристики коротких и длинных строк. Автоматическое выделение и освобождение памяти при манипуляциях с длинными строками. Характеристики всех типов строк как типа данных.
- Тип данных множество.
Множество как математическая абстракция. Подходы к реализации типа множества в различных языках программирование. Встроенный тип множества в языке программирования. Литералы множества. Доступ к элементам множества. Визуализация содержимого множества. Ограничения на диапазоны значений типа множества. Типичные задачи, решаемые использованием множеств. Характеристики множества как типа данных.
- Тип данных запись.
Понятие структуры (составного типа, типа запись). Реализация записи в языке программирования. Литералы записи. Обращение к полям записи. Битовые поля записи. Базовая и вариантная часть записи. Разделение одной области памяти различными типами переменных с помощью вариантной части записи. Использование особенностей вариантной части для исследования типов данных. Характеристики записи как типа данных.
- Тип данных файл.
Файл, как последовательность данных во внешней памяти. Файлы последовательного и прямого доступа. Специфика понятия «файл» на различных платформах. Понятие файлового указателя. Типы файлов в языке программирования: текстовые, типированные, нетипированные. Последовательность обработки файлов. Стандартные потоки ввода-вывода как текстовые файлы, перенаправление и конвееризация. Режимы открытия текстовых файлов, последовательные запись-чтение, механизмы определения конца файла. Файлы прямого доступа: режимы открытия, чтение-запись, перемещение по файлу, определение текущей позиции, размера файла. Обработка ошибок доступа к файлу. Характеристики файлов как типа данных.
- Тип данных указатель.
Понятие указателя. Типы указателей, преобразование типов указателя. Получение адреса переменной. Выделение и освобождение памяти для указателей. Понятие «утечка памяти». Системы сборки мусора в различных языках программирования, их достоинства и недостатки. Последовательное перемещение по оперативной памяти с помощью указателей. Характеристики указателя как типа данных.
- Вариантный тип данных.
Понятие вариантного типа. Принципы работ с вариантным типом. Операции над вариантным типом, принципы формирования типа результата. Ограничения вариантных типов. Определение типа данных, сохраненного в вариантной переменной. Модуль variants. Вариантные массивы, области их применения. Создание вариантных массивов заранее неизвестной размерности. Манипуляции над элементами вариантных массивов.
- Хелперы.
Понятие хелпера, области применения хелперов. Структура хелпера, способы привязки хелпера к обычным типам данных, записям и классам. Наследование хелперов. Штатные хелперы модуля sysutils. Разработка собственного хелпера.