- •Понятие алгоритма: рекурсивные функции, системы текстовых замен.
- •Системы счисления, переводы чисел из одной позиционной системы в другую.
- •Передача параметров в подпрограмму, параметры входные и выходные, параметры, передаваемые по значению и по адресу.
- •Использование подпрограмм, параметры формальные, локальные, глобальные, обращения к подпрограммам, фактические параметры.
- •Статические и динамические переменные, динамическая память, работа с динамическими переменными.
- •Понятие линейного связного списка, типы списков, представление стека с помощью массива, пример использования стека.
- •Использование динамических переменных для представления и работы со стеком.
- •Очередь, реализация очереди массивом.
- •Очередь, представление и реализация основных операций с помощью динамических переменных.
- •Реализация основных операций со списком: добавление, удаление, поиск.
- •Деревья, основные операции над деревьями, представление дерева массивом.
- •Двусвязные линейные списки, построение и обход бинарного дерева.
- •Операции поиска и удаления в бинарном дереве.
- •Понятие графа, представление графа на эвм.
- •Представление графа списком инцидентности, алгоритм обхода графа в глубину.
- •Представление графа списком списков, алгоритм обхода графа в ширину.
- •Технологии программирования, концепции, заложенные в ооп.
- •Основные понятия ооп: абстракция, инкапсуляция, полиморфизм.
- •Понятие объекта, его состояние и поведение, классы, определение класса и объявление класса.
- •Статические, дружественные и виртуальные поля и методы, особенности их использования.
- •Абстрактные классы, их назначение и использование.
- •Понятие области видимости: общие, личные, защищённые и опубликованные поля и методы объекта.
- •Указатель this и перегрузка методов.
- •Использование классов, различные способы инициализации.
- •Использование классов, работа с массивами и указателями на обьекты.
- •Наследование, пример использования наследования.
- •Конструкторы и деструкторы, их назначение и использование.
- •Архитектура пк, основные функциональные устройства и их назначение.
- •Мп с точки зрения программиста, регистры общего назначения.
- •Оперативная память, понятие исполняемого и физического адреса, сегментные регистры.
- •Регистр флажков, его назначение и использование.
- •Форматы данных и форматы команд, машинный формат двухадресной машины.
- •Адресация операндов, способы адресации, примеры команд с различными способами адресации.
- •Понятие команды и директивы в Ассемблере, формат команды и директивы.
- •Структура программы на Ассемблере с использованием стандартных директив сегментации.
- •Основные элементы языка Ассемблер: имена, константы, переменные, выражения.
- •Директивы определения данных и памяти, примеры.
- •Команда прерывания, команды работы со стеком.
- •Упрощённые директивы сегментирования, структура программы с использованием точечных директив, пример программы.
- •Этапы выполнения Ассемблерной программы на эвм, понятие com-файла.
- •Различие между exe - и com – файлами, требования, предъявляемые к исходному модулю, предназначенному для создания com – файла, примеры программ.
- •Понятие структурного программирования, этап проектирования – композиция и декомпозиция, понятие статической и динамической структуры программы, спецификация программы.
- •Понятие частичной и полной корректности программы, правила вывода – общий вид, правила консеквенции.
- •Правила вывода для операторов: пустого, присваивания, составного.
- •Правила вывода для операторов ветвления.
- •Правила вывода циклов с предусловием и посусловием.
Понятие структурного программирования, этап проектирования – композиция и декомпозиция, понятие статической и динамической структуры программы, спецификация программы.
Говорят, что существует статическая и динамическая структуры программы.
Статическая структура – текст программы и ее структурная схема. Не зависит от исходных данных.
Динамическая структура определяет вычислительный процесс - состояние вычисления программы. Поэтому она(структура) зависит от исходных данных, т.к. от них зависят переходы в программе. Текущее состояние вычислений определяется значением всех входящих величин и зависит от предыдущих состояний вычислений.
Каждый оператор в программе или изменяет состояние вычисления или анализирует его, определяя тем самым переходы.
Каждый язык программирования включает в себя наборы простых операторов и способы их объединения, композиции в составные(структурные операторы).
Основным свойством композиции или структурного программирования заключается в возможности объединения произвольного кол-ва любых структур в одну – с одним входом и выходом.
Графическое представление:
S – оператор или программа
P – условия для вход.данных
Q – условия для вых.данных
Возможна также запись нотацией: {P}S{Q} – эта запись называется спецификацией.
Проектирование программы должно начинаться с определения спецификации, которую нужно будет доказать. При этом P-предусловие, Q-постусловие.
Проектирование сверху-вниз начинается с определения спецификации {Pi}Si{Qi} для каждой операции, с доказательством правильности каждой подзадачи и док-вом того, что композиция всех подзадач приведет к выполнению спецификации {P}S{Q}.
Понятие частичной и полной корректности программы, правила вывода – общий вид, правила консеквенции.
Правило вывода – рассуждение, которое говорит о том, что если соотношения, записанные над чертой верны, то справедливы и соотношения, записанные под чертой.
H1, H2, … , Hn
H
Рассмотрим правило вывода для простых операторов и как они получаются для составных с использованием композиций простых.
2 правила консеквенции:
P->R, {R}S{Q}
{P}S{Q}
Если из соотношения P следует соотношение R (предусловие) и постусловием является Q, то Q можно получить и из соотношения P. ( S – оператор).
{P}S{Q}, Q->R
{P}S{R}
Если из P получаем Q, а из Q следует R, то из P, после выполнения S, будет верно R.
Критерий корректности – соотношение является постусловием, если верно предусловие.
Частичная корректность программы – если после выполнения программы получаем результат и полная – если доказываем, что программа выполнима для любых допустимых значений.
Правила вывода для операторов: пустого, присваивания, составного.
Пустой оператор. Не выполняет никаких действий, не изменяет состояние вычисления => любое его предусловие будет его постусловием: {P}{P}.
Оператор присваивания: {Pxl}x = l{P}
| x-y >= 0
\/
x = x-y
| x >= 0
\/
Составной оператор.
{Pi-1}Si{Pi} для i = 1, 2, .. , n
{P0} {S1, S2, .. , Sn} {Pn}
Для двух операторов:
{P}S1{R}, {R}S2{Q}
{P}S1, S2{Q}