Вимоги до лабораторних робіт
ПЕРЕДМОВА
Дане видання не є навчальним посібником по системному програмуванню. Включає перелік вимог, яким повинні задовольняти знання студентів перед виконанням ними певної лабораторної роботи, та деякі моменти, на які необхідно звернути увагу в ході роботи.
Звіт про виконання лабораторної роботи повинен бути зданий не пізніше ніж на наступному занятті.
ВИМОГИ ДО ЗВІТУ
В різних ЛР вимоги до звіту можуть варіюватися, але звіт повинен складатися з частин, які відповідають нижче наведеним вимогам:
- описати програму та її призначення;
- вказувати типи та призначення глобальних змінних;
- описати методи та прийоми використані при вирішенні поставленої задачі;
- описати структуру програми.
В лабораторних роботах, які потребують розбору функцій, розбір виконувати за наступним шаблоном:
- тип поверненого значення;
- що повернене значення означає;
- які параметри отримує функція, їх типи, що означають;
- що виконує функція;
- особливості;
Якщо функція в якості параметру отримує одну з констант, описану в header файлі, необхідно перерахувати всі споріднені з нею константи і описати їх.
Приклад:
Синтаксис :
#include <fcntl.h>
#include <sys\stat.h>
int open(const char *filename, int access [, unsigned mode]);
Файл, який включає прототип - io.h
Описання:
Функція open відкриває файл, ім'я котрого задано параметром filename, і підготовлює його до наступних операцій читання та / або запису, в залежності від параметру access.
Для утворення файлу в звичайному режимі, ви можете присвоїти відповідні значення іfmode, або при відкриті файла вказати опції O_CREAT і O_TRUNC зв'язані операцією побітового логічного додавання (OR) з необхідним режимом передачі.
Наприклад:
open("xmp",O_CREAT|O_TRUNC|O_BINARY,S_IREAD);
створює двійковий файл з атрибутом тільки для читання з ім'ям XMP, причому, Якщо він вже існує, то він обрізається до нульової довжини.
Для функції open параметр access конструюється шляхом логічного побітового додавання флагів, перерахованих в двох наступних списках. З першого списку може бути використаний тільки один флаг; інші флаги можуть використовуватися в любих логічних комбінаціях.
Список 1: флаги читання / запису .
O_RDONLY відкриття тільки для читання .
O_WRONLY відкриття тільки для запису .
O_RDWR відкриття для читання і запису .
Список 2: інші флаги доступу.
O_NDELAY Не використовується; для сумісності з системою UNIX.
O_APPEND Якщо флажок встановлений, то перед кожною операцією запису, ,вказівник файлу буде встановлюватися на кінець файлу.
O_CREAT Якщо файл існує, цей флажок не має ніякого значення. Якщо файл не існує, він буде створений, і біти з аргументу mode будуть використані для установки бітів - атрибутів файлу, як і в функції chmod.
O_TRUNC Якщо файл існує, його довжина усікається до 0. Атрибути файлу остаються не змінними.
O_EXCL використовується тільки разом з O_CREAT. Якщо файл уже існує, то функція повертає помилку.
O_BINARY Даний флаг може бути встановлений для гарантованого відкриття файлу в двійковому режимі.
O_TEXT Даний флаг може бути встановлений для гарантованого відкриття файла в текстовому режимі.
Ці константи (O_...) визначені в файлі fcntl.h.
Якщо ні O_BINARY, ні O_TEXT не вказані, файл відкривається в режимі трансляції, відповідно глобальній змінній іfmode.
Якщо в побудові параметру access бере участь флаг O_CREAT, вам необхідно вказати аргумент mode з наступних символічних констант, визначених в файлі sys\stat.h.
Значення параметру доступу mode:
S_IWRITE Дозвіл на запис.
S_IREAD Дозвіл на читання.
S_IREAD/S_IWRITE Дозвіл на читання / запис.
Повернені значення: При успішному завершенні open повертає ціле невід'ємне число handle - логічний номер відкритого файла. Вказівник файла (Вказівник поточної позиції)встановлюється на начало файла. При помилці функція повертає значення -1, і змінна errno отримує одне з наступних значень:
ENOENT - Маршрут або ім'я файла не знайдені;
EMFILE - Занадто багато відкритих файлів;
EACCES - Доступ заборонено;
EINVACC - Невірний код доступу.
Вимоги до оформлення програм
Тексти програм, написаних студентом, повинні відповідати наступним вимогам:
1. Кожний файл з текстом програми повинен мати заголовок який включає:
- ім'я файлу;
- коротку ремарку яка пояснює призначення файлу;
- рядок який ідентифікує автора.
2. В кінці файлу має бути рядок, який вказує, що це кінець файлу.
3. Вирівнювання тексту повинно відповідати наступним умовам:
- Директиви препроцесора, об'явлення прототипів функцій, глобальних змінних - вирівнюються в притулок до лівого краю.
- Кожний оператор або блок операторів, логічно вкладений в інший, зсувається на дві позиції вправо відносно зовнішнього. Фігурна дужка ({), яка означає початок блоку, повинна знаходитись в тому ж рядку, що і оператор, який вміщує цей блок, а дужка, яка означає кінець блоку (}) - в тому ж стовпчику, що починається цей оператор
приклад:
if(a){
while(i<0){
i++;
j++;
a = 0;
}
}
4. Функції та змінні повинні мати осмислені імена які відповідають угорській нотації:
Префікс | Тип даних |
A | Масив (Складний тип) |
Ch | Символ |
Cb | Лічильник байтів |
Dw | Довге ціле без знаку |
H | Логічний номер |
Hdc | Логічний номер контексту пристрою |
Hwnd | Логічний номер вікна |
I | індекс (Складний тип) |
L | Довге ціле |
Lp | Дальній (довгий) покажчик (Складний тип) |
N | Ціле |
Np | Ближній (короткий) покажчик |
Pt | Точка описана парою координат x,y |
Sz | Рядок який закінчується нулем |
W | Ціле без знаку |