- •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.Команды прерывания, команды работы со стеком.
27.Использование классов,различные способы инициализации.
Принципы различный способов реализации:
typedef unsigned int, tint; class Tmoney {public: // чтобы можно было использовать cout<<t.summa; double summa; double round (const double &r) {double t = fabs(r);
t = (t – floor(t) < 0.5)? floor(t): cell(t); return (r<0)? -t: t;}; void init (const doudle &t) // метод инициализации: Void Tmoney::Init (const double &t) {summa = round (t*100);}
int main {char c1; Tmoney t, p, s, z; t.Init (100.55); p.Init (1000.66); // инициализация методом (t.summa = 100.55;)
Tmoney x = t; // инициализация другой переменной (x.summa = t.summa); cout<<s.summa<<”/t”<<p.summa<<”/t”; s.Init (0.0); z.Init (0.0); // обнуление s.summa = 0.0 и z.summa = 0.0; cout<<x.summa<<”t”<<s.summa<<”t”<z.summa<<”t”; c1 = cin.get(); return 0;}. Пример 2: int main() {Tmoney t, p, s, z; t.Init (100.55); p.Init (100.66); Tmoney x = t;
z = t.AddMoney(p); // z.summa = t.summa + p.summa; z.DisplayMoney(); s.Init (0.0); z.Init (0.0); // обнуление s.summa и z.summa; s = t.AddMoney(p); s.DisplayMoney(); t.AddMoney(p).DisplayMoney(); // суммирование и вывод s.summa + p.summa;
s = t.DivByNum(2); s.DisplayMoney(); z = p.MultByNum(3.15); z.DisplayMoney(); s.ReadMoney(); s.DisplayMoney(); double d = p.DivMoney(s); cout<<d<<endl; return 0;} Рассмотрим еще вариант метода инициализации: Tmoney Tmoney::Init (const double &t) {summa = round (t*100); return *this;} Кроме этих методов инициализации можно записать: Tmoney t= z.Init (200.00); // инициализация 2-х объектов: z и t; Это значит, что остается правильной конструкция t.Init (200.00) Операторы t.AddMoney(p).DisplayMoney() работает так: вычисляется сумма полей объектов p и t (создается временный объект) и сразу выводятся на экран.
28.Использование классов,работа с массивами и указателями на объекты.
С массивами объектов можно работать также,как и с массивами других объектов:
Пример. Int main() {Tmoney a[5],sa;//объявление массива a и переменной sa;
for (int i=0;i<5;i++) // инициализация элементов массива; a[i].Init(i);
for (int i=0;i<5;i++) a[i].DisplayMoney(); // вывод элементов массива;
sa.Init(0.0); // обнуление sa.summa = 0; for (int i=0;i<5;i++) sa = sa.AddMoney(a[i]); // суммирование элементов массива; sa.DisplayMoney(); // вывод вывод полученной суммы на экран; sa.Init(0.0); for (int i=0;i<5;i++) sa = a[i].AddMoney(sa); sa.DisplayMoney(); // 2-ой вариант; return 0;}
Работа с указателями на объекты. int main() {Tmoney *pt = new Tmoney(), *pp, *ps; // объявление указателей; pp = new Tmoney(); ps = new Tmoney(); // создание объектов; pt → Init(1000.24); pt → DisplayMoney(); // инициализация и вывод; pp → Init(2000.25); pp → DisplayMoney(); ps → Init(0.0); ps → DisplayMoney(); ps = (*pt).AddMoney(*pp); // сложение; ps → DisplayMoney(); ps → ReadMoney(); ps → DisplayMoney(); // ввод и вывод; delete ps; delete pt; delete pp; return 0;}
Для работы с указателями используется операция доступа ( → ) и операция разыменования ( * ). Простые скобки после имени конструктора можно не писать, но при наличии ( ) созданный объект инициализируется нулями, а при их отсутствии значения полей данных не определены.