- •1. Понятие алгоритма: рекурсивные функции, системы текстовых замен.
- •2.Системы счисления, переводы чисел из одной позиционной системы в другую.
- •3/4.Понятие подпрограммы, функции, возвращающей/не возвращающей значение в
- •5.Передача параметров в подпрограмму,параметры входные и выходные,параметры,передаваемые по значению и по адресу.
- •6.Использование подпрограмм, параметры формальные, локальные, глобальные, обращения к подпрограммам, фактические параметры.
- •8.Статические и динамические переменные,динамическая память,работа с динамическими переменными.
- •9.Понятие линейного связного списка, типы списков, представление стека с помощью массива, пример использования стека.
- •10.Использование динамич. Переменных для представл. И работы со стеком.
- •11.Очередь,реализация очереди массивом.
- •12.Очередь, представление и реализация основных операций с помощью динамических переменных.
- •13.Реализация основных операций со списком:добавление, удаление, поиск.
- •14.Деревья,основные операции над деревьями, представление дерева массивом.
- •15.Двусвязные линейные списки, построение и обход бинарного дерева.
- •16.Операции поиска и удаления в бинарном дереве.
- •17.Понятие графа, представление графа в эвм.
- •18.Представление графа списком инцидентности,алгоритм обхода графа в глубину.
- •19.Представление графа списком списков,алгоритм обхода графа в ширину.
- •20.Технологии программирования,концепции,заложенные в ооп.
- •21.Основные понятия ооп:абстракция, инкапсуляция,полиморфизм.
- •22.Понятие объекта,его состояние и поведение,классы,определение класса и объявление класса.
- •23.Статистические,дружественные и виртуальные поля и методы,особенности их использования.
- •24.Абстрактные классы,их назначение и использование.
- •25.Понятие области видимости:общие,личные,защищенные и опубликованные поля и методы объекта.
- •26.Указатель This и перегрузка методов.
- •27.Использование классов,различные способы инициализации.
- •28.Использование классов,работа с массивами и указателями на объекты.
- •29.Наследование,пример использования наследования.
- •30.Конструкторы и деструкторы, их значение и использование.
- •31.Архитектура пк, основные функциональные устройства и их значения.
- •32.Мп с точки зрения программиста,регистры общего назначения.
- •33.Оперативная память,понятие исполняемого и физического адреса,сегментные регистры.
- •34.Регистр флажков, его назначение и использование.
- •35.Форматы данных и форматы команд.
- •36.Адресация операндов,способы адресации,примеры команд с различными способами адресации.
- •37.Структура программы на Ассемблере.Стандартные директивы сегментации.
- •38.Формат команды и директивы на Ассемблере.Примеры команд и директив.
- •39.Алфавит,слова,константы,переменные и выражения в Ассемблере.
- •40.Директивы определения данных и памяти.
- •41.Команды прерывания, команды работы со стеком.
8.Статические и динамические переменные,динамическая память,работа с динамическими переменными.
Переменная — именованная область памяти, в которой хранятся данные определенного типа, есть имя и значение; значение переменной можно изменять в ходе выполнения программы,перед использованием переменная должна быть описана.
Статистическая — память, выделенная на основании описания, переменные в ней — Статистические.
Динамическая — память выделенная в процессе выполнения программы, переменные в ней — Динамические.
Каждая статистическая переменная описанная в некотором блоке и обращение к ней осуществляется с помощью ее имени – идентификатора. Обратиться к динамическим переменным можно с помощью указателя на место текущего расположения.
int x=15// статистич. переменная х, в статистич. памяти 4 байта и записано число 15.
int *x х=new(int)//в динамической памяти место для хранения величины целого типа и адрес этой области памяти присвоен указателю х. х – имя указателя и его значение – адрес байта динамической памяти, начиная с которого размещается динамическая переменная *х.
Создание:1)описание указателя <тип>*<идентификатор>(int*x) и обратится к new.
2)int*x=new(int) или int*x=new int; x=NULL – указатель не ссылается.
После использования динамической переменной ее нужно удалить: delete<имя указателя>
Примеры: 1) int*x=new(int)*y //описаны 2 указат. и создана динамич. переменная Х.
2) *x=10; y=x //указат. У присваиваем знач. указат. Х, т.е имеем 2 указ.
3)*y=7 //изменили содержимое динамической памяти
4)y=NULL //присвоили пустую ссылку
5)cout<<*x //выведено число 7
Пример: int main() { int *x=new(int), y=new(int); int r; *x=10; *y=20; cout<<*x<<”\t”<<*y<<endl; r=*x; *x=*y; *y=r; cout<<*x<<”\t”<<*y<<endl;
delete x; delete y; return 0;}
Динамическая структура: struct stud { string fio; int kurs; stud*next;};
9.Понятие линейного связного списка, типы списков, представление стека с помощью массива, пример использования стека.
Линейный список — множество, состоящее из n>=0 компонент, структурные свойства которого ограничиваются линейным, одномерным относительным положением компонент: x[1]...x[n]. Если n>0 то x[1]- 1я компонента, x[n]- последняя.
Операции над списками:
1)получить допуск к К-ой компоненте списка
2)включить новую компоненту в список перед К-ой компонентой
3)исключить из списка К-ую компоненту
4)объединить 2 и более списка в один
5)разбить линейный список на 3 и более
6)сделать копию линейного списка
7)определить количество компонент в списке
8)отсортировать компоненты списка по значению некоторых полей
9)найти в списке компоненту с заданным значением некоторого поля
Линейный связанный список — конечное множество компонент, состоящих из 2х частей: информационной (info) и указательной (link).
Однонаправленный список — если link содержит 1 адрес, указывает какая компонента следует за данной.
Двунаправленный список — если 2 адреса.
Линейные последовательности можно представить с помощью массива, т.к. индекс — прямой доступ к любой компоненте.
Стек — линейный список, в котором все включения и исключения и всякий доступ к данным осуществляется с одной стороны.
Описание стека: const int stacksize=100; int stack[stacksize], x, sp;
sp — специальная переменная что бы обратиться к вершине если стек не пуст, то указатель стека sp указывает на 1й элемент массива.
sp=0 – инициализирует стек, делает его пустым.
1) stack [sp]=x; //положить х на вершину стека
sp=sp+1; //указатель стека переместить на следующую компоненту.
2) sp=sp-1; // указатель уменьшаем на 1;
x=stack[sp]; //присваиваем значение последнего элемента в списке.
Другая реализация:
°Положить в стек if (sp=stacksize) cout<<”стек полон”; else {stack[sp]=x; sp=sp+1;};
°Взять из стека if (sp<1) cout<<”стек пуст”; else {sp =sp-1; x=stack[sp];}
°Если sp указывает на первый занятый элемент в стеке, на его вершину, то:
sp=sp+1; stack[sp]=x;/*положить в стек*/ x=stack[sp]; sp=sp-1; //взять из стека
Примеры использования:
-инфиксная х+y*z-a/(b+c)
-префиксная -+*xyz/+abс
-постфиксная xyz*+abc+/- (ОбратнаяПольскаяЗапись)