Поговоримо про типи. Частина 1.
Минулого разу ми написали першу програму мовою C. При написанні ми зіштовхнулись з поняттям типу, яке є важливим не лише для мови програмування С, а ще я для багатьох інших мов програмування. Тому вважаю за необхідне наступним кроком заглибитись в це поняття та розглянути прості типи та операції з ними
Трошки теорії про типи даних
Тип - відносно самостійна та стійка сукупність даних, що може бути виділена на всій множині. З точки зору програмування тип визначає:- множину значень;
- набір операцій;
- способи зберігання та виконання операцій.
Справа в тому, що починаючи ще з асемблера розрізняють цілий та дійсний типи даних. Це пояснюється тим, що зберігання значень кожного типу розрізняється за об'ємом необхідної для цього пам'яті, внутрішнім представленням числа в пам'яті та доступними операціями (а також тим, яким чином вони виконуються). Детальніше про те як дані різних типів зберігаються в пам'яті я буду розповідати, коли мова йтиме саме про конкретні типи даних.
Слід зазначити, що мови програмування можна поділити на мови з поліморфною або динамічною типізацією, з неявною типізацією та жорсткою типізацією. В першому класі мов тип визначається та обирається в залежності від даних, що зберігаються. В другому випадку, типізація є жорсткою, однак різниця полягає не в жорсткому зв'язуванні контейнера для даних з певним типом, а в різному за синтаксисом зверненні до різнотипних контейнерів даних. І останній клас мов, до якого і належить мова С, вимагає явного зазначення типу.
Типи даних мови С
Взагалі то той варіант класифікації типів не може вважатись єдиним можливим. Різні автори в літературі та мережі пропонують різні класифікації. Тому не дивуйтесь, якщо зустрінете трошки інший підхід.
Фактично типи мови C можна поділити на два великих класи: прості та складені. Різниця між ними полягає в структурі: перші є примітивними елементами, а другі вже мають певну структуризацію, що задається програмістом.
Як я і казав вони виділяються за значеннями допустимими для даного типу. Тому серед простих типів виділяють цілі (цілі числа), дійсні , символьний тип та перераховувані, що видно з наведеної вище схеми. До типів складних я планую повернутись в майбутньому.
Поняття змінної
Як же типізація використовується на практиці. Справа в тому, що для зберігання даних в мовах програмування використовуються спеціальні контейнери, що називаються "змінна". Змінна - зв'язок між певним символічним іменем (ідентифікатором) та областю в пам'яті виділеним для збереження даних. Кожна змінна в мові С має
1. Клас збереження.
2. Тип.
3. Ідентифікатор.
Описується змінна таким чином:
[клас збереження] тип ідентифікатор
Наприклад,
Про цілий тип int я вже згадував попереднього разу і детальніше розповім наступного разу. Такою конструкцією ми описали змінну з ідентифікатором i цілого типу. Тобто має виділятись область пам'яті, що буде зв'язана з ідентифікатором i. Значить за цим ідентифікатором ми можемо до неї звертатись. А отже рядок:
Буде значити, що ми кладемо в комірку пам'яті зв'язану з цим ідентифікатором значення 0. Для прикладу використання змінних модифікуємо попередньо написану програму.
Тепер наша програма в створює змінну, встановлює її значення та повертає його, як результат свого виконання. Приклад синтетичний і введення змінних ніякої користі не приносить, однак дозволяє показати як ними користуватись.
Скажу два правила, яких слід дотримуватись при роботі зі змінними в мові С:
1. Всі змінні мають описуватись до першої командного рядка. (в прикладі єдина змінна i описана до виклику бібліотечної функції чи присвоєння).
2. Всі змінні мають бути описані до їх використання та проініціалізовані до їх використання.
До речі, змінні ініціалізуватись одразу при описанні. Наприклад:
Які зміни це дозволяє внести в код програми пропоную Вам самостійно поміркувати.
Гадаю, що на цей раз інформації вистачить. Наступного разу розповім про прості цілі типи детальніше, та ще трошки розповім про функції введення/виведення.
Щоб не пропустити наступний випуск підписуйтесь на rss та поштову розсилку. Дякую за увагу.
Коментарі:
Мову С треба вчити за для майбутнього переходу у Java. Якшо Андрiй дозволить менi, я з величезною радiстю зможу пояснити основи та цiкавi можливостi Java.
Не обов'язково куди б то не було переходити, хоча й такий варіант є цілком нормальним та виправданим. Цілком з тобою згодний, знання C є доброю основою для багатьох інших мов програмування.



