Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
О.О.П / ооп / 4_кол / Лекції / ООП (2.Початкові відомості мови С).doc
Скачиваний:
25
Добавлен:
30.05.2020
Размер:
351.74 Кб
Скачать

Лекція (4 г.) :

Тема: Початкові відомості про мову C++. Алфавіт, базові типи і опис даних

План:

  1. Імена в Сі++

  2. Змінні в Сі++

  3. Константи в Сі++

  4. Вирази в Сі++

  5. Операції порівняння і привласнення в Сі++

  6. Арифметичні операції

  7. Логічні операції

  1. Імена в Сі++

Алфавіт

У алфавіт мови Сі++ входять:

• латинські букви: від а до z (рядкові) і від A до Z (прописні);

• десяткові цифри: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9;

• спеціальні символи: "{ }, I [ ] ( ) + - / % \; ' : ? < = > _ ! & # ~ ^ . *

До спеціальних символів відноситься також пробіл. У коментарях, рядках і символьних константах можуть використовуватися і інші знаки (наприклад, російські букви).

Комбінації деяких символів, не розділених пропусками, інтерпретуються як один значимий символ. До них відносяться:

++ — == && || «»>=<=+=-=*=/=?: /**///

У Сі++ в якості обмежувачів коментарів можуть використовуватися як пари символів /* і */, прийняті в мові Сі, так і символи //, використовувані тільки в Сі++. Ознакою кінця такого коментаря є невидимий символ переходу на новий рядок. Приклади:

/* Це коментар, допустимий в Сі і Сі++ */

// Це рядковий коментар, використовуваний тільки в Сі++

З символів алфавіту формуються лексеми — одиниці тексту програми, які при компіляції сприймаються як єдине ціле і не можуть бути розділені на дрібніші елементи. До лексем відносяться ідентифікатори, службові слова, константи, знаки операцій, роздільники.

Ідентифікатори. Послідовність латинських букв, цифр, символів підкреслення (_), що розпочинається з букви або символу підкреслення, є ідентифікатором. Наприклад:

В12 rus hard_RAM_disk MAX ris_32

На відміну від Паскаля в Сі/Сі++ розрізняються прописні і рядкові букви. Це означає, що, наприклад, flag, FLAG, Flag, FlAg — різні ідентифікатори.

Обмеження на довжину ідентифікатора можуть розрізнятися в різних реалізаціях мови. Компілятори фірми Borland дозволяють використовувати до 32 перших символів імені. У деяких інших реалізаціях допускаються ідентифікатори завдовжки не більше 8 символів.

Службові (ключові) слова. Як і в Паскалі, службові слова в Сі — це ідентифікатори, призначення яких однозначно визначене в мові. Вони не можуть бути використані як вільно вибирані імена. Повний список службових слів залежить від реалізації мови, т. е. розрізняється для різних компіляторів. Проте існує незмінне ядро, яке визначене стандартом Сі++. Ось його список:

Додаткові до цього списку службові слова приведені в описах конкретних реалізацій Сі++. Деякі з них розпочинаються з символу підкреслення, наприклад: ^export, _ds, _AH та ін. Існують службові слова, що розпочинаються з подвійного підкреслення. У зв'язку з цим програмістові не рекомендується використовувати у своїй програмі ідентифікатори, що розпочинаються з одного або двох підкреслень, щоб уникнути збігу із службовими словами.

Типи даних

Концепція типів даних є найважливішою стороною будь-якої мови програмування. Особливість Паскаля полягає у великій різноманітності типів. Схема типів даних для мови Сі++ представлена на мал. 1.

Рис. 1

Порівняння схем призводить до висновку про те, що різноманітність типів даних в Сі++ менша, ніж в Турбо Паскале.

У Сі/Сі++ є чотири базові арифметичні (числових) типи даних. З них два цілочисельних — char, int — і два плаваючих (речових) — float і double. Крім того, в програмах можна використовувати деякі модифікації цих типів, що описуються за допомогою службових слів — модифікаторів. Існують два модифікатори розміру — short (короткий) і long (довгий) — і два модифікатори знаків — signed (знаковий) і unsigned (беззнаковий). Знакові модифікатори застосовуються тільки до цілих типів.

Як відомо, тип величини пов'язаний з її формою внутрішнього представлення, безліччю значень, що набувають, і безліччю операцій, застосованих до цієї величини. У таблиці. 1 перераховані арифметичні типи цих Сі++, вказаний об'єм займаної пам'яті і діапазон допустимих значень.

Розмір типу int і unsigned int залежить від розміру слова операційної системи, в якій працює компілятор Сі++. У 16-розрядних ОС (MS DOS) цим типам відповідають 2 байти, в 32-розрядних (Windows) — 4 байти.

Аналізуючи таблицю 1, можна зробити наступні висновки:

• якщо не вказаний базовий тип, то за умовчанням мається на увазі int;

• якщо не вказаний модифікатор знаків, то за умовчанням мається на увазі signed;

• з базовим типом float модифікатори не вживаються;

• модифікатор short застосований тільки до базового типу int. У відмінності від Паскаля, тип char зарахований до арифметичних типів. Адже навіть його ім'я вказує на те, що це символьний тип! У Сі/Сі++ величини типу char можуть розглядатися в програмі і як символи, і як цілі числа. Усе залежить від контексту, т. е. від способу використання цієї величини. У разі інтерпретації величини типу char як символу її числове значення являється ASCII -кодом. Наступний приклад ілюструє сказане.

char a = 6 5 ;

printf("%c", a);/*На екрані з'явиться символ А*/

printf("%d", a);/*На екрані з'явиться число 65*/

Символи "%c" є специфікацією формату введення/виведення символьних даних, а "%d" — специфікацією для цілих чисел.

Ще однією особливістю Сі, є відсутність серед базових типів логічного типу даних. Між тим, як ми далі побачимо, в Сі використовуються логічні операції і логічні вирази. В якості логічних величин в Сі/Сі++ виступають цілі числа. Інтерпретація їх значень в логічні величини відбувається за правилом: дорівнює нулю — брехня (у Паскале — false), не дорівнює нулю — істина (у Паскале — true).

У останні версії Сі++ доданий окремий логічний тип з ім'ям bool. Його відносять до різновиду цілих типів даних.

Опис змінних в програмах на Сі/Сі++ має вигляд:

Ім'я_типу список змінних;

Приклади описів :

char symbol, cc;

unsigned char code;

int number, row;

unsigned long long_number;

float x, X, cc3;

double e, b4;

long double max_num;

Одночасно з описом можна задати початкові значення змінних. Така дія називається ініціалізацією змінних. Опис з ініціалізацією проводиться за наступною схемою:

тип ім'я_змінної = початкове_значення

Наприклад:

float pi=3.14159, c=l.23;

unsigned int year=2000;

Константи.

Запис цілих констант.

Цілі десяткові числа, що розпочинаються не з нуля, наприклад: 4, 356, — 128.

Цілі вісімкові числа, запис яких розпочинається з нуля, наприклад: 016, 077.

Цілі шістнадцятиричні числа, запис яких розпочинається з символів 0х, наприклад: 0х1А, 0х253, 0xFFFF.

Тип константи компілятор визначає за наступними правилами: якщо значення константи лежить в діапазоні типу int, то вона отримує тип int; інакше перевіряється, чи лежить константа в діапазоні типу unsigned int, у разі позитивної відповіді вона отримує цей тип; якщо не підходить і він, то пробується тип long і, нарешті, unsigned long. Якщо значення числа не укладається в діапазон типу unsigned long, то виникає помилка компіляції.