- •Мета Виконання лабораторних робіт
- •Порядок виконання лабораторних робіт
- •Вимоги до оформлення звітів про виконання лабораторних робіт
- •Лабораторна робота № 1
- •Порядок виконання лабораторної роботи:
- •Код програми мовою с
- •Лабораторна робота № 2 Дослідження роботи стандартних функцій вводу-виводу
- •Варіанти індивідуальних завдань
- •Короткі теоретичні відомості
- •Приклад виконання лабораторної роботи
- •Граф-схема алгоритму програми
- •Код програми мовою с
- •Розробка тестового прикладу
- •Результати виконання програми
- •Контрольні запитання
- •Лабораторна робота № 3 Дослідження виконання операції та обчислення виразів мови c. Перетворення та приведення типів даних
- •Варіанти індивідуальних завдань.
- •Короткі теоретичні відомості
- •Пріоритети операцій мови Сі
- •Приклад виконання лабораторної роботи
- •Граф-схема алгоритму програми
- •Код програми мовою с
- •Тестовий приклад
- •Результати виконання
- •Контрольні запитання
- •Лабораторна робота № 4 Програмування задач на розгалуження за допомогою множини операторів мови с.
- •Варіанти індивідуальних завдань
- •Короткі теоретичні відомості.
- •If (логічний вираз) оператор1; else оператор2;
- •Приклад виконання лабораторної роботи
- •Граф-схема алгоритму програми
- •К од програми мовою с
- •Тестовий приклад
- •Результати виконання
- •Контрольні запитання
- •Лабораторна робота № 5 Програмування задач з використанням циклічних алгоритмів за допомогою множини операторів мови с.
- •Варіанти індивідуальних завдань.
- •Короткі теоретичні відомості
- •Приклад виконання лабораторної роботи
- •Граф-схема алгоритму програми
- •Вивід на екран нуля Код програми мовою с
- •Тестовий приклад
- •Результати виконання
- •Контрольні запитаня
- •Лабораторна робота № 6 Розробка програм з використанням функцій.
- •Варіанти індивідуальних завдань
- •Короткі теоретичні відомості
- •Приклад виконання лабораторної роботи
- •Граф-схема алгоритму програми
- •Код програми мовою с
- •Тестовий приклад
- •Результати виконання
- •Контрольні запитання:
- •Лабораторна робота № 7 Програмування задач з використанням масивів даних.
- •Варіанти індивідуальних завдань
- •Короткі теоретичні відомості
- •Приклад виконання лабораторної роботи
- •Граф-схема алгоритму програми
- •К од програми мовою с
- •Тестовий приклад
- •Результати виконання
- •Контрольні запитання
- •Лабораторна робота № 8 Опрацювання рядків тексту.
- •Варіанти індивідуальних завдань
- •Короткі теоретичні відомості
- •Приклад виконання лабораторної роботи
- •Граф-схема алгоритму програми
- •Код програми мовою с
- •Тестовий приклад
- •Результати виконання
- •Контрольні запитання
- •Лабораторна робота № 9 Використання вказівників для роботи з масивами даних.
- •Варіанти індивідуальних завдань
- •Короткі теоретичні відомості
- •Приклад виконання лабораторної роботи
- •Граф-схема алгоритму програми
- •Код програми мовою с
- •Тестовий приклад
- •Результати виконання
- •Контрольні запитання
- •Лабораторна робота № 10 Програмування задач на використання структур даних.
- •Варіанти індивідуальних завдань
- •Короткі теоретичні відомості
- •Приклад виконання лабораторної роботи
- •Код програми мовою с
- •Тестовий приклад
- •Результати виконання
- •Контрольні запитання
- •Лабораторна робота № 11 Динамічні структури даних
- •Варіанти індивідуальних завдань
- •Короткі теоретичні відомості
- •Приклад виконання лабораторної роботи
- •Код програми мовою с
- •Тестовий приклад
- •Результати виконання
- •Контрольні запитання
- •Лабораторна робота № 12 Робота з дисковими файлами
- •Варіанти індивідуальних завдань
- •Короткі теоретичні відомості
- •Приклад виконання лабораторної роботи
- •Граф-схема алгоритму програми
- •Тестовий приклад
- •Результати виконання
- •Контрольні запитання
- •Література для самостійної роботи
- •Додаток а
- •Додаток б
- •Додаток в Функції стандартної бібліотеки для перетворення
- •Додаток г Функції стандартної бібліотеки роботи
- •Додаток д
- •Додаток е
Додаток в Функції стандартної бібліотеки для перетворення
рядка у число та числа у рядок( <stdlib.h>)
Назва |
Прототип |
Призначення |
atof |
double atof(char *str); |
Перетворює рядок str в дійсне число подвійної точності. Перетворення здійснюється до першого недопустимого символа або до симмвола '\0'. Якщо не може перетворити, то повертає 0 |
atoi |
int atoi(char *str); |
Перетворює рядок str в десяткове ціле. Якщо число перевищує діапазон int, то повертає 2 молодші байти. Якщо не може перетворити, то повертає 0 |
atol |
long atol(char *str); |
Перетворює рядок str в довге десяткове ціле |
ecvt |
char *ecvt(double v, int dig, int *dec, int *sign); |
Перетворює дійсне v у рядок: dig - кількість цифр числа, що будуть перетворені в рядок, dec - позиція десяткової крапки від початку рядка (якщо dec<=0, то позиція десяткової крапки знаходиться зліва від числа), sign є {0,1}- знак числа. Символ '\0' додається. Повертає вказівник на рядок |
fcvt |
char *fcvt(double v, int dig, int *dec, int *sign); |
Те ж саме що й ecvt, тільки dig - кількість цифр після крапки |
gcvt |
char *gcvt(double v, int dig, char *buf); |
Перетворює дійсне v у рядок. На відміну від ecvt() та fcvt() розміщує рядок у попередньо оголошений буфер buf: dig - це кількість символів рядка. Результуючий рядок містить представлення числа з фіксованою або плаваючою крапкою в залежності від того, чи може число розміститися в dig позиціях |
itoa |
char *itoa(int v, char *str, int radix); |
Перетворює ціле v в рядок str у системі числення radix (2<=radix<=36). Повертає вказівник на рядок |
ltoa |
char *ltoa(long v, char *str, int radix); |
Перетворює довге ціле v в рядок символів str у системі числення radix |
ultoa |
char *ultoa(unsigned long v, char *str, int radix); |
Перетворює беззнакове довге ціле v в рядок символів у системі числення radix |
Додаток г Функції стандартної бібліотеки роботи
з динамічною пам’яттю ( <alloc.h>, <stdlib.h>)
Назва |
Звертання |
Призначення |
calloc |
void * calloc(size_t nitems, size_t size); |
Виділяє динамічну пам’ять для масиву nitems елементів, кожен з яких займає sise байтів. Виділена пам’ять ініціалізується нулями. Повертає вказівник на виділену область, або NULL, якщо немає доступної пам’яті. |
free |
void free(void *block); |
Звільняє блок динамічної пам’яті, закріпленої за вказівником block. |
malloc |
void * malloc(size_t size); |
Виділяє size байтів динамічної пам’яті. Ініціалізація виділеної пам’яті не здійснюється. Повертає вказівник на виділену область, або NULL, якщо немає доступної пам’яті. |
realloc |
void * realloc(void *block, size_t size); |
Змінює розмір динамічної пам’яті, раніше виділеної функціями calloc або malloc та закріпленої за вказівником block. Встановлюється новий розмір пам’яті, рівний size байтів. Вміст старого блоку не змінюється. Повертає вказівник на початок виділеної області пам’яті. |
brk |
int brk(void *addr); |
Визначає нове значення змінної break, яка визначає адресу першого байта оперативної пам’яті, не доступної для програми. Тим самим змінюється розмір оперативної пам’яті, відведений для поточного процесу. Функція повертає 0 при успішній зміні розміру оперативної пам’яті, або -1, якщо розмір пам’яті не може бути змінений. |
sbrk |
void * sbrk(int incr); |
Змінює значення глобальної змінної break на incr байтів, що призводить до зміни (збільшення або зменшення) розміру оперативної пам’яті, відведеної поточному процесу. Значення змінної break визначає адресу першого байта оперативної пам’яті, не доступної для програми. Функція повертає старе значення змінної break, або -1, якщо розмір пам’яті процесу не може бути змінений. |
heapcheck |
int heapcheck(void); |
Перевіряє блоки динамічної пам’яті на помилки та її цілісність. Якщо перевірка була успішною, то повертає значення, більше від нуля, інакше - менше від нуля значення. |
heapfillfree |
int heapfillfree(unsigned int fillvalue); |
Заповнює вільні блоки динамічної пам’яті значенням величини fillvalue. При успішному завершенні повертає більше від нуля значення, інакше - менше від нуля значення. |
heapcheckfree |
int heapcheckfree( unsigned int fillvalue); |
Перевіряє вільні блоки динамічної пам’яті на заповненість значеннями fillvalue. При успішному завершенні повертає більше від нуля значення, інакше - менше від нуля значення. |
coreleft |
unsigned long coreleft (void); |
Повертає розмір пам’яті у байтах, яка є доступною для динамічного розподілу. Для моделей пам’яті tiny, small, medium повертає вільний об’єм ближньої, а для моделей compact, large, huge - дальньої динамічної пам’яті. |
heapchecknode |
int heapchecknode(void far *node); |
Перевіряє стан блоку динамічної пам’яті, що визначається вказівником node. При успішному завершенні повертає більші від нуля значення: HEAPEMPTY (= 1) No heap FREEENTRY (= 3) Node is a free block USEDENTRY (= 4) Node is a used block Якщо помилка, то повертає менші від нуля значення: HEAPCORRUPT (= -1) Heap has been corrupted BADNODE (= -2) Node could not be found |
heapwalk |
int heapwalk(struct farheapinfo far *hi); |
Сканує динамічну пам’ять від елемента до елемента. Аргументом є вказівник на структуру heapinfo:struct heapinfo { void *ptr; unsigned int size; int in_use; }; При першому виклику поле hi.ptr повинно дорівнювати NULL. Далі через це поле повертається адреса першого блоку динамічної пам’яті. Поле hi.size зберігає розмір блоку у байтах. Поле hi.in_use є прапорцем, який встановлений, якщо блок використовується у даний час. Функція heapwalk вважає, що динамічна пам’ять є коректною. Для перевірки динамічної пам’яті перед викликом heapwalk необхідно викликати heapcheck. При успішному завершенні повертає значення, більші від нуля: _HEAPEMPTY (= 1) Немає вільної ДП. _HEAPOK (= 2) ДП є перевірена (heapinfo або farheapinfo блоки містять правильні дані) _HEAPEND (= 5) Досягнуто кінець ДП. Якщо помилка, то повертає менше від нуля значення. |
farcalloc |
void far * farcalloc( unsigned long nunits, unsigned long unitsz); |
calloc для дальньої динамічної пам’яті |
farcoreleft |
unsigned long farcoreleft(void); |
coreleft для дальньої динамічної пам’яті |
farfree |
void farfree(void far *block); |
free для дальньої динамічної пам’яті |
farmalloc |
void far * farmalloc( unsigned long nbytes); |
malloc для дальньої динамічної пам’яті |
farrealloc |
void far * farrealloc(void far *oldblock, unsigned long nbytes); |
realloc для дальньої динамічної пам’яті |
farheapcheck |
int farheapcheck(void); |
heapcheck для дальньої динамічної пам’яті |
farheapchecknode |
int farheapchecknode( void far *node); |
heapchecknode для дальньої динамічної пам’яті |
farheapfillfree |
int farheapfillfree( unsigned int fillvalue); |
heapfillfree для дальньої динамічної пам’яті |
farheapcheckfree |
int farheapcheckfree( unsigned int fillvalue); |
heapcheckfree для дальньої динамічної пам’яті |
farheapwalk |
int farheapwalk( struct farheapinfo *hi); |
heapwalk для дальньої динамічної пам’яті |
Примітка: тип size_t визначений так: typedef unsigned size_t;