Экзаменационные вопросы по предмету:
«Высокоуровневые методы информатики и программирования»
3 курс ПИ, заочники, 831 гр

  1. История развития языка программирования PASCAL.
    Создание языка программирования Pascal. Pascal - как язык обучения программированию. Pascal - как язык профессиональной разработки программ. Диалекты и компиляторы паскаля: turbo pascal, object pascal, delphi, pascal ABC, freepascal.
  2. Требуемые понятия для создания простейших программ.
    Лексемы языка. Выражения и операции. Операторы. Типы данных. Функции. Модули. Организация ввода-вывода. Общая структура программы. Объявление переменных, типов, констант, меток, процедур и функций. Области видимости. Составной оператор программы.
  3. Структура выражений.
    Унарные и бинарные операции, типы аргументов и результата, автоматическое преобразование типа во время выполнения операций. Арифметические операции. Логические операции, строковые, операции над множеством, отношения, операция @. Приоритет операций.
  4. Понятие оператора.
    Отличие оператора от операции. Составной оператор. Простые операторы. Оператор присваивания. Особенности оператора присваивания. Оператор вызова процедуры. Операция вызова функции, ее использование в качестве оператора. Оператор перехода goto. Ограничения в применения оператора перехода. Причины нежелательности применения оператора перехода.
  5. Операторы ветвлений.
    Условный оператор if. Полная и сокращенная запись. Вложенные операторы if. Оператор выбора сase. Взаимозамена условного оператора и оператора выбора.
  6. Операторы циклов.
    Цикл со счетчиком for, две его формы. Ограничения на переменную-счетчик. Цикл с предусловием while. Цикл с постусловием repeat. Области применения каждого вида цикла. Вложенные циклы одинаковых и разных видов. Прерывание и переход на следующую итерацию цикла: операторы break и continue. Выход из вложенных циклов с помощью оператора goto и процедуры exit.
  7. Понятие типа данных.
    Дихотомия типов данных и переменных. Простые и структурные типы. Статические и динамические типы. Совмещение переменных различного типа в оперативной памяти с помощью директивы absolute. Преобразования типов. Принципы описания характеристик типа данных: объем, байтовая последовательность расположения в оперативной памяти, битовая структура, диапазоны значения, точность (для вещественных типов данных), операции и функции для работы с типом данных. Функции pascal для получения информации о размере типа данных, границах типа, модификации байтовой структуры, перемещения и заполнения больших объемов данных в оперативной памяти.
  8. Порядковые типы.
    Встроенный порядковый тип: целочисленные, логические, символьные типы. Характеристики встроенных порядковых типов. Производные порядковые типы: перечислимый тип и тип поддиапазона.
  9. Вещественные типы.
    Использование математического сопроцессора для выполнения операций над вещественными типами. Характеристики вещественных типов данных.
  10. Тип данных массив.
    Одномерные и многомерные массивы. Типы индекса. Литералы массива. Обращение к элементу массива. Итерация по массиву. Заполнение и обработка массива циклами. Платформо-зависимые ограничения на объем массива. Характеристики массива как типа данных.
  11. Тип данных строка.
    Литералы строк. Обращение к отдельным символам строки. Строка статичного максимального объема, с хранением актуальной длины. Характеристики строки как типа данных.
  12. Понятие структуры (тип запись).
    Литералы записи. Обращение к полям структуры. Базовая и вариантная часть структуры. Разделение одной области памяти различными типами переменных с помощью вариантной части записи. Использование особенностей вариантной части для исследования типов данных. Характеристики записи как типа данных.
  13. Понятие указателя.
    Типы указателей, преобразование типов указателя. Получение адреса переменной. Выделение и освобождение памяти для указателей. Понятие «утечка памяти». Понятие "система сборки мусора". Последовательное перемещение по оперативной памяти с помощью указателей. Характеристики указателя как типа данных.
  14. Тип множество.
    Множество как математическая абстракция. Встроенный тип множества в pascal. Литералы множества. Доступ к элементам множества. Визуализация содержимого множества. Ограничения на диапазоны значений типа множества. Типичные задачи, решаемые использованием множеств. Характеристики множества как типа данных.
  15. Файловые типы.
    Файл, как последовательность данных во внешней памяти. Файлы последовательного и прямого доступа. Типы файлов в pascal: текстовые, типированные и нетипированные. Последовательность обработки файлов. Режимы открытия текстовых файлов, последовательные запись-чтение, механизмы определения конца файла. Файлы прямого доступа: режимы открытия, чтение-запись, перемещение по файлу, определение текущей позиции, размера файла. Обработка ошибок доступа к файлу. Характеристики файлов как типа данных.
  16. Функции и процедуры.
    Определение функции в pascal. Формальные параметры. Параметры-значения и параметры-переменные. Возврат результата из функции. Вызов функции, фактические параметры. Использование функций в выражениях. Процедуры: отличия от функций. Процедурные типы данных.
  17. Модули.
    Понятие модуля, модульного программирования. Компоновка программы из набора модулей. Модули в pascal. Подключение модулей. Структура модуля: интерфейсная секция, секция реализации, секция инициализации. Области видимости в модуле. Подключение модулей в модулях: прямые и косвенные ссылки. Решение проблемы циклических ссылок.
  18. Парадигмы ООП
    Объектно-ориентированный подход к проектированию и разработке программ: сущность объектно-ориентированного подхода. Основные понятия – класс и объект. Инкапсуляция - поля (свойства) и методы классов. Наследование и построение иерархии классов. Иерархии и системы объектов. Полиморфизм. Реализация полиморфизма в компилируемых и интерпретируемых языках. VMT и DMT
  19. Применение ООП в визуальном программировании.
    Среды визуального программирования. Составные элементы среды программирования Lazarus (Delphi). Структура программного проекта. Содержимое и назначение основных модулей Lazarus (Delphi). Разработка стандартных приложений в Lazarus (Delphi).
  20. Понятие класса.
    Структура класса. Организация иерархии классов. Поля и методы класса. Области видимости класса. Реализация свойств (property). Свойства – обработчики событий.
  21. Экземпляры класса (объекты).
    Конструкторы и деструкторы. Инициализация и уничтожение экземпляров классов. Механизмы доступа к классам и объектам, свойствам объектов во время выполнения программы. Приведение типов объектов, операции AS, IS.
  22. Реализация методов класса.
    Статические методы. Полиморфные (виртуальные, динамические и абстрактные) методы. Переопределение полиморфных и статических методов. Класс-методы.
  23. Обработка исключительных ситуаций.
    Возникновение ИСС. Поведение системы при возникновении ИСС. Полная и промежуточная обработка ИСС. Конструкции try except, try finally. Нестандартные методы использования try finally. Порождение ИСС. Создание собственных классов исключительных ситуаций.
  24. Объектно-ориентированный потоковый ввод-вывод.
    Понятие потокового ввода-вывода. Абстрактный базовый класс потока TStream. Потоки в файлах и в оперативной памяти. Разработка собственного класса потока.
  25. Объектно-ориентированные списки.
    Понятие списка. Универсальный список: класс TList. Специализированные списки: классs TStrings, TStringList
  26. Компоненты.
    Понятие компонента. Структура компонента. Визуальные и невизуальные компоненты. Иерархия компонентов Lazarus (Delphi). Состав и назначение основных компонентов Lazarus (Delphi).
Литература
  1. Слинкин Д.А. Основы программирования на Турбо-Паскале
  2. Слинкин Д.А., Горелов Н.Н. Разбор и реализация алгоритмов типовых задач курса «Языки и методы программирования (ТУРБО-ПАСКАЛЬ)»
  3. Е.Р. Алексеев, О.В. Чеснокова, Т.В. Кучер. Free Pascal и Lazarus: Учебник по программированию
  4. Delphi Russian Knowledge Base(rus, chm)