|
Програма на базов курс по C и C++
|
| |
|
- РАЗДЕЛ І -
|
Обзор на езика C и мястото му сред останалите алгоритмични езици за програмиране. |
| |
|
- РАЗДЕЛ ІI -
|
Етапи в разработването на приложни програми
- Компилатор
- Свързващ редактор
- Видове файлове и тяхното предназначение(заглавни файлове, дефиниционни файлове, обектни файлове, изпълними файлове)
|
| |
|
- РАЗДЕЛ ІII-
|
Синтаксис на езика C
- Азбука на езика C
- Лексика на езика C
- ключови думи. Разширения на езика C (Microsoft extensions).
- константи. Дефиниране на константи. Разширения.
- идентификатори
- оператори
- Езикови конструкции и правила за образуването им
Класификация на типовете данни
- Константи
- Променливи
- унгарска нотация
- деклариране и дефиниране на променливи
- примитивни типове данни и тяхното вътрешно представяне
- модификатори – signed, unsigned, short, long
- Изброим тип данни
- Инициализиране на променливи
Операции. Приоритет на операциите.
- Аритметични операции
- Логически операции
- Операции за отношение и еквивалентност
- Поразредни операции
- Условен оператор
- Операция присвояване. Съкратени форми на операторите за присвояване
- Оператор запетая (comma) и особености при неговата употреба
- Други оператори:
- преобразуване на типа
- оператори за достъп до член променливи на структури и обединения
- оператор за индексиране.
- Приоритет на операциите
Изрази. Изчисляване на изрази.
- Правила за изчисляването на изрази. Промяна на реда на изчисляване на изрази.
- Преобразуване на типове. Странични ефекти:
- Загуба на точност
- Знаково и беззнаково разширяване на типа
- Смесване на типове
- Явно и неявно преобразуване на типа
- Начини за изчисляване на изрази
- Стриктно ( Pascal )
- Непълно ( C/C++ )
Управляващи конструкции.
- Блок. Дефиниране на блок.
- Оператор за разклонение if…else. Използване на вложени оператори за разклонение. Правилото на най-близкия if.
- Оператор за множествено разклонение switch…case. Блокова схема.
- Цикъл. Видове цикли. Итерация.
- Цикъл с предварително известен брой на итерациите for. Блокова схема.
- Цикъл с предусловие while. Блокова схема.
- Цикъл с постусловие do…while. Блокова схема.
- Вложени цикли.
- Оператори break и continue. Предназначение.
Структуриране на данните
- Структури. Деклариране и дефиниране на структури. Полета на структури.
- подравняване на полетата на структурите в паметта
- поразредни полета
- Обединения
- Структури като полета на структури
- Оператор typedef и неговото предназначение
- Масив
- Дефиниране. Масиви от примитивни типове данни. Инициализиране.
- Достъп до елементите на масив.
- Символни низове като масив. Инициализиране.
- Масиви от структури. Работа с масиви от структури.
- Двумерни и многомерни масиви. Представяне в паметта. Инициализация.
Указатели
- Дефиниране на указатели. Предназначение. Достъп до данни с помощта на указатели.
- Константни указатели.
- Безтипови указатели. Предназначение и употреба.
- Масиви и указатели.
- Име на масив като указател
- Еквивалентност при достъп до елементите на масив. Особености.
- Указател към структура.
- Указател към указател. Предназначение.
- Масив от указатели.
Подпрограми.
- Подпрограмите като "черни кутии"
- Реализация на подпрограмите в C
- Функции. Деклариране и дефиниране на функции. Прототип на функция.
- Тип на връщания резултат.
- Предаване на параметри
- Формални и фактически параметри.
- Съпоставяне на формалните и фактическите параметри.
- Програмен фрейм
- Анализ на структурата и съдържанието.
- Изграждане на програмен фрейм.
- Управление на програмния фрейм.
- Ред на предаване на параметрите
- Функции с фиксиран брой параметри. Функции с неопределен брой параметри и начини на използване. Ограничения и особености.
- Механизми за предаване на параметри
- Предаване по стойност.
- Предаване на указатели.
- Илюстриране на различните механизми за предаване на параметри.
- Оператор return
- Струкурирани данни като параметри на функции.
- Структури като параметри на функции. Особености.
- Масиви като параметри на функции. Особености.
Обсег на име, видимост и време на живот.
- Определение.
- класове памет - auto, register, static, extern
- Обсег на име, видимост и време на живот на локолани променливи и формални параметри на функции.
- Обсег на име, видимост и време на живот на статични променливи.
- Обсег на име, видимост и време на живот на глобални променливи.
- Управление на видимостта на имената на функции с помощта на ключовите думи static и extern
Изграждане на програма на езика C.
- функция main() и нейното предназначение.
- Тип на връщания резултат и неговото предназначние.
- Параметри на функция main()
- Разделяне на декларации и дефиниции. Структуриране на програмата в заглавни и дефиниционни файлове.
|
| |
|
- РАЗДЕЛ ІV-
|
Препроцесор.
- Директиви на препроцесора.
- Включване на заглавни файлове #include.
- Макроопределения и макроразширения #define
- Директиви за условна компилация #if, #else.
- Макроопределения с аргументи.
- Особености
- Старничен ефект
- Етапи на компилиране
- Inline функции като алтернатива на макроопределенията
|
| |
|
- РАЗДЕЛ V-
|
Стандартен вход/изход. Функции за работа със стандартните входно-изходни устройства.
-
Функция printf() за работа със стандартното изходно устройство.
- Параметри на функция printf().
- Форматна спецификация. Елементи на форматната спецификация.
-
Функция scanf() за работа със стандартното входно устройство.
- Параметри на функция scanf().
- Форматна спецификация. Елементи на форматната спецификация.
- Функции getchar() и getch().
Функции за работа с динамичната памет.
- Динамична памет
- Функции за разпределяне на памет malloc() и calloc().
- Освобождаване на динамично пазпределена памет с помоща на функция free().
- Функция memcpy().
Динамични структури от данни.
- Дефиниране на понятието списък.
- Видове списъци:
- Списък тип LIFO
- Списък тип FIFO
- Циклични списъци
- Основни операции при работа със списъци:
- Вмъкване на нов елемент
- Изтриване на елемент
Работа със символни низове. Особености.
- Определяне дължината на символен низ, с помощта на функция strlen().
- sprintf().
- Конкатениране на символни низове, с помощта на strcat().
- Търсене в символни низове.
- Търсене на символ в символен низ.
- Търсене на последно проявление на символ в символен низ.
- Тъсене на подниз.
- Сравняване на символни низове - strcmp().
- Копиране на символни низове - strcpy(). Особености.
- Реверсиране на символни низове - strrev().
Работа с файлове.
- Работа с файлове на ниско ниво.
- Файлови манипулатори. Предназначение и употреба. Файлов указател.
- Отваряне на файл - open(). Режими на отваряне и права за достъп. Двоични и текстови файлове.
- Четене на файл - read().
- Запис във файл - write().
- Проверка за край на файл - eof().
- Пренасочване на файловия указател - lseek().
- Затваряне на файл - close().
- Работа с файлове от високо ниво.
- Структура FILE и нейното предназначение.
- Отваряне на файл - fopen(). Режими на отваряне. Двоични и текстови файлове.
- Четене на форматирани данни от файл - fscanf().
- Запис на форматирани данни във файл - fprintf().
- Проверка за край на файл - feof().
- Блоково четене на неформатирани данни от файл - fread().
- Запис на неформатирани данни във файл - fwrite().
- Принудително съхранение на данните от файловия буфер - fflush().
- Пренасочване на файловия указател - fseek().
- Извличане на текущата позиция на файловия указател - ftell().
- Затваряне на файл - fclose().
|
| |
|
- РАЗДЕЛ VI-
|
Сложни езикови конструкции.
- Указател към функция
- Указател към функция като параметър
- Указател към структура. Преобразуване на указател към структура.
Обектно-ориентирано проектиране Уирт.
- Алгоритми + структури от данни = програми.
- Абстрахиране при представяне на структурите.
- Машинно-ориентирани представи.
- Представи, ориентирани към света.
- Абстрахиране на алгоритмични структури.
- Абстрахиране на структури от данни.
- Поколения езици.
- Реализация на C.
- Капсулиране. Обекти и класове.
- Капсулиране на структурите в обекти.
- Клас. Членове на клас.
- public и private достъп до членовете.
- Статични и динамични членове на клас.
- Йерархия на класовете.
- Наследяване
- наследяване на алгоритмични структури.
- наследяване на структури от данни.
- Множествено наследяване.
- Полиморфизъм.
- Статичен полиморфизъм.
- Динамичен полиморфизъм.
- Реализация на C.
- Обектно-ориентирано проектиране.
- Идентифициране на класове.
- Асоцииране на алгоритмични структури и структури от данни.
- Взаимоотношения между класове.
- Йерархична организация на класовете.
- Композиция и наследяване.
Класове.
- Деклариране на клас. Струкури и класове.
- Членове на клас.
- Член променливи.
- Модификатори за досъп - public, protected, private. Влияние на модификаторите за достъп върху видимостта на член променливите.
- Оператор на обсега :: . Достъп до глобални променливи в рамките на даден клас.
- Член функции (методи на клас).
- Конструктор. Инициализиране на член променливите.
- Видове конструктори в езика C++.
- Конструктор по подразбиране.
- Конструктор за копиране.
- Деструктор.
- Създаване на инстанция на обект от съответен клас. Ред на изпълнение на методите на класа.
- Създаване и унищожаване на обекти (локални, статични и глобални).
- Достъп до членове на клас
- Указателя this и неговото предназначение.
- Достъп до член променливи на клас. Функции за досъп срещу общо достъпни член променливи.
- Механизъм за извикване на методи на клас и мястото на указател this.
- Константни методи.
- Константни обекти
- Връщане на синоним като резултат на функция.
- Обекти като член променливи на клас. Инициализация. Особености.
- Използване на заглавни и имплементационни файлове при работа с класове.
Допълнителни възможности за работа с класове.
- Статични член променливи.
- Статични методи и тяхното предназначение.
- Възможности за достъп до private член променливи на клас.
- Деклариране на приятелски клас.
- Деклариране на приятелски функции.
- Масив от обекти. Дефиниране.
- Вложени класове.
- Правила за достъп до елемените на вложения клас.
- Неименовани вложени класове.
Динамично създаване и унищожаване на обекти.
- Оператор new срещу стандартната функция за заделяне на памет malloc.
- Оператор delete.
- Освобождаване на памет, заделена в рамките на даден клас.
- Предаване и връщане на обекти като параметри и резултат на функции.
- Предаване и връщане на синоним. Страничен ефект.
Наследяване.
- Определение. Базов клас. Извлечен клас.
- Видове наследяване. Видимост на членовете на клас при различните видове наследяване.
- Отношения между обекти на базови и извлечени класове.
- Проекция на обекти.
- Указатели към обекти. Работа с указатели към обекти от базовия и извлечения клас. Особености.
- Конструктор за преобразуване на типа.
- Множествено наследяване. Особености и проблеми породени от възможността за множествено наследяване.
- Управление на видимостта на членовете на клас с помощта на ключова дума protected.
Полиморфизъм.
- Параметри по подразбиране.
- Статичен полиморфизъм.
- Сигнатура на функция.
- Предефинирани функции (overloaded functions). Реализация. Механизъм на извикване.
- Полиморфизъм на конструктурите на клас.
- Виртуални функции. Служебна дума virtual.
- Динамичен полиморфизъм.
- Виртуални таблици.
- Механизъм на извикване на виртуални функции.
- Чисто виртуални функции.
- Особености при работа с виртуални функции.
- Реализация на деструкторите на базовите и извлечените класове.
Предефиниране на оператори.
- Реализация на операторите като член функции на клас. Служебна дума operator.
- Реализация на операторите като приятелски функции. Разлики между двата метода за реализация.
- Преобразувания при класове.
- Конструктор за преобразуване на типа. Изпълнение.
- Оператори за преобразуване на типа. Реализация. Особености. Страничен ефект.
Потоци.
- Стандартен входен поток.
- Стандартен изходен поток.
- Форматиран изход.
|
| |