- •Міністерство освіти і науки України
- •Жуковецька с.Л., Шестопалов с.В.
- •Анотація
- •Введення
- •Лабораторна робота №1 Технологія розробки програм у середовищі Linux
- •1. Команди роботи з командним інтерпретатором ос unix
- •2. Створення програми
- •3. Функції введення-виведення.
- •4. Приклад програми
- •5. Основні керуючі конструкції мови с
- •6. Індівідуальні завдання
- •Лабораторна робота № 2. Автоматизація пакетних завдань
- •1. Компіляція багатомодульною програми
- •2. Автоматизація пакетних завдань
- •4. Завдання
- •Лабораторна робота № 3. Взаємодія програми з середовищем виконання
- •1. Аргументи командного рядка
- •2. Змінні оточення
- •3. Індівідуальні завдання
- •Лабораторна робота №4. Контроль виконання програми
- •1. Коди завершення програми
- •2. Функції обробки значення errno
- •3. Функція atexit()
- •4. Макрос asssert()
- •5. Індівідуальні завдання
- •Лабораторна робота №5 Файлові api.
- •1 Основні поняття
- •2. Права доступу до файлів
- •3. Інтерфейси для файлового введення / виводу
- •4. Системні виклики роботи з файлами
- •5. Індівідуальні завдання
- •Варіанти завдань
- •Лабораторна робота №6 Робота з каталогами та посиланнями
- •Методичні вказівки
- •1. Створення та видалення каталогу
- •2. Читання каталогу
- •3. Зміна каталогу
- •4. Управління жорсткими посиланнями
- •5. Управління символічними посиланнями
- •6. Перейменування файлів і каталогів
- •7. Індівідуальні завдання
- •Лабораторна робота №7. Одержання і відображення метаданих файлу.
- •Методичні вказівки
- •1. Механізми управління файлами ос unix
- •2. Отримання даних індексного дескриптору
- •3. Додаткові функції маніпулювання даними індексних дескрипторів
- •4. Отримання даних про відкриті файли
- •5. Індівідуальні завдання
- •Лабораторна робота №8. Керування процесами
- •Методичні вказівки
- •1. Загальні поняття
- •2. Створення поцесу
- •4. Перезавантаження програми процесу
- •5. Завершення виконання процесу
- •6. Системні виклики wait, waitpid
- •7. Індівідуальні завдання
- •Лабораторна робота №9. Використання каналів
- •Методичні вказівки
- •1. Заганьні відомості
- •2. Використання каналів
- •3. Індівідуальні завдання
- •Варіанти завдань
- •Лабораторна робота №10 Використання повідомлень
- •Методичні вказівки
- •1. Загальні відомості
- •2. Використання повідомлень
- •3. Індівідуальні завдання
- •Література
- •Системне програмування Посібник до виконання лабораторних та самостійних робіт
- •65082, Одеса, вул. Дворянська, 1/3
4. Приклад програми
Приклад програми, що виводить на екран привітання:
# include <stdio.h>
int main (void)
{printf ("Hello, World! \ N");
return 0;}
5. Основні керуючі конструкції мови с
Умовний оператор if ...else.
if (умова)
оператор1
else
оператор2
Якщо умова істинна, то виконуватися перший оператор, інакше другий. Якщо в умові відпрацьовують кілька операторів, то вони поміщаються фігурні дужки. Друга частина (else) може опускатися якщо нам не потрібно обробляти помилкове умова. Допускається вкладення умовних операторів. При порівнянні на рівність необхідно пам'ятати, що a = b пишеться як a == b (подвійне одно, інакше ми отримаємо прісваеніе, тобто a приклад значення рівне b). Інші операції порівняння: більше (>), менше (<), не дорівнює (!=), логічна операція І (&&), логічна операція АБО (||).
Приклад (оператор - пошук мінімального з двох чисел)
printf ("Мінімальна зі значень% i і% i одно", a, b);
int a = 1;
int b = 2;
if (a <b)
printf ("% d ", a);
else
printf ("% d ", b);
if (a == b)
printf (" (обидва числа однакові) ");
printf (" \ n ");
Ітераційний цикл - цикл керований лічильником.
for (ініціалізація; умова; операція)
{оператори}
Перший параметр ініціалізує лічильник, другий - умова при істинності якого виконуються оператори, третій - операція виконується перед новою итерацией.
Приклад (обчислення факторіала числа):
printf (" обчислення факторіала \ n ");
const int N = 5;
int i, f = 1;
for (i = 1; i <= N; i + +)
{f*= i;
printf ("% d! =% d \ n ", i,f);}
В якості операції в прикладі використовується постфіксній форма інтремірованія (збільшення змінної на 1). Цикл повторюється до тих пір, поки i менше або дорівнює N. Операція f *= i (прісваеніе з множенням) еквівалентна формі f = а * i.
Цикл з передумовою - цикл керований умовою.
while (умова)
{оператори}
Цикл виконується поки умова істинна (умова перевіряється на початку).
Приклад (обчислення суми чисел):
printf ("обчислення суми чисел \ n");
i = 0;
f = 0;
while (i <5)
{f+ = + + i;
printf ("S (% d) =% d \ n ", i,f);}
Операція f + = + + i еквівалентна двом операторам i++; f = f + i;
Цикл з постусловіем - цикл керований умовою.
do
{оператори}
while (умова)
Цикл виконується поки умова істинна (умова перевіряється в кінці, тобто тіло циклу випольняется принаймні один раз).
Приклад (обчислення квадратів);:
printf ("обчислення квадратів \ n");
i = 0;
do
{f= i * i;
printf ("% d ^ 2 =% d \ n", i, f);
i + +;}
while (f <25);
Оператор вибору switch.
switch (вираз)
{case константа_1: оператори; break;
...
case константа_n: оператори; break;
default: оператори;
break;}
Оператор switch обчислює вираз і переходить до першого збігається значенням після case. Далі виконуються оператори цього блоку і за командою break відбувається вихід зі структури. Якщо ні одне зі значень не збігається з константами з case, то виконуються оператори блоку default. Відзначимо, що константи в case блоці визначаються на етапі компіляції, тому вони не можуть містити змінних і функцій.
Приклад.
Int a = 2, b = 5;
...
for (i = 0; i <= 5 ; i + +)
{switch(i)
{case0: c = a + b; break;
case 1: c = a - b; break;
case 2: c = a * b; break;
case 3: c = (float) a / b; break;
default: c = 0; break;}
printf ("Результат: i =% i, c =% f \ n", i,
c);}
Оператор виходу зі структури break може бути опущений. У цьому випадку, пошук збігів буде продовжений після виконання відповідного блоку case.
Оператори break і continue.
Використання оператора break ми вже бачили на прикладі структури switch. Оператор break - це вихід з циклу чи конструкції switch.
Приклад (цикл по i від 0 до 4, але при i = 2 відбувається вихід з циклу):
for (i = 0; i <5; i + +)
{if(i == 2) break;
printf ("Індекс: i = % i \ n ", i);}
Оператор continue - перехід на кінець циклу (тобто пропуск всіх операторів від continue до кінця структури циклу).
Приклад (цикл по i від 0 до 4, але при i = 2 відбувається перехід на кінець циклу):
for (i = 0; i <5; i + +)
{if(i == 2) continue;
printf ("Індекс: i =% i \ n ", i);}