Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СПОС(методичка).doc
Скачиваний:
2
Добавлен:
01.04.2025
Размер:
773.12 Кб
Скачать

2.1 Найпростіші конструкції мови

Ідентифікатори

Ідентифікатори визначають імена змінних, констант, функцій та типів даних. Ідентифікатор є послідовністю букв і цифр, яка починається з букви або з символу підкреслення. Тільки перші 31 символ є значущими для компілятора. Мова С розрізняє регістр букв, тому ідентифікатори variable і Variable не представлятимуть одне і те ж поняття.

Приклади допустимих ідентифікаторів: count, test32, high_balance.

Приклади недопустимих ідентифікаторів: 1count, hi!there, high..balance.

Ідентифікатор не може співпадати з ключовим словом С і не повинен мати таке ж ім'я, як функція, що вже міститься в бібліотеці С.

Ключьові слова

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

Як приклад нижче наведено декілька ключових слів:

byte, do, else, switch, int, sizeof.

Роздільники

Роздільники – це символи, які дозволяють встановити межі для конструкцій мови. До роздільників належать три види дужок, крапка, кома і крапка з комою.

Коментарі

Коментар – це частина тексту програми, яка не обробляється компілятором з метою створення коду. Коментарі складаються для саміих же програмістів.

У мові С існують три типи коментарів.

Однорядкові коментарі починаються з символів “//” і розповсюджуються до кінця рядка.

Багаторядкові коментарі починаються символами “/*”, закінчуються символами “*/” і можуть включати будь яку кількість рядків.

Пропуски

Програма на мові С записується в довільному форматі. В одному рядку можна записати декілька операторів або тільки один. Для зручності читання і відладки програми не рекомендується в одному рядку розміщувати більше одного оператора, а фігурні дужки, що обмежують функції або блоки, розміщувати в окремих рядках. Наявність пропусків обов’язкова між елементарними конструкціями мови (лексемами), якщо вони не розділені роздільниками.

2.2 Типи даних

Тип даних визначає необхідне місце в пам’яті для запису цього даного, формат його представлення, а також множину операцій, які можуть виконуватись над даним.

Мова С строго типізована. Це означає, що:

  • кожна змінна має тип і кожен тип строго визначений;

  • всі привласнення, явні або виконувані при передаачі параметрів у процесі виклику функцій , перевіряються на відповідність типів.

Є 5 базових типів даних: символьний, цілочисельний, речовинний з одинарною точністю, речовинний з подвійною точністю і void. Значення типу char використовуються для зберігання ASCII-кодів або будь-яких 8-бітових величин. Змінні типу int використовуються для зберігання цілих величин. Змінні типу float і double містять дійсні числа.

Тип void має три призначення. Перше - вказівка про неповернення значення функцією. Друге - вказівка про неотримання параметрів функцією. Третє - створення покажчиків, що нетипізуються.

С підтримує дещо інших типів, включаючи структури, об'єднання, бітові поля, переліки і типи, визначувані користувачем. Їх призначення розкриватиметься у міру вивчення матеріалу.

2.3 Змінні

Дані, використовувані програмою, можуть бути незмінними (константи) або такими, що змінюються в процесі виконання програми (змінні). Кожне дане має бути віднесене до певного типу. Якщо тип константи можна встановити за її значенням, то кожна змінна вимагає опису.

Опис змінних

Опис змінної має відповідати такому правилу:

Тип ідентифікатор [=значення], ідентифікатор[=значення]…];

Тут квадратні дужки є метасимволами. Конструкція, узята в квадратні дужки, не повинна бути обов’язково присутньою у визначенні.

З синтаксису опису виходить, що можна одночасно описати декілька змінних одного типу, а також при бажанні їх проініціалізувати. Нижче наведені приклади описів:

char ch,ch1=’*’;

int d=5,e,f=-1;

float fl;

double d1=0.5,d2;

Для описів в програмі не має певного місця. Єдина вимога – опис змінної має передувати її використовуванню.

Область видимості змінних

Кожна змінна оголошується у середині блока, який і визначає її область видимості. Блок починається з відкриваючої фігурної дужки і закінчується закриваючою фігурною дужкою. Якщо змінна є формальним параметром функції, то вона належить блоку, що є тілом методу.

Розрізняють локальні, глобальні, регістрові, зовнішні і статичні змінні.

Локальні змінні. Змінні, оголошені усередині блоку, локальні по відношенню до цього блоку, тобто вони видіми в цьому блоці. Локальні змінні запам'ятовуються в стеку разом адресами повернення з функції і стек динамічно то росте, то зменшується у міру того, як оператори викликають функції і відбувається повернення з них. Оскільки область дії локальних змінних обмежена областю функції, в яких вони оголошені, то дві функції можуть безконфліктно оголошувати дві змінні з однаковими іменами.

Будь-яка функція на початку роботи виділяє пам'ять в стеку для запам'ятовування своїх змінних. Ця пам'ять існує до тих пір, поки ця функція активна. Після свого повернення функція звільняє пам'ять і дані, що все зберігаються там, втрачаються.

Глобальні змінні існують протягом всього життєвого циклу програми і видимі в усіх точках програми. Вони запам'ятовуються в сегменті даних програми і займають пам'ять незалежно від те, потрібні вони чи ні.

Регістрові змінні запам'ятовуються безпосередньо в регістрі процесора і обробляються інструкціями в машинних кодах. Використання таких змінних може значно підвищити швидкодію програми.

Для оголошення регістрових змінних використовується специфікатор класу пам'яті register:

register int c;

Такі змінні найчастіше використовуються для змінних циклів, що управляють, і для запам'ятовування інших невеликих по значенню змінних. Регістрові змінні не можуть бути глобальними, а тільки локальними.

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

Змінні, оголошені поза модулем, в якому вони використовуються, називаються зовнішніми.

Для оголошення зовнішніх змінних використовується специфікатор класу пам'яті extern.

Статичні змінні. Якщо локальні змінні після завершення роботи блоку втрачаються, а їх значення потрібно зберегти, то використовуються змінні типу static.

При оголошенні такої змінної її потрібно ініціалізувати:

static int c=5;