![](/user_photo/2706_HbeT2.jpg)
- •Матеріали для підготовки до держіспиту
- •Програмування
- •1. Об’єкти. Поняття об’єкту у процедурному та об’єктно-орієнтованому програмуванні
- •2. Загальні принципи і основні елементи об’єктно-орієнтованого програмування
- •3. Типи та класи у сучасній мові програмування. Взаємовідношення понять "клас" та "об’єкт"
- •4. Поліморфізм як одна з компонентів ідеології сучасного програмування
- •5. Принцип модульності у програмуванні. Процедури і функції, їх побудова та застосування
- •6. Динамічний розподіл ресурсів пам’яті при виконанні програми
- •7. Застосування шаблонів функцій та класів при створенні програм. Можливості параметризованих класів.
- •8. Успадкування та створення ієрархій класів. Проблеми, які вирішуються шляхом використання успадкування
- •9. Атрибути доступу як засіб підвищення надійності програмування
- •Теорія систем та математичне моделювання
- •10. Основні поняття теорії систем. Класифікація систем
- •11. Методи опису систем
- •12. Математичні та комп’ютерні моделі. Їх види та характеристики
- •13. Ідентифікація моделей і задача апроксимації. Методи апроксимації даних
- •14. Моделювання стаціонарних систем. Нелінійні системи
- •15. Моделювання динаміки систем. Системи з локалізованими та розподіленими властивостями.
- •Аналіз та побудова алгоритмів
- •16. Поняття алгоритму. Види алгоритмів, способи їх подання.
- •17. Оцінювання ефективності алгоритму. Функція складності.
- •18. Математичний аналіз і емпіричне дослідження алгоритмів.
- •19. Обчислювальна складність задач. Класи задач p та np.
- •20. Функція складності алгоритму та асимптотичні відношення.
4. Поліморфізм як одна з компонентів ідеології сучасного програмування
В современном программировании полиморфизм приобрел различные формы. В языке С++ предусмотрены следующие виды полиморфизма:
простой полиморфизм функций;
перегруженные операции;
виртуальные функции;
шаблоны функций и классов.
Простой полиморфизм функций позволяет создавать наборы функций с одинаковыми именами, которые могут действовать в одном и том же пространстве имен. При этом функции одного такого набора должны отличаться количеством и/или типом параметров. В набор функций с общим именем включают функции, имеющие общий характер, например, вычисление значения математической функции с разной точностью для соответствующих типов аргументов.
Перегрузка операций (точнее символов операций) позволяет расширить действие символов встроенных операций на классовые типы. Последнее дает возможность записывать более лаконичные и понятные коды для вычислений с объектами классов.
Виртуальные функции – способ, позволяющий переопределять функции в классах-наследниках. Это дает возможность при вызове функции класса, входящего в иерархию наследования, автоматически вызывать нужную версию функции в зависимости от типа передаваемого параметра.
Виртуальные функции – мощное средство при использовании механизмов наследования.
5. Принцип модульності у програмуванні. Процедури і функції, їх побудова та застосування
Принцип модульности позволяет выполнить декомпозицию создаваемой программы на отдельные, в достаточной мере автономные, элементы программы - модули. Модульный принцип в языке С++ реализуется классами, функциями и процедурами. Под процедурой понимается функция, не возвращающая значения.
Рассмотрим функции С++. Структура объявления (определения) функции, возвращающей значение, имеет следующий вид:
тип fun(параметры)
{ тело функции
}
Если функция не возвращает никакого значения, возвращаемый тип записывается как void. Параметры функции
Параметры функции являются локальными переменными, которые действуют в пределах тела функции. В качестве параметра функции может использоваться переменная, указатель или ссылка:
int F(int k, int *p, int &x) { ... }
Параметры функции являются, по существу, локальными переменными. В момент вызова функции происходит копирование значений фактических копируется в соответствующие формальные параметры функции.
Различие между параметрами-указателями и параметрами-ссылками иллюстрируется в следующем примере для функции swap, которая осуществляет обмен значениями двух объектов:
Вариант 1 Вариант 2
void swap(long *px, long *py) void swap(long &x, long &y)
{ long R=*px; *px=*py; *py=R; { long R=x; x=y; y=R;
} }
вызов функции: вызов функции:
long a,b; long a,b;
swap(&a,&b); swap(a,b);
Параметры - простые массивы никогда не передаются по значению: передается адрес первого элемента массива.
Можно объявить функцию с переменным числом параметров. Переменная часть списка параметров в заголовке такой функции указывается многоточием, например:
int F(int a, ...);
Для обработки списка параметров в этом случае используются средства из модуля <stdarg.h> .
Инициализация параметров функции
Заголовок функции может содержать инициализацию аргументов:
long F(int a, long x=0, long y=1)
{ ... }
Инициализируемые параметры должны быть последними в списке. Они могут не использоваться при вызове функции. Все следующие вызовы функции F являются правильными: F(n,a,b) , F(n,a) , F(n) .
Возвращаемое значение
Функция может возвращать:
- значение любого типа,
- адрес объекта,
- ссылку на объект.
Статические локальные переменные
Локальные переменные функции объявленные с применением служебного слова static отличаются тем, что значения этих переменных (также как и сами переменные) сохраняются до следующего вызова функции.
Прототипы
Прототип является предварительным объявлением функции. Он содержит информацию о типе функции, типах ее аргументов и их количестве. Прототип используется компилятором для контроля правильности вызова функции, а также для автоматического приведения аргументов к нужному типу. Пример:
int fun(int, float*, double&);