- •Методичні вказівки до лабораторних робіт по курсам
- •8.092402 “Інформаційні мережі зв'язку” Затверджено
- •Протокол № __ від ____
- •Упорядники: в. П. Степанов в. П. Пчелінов
- •Загальні положення
- •1 Організація введення і виведення даних та розв’язання задач з простою змінною
- •1.1 Мета роботи
- •1.2 Вказівки до організації самостійної роботи студентів
- •1.2.1 Використання операторів введення
- •For ( [ вир1; ] [ вир2] [; вир3 ] ) оператор;,
- •1.5 Контрольні питання
- •1.6 Варіанти індивідуальних завдань
- •2 Розв’язання задач c використанням одновимірних і двовимірних масивів
- •2.1 Ціль роботи Прищепити студентам навички розв’язання задач з використанням одновимірних і двовимірних масивів, складних циклів і використання покажчиків.
- •2.2 Методичні рекомендації з організації самостійної роботи студентів
- •2.3 Використання покажчиків
- •Наиведемо програму з використанням покажчиків:
- •Int main ( )
- •Void main ( void )
- •2.4 Використання масивів і покажчиків
- •Приклад 2.4 Обчислити середнє значення позитивних елементів одновимірного масиву.
- •Int *pmas;
- •2.5 Масиви покажчиків
- •2.6 Контрольні питання
- •2.7. Варіанти індивідуальних завдань
- •3 Вирішування задач з використанням даних символьного типу
- •3.1 Ціль роботи Вивчення способів опису символьних типів даних і використання структур для обробки даних.
- •3.2 Методичні рекомендації з організації самостійної
- •Роботи студентів
- •3.2.1 Організація символьного введення - виведення
- •Device . Get (char_var);
- •3.2.2 Рядки як символьні масиви
- •3.2.3 Введення-виведення символьних масивів
- •Void main (void)
- •3.2.4 Основні функції обробки символьних типів
- •Void main (void)
- •Void del (char *st, int k, int n);
- •Void del(char *st, int, int);
- •Void main()
- •Void del(char *st,int k,int n)
- •[ Проміжки ] [знак числа] [ цифри].
- •Void main( )
- •Void main()
- •Void main()
- •Void main(void)
- •3.2 Контрольні питання і завдання
- •3.4 Варіанти індивідуальних завдань
- •4 Вирішувння задач з використанням даних типу структура
- •4.1 Ціль роботи Освоєння заходів розробки і налагодження програм з використанням
- •4.2 Методичні рекомендації з організації самостійної
- •Void main(void)
- •Void qsort (void *base , n , width,
- •Int (*fcmp) ( const void *elem1, const void *elem2) .
- •4.3 Контрольні питання
- •4.4. Індивідуальні завдання
- •5 Використання функцій при розробці програм
- •5.1 Ціль роботи
- •5.2 Методичні вказівки з організації самостійної роботи студентів
- •Void fun ( int p)
- •Void main ( )
- •Int main ( )
- •5.2.1 Використання покажчиків на функцію
- •Void main ( )
- •5.2.2 Використання масивів - параметрів функцій
- •Vоid sort (int mas [ 30 ]); .
- •Void sort ( int mas [ ], int n ) ; .
- •Void fun1 (char st [ 5]);
- •Void fun1 ( char st [5] )
- •Void fun2 ( int mat [ ] [10], int rows, int cols );
- •5.2.4 Звертання до функції і передача результату
- •Int main ( )
- •5.2.5 Перевантаження функцій
- •5.3 Контрольні питання
- •5.4 Варіанти індивідуальних завдань
- •6 Робота з файлами
- •6.1 Ціль роботи
- •6.2 Методичні вказівки по організації самостійної роботи
- •Void main ( )
- •Ifstream in ( ”file1") ;
- •Література і джерела
- •Загальні положення ...………………………………………………………….........3
- •Навчальне видання
- •8.092402 “Інформаційні мережі зв'язку”.
- •61726 Харків, просп. Леніна, 14.
6 Робота з файлами
6.1 Ціль роботи
Навчитися виконувати типові операції з файлами: створення, перегляд і коректування.
6.2 Методичні вказівки по організації самостійної роботи
У процесі підготовки до лабораторної роботи рекомендується вивчити порядок опису файлу, передачу даних у файл і їхнє читання [ 2, c.88 – 95; 3, с.431-444; конспект лекцій ] . .
Як елементи файлу можна використовувати будь-які дані мови С++ (числа, символи, рядки, масиви і структури).
При використанні великої кількості оброблюваних у програмі даних доцільно їх записувати на диск, тобто створити на диску файл даних. Перед створенням, записом даних у файл або читанням їх з файлу, цей файл треба спочатку відкрити.
У процесі введення-виведення з використанням стандартних пристроїв (клавіатури й екрана) у програму варто включити заголовний файл iostream.h, у якому міститься опис відповідного класу iostream, тобто на початку тексту програми поміщають директиву :
#include <iostream.h>
Файлове введення-виведення і необхідні функції-члени введення-виведенняописані в заголовному файлі fstream, що містить опис основних класів і методів.
Існують також додаткові файли бібліотеки введення-виведення, що містять більш спеціалізовані функції – члени введення-виведення.
Для відкриття файлу на диску використовується функція-член класу fstream, що має наступний прототип (заголовок):
void open (const char *filename, int mode, int m = flebuf :: openprompt);
де filename ім'я файлу, що відкривається, у якому при необхідності можна вказати шлях;
mode параметр, що задає режим уведення , у файлі fstream визначені значення цього режиму і їхній зміст;
m параметр, що задає захист файлу, що за замовчуванням приймає значення, заданий константою filebuf :: openprompt ;
Параметр mode може приймати одне зі значень, призначуване в залежності від мети відкриття файлу, або комбінацію цих значень, отриману з використанням операції " або " , тобто "\" . Вони мають вигляд:
ios :: app файл (потік) відкривається для додавання ("а");
ios :: in файл відкривається для читання (" r ") ;
ios :: out файл відкривається для запису ("w ");
ios :: ate відкрити файл і установити покажчик потоку на кінець файлу;
ios :: binary відкрити файл у двійковому режимі ("у");
ios :: trunc відкрити файл і видалити уміст файлу ;
ios :: nocreate відкрити існуючий файл, якщо він не існує
операцію завершити відмовленням;
ios :: noreplace якщо файл існує видати повідомлення про помилку, за винятком випадків пошуку кінця або файлу додавання у файл.
Розглянемо деякі приклади записів функцій відкриття файлу :
#include <fstream.h>
main ( )
{
fstream fp; // опис файлової змінної;
// відкривається файл myfile.dat для запису, тобто створюється новий файл;
fp. open ( " a : \ cpp \ myfile.dat " , ios :: out)
// відкривається раніше створений файл file2.dat для читання даних;
fp.open (" c : \ vp \ file2.dat ", ios :: in );
// відкривається файл для читання або запису з використанням
// дввійкового режиму;
fp .open (" myfile " , ios :: out | ios :: in | ios :: binary);
………………………………………………………………
}
Файлова змінна fp повинна бути попередньо описана як об'єкт класу fstream або ofstream . Якщо під час відкриття файлу відбувається помилка, то завжди fp = 0, тобто файлова перемінн-об'єкт дорівнює нулю (не NULL ). Це використовується для визначення результату відкриття файлу в такий спосіб :
#include <fstream.h>
main ( )
{
ofstream . fp;
fp.open ( " Filename " , ios :: app); // Додати у файл
if (!fp )
{
cout << "Помилка відкриття файлу " << endl;
exit (0);
} // Вихід із програми
else
{
// Текст програми роботи з файлом
}
}
Для організації циклу з метою перегляду усього файлу, можна використовувати оператор циклу у вигляді:
while ( ! fp.eof ( ))
{……………
…………...}
Приклад 6.1 Записати у файл п'ять прізвищ.
//P5_1.CPP запис у файл п'яти прізвищ
#include < fstream .h >
ofstream fp;
main ( )
{
fp.open ( " a : \ Myfile " , ios :: out); // Створення нового файлу
fp << " Авдєєв А.И. " << endl;
fp << " Бобрів А.П. " << endl;
fp << " Кузьмін И.В. " << endl;
fp << " Попов Р.Л. " << endl;
fp << " Яковлев Ю.Т. " << endl;
fp. close ( ); // Закриття файлу
}
Цей фрагмент краще записати у вигляді:
#include < fstream.h >
ofstream fp;
main ( )
{
char s [ 5][15];
fp . open ( " a :\ Myfile1 " , ios :: out);
for ( int i = 0; i < 5 ; i++ )
fp. getline ( s [ i ] )
fp. close;
}
Відкривати файли можна й інакше, наприклад, використовуючи класи ifstream для читання з файлу (тобто введення) і ofstream для запису у файл (тобто виведення з ОЗП) :
ifstream in ( " Namefile "); // відкриття файлу для читання з файлу
ofstream out ( " Namefile2 "); // відкриття файлу для запису у файл ,
де in і out файлові змінні відповідного класу.
Приклад 6.2 Копіювання одного текстового файлу в інший файл.
// P5_2.CPP копіювання текстового файлу file1 у файл file2
#include <iostream.h>
#include <fstream.h>