Поговоримо про типи. Частина 1.

Опубліковано: 2008-12-03   06:14:33

C/C++Минулого разу ми написали першу програму мовою C. При написанні ми зіштовхнулись з поняттям типу, яке є важливим не лише для мови програмування С, а ще я для багатьох інших мов програмування. Тому вважаю за необхідне наступним кроком заглибитись в це поняття та розглянути прості типи та операції з ними

Трошки теорії про типи даних

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

- множину значень;

- набір операцій;

- способи зберігання та виконання операцій.

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

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

Типи даних мови С

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

Фактично типи мови C можна поділити на два великих класи: прості та складені. Різниця між ними полягає в структурі: перші є примітивними елементами, а другі вже мають певну структуризацію, що задається програмістом.

Класифікація

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

Поняття змінної

Як же типізація використовується на практиці. Справа в тому, що для зберігання даних в мовах програмування використовуються спеціальні контейнери, що називаються "змінна". Змінна - зв'язок між певним символічним іменем (ідентифікатором) та областю в пам'яті виділеним для збереження даних. Кожна змінна в мові С має

1. Клас збереження.

2. Тип.

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

Описується змінна таким чином:

[клас збереження] тип ідентифікатор

Наприклад,

int i;

Про цілий тип int я вже згадував попереднього разу і детальніше розповім наступного разу. Такою конструкцією ми описали змінну з ідентифікатором i цілого типу. Тобто має виділятись область пам'яті, що буде зв'язана з ідентифікатором i. Значить за цим ідентифікатором ми можемо до неї звертатись. А отже рядок:

i = 0;

Буде значити, що ми кладемо в комірку пам'яті зв'язану з цим ідентифікатором значення 0. Для прикладу використання змінних модифікуємо попередньо написану програму.

#include 'stdio.h' int main() { int i; puts("Hello, world!"); i = 0; return i; }

Тепер наша програма в створює змінну, встановлює її значення та повертає його, як результат свого виконання. Приклад синтетичний і введення змінних ніякої користі не приносить, однак дозволяє показати як ними користуватись.

Скажу два правила, яких слід дотримуватись при роботі зі змінними в мові С:

1. Всі змінні мають описуватись до першої командного рядка. (в прикладі єдина змінна i описана до виклику бібліотечної функції чи присвоєння).

2. Всі змінні мають бути описані до їх використання та проініціалізовані до їх використання.

До речі, змінні ініціалізуватись одразу при описанні. Наприклад:

int i = 0;

Які зміни це дозволяє внести в код програми пропоную Вам самостійно поміркувати.

Гадаю, що на цей раз інформації вистачить. Наступного разу розповім про прості цілі типи детальніше, та ще трошки розповім про функції введення/виведення.

Щоб не пропустити наступний випуск підписуйтесь на rss та поштову розсилку. Дякую за увагу.

Коментарі: 2
 

Коментарі:

Noxx2008-12-12 16:19:51 :

Мову С треба вчити за для майбутнього переходу у Java. Якшо Андрiй дозволить менi, я з величезною радiстю зможу пояснити основи та цiкавi можливостi Java.

 
GrAndSE2008-12-14 09:40:31 :

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

 

Додати коментар

user

email

url

text

Повідомляти про новікоментарі