- •1…Понятие информатики, информации, кодирования информации.
- •2…Системы счисления, переводы чисел из одной позиционной системы счисления в другую.
- •3… Понятия алгоритма: рекурсивные функции системы текстовых замен.
- •4… Способы описания языков программирования: бнф-нотации, синтаксические диаграммы
- •12…Оператор безусловного перехода, операторы продолжения и завершения, примеры использования.
- •16…Ввод/Вывод данных в с.
- •18…Производные типы данных, массивы, работа с массивами.
- •22…Файлы прямого и последовательного доступа к данным, форматизованный и неформатизованный ввод/вывод.
- •24…Понятие подпрограммы, назначение подпрограмм, использование подпрограмм.
- •26…Передача параметров в подпрограмму, параметры входные и выходные, параметры , передаваемые по значению и по адресу.
- •27…Использование подпрограмм, параметры формальные, локальные, глобальные, обращения к подпрограммам, фактические параметры.
- •28…Передача параметров массивов в подпрограмму, примеры.
- •29…Рекурсивные функции, примеры.
- •30…Понятие структурного программирования, этап проектирования – композиция и декомпозиция, понятие статической и динамической структуры программы, спецификация программы.
- •31…Понятие частичной и полной корректности программы, правила вывода – общий вид, правила консеквенции.
- •32… Правила вывода для операторов: пустого, присваивания, составного.
- •33… Правила вывода для оператора ветвления.
- •34… Правило вывода для операторов: оператора выбора, операторов цикла с параметром.
- •35… Правила вывода для циклов с предусловием и постусловием, пример использования правил вывода для реализации цикла с постусловием оператором цикла с постусловием.
- •36… Пример для доказательства правильности программы.
22…Файлы прямого и последовательного доступа к данным, форматизованный и неформатизованный ввод/вывод.
В С/С++ возможен последовательный и прямой доступ к данным, и форматированный и неформатированный ввод/вывод.
Последовательный доступ к данным реализует посл. считывания или запись информации. Прямой доступ к данным позволяет обратиться к произвольной компоненте файла, если ее адрес может быть вычислен.
Форматизованная передача данных – это передача информации, когда ее формат (поля, выделяемые под данные) определены пользователем.
Неформатизованная передача данных (ввод/вывод) – это передача информации по форматам, принятым системой по умолчанию.
Для организации формат. передачи данных необходимо подключить к программе функции, прототипы которых содержатся в заголовочом файле <stdio.h>. Для неформатизованного - <fstream.h>
Данные при передаче рассматриваются как поток байтов, а физически поток – это файл или устройство, т.е. клавиатура или экран рассматриваются как файл.
Существует 5 предопр. потоков:
stdin – стандартный поток ввода (с клавы)
stdout – для вывода (монитор)
stderr – вывод сообщений об ошибках
stdprm – вывод на принтер
stdaux – дополнительный поток для передачи информации
23…Работа с файлами в С/С++, примеры.
Работа с файлами (потоками) начинается с его открытия. При открытии в операционной памяти выделяется специальное место (буфер) и при выводе информация передается до полного заполнения буфера/закрытия потока. Чтение информации осуществляется блоками размером буфера. При аварийном завершении работы программы часть информации может остаться в буфере, тогда происходит потеря информации.
Открыть поток для формат. передачи данных можно 1) FILE *<имя переменной>; <имя переменной> = fopen (<имя файла на диске>, <режим>);
2) FILE *<имя переменной> = fopen (<имя файла на диске>, <режим>);
При успешном открытии файла создается указатель на файл, который связан с информацией, необходимой для работы с файлом.
Компоненты файла нумеруются от 0 с шагом 1 и при открытии файла указатель устанавливается на компонент с номером 0.
Режим параметра
“r” – файл открыт для чтения, ук-тель установлен на начало файла
“w” – файл открыт для записи информации в файл, указатель установлен на начало файла, если в нем была инф-ия, она стирается
“a” – файл открыт для дозаписи
Эти символы со знаком + устанавливают режим, позволяющий и записывать в файл, и считывать из него (двунаправленный поток).
Режим открытия может содержать символ t – текстовый тип инф-ии в файле или b – двоичная бинарная инф-ия
По умолчанию текстовая.
Функция freopen (<имя файла на диске>, <режим>, <указатель на файл>) работает аналогично fopen, но предварительно закрывает поток, если он был ранее открыт.
Пример
FILE *f1; f1 = fopen (“d:\\work\\f1.ipt”, “r”);
FILE *f2 = fopen (“d:\\work\\f2.opt”, “w”);
fscanf (f1, “%d”, &x);
fprintf (f2, “%8.4f”, sqrt(x));
После работы с файлом его необходимо закрыть
fclose (<указатель на файл>);
fcloseall();
Для просмотра всех эл-тов файла, организации цикла по файлу используется функция
feof(<файловая переменная>)
ftell(<файловая переменная>) – знач. указателя файла
fgetpos(<файловая переменная>, <имя>) – присваивает второму параметру знач. указателя файла, соответствующего первому параметру
fseek(<файловая переменная>, <смещение>, <база>) – устанавливает ук-тель файла, соотв. первому параметру в позицию, определяемую вторым и третьим параметром. <смещение> определяет, на сколько байтов необходимо сместить ук-тель файла относительно <базы>.
SEEK_SET – начало файла
SEEK_CUR – текущая позиция
SEEK_END – конец файла
fsetpos (<файловая переменная>, <pos>) – ук. в позицию, опр. вторым параметром в файле, соотв. первому параметру
rewind (<файловая переменная>) – ук. в начало файла
malloc (<размер>) – выделяет участок памяти заданного размера в байтах.
Если файл представляется последовательностью однотипных записей (в отличие от потока, когда файл рассматривается как текст, т.е. поток символов), для ввода и вывода используются функции fread и fwrite. Длина записи – это количество составляющих ее байтов.
fread (<буфер>, <длина записи>, <кол-во>, <файл. переменная>)
fwrite (<буфер>, <длина записи>, <кол-во>, <файл. переменная>)
Для ввода и вывода потока существуют следующие функции:
чтение и запись потока байтов (записей) – fread и fwrite;
чтение символа из потока – gets и fgets
чтение строки из потока – fgets
запись символа в поток – puts и fputs
запись строки в поток – fputs
Формат.ввод из потока и вывод в поток реализуется функциями:
fscanf fprintf
Бесформатная передача данных
<fstream.h>
В стандартной библиотеке содержится три класса для работы с файлами. Открытие потока осуществляется конструкторами:
ifstream <имя потока> (<имя файла на диске>);
ofstream <имя потока> (<имя файла на диске>);
fstream <имя потока> (<имя файла на диске>);
Операции помещения в поток (<<) и извлечения из потока (>>).
Например:
ifstream inputf (“file_1.txt”);
inputf>>x>>y;
ofstream outputf (“file_2.txt”);
outputf<<sqrt(x)<<(x+y);
Закрытие потоков, связанных с файлами выполняется с помощью методов
inputf.close ();
outputf.close ();
В файле f1.txt – целые числа, переписать в файл f2.txt положительные, кратные 5.
# include “stdio.h”
# include “conio.h”
void main () {
FILE *f1, *f2;
f1 = fopen (“f1.txt”, “r”);
f2 = fopen (“f2.txt”, “w”);
int k;
while (!feof(f1)) {
fscanf (f1, “%d”, &k);
if ((k>0) && (k%5 == 0)) {
printf (“%d\t”, k);
fprintf (f2, “%d\t”, k); };
}
fclose (f1); fclose (f2);
getch ();
}