
- •З дисципліни “Системне програмування”
- •Мета виконання лабораторно-практичних робіт
- •Порядок виконання лабораторно-практичних робіт
- •Оформлення звітів про виконання лабораторно-практичних робіт
- •Лабораторна робота № 1
- •1 Короткі теоретичні відомості
- •2 Постановка завдання
- •3 Варіанти індивідуальних завдань
- •4 Методичні вказівки
- •5 Приклад виконання лабораторної роботи
- •6 Порядок виконання лабораторної роботи
- •7 Контрольні запитання
- •Лабораторна робота № 2
- •1 Короткі теоретичні відомості Умовний оператор if. Уморвний оператор – це оператор, який виконується в залежності від виконання деякої умови.
- •2 Варіанти індивідуальних завдань
- •3 Методичні вказівки
- •4 Контрольні запитання
- •Лабораторна робота № 3
- •Оператор циклу while. Цикл while – це ітераційний цикл із передумовою. Це оператор циклу, який працює до тих пір, поки деяка умова буде істинною.
- •2 Варіанти індивідуальних завдань
- •3 Методичні вказівки
- •Int array[a];
- •Int array[12];
- •Int array[a];
- •2 Варіанти індивідуальних завдань
- •3 Методичні вказівки
- •4 Приклад виконання лабораторної роботи
- •5 Контрольні запитання
- •Лабораторна робота № 5
- •1 Короткі теоретичні відомості
- •2 Індивідуальні завдання
- •3 Методичні вказівки
- •4 Контрольні запитання
- •Лабораторна робота № 6
- •1 Короткі теоретичні відомості
- •2 Індивідуальні завдання
- •3 Методичні вказівки
- •4 Приклад виконання лабораторної роботи
- •5 Контрольні запитання
- •Лабораторна робота № 7
- •1 Короткі теоретичні відомості
- •Void func( ) /*нічого не повертає*/
- •2 Варіанти індивідуальних завдань:
- •3 Методичні вказівки
- •4 Приклад виконання лабораторної роботи
- •5 Контрольні запитання
- •Лабораторна робота № 8
- •1 Короткі теоретичні відомості
- •2 Постановка завдання.
- •3 Варіанти індивідуальних завдань
- •4 Методичні вказівки
- •5 Приклад виконання лабораторної роботи
- •6 Контрольні запитання
- •Лабораторна робота № 9
- •1 Короткі теоретичні відомості
- •Int putchar(int c);
- •2 Варіанти індивідуальних завдань
- •3 Методичні вказівки
- •4 Контрольні запитання
- •Лабораторна робота № 10
- •1 Короткі теоретичні відомості
- •Int strcmp(const chart *str1, const chart *str2);
- •2. Варіанти індивідуальних завдань
- •3 Методичні вказівки
- •4 Приклад виконання лабораторної роботи
- •5 Контрольні запитання
- •Лабораторна робота № 11
- •1 Короткі теоретичні відомості
- •2 Варіанти індивідуальних завдань
- •3 Методичні вказівки
- •4 Контрольні запитання
- •Лабораторна робота № 12
- •1 Короткі теоретичні відомості
- •2 Постановка задачі
- •3 Варіанти індивідуальних завдань
- •4 Приклад виконання лабораторної роботи
- •5 Контрольні запитання
- •Лабораторна робота № 13
- •1 Короткі теоретичні відомості
- •2 Завдання практичної роботи
- •3 Варіанти індивідуальних завдань
- •4 Методичні вказівки
- •5 Приклад виконання лабораторної роботи
- •6 Контрольні запитання
- •Лабораторна робота № 14
- •1 Короткі теоретичні відомості
- •2. Варіанти індивідуальних завдань
- •3 Методичні вказівки
- •4 Контрольні запитання
- •Лабораторна робота № 15
- •1 Короткі теоретичні відомості
- •2 Варіанти індивідуальних завдань
- •3 Методичні вказівки
- •4 Приклад виконання лабораторної роботи
- •Програма розв'язку
- •5 Контрольні запитання
- •Лабораторна робота № 16
- •1 Короткі теоретичні відомості
- •2 Варіанти індивідуальних завдань
- •3 Методичні вказівки
- •4 Приклад виконання лабораторної роботи
- •5 Контрольні запитання
- •Лабораторна робота № 17
- •1 Короткі теоретичні відомості
- •2 Варіанти індивідуальних завдань
- •3 Методичні вказівки
- •4 Приклад виконання лабораторної роботи
- •5 Контрольні запитання
- •Лабораторна робота № 18
- •1. Короткі теоретичні відомості
- •2 Завдання практичної роботи:
- •3 Варіанти індивідуальних завдань:
- •4 Методичні вказівки
- •5 Приклад виконання лабораторної роботи
- •Програма розв'язку
- •6 Контрольні запитання
- •Практична робота № 1
- •1 Короткі теоретичні відомості
- •Оператор виконує наступні дії:
- •Приклад: Написати програму, яка виводить на екран числа від 1 до 7.
- •Оператор виконує наступні дії:
- •Приклад: Вивести на екран додатні числа менші від 10.
- •Void main()
- •Оператор виконує наступні дії:
- •2 Варіанти індивідуальних завдань
- •3 Методичні вказівки
- •4 Контрольні запитання
- •Практична робота № 2
- •1 Короткі теоретичні відомості
- •Int array[a];
- •Int array[12];
- •Int array[a];
- •2 Постановка завдання
- •3 Методичні вказівки
- •4 Приклад виконання практичної роботи Завдання
- •Програма розв'язку
- •5 Контрольні запитання
- •Практична робота № 3
- •1 Короткі теоретичні відомості
- •Void func( ) /*нічого не повертає*/
- •2 Варіанти індивідуальних завдань
- •3 Методичні вказівки
- •4 Приклад виконання практичної роботи
- •5 Контрольні запитання
- •Практична робота № 4
- •1 Короткі теоретичні відомості
- •2 Постановка завдання
- •3 Варіанти індивідуальних завдань
- •Тема: Використання функцій прямого доступу до даних у файлах
- •2 Варіанти індивідуальних завдань
- •3 Методичні вказівки
- •4 Контрольні запитання
- •Список рекомендованої літератури
1 Короткі теоретичні відомості
Мова СІ створена в 1972 р. Денісом Річі при розробці ОС Unix. Вона проектувалася як інструмент системного програмування з орієнтацією на розробку добре структурованих програм. Мова поєднує в собі, з одного боку, засоби мови програмування високого рівня: опис типів даних, оператори for, while, if і т.ін., а з іншого боку, містить засоби мови типу Асемблер: адресну арифметику, можливість роботи з полями бітів і т.ін.
Структура програми. Програма мовою С має таку структуру:
#директиви препроцесора
. . . . . . . . .
#директиви препроцесора
функція а ( )
оператори
функція в ( )
оператори
void main ( ) { //функція, з якої починається виконання програми
оператори; функція { оператори;}
}
Директиви препроцесора - управляють перетворенням тексту програми до її компіляції. Початкова програма, підготована мовою СІ у вигляді текстового файлу проходить 3 етапи обробки:
препроцесорне перетворення тексту;
компіляція;
компонування (редагування зв'язків або зборка).
Після цих 3 етапів формується виконавчий машинний код програми. Завдання препроцесора - перетворення тексту програми до її компіляції. Правила препроцесорної обробки визначає програміст за допомогою директив препроцесора.
Директива починається з #. Наприклад,
1) #define - вказує правила заміни в тексті. #define ZERO 0.0
Означає, що кожне використання в програмі імені ZERO буде замінятися на 0.0.
2) #include< ім'я заголовкового файлу> - призначена для включення в текст програми тексту з каталогу «Заголовкових файлів», що надходять разом зі стандартними бібліотеками. Кожна бібліотечна функція СІ має відповідний опис в одному із заголовкових файлів. Список заголовкових файлів визначений стандартом мови. Вживання директиви include не підключає відповідну стандартну бібліотеку, а тільки дозволяє вставити в текст програми описи із зазначеного заголовкового файлу. Підключення кодів бібліотеки здійснюється на етапі компонування.. Хоча в заголовкових файлах містяться всі описи стандартних функцій, у код програми включаються тільки ті функції, які використовуються в програмі.
Після виконання препроцесорної обробки в тексті програми не залишається жодної препроцесорної директиви. Програма є набором описів і визначень, і складається з набору функцій. Серед цих функцій завжди повинна бути функція з ім’ям main. Без неї програма не може бути виконана. Перед ім'ям функції міститься інформація про тип значення, що повертається функцією, (тип результату). Якщо функція нічого не повертає, то вказується тип void: void main ( ). Кожна функція, у тому числі й main повинна мати набір параметрів, він може бути порожнім, тоді в дужках вказується (void).
За заголовком функції розташовується тіло функції. Тіло функції - це послідовність визначень, описів й виконавчих операторів, взятих у фігурні дужки. Кожне визначення, опис або оператор закінчується крапкою з комою.
Визначення - вводять об'єкти (об'єкт - це іменована область пам'яті, окремий випадок об'єкту - змінна), необхідні для представлення в програмі даних, що обробляються. Прикладом є
int y = 10 ; //іменована константа
float x ; //змінна
Описи - повідомляють компілятору про властивості й імена об'єктів і функцій, описаних в інших частинах програми.
Оператори - визначають дії програми на кожному кроці її виконання.
Константи й змінні. Константа - це значення, яке не може бути змінене в процесі виконання програми.
Змінні можна змінювати. При заданні значення змінної у відповідну їй область пам'яті записується код цього значення. Доступ до значення можливий через ім'я змінної, а доступ до ділянки пам'яті – через її адресу. Кожна змінна перед використанням у програмі повинна бути визначена, тобто їй повинна бути виділена пам'ять. Розмір ділянки пам'яті, виділеної для змінної й інтерпретація вмістимого залежать від типу, зазначеного у визначенні змінної. Найпростіша форма визначення змінних:
тип список_імен_змінних;
Основні типи даних. Основні типи даних наведено в таблиці.
Назва типу даних |
Ключове слово |
Розмір б |
Діапазон значень |
символьний |
char |
1 |
0. . 255 |
беззнаковий цілий |
unsigned int |
2 |
0. . 65535 |
короткий цілий |
short int |
2 |
-32768 . . 32767 |
беззнаковий короткий цілий |
unsigned short |
2 |
0. . 65535 |
цілий |
int |
2 |
-32768 . . 32767 |
беззнаковий довгий цілий |
unsigned long |
4 |
0. . 4294967295 |
довгий цілий |
long |
4 |
-214748348 . . 2147483647 |
дійсний одинарної точності |
float |
4 |
3.4Е-38 . . 3.4Е+38 |
дійсний подвійної точності |
double |
8 |
1.7Е-308 . . 1.7Е+308 |
дійсний максимальної точності |
long double |
10 |
3.4Е-4932 . . 1.1Е+4932 |
Відповідно до синтаксису мови змінні після визначення за замовчуванням мають невизначені значення. Змінним можна присвоювати початкові значення, явно вказуючи їх у визначеннях:
тип ім'я_змінної = початкове_значення;
Цей прийом називається ініціалізацією.
Приклади:
float pi = 3.14 , cc=1.3456;
unsigned int year = 1999;
Операції.
Унарні операції
-
++
збільшення на одиницю: (інкременту)
префіксна операція - збільшує операнд до його використання,
постфіксна операція збільшує операнд після його використання.
--
зменшення на одиницю: (декременту)
префіксна операція - зменшує операнд до його використання,
постфіксна операція зменшує операнд після його використання.
Бінарні операції.
-
+
бінарний плюс (додавання арифметичних операндів)
-
бінарний мінус (віднімання арифметичних операндів)
*
множення операндів арифметичного типу
/
ділення операндів арифметичного типу (якщо операнди цілочисельні, то виконується цілочисельне ділення)
%
отримання залишку від ділення цілочисельних операндів
Вирази. З констант, змінних, розділювачів і знаків операцій можна конструювати вирази. Кожен вираз складається з одного або декількох операндів, символів операцій й обмежувачів, в ролі яких зазвичай виступають квадратні дужки. Якщо вираз формує ціле або дійсне число, то це арифметичний вираз. В арифметичних виразах можливі операції: + - * / %.
Вирази мови С записуються з використанням множини операцій та з врахуванням їх пріоритетів
Ввід і вивід у мові С. Обмін даними із зовнішнім середовищем програма на стандартному СІ реалізує за допомогою бібліотеки функцій вводу-виводу
#include <stdіo.h>
printf ( <форматний рядок>,<список аргументів>);
<форматний рядок> - рядок символів, взятих в лапки, що показує, як повинні бути надруковані аргументи. Наприклад:
printf ( “Значення числа Пі дорівнює %f\n”, pi);
Форматний рядок може містити
символи, що будуть надруковані текстуально;
специфікації перетворення
керуючі символи.
Кожному аргументу відповідає своя специфікація перетворення:
%d - десяткове ціле число;
%f - число із плаваючою крапкою;
%c - символ;
%s - рядок.
\n - керуючий символ новий рядок.
2) scanf ( <форматний рядок>,<список аргументів>);
В ролі аргументів використовуються вказівники. Наприклад:
scanf(“ %d%f ”, &x,&y);