- •Міністерство транспорту та зв'язку україни
- •Мета виконання лабораторно-практичних робіт
- •Порядок виконання лабораторно-практичних робіт
- •Оформлення звітів про виконання лабораторно-практичних робіт
- •Лабораторна робота № 1-2
- •1 Короткі теоретичні відомості
- •2 Постановка завдання
- •3 Варіанти індивідуальних завдань
- •4 Методичні вказівки
- •5 Приклад виконання лабораторної роботи
- •6 Порядок виконання лабораторної роботи
- •7 Контрольні запитання
- •Лабораторна робота № 3 Тема: "Програмування розгалужених обчислювальних процесів з використанням умовних операторів"
- •1 Короткі теоретичні відомості Умовний оператор if. Уморвний оператор – це оператор, який виконується в залежності від виконання деякої умови.
- •Синтаксис оператора
- •2 Постановка завдання
- •3 Варіанти індивідуальних завдань
- •4 Методичні вказівки
- •5 Контрольні запитання
- •Лабораторна робота № 4
- •2 Варіанти індивідуальних завдань
- •3 Методичні вказівки
- •Оператор циклу while. Цикл while – це ітераційний цикл із передумовою. Це оператор циклу, який працює до тих пір, поки деяка умова буде істинною.
- •2 Постановка завдання
- •3 Варіанти індивідуальних завдань
- •4 Методичні вказівки
- •5 Приклад виконання лабораторної роботи
- •6 Контрольні запитання
- •Лабораторна робота № 6-7
- •1 Короткі теоретичні відомості
- •Int array[a];
- •Int array[12];
- •Int array[a];
- •2 Варіанти індивідуальних завдань
- •3 Методичні вказівки
- •4 Приклад виконання лабораторної роботи
- •5 Контрольні запитання
- •Лабораторна робота № 8
- •2 Постановка завдання
- •3 Приклад виконання лабораторної роботиІндивідуальне завдання
- •4 Контрольні запитання
- •Лабораторна робота № 9
- •1 Короткі теоретичні відомості
- •2 Індивідуальні завдання
- •3 Методичні вказівки
- •4 Контрольні запитання
- •Лабораторна робота № 10
- •1 Короткі теоретичні відомості
- •2 Індивідуальні завдання
- •3 Методичні вказівки
- •4 Приклад виконання лабораторної роботи
- •5 Контрольні запитання
- •Лабораторна робота № 11-12
- •1 Короткі теоретичні відомості
- •2 Варіанти індивідуальних завдань:
- •3 Методичні вказівки
- •4 Приклад виконання лабораторної роботи
- •5 Контрольні запитання
- •Лабораторна робота № 13-14
- •1 Короткі теоретичні відомості
- •2 Постановка завдання.
- •3 Варіанти індивідуальних завдань
- •4 Методичні вказівки
- •5 Приклад виконання лабораторної роботи
- •6 Контрольні запитання
- •Лабораторна робота № 15
- •1 Короткі теоретичні відомості
- •Int putchar(int c);
- •2 Варіанти індивідуальних завдань
- •3 Методичні вказівки
- •4 Контрольні запитання
- •Лабораторна робота № 16
- •1 Короткі теоретичні відомості
- •Int strcmp(const chart *str1, const chart *str2);
- •2. Варіанти індивідуальних завдань
- •3 Методичні вказівки
- •4 Приклад виконання лабораторної роботи
- •5 Контрольні запитання
- •Лабораторна робота № 17-18
- •1 Короткі теоретичні відомості
- •2 Постановка задачі
- •3 Варіанти індивідуальних завдань
- •4 Приклад виконання лабораторної роботи
- •5 Контрольні запитання
- •Лабораторна робота № 19
- •1 Короткі теоретичні відомості
- •2 Завдання практичної роботи
- •3 Варіанти індивідуальних завдань
- •4 Методичні вказівки
- •5 Приклад виконання лабораторної роботи
- •6 Контрольні запитання
- •Лабораторна робота № 20
- •1 Короткі теоретичні відомості
- •2. Варіанти індивідуальних завдань
- •3 Методичні вказівки
- •4 Контрольні запитання
- •Лабораторна робота № 21
- •1 Короткі теоретичні відомості
- •2 Варіанти індивідуальних завдань
- •3 Методичні вказівки
- •4 Приклад виконання лабораторної роботи
- •2 Варіанти індивідуальних завдань
- •3 Методичні вказівки
- •4 Приклад виконання лабораторної роботи
- •5 Контрольні запитання
- •Лабораторна робота № 24
- •1 Короткі теоретичні відомості
- •2 Варіанти індивідуальних завдань
- •3 Методичні вказівки
- •4 Приклад виконання лабораторної роботи
- •5 Контрольні запитання
- •Лабораторна робота № 24
- •1. Короткі теоретичні відомості
- •2 Варіанти індивідуальних завдань
- •3 Методичні вказівки
- •4 Контрольні запитання
- •Практична робота № 1-2
- •1 Короткі теоретичні відомості
- •Оператор виконує наступні дії:
- •3 Методичні вказівки
- •4 Контрольні запитання
- •Практична робота № 3
- •1 Короткі теоретичні відомості
- •Int array[a];
- •Int array[12];
- •Int array[a];
- •2 Постановка завдання
- •3 Методичні вказівки
- •4 Приклад виконання практичної роботи Завдання
- •Програма розв'язку
- •5 Контрольні запитання
- •Практична робота № 4
- •1 Короткі теоретичні відомості
- •2 Постановка завдання
- •3 Варіанти індивідуальни х завдань
- •4 Методичні вказівки
- •5 Приклад виконання практичної роботи
- •6 Контрольні запитання
- •Практична робота № 5
- •1 Короткі теоретичні відомості
- •Void func( ) /*нічого не повертає*/
- •2 Варіанти індивідуальних завдань
- •3 Методичні вказівки
- •4 Приклад виконання лабораторної роботи
- •5 Контрольні запитання
- •Практична робота № 6
- •1 Короткі теоретичні відомості
- •2 Постановка завдання
- •3 Варіанти індивідуальних завдань
- •4 Методичні вказівки
- •2 Завдання практичної роботи:
- •3 Варіанти індивідуальних завдань
- •4 Методичні вказівки
- •5 Приклад виконання лабораторної роботи
- •Програма розв'язку
- •4 Контрольні запитання
- •Список рекомендованої літератури
4 Контрольні запитання
Як працює операція по бітного додавання?
Як працює операція по бітного множення?
Операція доповнення унарна чи бінарна?
Лабораторна робота № 21
Тема: Складання програм з використанням форматованого файлового вводу-виводу
Мета роботи: Навчитись працювати з файлами на зовнішніх носіях, оволодіти основами відкриття файлів в текстовому та двійковому режимах, організувати форматний ввід-вивід інформації на зовнішні носії.
1 Короткі теоретичні відомості
Типи дискових файлів. В С є два типи потоків: текстові і двійкові. Потік будь-якого з цих типів необхідно асоціювати з файлом. Текстові потоки асоціюються з текстовими файлами. Текстовий файл складається з текстових рядків. Кожний рядок закінчується символом кінця рядка.
Двійкові потоки асоціюються з двійковими файлами. Всі дані зчитуються і записуються в незмінному вигляді без розподілення на рядки і символів кінця рядка. Нульовий символ (\0) і символ кінця рядка (\n). не мають ніякого змістовного значення і зберігаються як будь-який інший файл даних.
Імена файлів на диску. Кожний файл на диску має ім’я. Ім’я файлу використовується для доступу до нього і до його даних. В програмах імена файлів представлені у вигляді символьних рядків, як текстові дані.
Кожна операційна система має свої вимоги до імені файлу. Від конкретної операційної системи залежать символи, які дозволені в імені файлу і які не дозволені. При написанні програми необхідно знати вимоги до імен файлів в операційній системі, для якої пишеться програма.
Ім’я файлу може також містити шлях до цього файлу. Шлях вказує диск і каталог, де міститься файл. Якщо ім’я файлу вказано без шляху, то файл повинен бути розміщений в тому каталозі, який операційна система в даний момент рахує робочим. Приклад повного імені файлу
C:\data\list.txt.
Це ім’я відноситься до файлу list.txt, який знаходиться в папці data на диску C:. Оскільки в мові С обернена похила коса риска має службове навантаження, то в імені файлу замість одної косої риски використовується дві. Це означає, що вищенаведене ім’я файлу на мові С матиме вигляд:
C:\\data\\list.txt.
Процес відкриття файлів. Для роботи з файлами їх необхідно відкрити. При цьому файловий потік потік зв’язується зі вказівником на структуру складного типу FILE, який визначений в бібліотечному файлі <stdio.h>. При відкритті файлу, повертається вказівник на потік, тобто на об’єкт типу FILE.
Відкриттям файлу називається процес, в ході якого створюється потік вводу або виводу, який асоціюється з конкретним файлом на диску. При відкритті файлу, він стає доступним для читання, тобто передачі даних з файлу в програму і для писання.
Для відкриття файлу використовується бібліотечна функція fopen(), прототип якої знаходиться в бібліотечному файлі stdio.h і має вигляд:
FILE *fopen(const char *filename, const char *mode);
Функція повертає вказівник типу FILE * — вказівник на структуру, описану в файлі stdio.h. Елементи структури FILE використовуються програмою для різних операцій з файлами. При відкритті файлу треба описати вказівник на структуру FILE. Синтаксис опису:
FILE *fp; /*Опис вказівника на структуру типу FILE*/
Функції fopen() повертає вказівник (fp) на структуру FILE, який використовується в операціях з файлами. Якщо функція не могла відкрити файл, вона повертає нульовий вказівник NULL. Це може відбутися через збій в пристроях вводу-виводу.
Аргумент filename — це символьний рядок, який містить шлях до файлу, що відкривається. Цей рядок може бути літералом, тобто послідовністю символів в подвійних лапках, або вказівником на рядкову змінну.
Аргумент mode вказує режим відкриття файлу, тобто, чи є файл двійковий або текстовий, відкривається файл для читання даних чи запису інформації на нього, або для обох цих операцій одночасно. Нижче наведено режими відкриття файлів в текстовому режимі функцією fopen() і їх пояснення.
Режим |
Пояснення |
r |
Відкриття файлу для читання, якщо файл не існує, функція повертає значення NULL |
w |
Відкриття файлу для запису, якщо файл не існує, він створюється. Якщо файл існує, він знищується без попередження, |
a |
Відкриття файлу для додавання даних в кінець, якщо файл не існує, він створюється. Якщо файл існує, нові дані дописуються в кінець. |
r+ |
Відкриття файлу для читання і запису, якщо файл не існує, він створюється. Якщо файл існує, нові дані записуються спочатку, знищуючи наявну інформацію. |
w+ |
Відкриття файлу для читання і запису, якщо файл не існує, він створюється. Якщо файл існує, він очищається і нові дані записуються в чистий файл. |
a+ |
Відкриття файлу для читання і добавлення даних, якщо файл не існує, він створюється. Якщо файл існує, нові дані записуються в кінець. |
Щоб відкрити файл в двійковому режимі до аргументу mode треба додати букву b. Якщо аргумент mode рівний “a”, то файл відкривається для додавання даних в текстовому режимі, а якщо “ab”, то файл відкривається в двійковому режимі.
Форматований ввід. Форматований ввід виконується бібліотечною функцією fscanf(). Аналогічно до виводу.scanf(). з тією різницею, що ввід проводиться з заданого файлового потоку, а не з стандартного stdin. Прототип цієї функції знаходиться в бібліотеці stdio.h. і має вид
int fscanf(FILE *fp, char *fmt, ...);
Першим аргументом є вказівник структурного типу FILE, повернутий з fopen() . Для зчитування даних з конкретного файлу треба передати в функцію вказівник, який повертає функція fopen() при відкритті файлу.
Другий аргумент - це рядок формату char *fmt. (Рядок формату - це такий самий рядок, що і в функції scanf(). (це то, що береться в подвійні лапки)).
Третій аргумент це багато крапок, що в прототипі означає змінний список аргументів, в які треба помістити введені дані.
Приклад читання форматованих даних з файлу "C:\\lk\\list.txt":
/* Читанняформатованих даних з допомогою функції fscanf(). */
#include <stdlib.h>
#include <stdio.h>
main(){
int f1, f2, f3, f4, f5;
FILE *fp;
fp = fopen("C:\\lk\\list.txt", "r"); /*Відкриття файлу в режимі читання*/
/*Читання з файлу, перший */
fscanf(fp, "%d\n%d\n%d\n%d\n%d\n", &f1, &f2, &f3, &f4, &f5);
printf("The values are %d, %d, %d, %d, %d \n.",f1, f2, f3, f4, f5);
fclose(fp); /* Закриття файлу fp*/}