- •Понятие типа данных. Классификация типов данных. Характеристика стандартных типов Данных
- •Понятие переменной. Общий вид оператора описания переменных. Понятие области действия, объявления и определения переменной
- •Int a; // глобальная переменная a
- •Правила преобразования типов в выражениях. Приведите примеры явного и неявного
- •Опишите чем отличается ввод символа с помощью функций getchar(), getch()и getche().Пример.
- •Оператор if: назначение, синтаксис записи, выполнение, примеры использования
- •If (условие) оператор_1; else оператор_2;
- •Оператор switch : назначение, синтаксис записи, выполнение, примеры использования
- •Понятие цикла. Оператор while: назначение, синтаксис записи, выполнение, примеры
- •Оператор do while: назначение, синтаксис записи, выполнение, примеры использования
- •Оператор for: назначение, синтаксис записи, выполнение, примеры использования
- •Напишите фрагмент программы с использованием разных операторов цикла. Рекомендации по выбору операторов цикла
- •Операторы передачи управления: назначение и примеры использования
- •Ifstream имя_потока(имя_файла,ios::in);
- •Понятие текстовых и бинарных файлов. Открытие файлов в стиле языка с: синтаксис,
- •Функции ввода - вывода языка с для обработки бинарных файлов: синтаксис, семантика, примеры использования
- •Произвольный доступ к элементам двоичных файлов в языке с: синтаксис используемых функций, примеры
- •Ifstream имя_потока(имя_файла,ios::in);
- •Понятие массива. Одномерные массивы со статическим выделением памяти: синтаксис
- •Int a[]; //Ошибка! Размер массива не известен
- •Int a[k]; //Ошибка! Размер массива не может быть переменной
- •Понятие массива. Как передаются одномерные массивы в качестве параметров в функцию? Примеры
- •Понятие массива. Как организуется запись одномерного массива в текстовый файл и чтение одномерного массива из текстового файла? Примеры
- •39. Понятие массива. Как организуется запись одномерного массива в бинарный файл и чтение одномерного массива из бинарного файла?
- •Ifstream f; // объявление потока для чтения
- •44. Понятие массива. Как организуется запись двумерного массива в бинарный файл и чтение
Функции ввода - вывода языка с для обработки бинарных файлов: синтаксис, семантика, примеры использования
Способ хранения данных в бинарных (двоичных) файлах имеет два важных преимущества:
-Увеличивается скорость извлечения из файла данных, не носящих чисто текстового характера, так как не требуется действий по преобразованию их из текстового формата в двоичный.
-Имеет место экономия памяти и дискового пространства, поскольку двоичная кодировка более компактна и нет необходимости в использовании управляющих символов.
Принципиально обработка двоичных файлов не очень сильно отличается от обработки текстовых файлов. В любом случае, прежде чем работать с файлом, следует открыть файл, указав режим доступа. Открыть файл для двоичной обработки можно посредством вызова функции fopen(), но ко всем режимам доступа добавляют строчную латинскую букву b. Режимы доступа одинаковы для текстовых и двоичных файлов. Если после вызова функции fopen() указатель на файловый поток f не равен нулю, его можно использовать в последующих обращениях к функциям работы с двоичными файлами, таким, как fwrite() и fread() . Закрывают двоичные файлы, как и текстовые, функцией fclose().
Функции fwrite() и fread() так же могут быть использованы для работы с текстовыми файлами, хотя чаще их используют для работы с бинарными файлами. Параметры функций:
-ptr – указатель на исходные данные, читаемые из файла (записываемые в файл);
-size – размер в байтах одного элемента данных;
Замечание. size_t – специальный идентификатор типа, который введен для обозначения типа результата, вычисляемого операцией sizeof. На самом деле идентификатор size_t является синонимом unsigned int.
-n – число записываемых в файл элементов данных; stream – указатель на файловый поток.
Существует два способа доступа к элементам двоичных файлов: последовательный и произвольный.
Произвольный доступ к элементам двоичных файлов в языке с: синтаксис используемых функций, примеры
Организация произвольного доступа к компонентам файла позволяет считывать значения из любой позиции в файле, а также записывать новую информацию в любое место в файле. Но к файлам с произвольным доступом предъявляется одно жесткое требование: их компоненты должны иметь одинаковую длину. Двоичные файлы позволяют обеспечить удовлетворение этого требования. О том, чтобы данные, которые будут находиться в файле произвольного доступа, имели одинаковый размер, следует позаботиться в момент создания файла.
Вспомним о том, что первичная запись в файл возможна только в режиме последовательного доступа.
Для организации произвольного доступа к элементам файла используют функцию fseek(), прототип которой описан в заголовочном файле stdio.h.
Функция fseek() перемещает внутренний указатель файлового потока, изменяя таким образом место в файле, с которого начинается следующая операция чтения или записи. В случае успешного завершения функция возвращает 0, в случае ошибки – ненулевое значение.
Параметры функции:
FILE *stream – указатель на открытый файловый поток;
long offset – число байтов, на которое нужно переместить файловый указатель в направлении, указанном параметром whence. Для перемещения файлового указателя в обратном направлении (в сторону начала файла) следует устанавливать offset равным отрицательному значению;
int whence – указывает положение точки отсчета файлового указателя, от которой будет происходить его перемещение Значения аргумента whence представлены в таблице.
При использовании функции fseek() следует соблюдать осторожность, так как попадание за пределы файла чаще всего не приводит к генерации ошибки, поэтому программисту самому следует принимать меры для предотвращения обращения к диску за пределами известных границ файла
Как организуется работа с файлами и потоками в стиле языка С++ (на примере текстовых
файлов)
В С++ для работы с файлами используются специальные потоки. Ресурсы работы с файловыми потоками находятся в заголовочном файле fstream.h.
В С++ используется три класса потоков: ввода, вывода и ввода-вывода.
После объявления потока его связывают с файлом с помощью функции open().
При вызове функции open() используется конструкция составного имени, так как функция open() является методом класса ios.
Можно производить связывание потока с именем файла сразу при его определении. При этом сразу после имени потока указывается список фактических параметров.
Закрытие файлового потока выполняется с помощью встроенной функции close().
При вызове функции close() используется конструкция составного имени, так как функция close() является методом класса ios.
Ввод и вывод данных из (в) файла производится соответственно с помощью операторов извлечения (>>) и передачи данных в поток (<<).
Синтаксис чтения данных из файла аналогичен потоку cin. Синтаксис вывода данных в файл аналогичен потоку cout.
Замечание: Если в текстовом файле хранятся числовые значения, то после последнего числа не должно быть пробелов, символов табуляции и конца строки.
Синтаксис определения файлового потока для вывода данных в заданный файл :
ofstream имя_потока(имя_файла,ios::out);
Синтаксис определения файлового потока для ввода данных из заданного файла :