- •З дисципліни “Системне програмування”
- •Мета виконання лабораторно-практичних робіт
- •Порядок виконання лабораторно-практичних робіт
- •Оформлення звітів про виконання лабораторно-практичних робіт
- •Лабораторна робота № 1
- •1 Короткі теоретичні відомості
- •1.4 Основні типи даних. Основні типи даних наведено в таблиці.
- •1.5 Операції.
- •Int printf (фороматний рядок, [, argument, ...]);
- •2 Питання вхідного контролю
- •3 Постановка завдання
- •4 Варіанти індивідуальних завдань
- •5 Методичні вказівки
- •6 Приклад розв’язку завдання
- •7 Питання вихідного контролю
- •Лабораторна робота № 2
- •1 Короткі теоретичні відомості Умовний оператор if. Уморвний оператор – це оператор, який виконується в залежності від виконання деякої умови.
- •2 Варіанти індивідуальних завдань
- •3 Методичні вказівки
- •4 Контрольні запитання
- •Лабораторна робота № 3
- •Оператор циклу while. Цикл while – це ітераційний цикл із передумовою. Це оператор циклу, який працює до тих пір, поки деяка умова буде істинною.
- •2 Варіанти індивідуальних завдань
- •3 Методичні вказівки
- •4 Приклад виконання лабораторної роботи
- •5 Контрольні запитання
- •Лабораторна робота № 4
- •1 Короткі теоретичні відомості
- •1.2 Опис масивів. Ім’я масиву це звичайний ідентифікатор. Він має бути унікальним, за ним іде розмірність. Розмір масиву може бути як літеральна константа, так і символьна.
- •Int array[a];
- •Int array[12];
- •Int array[a];
- •1.5 Одновимірні масиви. Одномірні масиви. Одномірний масив має один індекс.. Індекс – це номер в квадратних дужках після імені масиву.
- •2 Питання вхідного контролю
- •3 Варіанти індивідуальних завдань
- •4 Методичні вказівки
- •5 Приклад розв’язку завдання
- •5 Питання вихідного контролю
- •Лабораторна робота № 5
- •1 Короткі теоретичні відомості
- •2 Постановка завдання.
- •3 Варіанти індивідуальних завдань
- •4 Методичні вказівки
- •5 Приклад виконання лабораторної роботи
- •6 Контрольні запитання
- •Лабораторна робота № 6
- •1 Короткі теоретичні відомості
- •2 Питання вхідного контролю
- •3 Варіанти індивідуальних завдань
- •4 Методичні вказівки
- •5 Приклад розв’язку завдання
- •6 Питання вихідного контролю
- •Лабораторна робота № 7
- •1 Короткі теоретичні відомості
- •Int putchar(int c);
- •2 Варіанти індивідуальних завдань
- •3 Методичні вказівки
- •4 Контрольні запитання
- •Лабораторна робота № 8
- •1 Короткі теоретичні відомості
- •2 Постановка задачі
- •3 Варіанти індивідуальних завдань
- •4 Приклад виконання лабораторної роботи
- •5 Контрольні запитання
- •Лабораторна робота № 9
- •1 Короткі теоретичні відомості
- •2 Питання вхідного контролю
- •3 Постановка завдання
- •4 Варіанти індивідуальних завдань
- •5 Методичні вказівки
- •6 Приклад розв’язку завдання
- •7 Питання вихідного контролю
- •Лабораторна робота № 10
- •1 Короткі теоретичні відомості
- •2 Питання вхідного контролю
- •3 Варіанти індивідуальних завдань
- •4 Методичні вказівки
- •5 Приклад розв’язку завдання
- •6 Питання вихідного контролю
- •Лабораторна робота № 11
- •1 Короткі теоретичні відомості
- •2 Питання вхідного контролю
- •3 Постановка завдання
- •4 Варіанти індивідуальних завдань
- •5 Методичні вказівки
- •6 Приклад розв’язку завдання
- •7 Питання вихідного контролю
- •Практична робота № 1
- •1 Короткі теоретичні відомості
- •1.1 Умовний оператор if. Уморвний оператор – це оператор, який виконується в залежності від виконання деякої умови.
- •Оператор виконує наступні дії:
- •Приклад: Написати програму, яка виводить на екран числа від 1 до 7.
- •Оператор while виконує наступні дії:
- •Приклад: Вивести на екран додатні числа менші від 10.
- •Оператор виконує наступні дії:
- •2 Питання вхідного контролю
- •3 Постановка завдання на використання оператора switch
- •4 Варіанти індивідуальних завдань на використання оператора switch
- •5 Варіанти індивідуальних завдань на оператори циклів
- •6 Методичні вказівки
- •7 Приклад розв’язку завдання
- •8 Питання вихідного контролю
- •Практична робота № 2
- •1 Короткі теоретичні відомості
- •Void func( ) /*нічого не повертає*/
- •2 Варіанти індивідуальних завдань:
- •3 Методичні вказівки
- •4 Приклад виконання практичної роботи
- •5 Контрольні запитання
- •Практична робота № 3
- •1 Короткі теоретичні відомості
- •Int putchar(int c);
- •2 Питання вхідного контролю
- •3 Варіанти індивідуальних завдань
- •4 Методичні вказівки
- •5 Приклад розв’язку завдання
- •6 Питання вихідного контролю
- •Практична робота № 4
- •1 Короткі теоретичні відомості
- •2 Питання вхідного контролю
- •3 Постановка завдання
- •4 Варіанти індивідуальних завдань
- •5 Методичні вказівки
- •6 Приклад розв’язку завдання
- •7 Питання вихідного контролю
- •Список рекомендованої літератури
Int putchar(int c);
Вона записує символ с в потік stdout. Хоч в прототипі аргумент має цілий тип, в функцію треба посипати аргумент символьного типу. Можна передавати і значення цілого типу, якщо воно не виходить за діапазон 0-255. Функція повертає записаний символ або EOF у випадку помилки.
1.6 Ввід символів за допомогою функції getchar(). Функція getchar() одержує символ з потоку stdin, буферизує ввід і дублює символ на екрані.
Прототип функції має вигляд:
int getchar(void) void - порожній символ
Функція ch= getchar() чекає одержання символу з потоку stdin, символ в потоці появляється після натискання ENTER . Після натискання клавіші всі введені символи попадають в потік. За кожний виклик функція бере з потоку один символ, присвоюючи його по черзі ch.
Функція getсh(), одержує символ з потоку stdin, ,без буферизації і дублювання символ на екрані. Вона не визначена в стандарті ANSI, її нема в багатьох компіляторах, вона міститься в файлі conio.h і прототип має вигляд
Для вводу рядка з клавіатури є функція gets(). При вводі рядка з клавіатури треба виділити для нього пам’ять. Це робиться з допомогою функції malloc() або опису масиву. Функція вводить рядок тексту. При виклику вона зчитує всі символи, набрані на клавіатурі до першого символу кінця рядка (який генерується при натисканні клавіші ENTER).
Функція скидає символ кінця рядка, додає нульовий завершаючий символ і передає одержаний рядок в викликаючу програму. Рядок поміщається по адресі, яку передано в функцію gets(). через аргумент вказівник на char.
Для виконання функції gets(). Необхідно включити в програму файл stdio.h з допомогою директиви include. Прототип
сhar *gets(char *str) Функція має аргументом вказівник на рядок і повертає вказівник того ж типу. Функція зчитує символи з потоку до тих пір, поки не зустріне кінець рядка (\n) або кінець файлу. У випадку помилки функція повертає NULL. Перед викликом функції треба виділити достатньо пам’яті для зберігання рядків.
1.7 Функція puts(). Бібліотечна функція виводить рядок тексту на екран. Єдиним її аргументом є вказівник на рядок, який треба вивести. Оскільки літеральні рядки інтерпретуються компілятором як вказівники на рядки, функція puts() може виводити як змінні рядкового типу Char r[10]={‘a’,’b’,’c’,’d’, ‘\0’};, так і літерали Char r[10]=’’abcd’’;
Після кожного виведеного рядка функція автоматично переходить на новий рядок.
Приклад використання функції puts()
#include <stdio.h>
char *a1=»c1»; char *a2=»c2»; char *a3=»c3»; |
Описані і заданіс пять змінних, які містять рядки, кожна з них є вказівником на змінну типу char і рядковою змінною. |
int main()
{
puts(a1); puts(a2); puts(a3); |
Вивід всіх рядків з допомогою функції . puts |
return 0; }
Результат
с1
с2
с3
1.8 Функція printf(). Рядки можна виводити за допомогою функції printf(). Для виводу рядка використовується специфікація формату %s. Аргументом є тип вказівника на рядок. Рядок виводиться на екран, до тих пір поки не зустрінеться завершуючий нульовий символ. Наприклад
char *str=fghjkl;
printf(%s, str);
Рядки можна виводити разом з числовими змінними.
char *str=begin;
char *name=end;
int var=100;
printf(%s var=%d %s, str, var, name);
Результат
begin var=100 end
1.9 Визначення довжини рядка. Довжина рядка (кількість символів в ньому) визначається функцією strlen().Прототип функції знаходиться в бібліотечному файлі string.h і має вигляд:
size_t strlen(char *str);
Тип size_t визначений в файлі stdring.h як unsigned. (ціле без знаку). Ця функція повертає ціле число без знаку. Цей тип використовується в багатьох функціях, які призначені для роботи з рядками. Аргумент, який передається в функцію це вказівник на рядок, довжину якого треба визначити. Функція повертає кількість символів. Від початку рядка до першого нульового символу.
1.10 Копіювання рядків. Один рядок не можна присвоїти іншому. Треба виконати копіювання даного рядка , який займає певну ділянку памяті в іншу ділянку, де знаходиться рядок-копія.
Є дві функції strcpy() i strncpy(). Вони описані в файлі string.h, який необхідно підключити для їх використання.
Функція strcpy(). Копіює заданий рядок в ділянку пам’яті. Прототип функції знаходиться в бібліотечному файлі string.h і має вигляд:
char *strcpy(char *destination, const char *sourse);
Функція strcpy() копіює рядок, який знаходиться по адресу sourse (разом з завершаючим символом /0) в ділянку памяті, яка починається по адресу в вказівнику destination. Функція повертає вказівник на новий рядок destination.
До виклику функції необхідно виділити память для нового рядка. Сама функція не перевіряє, чи досить памяті по вказаній їй адресі. Якщо розподілу памяті не виконалося, то функція затре strlen(sourse) байт нової інформації, починаючи з адресу , вказаному в destination.
Функція strncpy().аналогічна функції strcpy(), тільки з її допломогою копіюється задана кількість символів.
1.11 Порівняння двох рядків. Функція strcmp() призначена для посимвольного порівняння двох рядків. Прототип функції знаходиться в бібліотечному файлі string.h і має вигляд:
іnt strcmp(const chart *str1, const chart *str2);
Аргументи вказують на порівнювані рядки str1 і str2. Функція повертає від'ємне значення , якщо str1 менше str2, — нуль, якщо str1 = str2 і — додатнє значення, якщо str1 більше. str2.
1.12 Порівняння кодів фрагментів двох рядків. Функція strncmp() призначена для посимвольного порівняння кодів фрагментів двох рядків довжиною n. Прототип функції знаходиться в бібліотечному файлі string.h і має вигляд:
іnt strncmp(const chart *str1, const chart *str2, size_t n);
Функція порівнює n символів рядків str1 і str2. Порівняння виконується до тих пір, поки не вичерпаються n символів, або не буде здосягнутий кінець рядка str1. Результат порівняння такий, як в попередній функції.
1.13 Функції для конкатенація (з’єднання) рядків і їх фрагментів. Конкатенація – це приєднання одного рядка до кінця іншого. Для конкатенації є функція strcat().Прототип функції знаходиться в бібліотечному файлі string.h і має вигляд:
char *strcat(char *a1, сonst char *a2);
Функція поміщає копію рядка а2 в кінець рядка а1 і ставить завершуючий нульовий символ в кінець нового рядка. Попередньо необхідно виділити для рядка а1 достатньо місця. Функція повертає вказівник на рядок а1.
Функція strncat() виконує конкатенацію рядків з вказівкою кількості символів. Прототип функції знаходиться в бібліотечному файлі string.h і має вигляд:
char *strncat(char *a1, Const char *a2, int n);
Якщо а2 має більше, ніж n символів, то до а1 приєднується n символів рядка а2. Якщо а2 має менше, ніж n символів, то до а1 приєднується рядок а2.