- •1.Охарактеризуйте розвиток структуризації у мовах програмування. Технології програмування.
- •2. Охарактеризуйте особливості та переваги об’єктно-орієнтованого програмування, використовуючи його базові поняття та терміни.
- •3.Охарактеризуйте такі поняття об’єктно-орієнтованої парадиґми, як клас, об’єкт, повідомлення та метод.
- •Означте такі базові властивості об’єктно-орієнтованого програмування як абстрагування, наслідування, інкапсуляція та поліморфізм.
- •Охарактеризуйте поняття абстрагування при створенні класу об’єктів. Проаналізуйте відмінності між поняттям класу та об'єкту.
- •6. Специфікація представлення та функціональна специфікація класів.
- •8.Опишіть такий агрегатний тип даних як масив. Приклади
- •10.Охарактеризуйте поняття ідентифікації об’єктів. Проаналізуйте способи ідентифікації об’єктів.
- •11. Об'єкти з точки зору концепцій інкапсуляції і абстракції.
- •12. Проаналізуйте структуру опису та реалізації класу: компоненти-дані і компоненти-функції.
- •13. Проаналізуйте особливості доступу до компонентів об’єкта (використання специфікаторів public, private, protected).
- •14. Ініціалізація об’єктів (конструктори). Опис конструкторів та порядок їх виклику.
- •15. Опишіть процес руйнування об’єкта (деструктори).
- •21).Охарактеризуйте віртуальні функції. Приклади.
- •Проаналізуйте поняття «час життя» об'єкта та його «область видимості».
- •23).Класи пам’яті. Використання автоматичної, статичної та динамічної пам’яті для розміщення об’єктів.
- •24). Розкрийте суть проблеми "висячих" посилань і “сміття”.
- •1)Цілі, 2)раціональні (із плаваючою крапкою),3) символьні;4) рядкові.
- •1) Константи цілого типу
- •2) Константи раціонального типу
- •3) Символьні константи
- •Керуючі коди
- •4) Рядкові константи
- •Перераховуваний тип
- •30. Охарактеризуйте особливості inline-функцій та inline-методів класів.
- •33. Опишіть такі аґреґатні типи даних, як структура і об’єднання, їх основні відмінності.
- •34. Охарактеризуйте поняття вказівника і посилання. Їх основні відмінності.
- •Типові обмеження та помилки програмування при роботі з посиланнями.
- •35. Ініціалізація вказівників. Операції над ними.
- •Операції з вказівниками.
- •Типові помилки програмування при роботі з вказівниками.
- •36. Охарактеризуйте зв'язану організацію пам'яті та використання вказівників у програмах.
- •37.Дайте аналіз динамічним структурам об’єктів на прикладі асоціативних структур даних.
- •38.Проаналізуйте такі динамічні структури об’єктів як лінійні списки.
- •39Дайте оцінку такій динамічні структури об’єктів як черги, стеки та деки.
- •40.Опишіть та дайте приклади використання зв’язаної організації пам’яті для реалізації рекурсивних структур.
- •48). Використання маніпуляторів при вводі-виводі даних.( незнайдено повністю)
- •49). Способи форматування даних при використанні потоків.
- •51). Роз’ясніть поняття модуля як програмного еквівалента класу об’єктів.
- •52). Розясніть основні концепції модульного програмування.(додатково у 51)
48). Використання маніпуляторів при вводі-виводі даних.( незнайдено повністю)
Маніпуляторами називаються функції, які можна включати в ланцюжок операцій поміщення і добування для форматування даних. Маніпулятори поділяються на прості, які не вимагають вказівки аргументів, і такі,що параметризуються.
Користуватися маніпуляторами зручніше, ніж методами установки прапорців форматування.
49). Способи форматування даних при використанні потоків.
3.Форматування даних.
В потокових класах форматування даних виконується трьома способами:
1) за допомогою прапорців;
2) за допомогою маніпуляторів;
3) за допомогою форматуючих методів.
Прапорці і форматуючі методи
Прапорцями є окремі біти, об'єднані в полі x_flags типу long класу ios. Прапорці перераховані в таблиці 1.
Таблиця 1. Прапорці форматування класу ios
Прапорець |
Поло- ження |
За замовчуванням |
Опис дії при встановленому прапорцеві |
skipws |
0x0001 |
+ |
При вилученні з потоку символи пропусків ігноруються |
left |
0x0002 |
|
Вирівнювання по лівому краю поля |
right |
0x0004 |
+ |
Вирівнювання по правому краю поля |
internal |
0x0008 |
|
Знак числа виводиться по лівому краю, число — по правому. Проміжок заповнюється символами x_fill, за замовчуванням пропусками |
dec |
0x0010 |
+ |
Десяткова система числення |
oct |
0x0020 |
|
Вісімкова система числення |
hex |
0x0040 |
|
Шістнадцяткова система числення |
showbase |
0x0080 |
|
Виводиться основа системи числення (0х для шістнадцяткових чисел і 0 для вісімкових) |
showpoint |
0x0100 |
|
При виведенні дійсних чисел друкувати десяткову крапку |
uppercase |
0x0200 |
|
При виведенні використовувати символи верхнього регістру |
showpos |
0x0400 |
|
Друкувати знак при виведенні додатніх чисел |
scientific |
0x0800 |
|
Друкувати дійсні числа у формі з плаваючою крапкою |
fixed |
0x1000 |
|
Друкувати дійсні числа у формі з фіксованою крапкою (точність визначається полем х_precision) |
unitbuf |
0x2000 |
|
Вивантажувати буфери всіх потоків після вставки |
stdio |
0x4000 |
|
Вивантажувати буфери потоків stdout і stderr після вставки |
Прапорці (left, right та internal), (dec, oct та hex), а також (scientific та fixed) взаємно виключають один одного, тобто в кожен момент може бути встановлений лише один прапорців з кожної групи.
Для управління прапорцями в класі ios є методи flags, setf і unsetf:
long ios :: flags(); — повертає поточні прапорці потоку;
long ios :: flags(long); — присвоює прапорцям значення параметра;
long ios :: setf (long, long); — присвоює прапорцям, біти яких встановлені у першому параметрі, значення відповідних бітів другого параметра;
long ios :: setf (long); — встановлює прапорці, біти яких встановлені у параметрі;
long ios :: unsetf (long); — скидає прапорці, біти яких зазаначені в параметрі.
Всі функції повертають попередні прапорці потоку.
Окрім прапорців, для форматування використовуються наступні поля класу ios:
int x_width — мінімальна ширина поля виведення;
int x_precision — точність (кількість цифр в дробовій при виведенні дійсних чисел);
int x_fill — символ заповнення поля виведення.
Для управління цими полями використовуються методи width, precision та fill:
int ios :: width() — повертає значення ширини поля ;
int ios:: width (int) — встановлює ширину поля відповідно до значення параметра;
int ios :: precision() — повертає значення точності подання при виведенні дійсних чисел;
int ios :: precision(int) — встановлює значення точності подання при виведенні дійсних чисел, повертає старе значення точності;
char fill () — повертає поточний символ заповнення;
char fill (char) — встановлює значення поточного символу заповнення, повертає старе значення символу.
Приклад форматування даних за допомогою прапорців і методів.
#include <iostream.h>
int main() {
long a = 1000, b = 077;
cout.width (7);
cout.setf (ios::hex | ios::showbase | ios::uppercase);
cout << a;
cout.width (7);
cout << b << endl;
double d = 0.12, c= 1.3e-4;
cout.setf (ios :: left);
cout << d << endl;
cout << c;
return 0; }
В результаті роботи програми в першому рядку будуть ВЕЛИКИМИ буквами виведені змінні а і b в шістнадцятковому поданні, для кожної з них виділяється по 7 позицій (функція width діє тільки на одне значення, що виводиться, тому її виклик потрібно повторити двічі). Значення змінних с і d прив’язані до лівого краю поля:
..ОХ3ЕВ ...0X3F
0.12
0.00013
