- •6.080401 «Інформаційні управляючи системи і технології» 6.080402 «Інформаційні технології проектування»
- •1. Структура та обсяг дисципліни
- •2. Основи програмування на мові с
- •2.1 Найпростіші конструкції мови
- •2.2 Типи даних
- •2.4 Операції мови с
- •2.5 Структура простої с програми
- •2.6 Організація введення-виведення
- •2.7 Компіляція в системі Linux
- •2.8 Організація розгалужень в програмі
- •2.9 Організація циклів
- •2.10 Оператор break
- •2.11 Оператор continue
- •2.11 Масиви
- •2.12 Функції
- •2.13 Рекурсивні функції
- •2.14 Читання і запис текстових файлів
- •2.15 Структури даних
- •3. Операційні системи
- •3.1. Поняття операційної системи
- •3.1.1 Призначення операційної системи
- •3.1.2 Операційна система як розширена машина
- •3.1.3 Операційна система як розподілювач ресурсів
- •3.2 Класифікація сучасних операційних систем
- •4 Архітектура операційних систем
- •4.1 Базові поняття архітектури операційних систем
- •4.1.1 Ядро системи. Привілейований режим і режим користувача
- •4.2 Реалізація архітектури операційних систем
- •4.2.1 Монолітні системи
- •4.2.2 Багаторівневі системи
- •4.3 Системи з мікроядром
- •4.4 Концепція віртуальних машин
- •5. Підтримка програмування в oc unix.
- •5.1. Вивчення передачі інформації
- •5.2. Змінні оточення
- •5.3. Обробка помилок
- •5.4. Правила формування і засоби розбору командних рядків
- •6. Логічна організація файлових систем
- •6. 1. Поняття файла і файлової системи
- •6.1.1. Поняття файла
- •6.1.2. Поняття файлової системи
- •6.1.3. Типи файлів
- •6.1.4. Імена файлів
- •6. 2. Організація інформації у файловій системі
- •6.2.1. Розділи
- •6.2.2. Каталоги
- •6.2.3. Зв’язок розділів і структури каталогів
- •6. 3. Зв’язки
- •6. 3. 1. Жорсткі зв’язки
- •6. 3. 2. Символічні зв’язки
- •6. 4. Атрибути файлів
- •6. 5. Операції над файлами і каталогами
- •6. 5. 1. Підходи до використання файлів процесами
- •6. 5. 2. Загальні відомості про файлові операції
- •7. Файлові операції posix
- •7.1. Відкриття і створення файлів
- •7.2. Закриття файла
- •7.3. Читання і записування даних
- •7.4. Збирання інформації про атрибути файла
- •7.5 Операції над каталогами
- •Література
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;