Обучение » Базово » Езици C и C++

ЕЗИЦИ ЗА ПРОГРАМИРАНЕ C И C++


Програма на базов курс по 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 достъп до членовете.
    • Статични и динамични членове на клас.
  • Йерархия на класовете.
    • Наследяване
      1. наследяване на алгоритмични структури.
      2. наследяване на структури от данни.
    • Множествено наследяване.
  • Полиморфизъм.
    • Статичен полиморфизъм.
    • Динамичен полиморфизъм.
    • Реализация на C.
  • Обектно-ориентирано проектиране.
    • Идентифициране на класове.
    • Асоцииране на алгоритмични структури и структури от данни.
    • Взаимоотношения между класове.
    • Йерархична организация на класовете.
    • Композиция и наследяване.
   Класове.
  • Деклариране на клас. Струкури и класове.
  • Членове на клас.
    • Член променливи.
    • Модификатори за досъп - public, protected, private. Влияние на модификаторите за достъп върху видимостта на член променливите.
    • Оператор на обсега :: . Достъп до глобални променливи в рамките на даден клас.
  • Член функции (методи на клас).
  • Конструктор. Инициализиране на член променливите.
  • Видове конструктори в езика C++.
    • Конструктор по подразбиране.
    • Конструктор за копиране.
  • Деструктор.
  • Създаване на инстанция на обект от съответен клас. Ред на изпълнение на методите на класа.
  • Създаване и унищожаване на обекти (локални, статични и глобални).
  • Достъп до членове на клас
    • Указателя this и неговото предназначение.
    • Достъп до член променливи на клас. Функции за досъп срещу общо достъпни член променливи.
    • Механизъм за извикване на методи на клас и мястото на указател this.
  • Константни методи.
  • Константни обекти
  • Връщане на синоним като резултат на функция.
  • Обекти като член променливи на клас. Инициализация. Особености.
  • Използване на заглавни и имплементационни файлове при работа с класове.
   Допълнителни възможности за работа с класове.
  • Статични член променливи.
  • Статични методи и тяхното предназначение.
  • Възможности за достъп до private член променливи на клас.
    • Деклариране на приятелски клас.
    • Деклариране на приятелски функции.
  • Масив от обекти. Дефиниране.
  • Вложени класове.
    • Правила за достъп до елемените на вложения клас.
    • Неименовани вложени класове.
   Динамично създаване и унищожаване на обекти.
  • Оператор new срещу стандартната функция за заделяне на памет malloc.
  • Оператор delete.
  • Освобождаване на памет, заделена в рамките на даден клас.
  • Предаване и връщане на обекти като параметри и резултат на функции.
  • Предаване и връщане на синоним. Страничен ефект.
   Наследяване.
  • Определение. Базов клас. Извлечен клас.
  • Видове наследяване. Видимост на членовете на клас при различните видове наследяване.
  • Отношения между обекти на базови и извлечени класове.
    • Проекция на обекти.
    • Указатели към обекти. Работа с указатели към обекти от базовия и извлечения клас. Особености.
    • Конструктор за преобразуване на типа.
  • Множествено наследяване. Особености и проблеми породени от възможността за множествено наследяване.
  • Управление на видимостта на членовете на клас с помощта на ключова дума protected.
   Полиморфизъм.
  • Параметри по подразбиране.
  • Статичен полиморфизъм.
    • Сигнатура на функция.
    • Предефинирани функции (overloaded functions). Реализация. Механизъм на извикване.
    • Полиморфизъм на конструктурите на клас.
  • Виртуални функции. Служебна дума virtual.
  • Динамичен полиморфизъм.
    • Виртуални таблици.
    • Механизъм на извикване на виртуални функции.
    • Чисто виртуални функции.
    • Особености при работа с виртуални функции.
    • Реализация на деструкторите на базовите и извлечените класове.
   Предефиниране на оператори.
  • Реализация на операторите като член функции на клас. Служебна дума operator.
  • Реализация на операторите като приятелски функции. Разлики между двата метода за реализация.
  • Преобразувания при класове.
    • Конструктор за преобразуване на типа. Изпълнение.
    • Оператори за преобразуване на типа. Реализация. Особености. Страничен ефект.
   Потоци.
  • Стандартен входен поток.
  • Стандартен изходен поток.
  • Форматиран изход.
 

  Обучение » Базово » Езици C и C++

© 2001 Академия по Информационни Технологии