- •Введення
- •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 Читання і запис текстових файлів
- •2.16 Структури даних
- •2.17 Перелік|перерахування| (enumeration)
- •2.18 Об'єднання (union)
- •3. Операційні системи і системне програмування
- •3.1. Поняття операційної системи
- •4. Корисні команди Linux
- •4.1. Загальні|спільні| команди
- •4.1.1. Команда arch – виведення архітектури комп'ютера
- •4.1.2. Команда clear – очищення екрану
- •4.1.3. Команда date
- •4.1.9. Команда uptime – інформація про роботу системи
- •4.1.10. Команда users – інформація про користувачів
- •4.1.11. Команди w, who і whoami інформація про користувачів
- •4.1.12. Команда xf8config – настройка графічної підсистеми
- •4.2. Команди для роботи з текстом
- •4.2.1. Команди diff і cmp
- •4.2.2. Команди grep і egrep – текстовий фільтр
- •4.2.3. Команди more и less – посторінкове виведення
- •4.2.4. Команди head і tail – виведення начала і хвоста файлу
- •4.2.5. Команда wc – підрахунок слів у файлі
- •5. Захист інформації в інформаційних системах
- •5.1 Основні завдання забезпечення безпеки
- •5.2 Базові поняття криптографії
- •5.2.1 Поняття криптографічного алгоритму і протоколу
- •5.2.2 Криптосистеми з секретним ключем
- •5.2.3 Криптосистеми із відкритим ключем
- •5.2.4. Гибридні криптосистеми
- •5.2.5. Цифрові підписи
- •5.2.6. Сертифікати
- •5.3. Принципи аутентифіекації і керування доступом
- •5.3.1. Основи аутентифікації
- •5.3.2. Основи керування доступом
- •5.4. Аутентифікація та керування доступом в unix
- •5.4.1. Облікові записи користувачів
- •5.4.2. Аутентифікація
- •5.4.3. Керування доступом
- •6. Програмний інтерфейс unix. Системні виклики і функції стандартних бібліотек
- •6.1. Підтримка програмування в oc unix. Вивчення передачі інформації
- •6.2. Змінні оточення
- •6.3. Обробка помилок
- •6.4. Правила формування і засоби розбору командних рядків
- •7. Операції над файлами
- •7.1 Файлові операції posix
- •7.2. Збирання інформації про атрибути файла
- •7.3. Операції над каталогами
- •Література
2.9 Організація циклів
Ділянки програми, які можуть багато разів повторюватися в процесі одного запуску програми, називаються циклами. У кожному циклі має бути умова його повторення. Якщо ця умова перевіряється до входу в цикл, говорять, що це цикл з передумовою, а якщо умова перевіряється в кінці циклу, то такий цикл називається циклом з постумовою. Цикл з передумовою може жодного разу не виконатися, тоді як цикл з постумовою виконується як мінімум один раз.
Оператор while
Оператор while є циклом з передумовою. Нижче наведений синтаксис оператора:
while(умова)
оператор
Умовою має бути булевий вираз. Внутрішній оператор циклу (тіло циклу) виконується до тих пір, поки значенням умова буде істина. Звичайно цикл охоплює декілька операторів, тоді їх потрібно об’єднати в блок.
Наприклад, наведений далі фрагмент програми дозволяє визначити суму всіх парних чисел від 4 до 56.
int S=0,i=4;
while(i<=56)
{
S+=i;
i+=2;
}
Оператор do-while
Цикл do-while є циклом з постумовою. Нижче наведений синтаксис цього оператора.
do
оператор
while(умова)
Умова має бути булевого типу. Одне виконання оператора do-while завжди забезпечене. Подальші виконання визначаються значенням умови. Якщо воно істинне, то цикл виконується. Інакше виконання циклу завершується. Аналогічно іншим операторам управління як внутрішній оператор можна використовувати блок.
Для виконання попередньої задачі відповідний фрагмент програми з застосуванням оператора do-while має такий вигляд.
int S=0,i=4;
do
{
S+=i;
i+=2;
}
while(i<=56)
Оператор for
Цикли while і do-while можуть реалізувати всі запити користувача по організації циклічних обчислень. Проте в тих випадках, коли відома кількість повтореньциклу зручно віикористовувати цикл for. З циклом for звичайно зв’язане поняття управляючої змінної циклу, яка набуває початкового значення при вході в цикл, змінюється згідно із законом, визначеним у заголовку циклу після кожного його виконання і порівнюється з деяким межовим значенням для вироблення рішення про продовження обчислень або їх завершення. Нижче наведений синтаксис циклу.
for(ініціалізація_управляючої_змінної;
перевірка_умови_закінчення_циклу;
зміна_значення_управляючої_змінної)
оператор
Як управляюча змінна використовуються змінні будь-яких числових типів.
Наприклад, наведений далі фрагмент програми дозволяє визначити суму всіх парних чисел від 2 до 38:
int i, S=0;
for(i=2; i<=38;i+=2)
S+=i;
2.10 Оператор break
Оператор break використовується у таких випадках:
для виходу з оператора switch;
для виходу з циклу;
Перший варіант використовування оператора break вже розглянуто у підрозд. 2.8.
Для виходу з циклу оператор break розтошовують у циклі як внутрішній оператор умовного оператора if, як це зроблено у наступному прикладі, де оператор break дозволяє запобігти ділення на 0.
…
for(i=0;i<x;i++)
{
…
if(b==i)
break;
Y=a/(b-i);
…
}
2.11 Оператор continue
Оператор continue використовується тільки в циклах. Він перериває виконання операторів, що складають тіло циклу і повертає управляння заголовку циклу. При цьому заголовок працює так, ніби чергова ітерація завершилася. Конкретно в циклах while і do-while управляння передається умові, а в циклі for – третьому елементу заголовка, змічуючому управляючу змінну. У наступному прикладі, якщо b==i, обчислення Y не відбудеться, але виконання циклу буде продовжено.
for(i=0;i<x;i++)
{
…
if(b==i)
continue;
Y=a/(b-i);
…
}
