
- •Як описуються цілі числа?
- •Порядкове читання вводу.
- •Що робить функція-член get ()?
- •Клас string.
- •Створення структури.
- •Що робить оператор enum?
- •Як робиться перерахування значень?
- •1. Змінна і змінна показника.
- •Копіювання рядка із масиву.
- •Використання операцій new та delete.
- •13. Отримання простору пам’яті.
- •Комбіновані операції присвоювання
- •Вирази відношень
- •Аналіз умови циклу:
- •Логічні оператори.
- •Простий файловий ввід-вивід символьної інформації.
- •Деякі основні факти, що використовують cout у консольному виводі.
- •Файловий ввід.
- •Як вказати діапазон елементів у масиві?
- •Як зробити передачу адреси замість передачі самої структури?
- •Використання посилальних аргументів.
- •Аргументи, що визначаємо за замовчуванням.
- •Перевантаження функції.
- •Моделі пам’яті і простір імен - Окрема компіляція програм
- •Директива #include.
- •Об’ява структур.
- •Довгочасність існування області зберігання, області видимості та компоновки.
- •Область видимості і зв’язування.
- •Автоматична довгочасність збереження.
- •Автоматичні змінні та стек.
- •Регістрові змінні.
- •П’ять видів змінних
- •Мовне зв’язування, котре дотикається функції.
Відповіді на питання по мові С++
ЛЕКЦІЯ 2.
Етапи виконання програми
Розширення вихідного коду
Компілятори для Windows
Серед них можна виділити найбільш популярні: Microsoft, Borland, Metrowerks та Digital Mars. Всі вони характеризуються однаковими особливостями.
Що потрібно ввести у кінці програми, щоб побачити результат виконання?
cin.get(); // додати цей оператор
cin.get(); // а можливо і цей теж
return 0;
Оператор cin.get() зчитує наступне натискання клавіші, тому програма буде знаходитися в режимі очікування, аж поки не буде натиснута клавіша <Enter>. Другий оператор потрібний на випадок, коли програма залишить необробленим натискання клавіші після попереднього введення інформації в програмі.
Етапи життєвого циклу програмного забезпечення.
Життєвий цикл програмного забезпечення має 9 етапів:
Постановка задачі.
Проектування.
Оцінка ризику.
Верифікація.
Кодування.
Тестування
Уточнення.
Застосування програмного забезпечення на виробництві.
Супроводження
Який об’єкт застосовується для виводу символів?
Для виводу символів застосовується об’єкт cout.
Функціональна структура програми. Навести приклад.
Разом усі ці рядки складають опис або визначення функції. Опис функції складається з двох частин: заголовка функції (int main()) і частиною в дужках ({і}), яка має назву тіло функції. У заголовку функції коротко описаний її інтерфейс з іншою частиною програми, а у тілі функції міститься інструкція компілятору, яка описує дію даної функції. Повна інструкція має назву оператор. Кожний оператор повинний закінчуватися символом крапки з комою.
Як задаються коментарі?
Коментарій починається з двох косих рисок // і закінчується в одному рядку. При коментарі /* …. */ можна задіяти декілька рядків.
Що таке препроцесор?
Препроцесор – це програма, яка виконує обробку файлу вихідного коду до початку компіляції. Препроцесор запускається автоматично у час компіляції програми.
Як у програмі використовується директива препроцесора #include <iostream>?
У відповідності з цією директивою препроцесор додає iostream у вашу програму. Це звичайна дія препроцесора додавати або змінювати текст у вихідному коді поперед його компіляції.
Програми, що використовують для введення та виведення об’єкти cin і cout повинні включати у файл iostream або в деяких системах iostream.h.
Файли типу iostream мають назву файли, що включаються, тому що вони розміщуються в самому початку файлу. Коли замість iostream.h застосовується iostream, тоді потрібно використовувати директиву простору імен, щоб визначення в iostream були доступні програмі:
using namespace std; // це директива using
Що таке маніпулятори?
Рядок cout<<endl;, де endl – спеціальний умовний знак в мові С++, який вказує, що курсор на екрані буде переміщуватися у початок наступного рядка. Такі спеціальні умовні знаки для об’єкту cout називають маніпуляторами.
Комбінація cout<<"\n"; починає новий рядок, як і комбінація cout<<endl;
Яких правил треба дотримуватися при напису програми?
При напису програми слід дотримуватися наступних правил:
Один оператор в одному рядку.
Відкриваюча та закриваюча фігурна дужка повинна займати самостійно один рядок.
Оператори та фігурні дужки у функціях відокремлені абзацом.
Навкруги круглих дужок, що пов’язані з іменем функції, не повинно бути загального пробілу.
Перші три правила призначені для того, щоб зробити код легко читаним. Останнє правило допомагає відрізняти функцію від вбудованих структур мови С++, таких як цикли, для котрих теж використовують дужки.
Що собою уявляє програма на мові С++? Об’ява змінної.
Програма на мові С++ уявляє собою набір функцій, кожна з яких, у свою чергу, уявляє собою набір операторів.
У мові C++ треба об’являти кожну змінну. Це робиться за допомогою оператора об’яв, котрий ідентифікує тип пам’яті та присвоює мітку комірки. Прикладом об’яви змінної може бути оператор: int carrots;. Сarrots – це змінна, значення котрої можна змінювати, а int – тип змінної, який визначає позитивні і негативні значення числа у змінній. У мові С++ прийнято робити об’яву змінної як можна ближче до рядка, в якому вона вперше використовується.
ЛЕКЦІЯ 3.
Які є категорії функцій? Що таке прототип функції?
Функції умовно можна розбити на дві категорії: які повертають значення та які не повертають значення. Прикладом функції, що повертає значення, може бути функція стандартної бібліотеки sqrt (), яка обчислює квадратний корінь.
х = sqrt (625); //повертає значення 25 та присвоює його змінній х
Вираз sqrt (625) викликає функцію sqrt (), яка видає результат 25. Результат присвоюється змінній х. Значення у круглих дужках 625 є параметром функції. Програма на С++ повинна мати прототип кожної функції, яка використовується у програмі. Прототип виконує ту ж роль, що і об’ява для змінних: в ньому перераховуються типи, що застосовуються. Прототип функції sqrt () має наступний вигляд:
double sqrt (double); //прототип функції
Перше double визначає, що функція sqrt () повертає значення, яке має тип double. Double у круглих дужках визначає, що для функції sqrt () потрібний аргумент double. Крапка з комою, що завершує прототип, ідентифікує його як оператор і тому присвоює йому статус прототипу, а не заголовка функції. Коли крапку з комою вилучити, то компілятор буде розглядати рядок як заголовок функції. Прототип функції повинний бути розміщений поперед функції, що виконується.
Що таке ініціалізація?
В мові С++ нову змінну можна об’явити в будь якому місці програми. Можна у мові С++ зробити об’яву змінної в момент її створення таким чином: double k = sqrt (area); Така форма має назву ініціалізація.
Як розуміти, що об’єкти cin та cout є інтелектуальними?
Тому що, що об’єкт cin знає як перетворити інформацію із потоку введення до типу double, а об’єкт cout – як розташувати тип double у потік виведення.
Чи можна для функцій використовувати більш одного аргументу? Що вказує ключове слово void явним чином?
Для деяких функцій потрібно використовувати більш одного аргументу, які розділяються комами. Наприклад, математична функція pow () використовує два аргументи та повертає значення, яке дорівнює першому аргументу зведеному в ступінь другого аргументу. Прототип цієї функції має такий вигляд:
double pow (double, double); //прототип функції з двома аргументами
При обчислені 58 можна використати таку функцію:
k = pow (5.0, 8.0); //виклик функції з використанням списку аргументів
Деякі функції не приймають ніяких аргументів. Прикладом може бути функція випадкового числа, прототип якої виглядає так:
int rand (void); //прототип функції, яка не приймає аргументів
Ключове слово void явним чином вказує, що функція не приймає аргументів. Коли це слово вилучити і оставити дужки порожнині, то це інтерпретується як неявну об’яву про відсутність аргументів. Цю функцію можна використовувати таким чином:
k = rand (); //виклик функції без аргументів
Існують функції, які не повертають значення. Така функція може зробити вивід значення на екран, а не викликати програму. Цю особливість функції можна вказати в її прототипі за допомогою ключового слова void для типу, що повертається:
void bucks (double); //прототип функції, значення якої не повертається
Які типи операторів використовуються у мові С++?
В мові С++ використовуються наступні типи операторів:
Оператор об’яви. В операторі об’яви вказуються ім’я і тип змінної.
Оператор присвоєння. Цій оператор (=) використовується для присвоєння змінної значення.
Оператор повідомлень. Оператор повідомлень посилає повідомлення об’єкту, ініціюючи деяку дію.
Як діє виклик функції?
Виклик функції активізує її роботу. Коли функція завершує свою роботу, програма повертається до оператору у функцію, що робила виклик, наступним за викликом функції.
Як діє прототип функції?
У прототипі функції об’являється тип функції значення, що повертається, а також кількості и тип аргументів функції, що передається.
У чому полягає сенс об'єктивно-орієнтованого програмування? Які властивості треба знати, щоб зберегти елемент інформації в пам’яті?
Сенс об'єктивно-орієнтованого програмування (ООП) полягає у тому, що програміст має можливість розробляти та розповсюджувати свої власні типи даних. Щоб зберегти елемент інформації в пам’яті комп’ютера програма повинна знати три основні властивості:
Де буде зберігатися інформація.
Яке значення буде зберігатися.
Якого роду ця інформація.
Яких правил потрібно дотримуватися для присвоєння імен?
У С++ потрібно дотримуватися наступних правил присвоєння імен:
Допускається використовувати тільки ті символи, котрі представляють алфавіт та цифри, а також символ підкреслення (_).
Першим символом не повинна бути цифра.
Символи верхнього регістру відрізняються від символів нижнього регістру.
В якості імені неможливо використовувати ключове слово С++.
Імена, що починаються з подвійного підкреслення або одного і наступним за ним символом у верхньому регістрі, зарезервовані для реалізації С++ (їх використовує компілятори і ресурси). Імена, що починаються з одного підкреслення, зарезервовані для реалізації в якості глобальних ідентифікаторів в реалізації С++.
Ім’я може мати довільну довжину і усі символи в імені є значущими. Імена, що мають декілька слів для їх розділення використовують підкреслення або букву в словах, крім першого слова, пишуть у верхньому регістрі. Наприклад, my_onions або myEyeRead
Як описуються цілі числа?
Цілими є числа без дробової частини. Наприклад, 4, 28, -350 і 0. Типи цілого числа у мові С++ відрізняються один до одного об'ємом пам'яті, яка виділяється для збереження даних. Для опису об’єму пам'яті застосовують термін довжина або розрядність. У мові С++ базовими типами цілого числа у порядку збільшення розрядності є char, short, int, long. Кожний з цих типів має варіант зі знаком або без знаку.
Пам’ять у комп’ютері зберігається у двійкових тригерах, котрі зберігають один біт інформації, що має два значення 0 або 1. Використовуючи різну кількість бітів для збереження значень, типи short, int, long у С++ можуть представляти до трьох різних розрядності цілого числа Опишемо розрядність цих типів.
тип цілого числа short має не менш чим 16 бітів.
тип цілого числа int такий ж як short.
тип цілого числа long має не менш чим 32 бітів, і як мінімум такий же як тип int.
Тип цілого числа int може мати 16, 24 або 32 біта і відповідати стандарту С++. Три типи short, int, long є типами зі знаком. Імена цих типів можна використовувати для об’яви змінних. Наведемо приклад:
short score; //створює зміну типу цілого числа short
int temperaturew; //створює зміну типу цілого числа int
long position. //створює зміну типу цілого числа long
Що робить операція sizeof?
Коли ви бажаєте визнати, який розмір відведений для цілих чисел у вашій системі, можна застосувати операцію sizeof, котра повертає розмір типу або змінної у байтах. Операцію sizeof можна виконати або під ім’ям типу, або під ім’ям змінної. Коли ця операція буде виконана під ім’ям типу, то це ім’я повинно ставитися у дужки. Для імен змінних дужки можна опускати.
Що розуміється під ініціалізацією змінних?
Під ініціалізацією розуміється комбінована об’ява змінної та присвоювання їй початкового значення. Наприклад, оператор Int n_int = INT_MAX;
об’являє змінну n_int та присвоює їй найбільше із можливих значень int. Для ініціалізації значень можна використовувати і звичайні константи. Можна ініціалізувати зміну іншою змінною, при умові, що та вже була об’явлена раніше. Можна також ініціалізувати змінну виразом, при умові, що усі значення у виразі вже відомі на той момент, коли програма досягає об’яві.
У мові С++ використовується ще один синтаксис ініціалізації, який не сумісний з мовою С:
int owls = 28; //традиційна ініціалізація у мові С
int towls (128); //змінна towls присвоює значення 128 у мові С++
Коли ви ініціалізуєте змінну, яка визначається всередині функції, то значення цієї змінної буде не визначеним. Це визначає, що ще до створення змінної у цій комірці пам’яті вже буде зберігатися значення. Коли вам відоме, яким повинно бути значення змінної, то ініціалізуйте її. Створити варіанти базових типів без знаку можна за допомогою ключового слова unsigned:
unsigned short change; //тип short без знаку
unsigned int rovert; //тип int без знаку
unsigned quarterback; // тот же тип int без знаку
unsigned long gone; //тип long без знаку
ЛЕКЦІЯ 4.
Які цілі константи записуються в явному вигляді у трьох системах числення?
З основою 10, 8 та 16. У С++ для визначення основи системи числення використовується перша або дві перші цифри. Коли перша цифра знаходиться у діапазоні 1-9, то це число з основою 10. Наприклад, число 95 є десятковим. Коли перша цифра є 0, а друга в діапазоні 1-7, то це число з основою 8. Наприклад, число 035 є з основою 8. Коли перші дві цифри визначаються 0х або 0Х, то це число з основою 16. Наприклад, число 0х35 є з основою 16. Цифри систем числення дані у табл.. 5.2.
Таблиця 5.2. Цифри систем числення з основами 10, 8, 16
Як cout відображає цілі числа?
За замовчуванням cout відображає цілі числа у десятковій системі числення, незалежно від того, як вони були записані у програмі. У комп’ютері усі числа записані у двійковій системі числення.
Коли потрібно відобразити значення числа з основою 16 або 8, то можна використовувати можливості об’єкта cout. Заголовний файл iostream пропонує маніпулятор end1, котрий сигналізує об’єкту cout про початок нового рядка. Також існують маніпулятори dec, hex, oct, котрі сигналізують об’єкту cout про формати відображення цілих чисел: відповідно 10, 16, 8. Десяткова форма запису цілих чисел використовується за замовчуванням, і вона остається аж поки ви її не змініть.
Як представляти константи?
О типі кожної окремої змінної типу цілого числа компілятор С++ узнає із об’яви в програмах. Припустимо, що у своїй програмі ви представляєте число за допомогою константи:
cout <<”Year = “ << 1937 << “\n”;
Мова C++ зберігає константу цілих чисел у форматі int, коли нема причин використовувати інший тип. Причин може бути дві: ви використовуєте спеціальний суфікс, щоб вказати конкретний тип, або значення забагато велике, щоб його можна було зберігати у вигляді int.
Як визначаються типи констант цілого числа?
Суфікси представляються буквами, що розміщуються у кінці числової константи для визначення типу константи. Суфікс l або L цілого числа визначає, що це число є константою long; суфікс u або U визначає константу unsigned int; суфікс ul (у будь-якій комбінації символів та в будь-якому регістрі) визначає константу unsigned long. У мові C++ термін десятковий не обов’язково розуміє десяткову крапку. Десяткове число без суфіксів є найменший за розміром тип,котрій може його зберігати: int, long або unsigned long. У комп’ютерній системі, що використовує 16-бітний тип int та 32-бітний тип long, число 20000 подається як int, число 40000 подається як long, а 3 000 000 000 подається як unsigned long. Число 40000 подається як long, а його 16-річний еквівалент 0х9С40 подається як unsigned int. Це пояснюється тим, що 16-річна форма часто використовується для визначення адресів пам’яті, котрі завжди додатні.
Тип цілого числа char (character –символ) призначений для збереження символів, таких як букви та цифри.
Для чого призначена функція cout.put ()?
Функція cout.put ()– це функція-член. Функція член належить до класу і описує спосіб маніпуляції даними класами. Клас ostream, наприклад, має функцію-член put (), яка призначена для виводу символів. Крапка у функції-член має назву приналежності або операції членства. У позначенні cout.put () розуміється використання функції члена класу put () та об’єкта класу cout.
Якими способами можна записувати символьні константи char?
Символьні константи char у мові С++ можна записувати різними способами. Звичайні символи (букви, знаки пунктуації, цифри) укладають в одиночні лапки. Така форма запису символізує числовий код символу. Наприклад, у системі ASCII встановлені наступні відповідності:
‘A’ – відповідає 65 коду ASCII для символу А;
‘a’ – відповідає 97 коду ASCII для символу а;
‘5’ – відповідає 53 коду ASCII для цифри 5;
‘ ‘ – відповідає 32 коду ASCII для символу пробіл;
‘!’ – відповідає 33 коду ASCII для символу знак оклику
Перелік кодів керуючих послідовностей у С++
Символ подвійних лапок обмежує рядки, тому всередині рядка їх вводити неможливо. Послідовність \a представляє символ попередження, по якому динамік видає сигнал або дзвоник телефону. Послідовність \” представляє подвійні лапки як звичайний символ. Символи у таблиці називають керуючою послідовністю.
Як використовують універсальні імена символів?
У мові С++ можна використовувати інтернаціональні символи, які не залежать від конкретної клавіатури: тобто використання універсальних імен символів. Універсальні імена символі подібні керуючим послідовностям. Вони починаються з послідовності \u або \U. За послідовністю \u слідує 8 16-річних цифр, а за послідовністю \U – 16 16-річних цифр.
Як використовують типи char і bool?
Коли для вас важливо, щоб тип char мав визначену поведінку, то можна використовувати signed char (явну вказівку типа зі знаком у діапазоні від -127 до 127) або unsigned char (явну вказівку типа без знаку у діапазоні від -0 до 127). Це важливо при використані char в якості числового типу.
Тип bool в C++, названий в честь англійського математика Джорджа Буля (George Boole), має два значення: true (істинна) або false (хиба). Літери true і false можна перетворити у тип int, де true перетворюється в 1, а false – у 0.
Кваліфікатор const.
У С++ є спосіб обробки символьних констант при застосуванні ключового слова const для зміни об’яви та ініціалізації змінної. Ключове слово const має назву кваліфікатор, тому що воно кваліфікує саму об’яву. Наприклад, у програмі можна ввести рядок:
Const int MOHCHS = 12; //символьна константа MOHCHS стає = 12
Компілятор не дає можливість змінювати значення константи MOHCHS.
Як записуються числа з плаваючою точкою?
Типи числа з плаваючою точкою складають другу групу фундаментальних типів С++. Числа з плаваючою точкою можна записати як: 5.0 або 3.14159 або 12232.57 – тобто числа з дробовою частиною. Коли дробова частина рівна 0, то вона теж записується через точку у числа з дробовою частиною.
Іншій спосіб запису значення числа з плаваючою точкою має назву експонентний і має вигляд: 3.43E6. Ця запис визначає , що 3.43 множимо на число 1 000 000. Запис E6 визначає 10 у шостій ступені. У даному випадку 6 називають експонентою, а 3.43 – мантисою. Зверніть увагу, що у запису можна використовувати, як Е, та і е. Експонента може бути як додатна, так і від’ємна. Від’ємна експонента визначає ділення на ступінь з основою 10, а не множення. Приклади: +3.75Е+8, -7.92е+7, 9.2Е-7, -2.73е -16.
Форма d.dddE+n визначає переміщення десяткової точки на n позицій вправо, а форма d.dddE-n – на n позицій вліво.
Мова С++ має три типа чисел з плаваючою точкою: float, double та long double. Ці типи характеризують кількість значущих цифр, котрі вони можуть представляти, та мінімально допустимий діапазон експонент. Значущими цифрами є значущі розряди числа. У мовах С і С++ кількість значущих розрядів відносно наступне: тип float повинний мати як мінімум 32 біта, double – 48 бітів і повинний бути не менш чим тип float, long double має 80, 96 або 128 бітів. Крім того, діапазон експонент для кожного з цих типів обмежений у межах -37 до +37.
За звичай об’єкт cout відкидає кінцеві нулі. Наприклад, він може відобразити 3333333.25000 як 3333333.25. Виклик функції cout.self () відкидає це правило у нових реалізаціях.
За замовчуванням константи з плаваючою точкою мають тип double/ Щоб константа мала тип float потрібно вказати суфікс l або L. Наприклад:
234f //константа float
45E20F //константа float
547296E28 //константа double
5L //константа long double
Яка перевага чисел з плаваючою точкою над цілим числом?
Числа з плаваючою точкою мають дві переваги по зрівнянню з цілими числами. По-перше, вони можуть запропонувати більший діапазон значень. З іншого боку, операції над числами з плаваючою точкою виконуються повільніше. Також можна втратити точність обчислення.
ЛЕКЦІЯ 5
Арифметичні операції.
Перерахуємо 5 базових арифметичних операцій у мові С++.
Операція + виконання додавання операндів. Приклад, 6+28 рівно 34.
Операція - виконання віднімання операндів. Приклад, 36-28 рівно 8.
Операція * множення операндів. Приклад, 5*25 рівно 125.
Операція / ділення першого операнда на другий. Приклад, 28/7 рівно Коли обидва операнда цілі числа, то результат буде рівний частки від розподілу Наприклад, 19/6 рівно 3, тому що дробова частка відкидається.
Операція % знаходить залишок ділення цілих чисел першого операнда на другий. Наприклад, 19%6 рівно 1, тому що 19 розбивається на 6 три рази, з залишком 1. Обидва операнда повинні бути цілими числами. Використання операції % над числами з плаваючою точкою приводить до помилки часу компіляції. Коли один з операндів буде від’ємним, то знак результату буде залежить від результату.
Кожна з цих операцій виконується над парою значень, котрі мають назву операндів, для знаходження кінцевого результату. Операція та її операнди разом утворюють вирази.
Правила пріоритету для виконання арифметичних операцій.
Коли над операндами виконується декілька операцій, то С++ користується правилами старшинства, або правилами пріоритету, щоб визначити у якому порядку слід виконувати арифметичні дії. Операції множення, ділення та знаходження залишку від ділення цілих чисел виконуються раніш операцій додавання та віднімання. Коли програмісту важко визначити пріоритет, то застосовують дужки, як у звичайній математиці.
Перетворення типів.
У С++ є достатньо велика кількість типів даних. Щоб з ними впоратися у С++ є автоматичний перетворювач більшості типів:
С++ перетворює значення при присвоєнні значення одного арифметичного типу змінної іншого арифметичного типу.
С++ перетворює значення при комбінаціях різних типів у виразах.
С++ перетворює значення при передачі аргументів функціям.
Правила перетворення типів.
Без особливих проблем здійснюється перетворення типів при присвоєнні змінної, коли новий тип має більш великий діапазон. Наприклад:
so_long = thirty; //присвоєння значення змінної типа short
// змінної типа long
Програма приймає значення змінної thirty (зазвичай 16-бітноє значення) і розширює його до значення long (зазвичай 32-бітноє значення). Одні перетворення типів можуть бути здійснені без помилок, а інші – можуть привести до проблем.
Нульове значення присвоєне змінної bool, перетворюється у false, а нульове значення – у true. Щоб визначити, які перетворення потрібно здійснити в арифметичних виразах, компілятор розглядає контрольний список, який ми розглянемо нижче:
Коли один із операндів має тип long double, то інший операнд перетворюється у тип long double.
Інакше, коли один із операндів має тип double, то інший операнд перетворюється у тип double.
Інакше, коли один із операндів має тип float, то інший операнд перетворюється у тип float.
Інакше, операнди мають тип цілого числа, тому виконується розширення типу цілого числа.
У цьому випадку, коли один із операндів має тип unsigned long, то інший операнд перетворюється у тип unsigned long.
Інакше, коли один із операндів має тип long int, а інший операнд має тип unsigned int, то перетворення залежить від відносного розміру обох типів. Коли тип long може представляти можливі значення, які мають тип unsigned int, то тип unsigned int перетворюється у тип long.
Інакше, обидва операнди перетворюються у тип unsigned long.
Інакше, коли один із операндів має тип long, то інший операнд перетворюється у тип long.
Інакше, коли один із операндів має тип unsigned int, то інший операнд перетворюється у тип unsigned int.
Коли компілятор у час перевірки дійшов до цього пункту, то обидва операнда повинні мати тип int.
5. Використання прототипів при перетворені типів.
У мові С++ перетвореннями типів при передачі аргументів керують прототипи функцій. Однак, від такого способу можна відмовитися, хоча це не рекомендується. У такому випадку С++ буде використовувати розширення цілих чисел для типів chart та short (signed та unsigned). Також, щоб забезпечити сумісність з великим об’ємом коду у мовах С та С++ розширюють аргументи float до double при передачі їх функцій, які не мають прототипу.
6. На які групи поділяються типи даних?
У мові С++ основні типи даних поділяються на дві групи: у вигляді цілих чисел та у форматі з плаваючою точкою. Типи цілих чисел відрізняються один до одного по кількості пам’яті, котра відводиться для збереження значень, а також по тому, що мають вони знак або ні. Типи цілих числа є (у порядку зростання діапазону значення): bool, char, signed char, unsigned char, short, unsigned short, int, long, unsigned long. Існує також тип wchar_t, котре місце серед них залежить від реалізації. С++ гарантує, що тип char має достатньо великий розмір, щоб зберігати будь-який член розширеного набору символів у системі, тип short має як мінімум 16 бітів, тип int теж має як мінімум 16 бітів, а long – 32 біта і як мінімум 16 бітів. Розмір залежить від реалізації у програмі.
Символи безпосередньо задаються числовими кодами. Система вводу-виводу визначає відповідний код цифрі або символу. Існують три типи для чисел з плаваючою точкою: float (32 біта пам’яті), double (64 біта пам’яті), long double (від 80 до128 біт пам’яті).
Над числовими типами у мові С++ можна робити усі арифметичні дії. С++ перетворює значення одного типа в інший, коли присвоюється значення змінній, комбінує різні типи в арифметичних операціях та використовує приведення типів для примусового перетворення типів.Із усієї кількості типів можна вибрати такий, який найбільше відповідає вашим вимогам
7. Що таке складені типи?
С++ пропонує складені типи. Це типи, що складені із базових типів цілих чисел та типів з плаваючою точкою. Найбільш розвинений складений тип – це клас ООП. Масив може зберігати множину значень одного й того ж типу та рядки послідовних символів. Крім того є показники, які представляють собою змінні та повідомляють комп’ютеру де знаходяться дані у пам’яті.
8. Що таке масив даних?
Масив – це структура даних, яка містить множину значень одного й того ж типу. Щоб створити масив, спочатку використовують оператор об’яви. Об’ява масиву повинно описувати три речі:
Тип значень кожного елемента.
Ім’я масиву.
Кількість елементів в масиві.
С++ досягає об’яви масиву за рахунок змінної та квадратних дужок, у котрих вказується кількість елементів в масиві. Наприклад, дамо об’яву:
short months [12]; //створюється масив із 12 елементів типу short
Перший елемент масиву повинний починатися з 0 і записується так: months [0], а останній елемент – months [11], тобто на одиницю менш, чим розмір масиву. Розглянемо програму, що демонструє декілька властивостей масивів: їх об’яву, присвоєння значень його елементів та ініціалізацію.
Операція sizeof повертає розмір у байтах типу або об’єкту даних. Зверніть увагу, що коли ви застосуєте sizeof з ім’ям масиву, то отримуєте кількість байтів, які займає цей масив.
9. Як здійснюється ініціалізація?
У С++ існують правила ініціалізації масивів. Можна використовувати ініціалізацію тільки при об’яві масиву. Її не можна виконувати пізніше, та неможливо присвоїти один масив іншому:
int cards [4] = {3, 5, 17, 28}; // усе вірно
int hand [4]; // усе вірно
hand [4]; //не допускається
hand = cards; //не допускається
При ініціалізації масиву можна вказувати менш значень, чим у масиву зазначено елементів. У цьому випадку компілятор іншим елементам присвоює нульові значення.
float cards [4] = {3.0, 5.17};
Можна ініціалізувати увесь масив нульовими значеннями, коли задати 0 тільки першому елементу.
long cards [400] = {0};
Коли квадратна дужка при ініціалізації порожня, то компілятор сам перерахує кількість елементів у масиві.
short cards [ ] = {3, 0, 5, 17};
Компілятор зробить cards масивом з 4 елементів
ЛЕКЦІЯ 6
Що таке рядок?
Рядок – це послідовні символи, що розташовані послідовно у байтах пам’яті. Рядки у стилі мови С мають властивість: останнім в рядку йде нульовий символ, який записується як \0 та використовується як мітка кінця рядка.
Нульовий символ виконує фундаментальну роль у рядках мови С. Для ініціалізації масивів, як рядків, також можна використовувати рядок з подвійними лапками, які мають назву рядкової константи або рядковий літерал.
Рядки в лапках завжди включають неявно \0 нульовий символ.
Рядки можуть бути занадто великими, то С++ дозволяє виконати конкатенацію рядкових констант, тобто комбінувати два рядка в лапках в один. Будь-які дві рядкові константи, що розділені символом пробілу (пробілами, символами табуляції та переведення рядка), автоматично об’єднуються в один рядок.