ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 16.09.2024

Просмотров: 22

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

ЛЕКЦІЯ 9. Базові засоби мови СІ++

План

  1. Склад мови

  2. Типи даних в Сі++

  3. Знаки операцій в Сі++

  4. Вирази

  5. Введення і виведення даних

Склад мови

У тексті на будь-якій природній мові можна виділити чотири основні елементи: символи, слова, словосполуки і пропозиції. Алгоритмічна мова також містить такі елементи, лише слова називають лексемами (елементарними конструкціями ), словосполучення – виразами, пропозиції – операторами. Лексеми утворюються з символів, вираження з лексем і символів, оператори з символів виразів і лексем (Мал. 1.1)

Мал. 1.1. Склад алгоритмічної мови

Таким чином, елементами алгоритмічної мови є:

  1. Алфавіт мови Сі++, яка включає

  • прописні і рядкові латинські букви і знак підкреслення;

  • арабські цифри від 0 до 9;

  • спеціальні знаки “{},| []()+-/%*.\’:;&?<>=!#^

  • пробільні символи (пропуск, символ табуляції, символи переходу на новий рядок).

  1. З символів формуються лексеми мови:

  • Ідентифікатори – імена об'єктів сі-програм. У ідентифікаторі можуть бути використані латинські букви, цифри і знак підкреслення. Прописні і рядкові букви розрізняються, наприклад, 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\”Алгоритмические мови програмування високого рівня \”” .

Типи даних в Сі++

Дані відображують в програмі навколишній світ. Мета програми полягає в обробці даних. Дані різних типів зберігаються і обробляються по-різному. Тип даних визначає:

  1. внутрішнє представлення даних в пам'яті комп'ютера;

  2. безліч значень, які можуть приймати величини цього типа;

  3. операції і функції, які можна застосовувати до даних цього типа.

Залежно від вимог завдання програміст вибирає типа для об'єктів програми. Типів Сі++ можна розділити на простих і складених. До простих типів відносять типів, які характеризуються одним значенням. У Сі++ визначено 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) існує, поки працює програма.