Similar presentations:
Программирование на языках высокого уровня
1.
Программирование на языкахвысокого уровня
2.
Файлы данныхХранение данных через переменные или массивы
является временным, до конца работы программы.
Для долговременного хранения предназначены
файлы, размещенные на внешних носителях.
3.
Файлы данныхЛогически файл можно представить как цепочку
байт, имеющих начало и конец.
Работа с файлами предполагает операции:
Создание файла
Запись в файл
Чтение из файла
Добавление информации
4.
Файлы данныхЧтение из файла и запись в файл определяется
положением внутреннего указателя
Положение указателя меняется либо
автоматически (при чтении или записи) либо за
счет явного управления его положением
5.
Функции работы с файлами<fstream.h>
ofstream <файловая переменная> (<имя
файла>, ios:: <режим>);
-
открывает файл для записи
Например:
ofstream ff ("ff.dat", ios :: out)
файловая
имя файла
переменная
(путь доступа к файлу)
режим
6.
Файлы данныхПод именем файла понимается не только его
название, но и расширение
Если файл не находится в одной папке с
программным кодом, то прописывают путь доступа
к файлу
При обращении к файлу используют файловую
переменную. Файловая переменная – это
уникальный идентификатор, строится по все
правилам построения идентификаторов языка С++
7.
Файлы данныхФайловая переменная, связанная с именем файла,
фактически идентифицирует файл.
При повторном обращении к файлу, например,
чтению из файла, в пределах одной программы
нельзя использовать одну и ту же файловую
переменную.
8.
Режимы обращения к файлу призаписи:
ios :: out
– создание нового файла, внутренний
указатель автоматически устанавливается в
начало файла
ios :: app
– дозапись в уже существующий файл,
внутренний указатель устанавливается в
конец файла
9.
Функции работы с файлами<fstream.h>
ifstream <файловая переменная> (<имя
файла>, ios :: <режим>);
- открыть файл для чтения
Режим чтения из файла:
ios :: in
- чтение из файла, внутренний указатель
автоматически устанавливается в начало файла
10.
Функции работы с файлами<fstream.h>
При каждом чтении из файла, внутренний
указатель перемещается на начало
следующей компоненты файла
Компонента файла – это та порция
информации, которая была записана в
файл при его создании
11.
Функции работы с файлами<fstream.h>
fstream <файловая переменная> (<имя
файла>, ios:: <режим>);
- открыть файл для записи и чтения
Режим:
ios :: ate
- запись в файл, указатель устанавливается в
конец файла.
Например:
fstream ff ("ff.dat", ios::in | ios :: out);
12.
Функции работы с файлами<fstream.h>
Работа с файлами предполагает проверку
на существование файла как при записи в
файл, так и при чтении из файла.
В проверке указывается файловая
переменная, связанная с именем файла при
открытии и принимающая одно из двух
значений: true или false
13.
Функции работы с файлами<fstream.h>
После открытия файла желательна
осуществить проверку:
if ( ! ff ) {cout<< " file error ! " ; exit (1) ; }
Если не удалось, по какой-либо причине
открыть файл, после соответствующего
сообщения, прерывается исполнение
программы
14.
Функции работы с файлами<fstream.h>
ff .close ();
- закрытие файла
где ff - файловая переменная.
15.
Файлы последовательного ипроизвольного доступа
По способу доступа к информации файлы
делятся на файлы последовательного
доступа и файлы произвольного доступа
Файлы последовательного доступа – это
файлы, хранящие информацию в
неструктурированном виде
Поиск в таких файлах осуществляется
последовательным считыванием
информации из файла
16.
Файлы последовательногодоступа
Запись в файл одой компоненты:
ff << name<< “\n'‘;
файловая
переменная
переменная
отделяет одну единицу
информации от другой
Чтение из файла одой компоненты:
ff >> name;
Запись в файл и чтение из файла аналогично
организации потоков ввода-вывода информации
17.
Задача:Создать файл целых чисел.
Сформировать из него два файла, один с
четными числами исходного файла, другой
– с нечетными
18.
Программа#include<fstream>
#include<iostream>
#include<conio.h>
using namespace std;
int main()
{ ofstream f ( "f.dat" );
файловая
переменная
имя файла
// для работы с файлом
// открыть файл для записи
19.
Программаint x, n;
cout<<"\n Введите n \n"; cin>>n;
cout<<"\n Введите сами числа\n";
for ( int i=1; i<=n; i++)
{ cin>>x;
// ввод с клавиатуры
f<<x<<"\n"; }
// запись в файл
f.close();
// закрыть файл
ifstream ff ( "f.dat");
// открыть файл для чтения
20.
Программаofstream fc("fc.dat"); //открыть файл для записи четных
ofstream fn("fn.dat");
// открыть файл для записи нечетных
cout<<" \n Исходный файл \n";
while ( ff>>x )
// чтение из файла
{ cout<<"\n x="<<x;
// вывод на экран
if ( fmod(x,2)==0)
fc<<x<<"\n" ;
// запись четных чисел
else fn<<x<<"\n" ; }
// запись нечетных чисел
21.
Программа// закрыть все файлы
ff.close(); fc.close(); fn.close();
// открыть файлы для чтения
ifstream ffc("fc.dat");
ifstream ffn("fn.dat");
cout<<"\n Файл четных чисел\n" ;
while ( ffc>>x )
// чтение из файла
{ cout<< "\n x= "<<x; }
// вывод на экран
22.
Программаcout<<"\n Файл нечетных чисел \n" ;
while ( ffn>>x )
// чтение из файла
{ cout<< "\nx="<<x; }
// вывод на экран
ffc.close(); ffn.close();
getch();
}
23.
ЗадачаСоздать файл, содержащий информацию о
товарах некоторого склада:
наименование
количество
цена
Подсчитать общую стоимость товаров на
складе
(Сформировать файл структур)
24.
Программа#include<fstream>
// для работы с файлом
#include<iostream>
#include<conio.h>
# define FILE "f.dat" // имя файла
using namespace std;
int main()
25.
Программа{
// пользовательский тип - структура
struct Tovar { char name [10];
int kol;
float c;
};
Tovar a;
// буфер обмена с файлом
26.
Программаfloat s=0;
// общая стоимость товаров
int n;
// кол-во наименований товаров
ofstream f(FILE); // открытьфайл для записи
cout<<"\n Введите n \n";
cin>>n;
27.
Программаfor ( int i=1; i<=n; i++)
{ cout<<"\n Введите наименов "; cin>>a.name;
cout<<"\n Введите кол-во "; cin>>a.kol;
cout<<"\n Введите цену "; cin>>a.c;
// запись в файл
f << a.name<<"\n"<< a.kol<<"\n"<< a.c<<"\n";
}
f.close();
// закрыть файл
28.
Программаifstream ff(FILE);
// открыть файл для чтения
cout<<"\n Перечень товаров \n";
for ( int i=1; i<=n; i++)
{ ff>>a.name>>a.kol>>a.c; // чтение из файла
cout<<"\n"<<a.name<<"\t"<<a.kol<<"\t"<<a.c;
s+=a.kol * a.c;
}
29.
Программаcout<<"\nОбщая стоимость товаров s=
"<<s;
ff.close();
getch();
}
Препроцессорная команда
#define
задаёт символическую константу FILE,
связанная с именем файла.
30.
Файлы произвольного доступаЕсли требуется частый доступ к данным,
хранящимся в некотором файле, следует
использовать файлы с произвольным
доступом.
Файлы с произвольным доступом - файлы,
хранящие информацию в
структурированном виде.
31.
Файлы произвольного доступаФайлы произвольного доступа должны
быть открыты для записи, или для чтения,
или для записи и чтения одновременно.
Файлы последовательного доступа
выигрывают у файлов с произвольным
доступом по компактности, но
проигрывают по скорости доступа к
информации.
32.
Файлы произвольного доступаЗапись в файл произвольного доступа
реализует функция - write
а позиционирование функция – seekp
(put – положить)
Чтение из файла реализует функция - read,
а позиционирование функция – seekg
(get – взять)
33.
Примеры:ff.seekp (n);
ff.write ( ( char *)&t, sizeof(t));
- установить внутренний указатель на n-ый
байт от начала файла и записать
значение переменной t с размером
sizeof(t) байт, начиная с позиции n вперед
(ff – файловая переменная)
34.
Примеры:ff.seekg (n);
ff.read (( char *)&t, sizeof(t));
- установить внутренний указатель на n-ый
байт от начала файла и присвоить
переменной t(считать) значение,
записанное от позиции n на sizeof(t) байт
вперед
35.
Функции управления внутреннимуказателем
Функция
Назначение
seekg
устанавливает внутренний указатель
в файле при чтении
seekp
устанавливает внутренний указатель
в файле при записи
tellg
определяет позицию внутреннего
указателя при чтении
tellp
определяет позицию внутреннего
указателя при записи
36.
ЗадачаСоздать файл целых чисел
Сформировать из исходного файла новый,
содержащий числа, стоящие на четных
местах.
37.
ЗадачаСоздать файл, содержащий информацию о
товарах некоторого склада (файл структур):
наименование
количество
цена
38.
ЗадачаФайл содержит информацию о товарах
склада (на базе предыдущей задачи)
Подсчитать общую стоимость товаров
определенного наименования (например,
велосипеды)
39.
ЗадачаИспользуя файл, созданный предыдущей
программой, увеличить стоимость
определенного товара на 50%
40.
Текстовые файлыПомещение в
поток
Чтение из
потока
входной
поток
буфер
Программа
буфер
выходно
й поток
Поток – это абстрактное понятие,
относящееся к любому переносу данных от
источника к приемнику
41.
Текстовые файлыФайл – это именованная область внешней
памяти, в которой хранится логически
завершенный объем данных
Текстовый файл – это файл, в котором
каждый символ из используемого набора
символов хранится в виде одного байта,
кода, соответствующего символу
42.
Текстовые файлыС помощью любого текстового редактора
можно просмотреть содержимое
текстового файла
При записи информации в текстовый
файл, все данные преобразуются к
символьному типу и хранятся в
символьном виде
В конце текстового файла присутствует
признак конца файла
43.
Запись в файлОписание файловой переменной:
ofstream <файловая переменная>;
Функция открытия файла для чтения:
ff.open(<имя файла>, <режим>);
Запись информации в текстовый файл:
ff<<a;
44.
Запись в файлДля того чтобы записывать данные в
текстовый файл, необходимо:
описать файловую переменную
типа ofstream
открыть файл с помощью
функции open[опэн
вывести информацию в файл
обязательно закрыть файл
45.
Чтение из файлаОписание файловой переменной:
ifstream <файловая переменная>;
Функция открытия файла для чтения:
ff.open(<имя файла>, <режим>);
Чтение информации из текстового файла:
ff>>a;
46.
Чтение из файлаДля того, чтобы считать данные из текстового
файла, необходимо:
описать файловую переменную типа ifstream
открыть файл с помощью функции open
считать
информацию из файла, при
считывании
каждой
порции
данных
необходимо проверять, достигнут ли конец
файла
закрыть файл
47.
Закрытие файлаЗакрытие файла:
ff.close();
Признак конца файла:
ff.eof();
48.
Признак конца файлаwhile( ! ff.eof() )
{ /* чтение очередного значения
из потока ff в переменную buf */
ff>>buf;
cout<<buf; }
49.
Признак конца файлаДва числа в текстовом редакторе считаются
разделенными, если между ними есть хотя бы
один из символов: пробел, табуляция, символ
конца строки
Для определения конца файла используют
функцию eof
Файловая переменная ff – может принимать
одно из двух значений: true или false,в
зависимости от того достигнут ли конец файла.
50.
Режимы записи в файлРежимы записи в файл:
1. ios :: out
2. ios :: app
3. ios :: ate
4. ios::trunc
51.
Режимы чтения и записи в файлПервый режим - открыть файл в режиме записи
данных, при этом информация в существующем
файле уничтожается
Второй режим - открыть файл в режиме записи
данных в конец файла
Третий режим – передвинуть внутренний
указатель в конец уже открытого файла
Четвертый режим - очистить файл, действия,
аналогичные первому режиму
52.
Режимы чтения из файлаРежим чтения из файла:
ios :: in
открыть файл в режиме чтения данных,
режим является режимом по умолчанию
для потоков ifstream
53.
Режимы чтения из файла1. Открытие файла записи:
ofstream ff;
open(fil.txt, ios::out);
2. Открытие файла для чтения:
ifstream ff;
open(fil.txt, ios::in);
3. Открытие файла для записи и чтения:
fstream ff;
open(fil.txt);
54.
Обработка текстовых файлов#include<iostream>
#include<fstream>
#include<conuo.h>
using name std;
int main()
{ int i, n;
double buf;
ofstream f;
ff.open("file.txt", ios::out);
55.
Обработка текстовых файловcout<<"\n Введите количество чисел n=";
cin>>n;
// запись в текстовый файл
for( i=1; i<n; i++)
{ cout<<i<<"число=";
cin>>buf;
f<<buf<<"\t"; }
f.close();
56.
Обработка текстовых файловifstream ff;
ff.open("file.txt", ios::in);
cout<<"\n Созданный файл \n";
// чтение из текстового файла
while( ! ff.eof() )
{ ff>>buf;
cout<<buf<<"\t"; }
ff.close();
getch();}