Экзаменационные вопросы (230Б)

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