- •Понятие алгоритма: рекурсивные функции, системы текстовых замен.
- •Системы счисления, переводы чисел из одной позиционной системы в другую.
- •Передача параметров в подпрограмму, параметры входные и выходные, параметры, передаваемые по значению и по адресу.
- •Использование подпрограмм, параметры формальные, локальные, глобальные, обращения к подпрограммам, фактические параметры.
- •Статические и динамические переменные, динамическая память, работа с динамическими переменными.
- •Понятие линейного связного списка, типы списков, представление стека с помощью массива, пример использования стека.
- •Использование динамических переменных для представления и работы со стеком.
- •Очередь, реализация очереди массивом.
- •Очередь, представление и реализация основных операций с помощью динамических переменных.
- •Реализация основных операций со списком: добавление, удаление, поиск.
- •Деревья, основные операции над деревьями, представление дерева массивом.
- •Двусвязные линейные списки, построение и обход бинарного дерева.
- •Операции поиска и удаления в бинарном дереве.
- •Понятие графа, представление графа на эвм.
- •Представление графа списком инцидентности, алгоритм обхода графа в глубину.
- •Представление графа списком списков, алгоритм обхода графа в ширину.
- •Технологии программирования, концепции, заложенные в ооп.
- •Основные понятия ооп: абстракция, инкапсуляция, полиморфизм.
- •Понятие объекта, его состояние и поведение, классы, определение класса и объявление класса.
- •Статические, дружественные и виртуальные поля и методы, особенности их использования.
- •Абстрактные классы, их назначение и использование.
- •Понятие области видимости: общие, личные, защищённые и опубликованные поля и методы объекта.
- •Указатель this и перегрузка методов.
- •Использование классов, различные способы инициализации.
- •Использование классов, работа с массивами и указателями на обьекты.
- •Наследование, пример использования наследования.
- •Конструкторы и деструкторы, их назначение и использование.
- •Архитектура пк, основные функциональные устройства и их назначение.
- •Мп с точки зрения программиста, регистры общего назначения.
- •Оперативная память, понятие исполняемого и физического адреса, сегментные регистры.
- •Регистр флажков, его назначение и использование.
- •Форматы данных и форматы команд, машинный формат двухадресной машины.
- •Адресация операндов, способы адресации, примеры команд с различными способами адресации.
- •Понятие команды и директивы в Ассемблере, формат команды и директивы.
- •Структура программы на Ассемблере с использованием стандартных директив сегментации.
- •Основные элементы языка Ассемблер: имена, константы, переменные, выражения.
- •Директивы определения данных и памяти, примеры.
- •Команда прерывания, команды работы со стеком.
- •Упрощённые директивы сегментирования, структура программы с использованием точечных директив, пример программы.
- •Этапы выполнения Ассемблерной программы на эвм, понятие com-файла.
- •Различие между exe - и com – файлами, требования, предъявляемые к исходному модулю, предназначенному для создания com – файла, примеры программ.
- •Понятие структурного программирования, этап проектирования – композиция и декомпозиция, понятие статической и динамической структуры программы, спецификация программы.
- •Понятие частичной и полной корректности программы, правила вывода – общий вид, правила консеквенции.
- •Правила вывода для операторов: пустого, присваивания, составного.
- •Правила вывода для операторов ветвления.
- •Правила вывода циклов с предусловием и посусловием.
Понятие объекта, его состояние и поведение, классы, определение класса и объявление класса.
Основная идея ООП- объединение(инкапсуляция) данных и методов их обработки в единое целое – объект, который может использоваться как самостоятельная программная единица, или как часть другого объекта, или является базой для создания новых объектов.
В объекте устанавливается связь между данными и действиями над ними, эта часть в ООП имеет большое смысловое значение, определяемое классом решаемых задач. Объект – это экземпляр класса, то есть переменная определяемого пользователем типа.
Определение класса в С++ выглядит так же как и определение структуры, только вместо struct пишется class: class <имя_класса>{/*поля данные*/ /*методы*/ };
Поля могут иметь любой тип, кроме типа того же класса, но могут быть указателями и ссылками на этот класс. Поля могут быть описаны с модификатором const, но инициализируются они один раз и не должны изменяться. Имея описание, можно символическое <имя_класса> использовать для описания переменных. Такая переменная называется объектом, или экземпляром данного класса. Используя идентификатор типа <имя_класса>, как любой другой, созданный пользователем или стандартный, можно создавать произвольное количество простых переменных (объектов, экземпляров этого класса), массивов объектов данного класса, или указателей на объекты данного класса.
Примеры описание классов и объектов:
Class TMoney {/*…*/};
TMoney t – простая переменная, объект класса Tmoney.
TMoney *p – указатель на объект класса TMoney.
TMoney m[50] – массив объектов класса TMoney.
Эти переменные, так же как переменные встроенных типов, подчиняются правилам видимости, и время жизни зависит от места объявления.
Их можно использовать в качестве полей структур и других классов, передавать в качестве параметров, они могут быть входными параметрами функций.
Объявлять переменные можно и с использованием ключевого слова class:
Class TMoney t;
Class TMoney *p;
Class Tmoney m[50], но чаще экземпляры класса описывают без использования ключевого слова class.
Так же, как и при описании других типов, можно одновременно при описании идентификатора типа описать и величины этого типа:
Class Tclass1{*/поля и методы*/} p1,p2; Переменные p1 и p2 это просты переменные типа Tclass 1. Однако более предпочитаемым считается описание: Tclass1 p3,p4,*p,m[50]; Заголовок описания класса заканчивается точкой с запятой.
Class <имя класса>; называют объявлением класса.
Класс с идентификатором типа <имя класса> еще не определен, и переменные такого класса не могут быть использованы, но могут быть использованы ссылки на этот класс. Это используется если первый класс зависит от второго, а описание второго недоступно.
Определение класса и структуры отличаются не только внешне, первым заголовочным словом, но и тем что всё что описано внутри класса недоступно извне класса по умолчанию. Например, имея класс person1 и структуру person2 :
Class person1 { struct person2{
String fio; string fio;
Double summa;} double summa;}
-можно определить переменную Ivanov структурного типа person2, но нельзя объявить объект Petrov класса person1:
Person2 Ivanov = {“Иванов И.И.” , 10000.00} можно
Person1 Petrov = {“Петров П.П.” , 10000.00} нельзя
Кроме того, вне определения объекта нельзя обратиться к полям Petrov.fio и Petrov.summa.
В этом заключается свойство классов – инкапсуляция, сокрытие информации от внешнего мира.