ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 09.09.2024
Просмотров: 23
Скачиваний: 0
ЛЕКЦІЯ 9. Базові засоби мови СІ++
План
-
Склад мови
-
Типи даних в Сі++
-
Знаки операцій в Сі++
-
Вирази
-
Введення і виведення даних
Склад мови
У тексті на будь-якій природній мові можна виділити чотири основні елементи: символи, слова, словосполуки і пропозиції. Алгоритмічна мова також містить такі елементи, лише слова називають лексемами (елементарними конструкціями ), словосполучення – виразами, пропозиції – операторами. Лексеми утворюються з символів, вираження з лексем і символів, оператори з символів виразів і лексем (Мал. 1.1)
Мал. 1.1. Склад алгоритмічної мови
Таким чином, елементами алгоритмічної мови є:
-
Алфавіт мови Сі++, яка включає
-
прописні і рядкові латинські букви і знак підкреслення;
-
арабські цифри від 0 до 9;
-
спеціальні знаки “{},| []()+-/%*.\’:;&?<>=!#^
-
пробільні символи (пропуск, символ табуляції, символи переходу на новий рядок).
-
З символів формуються лексеми мови:
-
Ідентифікатори – імена об'єктів сі-програм. У ідентифікаторі можуть бути використані латинські букви, цифри і знак підкреслення. Прописні і рядкові букви розрізняються, наприклад, PROG1, prog1 і Prog1 – три різні ідентифікатори. Першим символом має бути буква або знак підкреслення (але не цифра). Пропуски в ідентифікаторах не допускаються.
-
Ключові (зарезервовані) слова – це слова, які мають спеціальне значення для компілятора. Їх не можна використовувати як ідентифікатори.
-
Знаки операцій – це один або декілька символів, що визначають дію над операндами. Операції діляться на унарні, бінарні і тернарні по кількості операндів, що беруть участь в цій операції.
-
Константи – це незмінні величини. Існують цілі, дійсні, символьні і строкові константи. Компілятор виділяє константу як лексему (елементарній конструкції) і відносить її до одного з типів по її зовнішньому вигляду.
-
Роздільники – дужки, крапка, кома пробільні символи.
Константи в Сі++
Константа – це лексема, що представляє зображення фіксованого числового, строкового або символьного значення.
Константи діляться на 5 груп:
-
цілі;
-
дійсні (з плаваючою крапкою);
-
перераховувані;
-
символьні;
-
строкові.
Компілятор виділяє лексему і відносить її до тієї або іншої групи, а потім усередині групи до певного типа по її формі запису в тексті програми і по числовому значенню.
Цілі константи можуть бути десятковими, вісімковими і шістнадцятиричними. Десяткова константа визначається як послідовність десяткових цифр, що починається не з 0, якщо це число не 0 (приклади: 8, 0, 192345). Вісімкова константа – це константа, яка завжди починається з 0. За 0 слідують вісімкові цифри (приклади: 016 – десяткове значення 14, 01). Шістнадцятиричні константи – послідовність шістнадцятиричних цифр, яким передують символи 0х або 0Х (приклади: 0хА, 0Х00F).
Залежно від значення цілої константи компілятор по-різному представить її в пам'яті комп'ютера (тобто компілятор припише константі відповідного типа даних).
Дійсні константи мають іншу форму внутрішнього представлення в пам'яті комп'ютера. Компілятор розпізнає такі константи по їх вигляду. Дійсні константи можуть мати дві форми представлення: з фіксованою крапкою і з плаваючою крапкою. Вигляд константи з фіксованою крапкою:[цифри].[цифри] (приклади: 5.7, .0001, 41.).Вид константи з плаваючою крапкою: [цифри][.][цифри]E|e[+|-][цифри] (приклади:0.5е5, .11е-5, 5Е3). У записі дійсних констант може опускатися або ціла, або дробова частини, або десяткова крапка, або ознака експоненти з показником міри.
Перераховувані константи вводяться за допомогою ключового слова enum. Це звичайні цілі константи, яким приписані унікальні і зручні для використання позначення. Приклади: enum { one=1, two=2, three=3,four=4};
enum {zero,one,two,three} – якщо у визначенні констант, перераховувані, опустити знаки = і числові значення, то значення приписуватимуться за умовчанням. При цьому найлівіший ідентифікатор набуде значення 0, а кожен подальший збільшуватиметься на 1.
enum { ten=10, three=3, four, five, six};
enum {Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday} ;
Символьні константи – це один або два символи, ув'язнені в апострофи. Символьні константи, що складаються з одного символу, мають тип char і займають в пам'яті один байт, символьні константи, що складаються з двох символів, мають типа int і займають два байти. Послідовності, що починаються із знаку \, називаються такими, що управляють, вони використовуються:
-
Для представлення символів, що не мають графічного відображення, наприклад:
\а – звуковий сигнал
\b – повернення на один крок
\n – переклад рядка
\t – горизонтальна табуляція.
-
Для представлення символів: \, ’, ?, ” ( \\, \’,\?,\” ).
-
Для представлення символів за допомогою шістнадцятиричних або вісімкових код (\073, \0хF5).
Строкова константа – це послідовність символів, ув'язнений в лапки. В середині рядків також можуть використовуватися символи, що управляють. Наприклад: “\nНовий рядок”
“\n\”Алгоритмические мови програмування високого рівня \”” .
Типи даних в Сі++
Дані відображують в програмі навколишній світ. Мета програми полягає в обробці даних. Дані різних типів зберігаються і обробляються по-різному. Тип даних визначає:
-
внутрішнє представлення даних в пам'яті комп'ютера;
-
безліч значень, які можуть приймати величини цього типа;
-
операції і функції, які можна застосовувати до даних цього типа.
Залежно від вимог завдання програміст вибирає типа для об'єктів програми. Типів Сі++ можна розділити на простих і складених. До простих типів відносять типів, які характеризуються одним значенням. У Сі++ визначено 6 простих типів даних:
-
int (цілий)
-
char (символьний)
-
wchar_t (розширений символьний)
-
bool (логічний)
-
float(дійсний)
-
double (дійсний з подвійною точністю)
Існує 4 специфікатори типа, що уточнюють внутрішню представлення і діапазон стандартних типів
-
short (короткий)
-
long (довгий)
-
signed (знаковий)
-
unsigned (беззнаковий)
1. Тип int
Значеннями цього типа є цілі числа.
Розмір типа int не визначається стандартом, а залежить від комп'ютера і компілятора. Для 16-розрядного процесора під нього відводиться 2 байти, для 32-розрядного – 4 байти.
Якщо перед int розміщен специфікатор short, то під число відводиться 2 байти, а якщо специфікатор long, то 4 байти. Від кількості пам'яті, що відводиться під об'єкт, залежить безліч допустимих значень, які може приймати об'єкт:
short int - займає 2 байти, отже, має діапазон – 32768 ..+32767;
long int – займає 4 байти, отже, має діапазон – 2 147 483 648..+2 147 483 647
Тип int збігається з типом short int на 16-розрядних ПК і з типом long int на 32-розрядних ПК.
Модифікатори signed і unsigned також впливають на безліч допустимих значень, які може приймати об'єкт:
unsigned short int - займає 2 байти, отже, має діапазон 0 ..65536;
unsigned long int – займає 4 байти, отже, має діапазон 0..+4 294 967 295.
2. Тип char
Значеннями цього типа є елементи кінцевої впорядкованої безлічі символів. Кожному символу ставиться у відповідність число, яке називається кодом символу. Під величину символьного типа відводиться 1 байт. Тип char може використовуватися із специфікаторами signed і unsigned. У даних типа signed char можна зберігати значення в діапазоні від –128 до 127. При використанні типа unsigned char значення можуть знаходитися в діапазоні від 0 до 255. Для кодування використовується код ASCII(American Standard Code foe International Interchange). Символи з кодами від 0 до 31 відносяться до службових і мають самостійне значення лише в операторах введення-виводу.
Величини типа char також застосовуються для зберігання чисел з вказаних діапазонів.
3. Тип wchar_t
Призначений для роботи з набором символів, для кодування яких недостатньо 1 байта, наприклад Unicode. Розмір цього типа, як правило, відповідає типові short. Строкові константи такого типа записуються з префіксом L: L“String #1”.
4. Тип bool
Тип bool називається логічним. Його величини можуть набувати значень true і false. Внутрішня форма представлення false – 0, будь-яке інше значення інтерпретується як true.
5. Типи з плаваючою крапкою
Внутрішнє представлення дійсного числа складається з 2 частин: мантиси і порядку. У IBM- сумісних ПК величини типа float займають 4 байти, з яких один розряд відводиться під знак мантиси, 8 розрядів під порядок і 24 – під мантису.
Величини типи double займають 8 байтів, під порядок і мантису відводяться 11 і 52 розряди відповідно. Довжина мантиси визначає точність числа, а довжина порядку його діапазон.
6. Тип void
До основних типів також відноситься тип void Безліч значень цього типа – порожньо.
Змінні
Змінна в СІ++ - іменована область пам'яті, в якій зберігаються дані певного типа. В змінної є ім'я і значення. Ім'я служить для звернення до області пам'яті, в якій зберігається значення. Перед використанням будь-яка змінна має бути описана. Приклади:
int а; float x;
Загальний вигляд оператора опису:
[Клас пам'яті][const]тип ім'я [ініціалізатор];
Клас пам'яті може набувати значень: auto, extern, static, register. Клас пам'яті визначає час життя і зону видимості змінної. Якщо клас пам'яті не вказаний явно, то компілятор визначає його виходячи з контексту оголошення. Час життя може бути постійним – протягом виконання програми або тимчасовим – протягом блоку. Зона видимості – частина тексту програми, з якої допустимий звичайний доступ до змінної. Зазвичай зона видимості збігається із зоною дії. Окрім того випадку, коли у внутрішньому блоці існує змінна з таким же ім'ям.
Const – показує, що цю змінну не можна змінювати (іменована константа).
При описі можна привласнити змінній початкове значення (ініціалізація).
Класи пам'яті:
auto – автоматична локальна змінна. Специфікатор auto може бути заданий лише при визначенні об'єктів блоку, наприклад, в тілі функції. Цим змінним пам'ять виділяється при вході в блок і звільняється при виході з нього. Поза блоком такі змінні не існують.
extern – глобальна змінна, вона знаходиться у іншому місці програми (у іншому файлі або далі по тексту). Використовується для створення змінних, які доступні у всіх файлах програми.
static – статична змінна, вона існує лише в межах того файлу, де визначена змінна.
register - аналогічні auto, але пам'ять під них виділяється в регістрах процесора. Якщо такої можливості немає, то змінні обробляються як auto.
Приклад
int а; //глобальная змінна
void main(){
int b; //локальная змінна
extern int x; //змінна х визначена у іншому місці
static int с; //локальная статична змінна
a=1; //привласнення глобальною змінною
int а; //локальная змінна а
a=2; // привласнення локальною змінною
::a=3; // привласнення глобальною змінною
}
int x=4; //визначення і ініціалізація х
У прикладі змінна а визначена поза всіма блоками. Зоною дії змінної а є вся програма, окрім тих рядків, де використовується локальна змінна а. Змінні b і с – локальні, зона їх видимості – блок. Час життя різний: пам'ять під b виділяється при вході в блок (оскільки за умовчанням клас пам'яті auto), звільняється при виході з нього. Змінна с (static) існує, поки працює програма.