- •20.Операції над вказівниками
- •21. Розподіл памяті
- •22. Списки
- •23. Лінійні списки
- •25.Моделі памяті
- •26. Двійкова, шістнадцяткова системи. Подання чисел в різних системах числення.
- •Переклад чисел з шістнадцяткової системи в десяткову
- •Переклад чисел із двійкової системи в шістнадцяткову та навпаки
- •27. Константи, змінні, типи даних
- •29. Основні оператори: присвоєння , розгалуження, множинний вибір, цикл.
- •До операторів вибору відносять оператор умовного переходу if та оператор-перемикачswitch.
- •Процес розгалуження при обчисленні функції за першою або другою формулами здійснюється умовним оператором if.
- •30. Типи циклів та принципи їх застосування
27. Константи, змінні, типи даних
Для іменування констант, типів, змінних тощо на мові C використовуються ідентифікатори – неподільні послідовності символів алфавіту. Довжина ідентифікатора може бути довільною, але розрізняються перші 63 символи. Ідентифікатор починається з літери або символу підкреслення і не повинен містити пропусків. Після першого символу допускаються літери, цифри і знак підкреслення. Великі та малі літери, на відміну від попередніх мов, компілятор розрізняє.
Константами називають сталі величини. В мові С існує чотири типи констант: цілі, дійсні, рядкові та символьні.
Цілі константи можуть бути десятковими, вісімковими або шіснадцятьковими. Десяткова константа – послідовність десяткових цифр (від 0 до 9), яка не може починатися з нуля, якщо це не нуль, наприклад: 10, 123, 1056. Вісімкова константа починаеться з символу 0, після якого розміщуються цифри вісімкової системи числення (від 0 до 7), наприклад: 045, 0123; запис константи виду 078 буде сприйматися компілятором як помилка. Шіснадцяткова константа починаеться з символу 0х або 0Х, після яких розміщуються цифри шіснадцятиричної системи числення (від 0 до F), які можна записувати як в верхньому так і нижньому регістрах, наприклад: 0Х45, 0ХFA3.
Дійсні константи складаються з цілої частини, десяткової крапки, дробової частини, символу експоненти (е чи Е) та показника степіня. У записі константи можуть бути опущена ціла або дробова частина (але не обидві разом), десяткова крапка з дробовою частиною чи символ експоненти з показником степеня (але не разом). Наприклад: 2.56, 301е-2, .34е5, 31.Е-7.
Символьні константи – це один або декілька символів, які взяти в апострофи. Послідовність символів, які починаються з символу оберненого слешу ( \ ) називаються керуючими або cscape-послідовностями і мають певні значення (дивись таблицю).
Послідовність символів |
Шістнадцятковий код |
Значення |
\a |
07 |
звуковий сигнал |
\b |
08 |
повернення на 1 символ |
\f |
0C |
переведення сторінки |
\n |
0A |
перехід на новий рядок |
\r |
0D |
повернення каретки |
\t |
09 |
горизонтальна табуляція |
\v |
0B |
вертикальна табуляція |
\\ |
5C |
символ \ |
\’ |
27 |
символ ‘ |
\” |
22 |
символ “ |
\? |
3F |
символ ? |
\0 |
00 |
нульовий символ |
\0ddd |
- |
вісімковий код символу |
\0xddd |
ddd |
десятковий код символу |
Рядкові константи записуються як послідовність символів, що взяті в подвійні лапки. Для формування рядкових констант, що займають декілька рядків тексту програми використовують символ оберненого слешу. Наприклад: „Це рядкова константа! \n”.
Константи описуються зарезервованим словом Const, за яким записується тип та ім’я константи і за допомогою символу = присвоюється значення. Наприклад,
const float g = 9.8 ;
const maxint = 32767; const float g = 9.8 ;
У мові C є такі групи стандартних типів даних: скалярні (цілі числа, дійсні числа, символи), агрегатні або структуровані, функції.
Скалярні типи даних:
int Ціле число.
long Довге ціле, може стояти перед означенням типу int, використовує 32 біти пам’яті та дозволяє зберігати числа в діапазоні від -2 147 483 648 до 2 147 483 647.
short Коротке ціле, може стояти перед означенням типу int, використовує 16 біт пам’яті та дозволяє зберігати числа в діапазоні від -32 768 до 32 767.
float Дійсні числа, що належать діапазону від ±3.4*10-38 до ±3.4*1038.
double Подвійної точності дійсне число, що належать діапазону від ±1.7*10-308 до ±1.7*10308.
long double Подвійної точності дійсне число для якого буде використовуватись 80 біт пам’яті і таким чином діапазон таких чисел збільшиться та стане — від ±3.4*10-4932 до ±3.4*104932.
char Символ – літера, цифра або інший символ з множини символів ASCII.
void Відсутність типу, використовується для опису функцій.
28. Класифікація типів. Перетворення типів.
Під час програмування ми повинні знати яким буде наш результат. Також очевидним буде факт, що з речовин потрібних для борщу, зробити макарони буде дещо важко. Відповідно результат буде залежати від частин, які використовувалися при обчисленні. Цей закон працює і для змінних. Не важко здогадатись, що якщо додати дві змінні типу int, результатом буде також тип int. Але яким буде результат, коли змінні різних типів? Про це зараз і піде мова.
Перш за все, потрібно розібратися, які типи можуть взаємодіяти між собою. Для цього у С++ створена ієрархія типів, де всі типи розміщенні по старшинству.
bool -> char -> short-int-unsigned int-long-unsigned long-float-double-long double
Не дивлячись на те, що деякі типи мають однаковий розмір, вони мають різний діапазон значень. Так unsigned int в порівнянні з int може помістити в себе в 2 рази більше додатних значень і тому він старший у ієрархії. Також варто відмітити, що при участі таких типів як: bool, short, char. Вони автоматично перетворюються у int.
Далі піде мова про перетворення типів у виразі (коді програми).
Ось ми і підійшли до того як визначити якого типу буде результат обчислення. Давайте спробуємо це зробити за допомогою уже відомих знань. Припустимо, що ми працюємо з такими змінними.
int I=27;
short S=2;
float F = 22.3;
bool B = false;
Користуючись цими змінними ми хочемо обчислити I-F+S*B
А ось і питання – У змінну якого типу потрібно записати результат? Відповідь досить проста, але спершу потрібно їх записати у вигляді їхніх типів. int-float+short*bool. Тепер згадаємо, що short та bool автоматично перетворяться у int .
Вираз зміниться на int-float+int*int. Тепер float буде = 0. При множенні двох типів int, результат також буде цього типу. А от int-float буде рівне float. Тут з’явилося нове правило:
Якщо у будь-якому виразі використовуються різні типи даних, то результат буде дорівнювати більшому з типів.
Таким чином результат виразу буде мати тип float.
float rez = I-F+S*B; // 27-22.3+*0
cout << rez << endl; // результат = 4,7
Тепер це все не настільки важливо, щоб визначити тип достатньо знайти найбільший тип який використовується при обчисленні виразу.
Але це не знімає з програміста всієї обережності при роботі з типами змінних.
При діленні цілого числа на ціле, результатом буде також ціле число.
int i=3;
int j=2;
cout << i / j; // = 1. Дробова частина втрачена оскільки обидва типи int
Потрібно вказати, що результат повинен бути типу float. Це робиться так:
int i=3;
int j=2;
cout << (float) i / j ; // На екрані 1.5
У мові C є такі групи стандартних типів даних: скалярні (цілі числа, дійсні числа, символи), агрегатні або структуровані, функції.
Скалярні типи даних:
int Ціле число.
long Довге ціле, може стояти перед означенням типу int, використовує 32 біти пам’яті та дозволяє зберігати числа в діапазоні від -2 147 483 648 до 2 147 483 647.
short Коротке ціле, може стояти перед означенням типу int, використовує 16 біт пам’яті та дозволяє зберігати числа в діапазоні від -32 768 до 32 767.
float Дійсні числа, що належать діапазону від ±3.4*10-38 до ±3.4*1038.
double Подвійної точності дійсне число, що належать діапазону від ±1.7*10-308 до ±1.7*10308.
long double Подвійної точності дійсне число для якого буде використовуватись 80 біт пам’яті і таким чином діапазон таких чисел збільшиться та стане — від ±3.4*10-4932 до ±3.4*104932.
char Символ – літера, цифра або інший символ з множини символів ASCII.
void Відсутність типу, використовується для опису функцій.
