
- •Язык программирования. Общие принципы построения и использования языков программирования.
- •Стандарты языков программирования.
- •Лямбда-исчисление. Аппликация, абстракция, редукция, преобразование.
- •Списки и функциональные выражения в функциональных языках программирования.
- •Механизмы и средства взаимодействия программы с операционной системой.
- •Функциональное программирование. Основные положения. Основные отличия от других типов языков программирования.
- •Классификация языков программирования. Близость языков программирования к естественному языку.
- •Унификация и хорновский клоз в логических языках программирования.
- •Модель вычислений функциональных языков программирования.
- •Языки программирования низкого уровня.
- •Средства разработки графического интерфейса пользователя. Эргономические свойства человеко-машинного интерфейса.
- •Процедурные языки программирования. Основные отличия от других типов языков.
- •Обоснование выбора языка программирования.
- •Перегрузка в языках программирования.
- •Логические языки программирования. Основные положения и понятия. Основные отличия от других типов языков программирования.
- •Объектно-ориентированные языки программирования (ооп). Основные отличия от других концепций языков программирования.
- •Полиморфизм в ооп. Виртуальные функции. Таблицы виртуальных функций.
- •Структура языка программирования. Синтаксис и семантика языка программирования. Расширенная форма Бэкуса-Наура.
- •Наследование в ооп. Множественное наследование. Проблемы множественного наследования.
- •Инкапсуляция в ооп. Контроль доступа.
- •Понятие класса и объекта в ооп. Атрибуты, методы, конструктор и деструктор, статические члены класса.
- •Диаграммы классов uml. Основные элементы и обозначения.
- •Данные. Средства описания данных. Типизация языка.
- •Преобразования типов. Контроль соответствия типов данных.
- •Ооп. Основные концепции ооп.
- •Современные интегрированные схемы разработки программ. Основные компоненты среды программирования.
- •Декомпозиция программ.
- •Трансляторы. Интерпретация и компиляция.
- •Макропроцессоры и макрогенераторы.
- •Потоки и процессы. Сходства и различия.
- •Мониторы и защищаемые переменные в параллельном программировании.
- •Семафоры в параллельном программировании. Типы семафоров.
- •Отладчики. Генераторы кода и приложений.
- •Параллельная обработка данных и параллелизм. Параллельное и распределенное программирование.
- •Основные проблемы параллельного и распределенного программирования.
- •Оценка максимально возможного параллелизма.
- •Основные модели параллельного программирования.
- •Оптимизатор. Основные функции оптимизатора.
- •Обработка исключительных ситуаций. Иерархия и виды исключительных ситуаций.
- •Операторы обработки исключительных ситуаций в различных языках программирования.
- •Элементарные типы данных.
- •Перегрузка данных, операторов, методов.
- •Составные типы данных.
- •Механизмы логического вывода. Прямая и обратная цепочки рассуждений.
- •Пространство имен, область видимости, время жизни переменных.
- •Ошибки при работе с вещественными числами. Смешанная арифметика.
- •Операторы выбора и условные операторы.
- •Вещественные числа. Способы представления. Операции над вещественными числами.
- •Оператор присваивания. Операторы цикла.
- •Распределение памяти при выполнении программы.
- •Динамические структуры данных. Реализация динамических структур данных с помощью указателей.
- •Библиотеки программ и классов. Статические и динамические библиотеки. Критерии проектирования библиотек.
- •Подпрограммы. Формальные и фактические параметры подпрограмм.
- •Передача параметров подпрограмме.
- •Программный стек и его изменение.
- •Рекурсивный и итерационный методы решения задач. Виды рекурсий.
- •Общая характеристика языков ассемблера: назначение, принципы построения и использования; структура языка.
- •Сериализация и десериализация. Методы сериализации объектов в базу данных.
-
Инкапсуляция в ооп. Контроль доступа.
Инкапсуляция — это свойство системы, позволяющее объединить данные и методы, работающие с ними в классе, и скрыть детали реализации от пользователя.
В языках программирования инкапсуля́ция имеет одно из следующих значений, либо их комбинацию:
-
языковой механизм ограничения доступа к определённым компонентам объекта;
-
языковая конструкция, способствующая объединению данных с методами (или другими функциями), обрабатывающими эти данные.
ИНКАПСУЛЯЦИЯ — процесс отделения друг от друга эл-ов объекта, определяющего устройство и поведения. Она выполняет посредством скрытия информации. Абстракция и инкапсуляция дополняют друг друга. Абстракция направлена на наблюдаемое поведение объекта, инкапсуляция занимается его внутренним устройством.
=> наличие в классе двух частей:
1. интерфейс.
2. реализация.
-
Понятие класса и объекта в ооп. Атрибуты, методы, конструктор и деструктор, статические члены класса.
Класс- абстрактный тип данных, снабженный некоторыми возможностями реализации. Одновременно является и модулем и типом. Характеризуется атрибутами и методами. Отношения между классами: 1.Ассоциация- 2. Агрегация 3. Композиция //не до конца
-
Диаграммы классов uml. Основные элементы и обозначения.
Диаграмма классов (Static Structure diagram) — статическая структурная диаграмма, описывающая структуру системы, демонстрирующая классы системы, их атрибуты, методы и зависимости между классами.
Существуют разные точки зрения на построение диаграмм классов в зависимости от целей их применения:
-
концептуальная точка зрения — диаграмма классов описывает модель предметной области, в ней присутствуют только классы прикладных объектов;
-
точка зрения спецификации — диаграмма классов применяется при проектировании информационных систем;
-
точка зрения реализации — диаграмма классов содержит классы, используемые непосредственно в программном коде (при использовании объектно-ориентированных языков программирования).
-
Данные. Средства описания данных. Типизация языка.
Данные – сущности, над которыми выполняют вычисления программы и которые получаются в результате этих вычислений.
Данные: встроенные и собственные (пользовательские).
Типы данных – множество значений и операций над этими значениями.
Нетипизированные языка – языки, в которых в любые переменные можно записывать любые значения в любом месте программы.
Для хранения данных используются ячейки памяти. 1 ячейка = 8 бит. Для процессора минимальный объем ячейки – машинное слово. Оно зависит от разрядности процессора.
Простые типы данных:
Целочисленные типы данных. Integer. Числа со знаком представляются в виде дополнительного кода (инверсия битов и добавление 1)
Символьный тип – аналог целочисленного типа. 256 символов. Для того, чтобы сопоставить числам символы, нужно использовать таблицу кодировки.
Перечисление – тип данных. Операция выполняется в контексте порядкового номера, соответствующего обозначению в таблице. Многие яп требуют явной типизации значений типа перечислений при таких операциях.
Булевый тип – частный случай перечислений. 0 – «false», остальное трактуется как «true».
Подтипы – типы, значение которых ограничено некоторым диапазоном.
Вещественные числа. Существует 2 подхода кодировки: согласно 2ой арифметике и кодировка целого числа + дополнительная информация о позиции десятичного разряда.
1. Числа с фиксированной точкой. Число содержит не более заданного количества цифр N
и не более некоторого количества знаков M после запятой.
2. Числа с плавающей точкой. X * 10m, где x – мантисса, m – порядок экспоненты.
Составные типы данных:
Массив. Это тип данных, содержащий множество значений одного типа. Отдельные ячейки – элементы, порядковый номер – индекс. В памяти хранится последовательно. Основная операция – получение элемента по индексу. Основная ошибка – выход индекса за диапазон массива. Бывают одномерные и многомерные. Организация: реально двумерный массив (Паскаль) или массив массивов.
Записи. Набор данных, содержащих элементы разных типов. Элементы – поля. Доступ к полям производится путем сдвига адреса.
Строковый тип данных. Массив из целочисленных элементов. Для того, чтобы зафиксировать длину строки используют различные подходы:
1. Строка с признаком конца строки (транслятор автоматически подставляет «0»).
2. Строка со счетчиком (длина хранится в нулевом байте самой строки, массив имеет фиксированный размер).
3. Строка является указателем на строку символов в памяти.