- •1 Билет.
- •2 Билет.
- •3 Билет.
- •4 Билет.
- •5 Билет.
- •6 Билет. Способы описания языков программирования: бнф-нотации, синтаксические диаграммы.
- •7 Билет.
- •8 Билет. Переменные, область действия, время жизни, класс памяти.
- •10 Билет.
- •19 Билет. Ввод/вывод данных на c.
- •21 Билет. Производные типы данных, массивы, работа с массивами.
- •26 Билет. Файлы прямого и последовательного доступа к данным. Форматизированный и неформатизированный ввод/вывод.
- •28 Билет. Понятие подпрограммы, назначение подпрограммы, использование подпрограмм.
- •30 Билет. Передача параметров в подпрограмму. Параметры входные и выходные, параметры передаваемые по значению и по адресу.
- •1) По значению.
- •2) По адресу.
- •31 Вопрос. Использование подпрограмм. Параметры формальные, локальные, глобальные, обращение к подпрограммам, фактические параметры.
- •32 Билет. Передача параметров-массивов в подпрограмму. Примеры.
- •33 Билет. Передача параметров-функций в подпрограмму.
- •34 Билет. Рекурсивные функции. Примеры.
- •35 Билет. Понятие структурного программирования, этап проектирования - композиция и декомпозиция, понятие статической и динамической структуры программы, спецификация программы.
- •36 Билет. Понятие частичной и полной корректности программы, правила вывода - общий вид, правила консеквенции.
- •2 Способа создания динамической переменной:
- •42. Понятие линейного связного списка, типы списков, представление стека с помощью массива, пример использования стека.
- •43. Использование динамических переменных для представления и работы со стеком.
- •44. Очередь, реализация очереди массивом.
- •45. Очередь, представление и реализация основных операций с помощью динамических переменных.
- •46. Реализация основных операций со списком: добавление, удаление, поиск.
- •47. Деревья, основные операции над деревьями, представление дерева массивом.
- •48. Двусвязные линейные списки, построение и обход бинарного дерева.
- •49. Операции поиска и удаления в бинарном дереве.
26 Билет. Файлы прямого и последовательного доступа к данным. Форматизированный и неформатизированный ввод/вывод.
В C/C++ возможны последовательный и прямой доступы к данным, и форматизированный/не форматизированный ввод/вывод.
Для организации форматизированной передачи необходимо подключить к программе <stdio.h>, для не форматизированной <fstream.h>
Передаваемая информация рассматривается как поток байтов, а физически этот поток байтов является файлом или устройством, т.е. стандартные устройства ( клавиатуру, монитор) можно считать файлами, размещенными на внешних носителях.
Существует 5 предопределенных потоков:
stdin - ввод из стандартного устройства.
stdout - вывод на стандартное устройство.
stderr - определения стандартного устройства ( всегда монитор ) для вывода сообщения об ошибке.
stdprn - определяет вывод на печатающее устройство.
stdaux - дополнительный поток.
Работа с потоком должна начинаться с его открытия. При открытии потока в оперативной памяти выделяется область памяти, называемая буфером и ввод информации осуществляется до заполнения буфера или до закрытия потока. При выводе информация выводится блоками размером в буфер и при аварийном завершении программы часть информации может остаться в буфер.
Открыть поток для форматизированной передачи можно следующим образом:
1) FILE *<имя переменной>;
<имя переменной>=fopen(<имя файла на диске>,<режим>);
2) FILE *<имя переменной>=fopen(<имя файла на диске>,<режим>);
Первый вариант описывает указатель на файл, а затем открывает этот файл с помощью fopen, устанавливая соответствие между файл. ???? перемен. и именем файла на диске, и определяет режим ( запись или чтение).
При успешном открытии файла создается указатель на структуру типа FILE, содержащую информацию необходимую для работы с файлом, в противном случае - NULL.
Возможные значения параметра <режим>
"r"-....; для чтения
"w"-.....; для записи ( инф. заменяется на новую)
"a" - .....; для ДОзаписи ( информация не стирается, идёт добавление новой информации)
Эти символы со знаком плюс, "r+", "w+", "a+" устанавливают режим позволяющий и записывать в файл и считывать из него.
Режим открытия может содержать символ t и b
например "rt, "wb", "at+"
По умолчанию используется текстовый режим.
Функция
freopen (<имя файла на диске>,<режим>,<указатель на файл>) работает аналогично fopen но предварительно закрывает поток если он был ранее открыт.
Например FILE *f1; f1=fopen("d:\\work\\f1.ipt"."r");
FILE *f2 = fopen ("d:\\work\\f2.opt"."w");
Поработав с файлом необходимо его закрыть:
fclose (<указатель на файл>);
или fcloseall ();
Для просмотра всех элементов файла можно использовать
feof (<файловая переменная>)
Значение !=0 если не достигнут конец файла и =0 если достигнут.
Неформатизированная передача данных
<fstream.h>
В стандартной библиотеке содержится 3 класса для работы с файлами Открытие потока осуществляется конструкторами:
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 ()
НЕ ДОДЕЛАН БИЛЕТ ПОХОДУ...
27 билет. Работа с файлами в С/C++, примеры.
ftell (<файловая переменная>) значением функции является текущая позиция.
fgetpos (<файловая переменная>,<имя>);
fseek (<файловая переменная>,<смещение>,<база>);
Смещение - эта константа, целая, положительная или отрицательная, определяющая, на сколько байтов нужно сместить указатель влево или вправо от значения базы.
Базой может быть значение SEEK_SET - начало файла. SEEK_CUR - текущая позиция. SEEK_END конец файла.
fsetpos (<файловая переменная>,<pos> - установить указатель файла, соответствующей файловой переменной на позицию pos.
rewind (<файловая переменная>) - устанавливает указатель на начало файла.
malloc (<размер>) - выделяет блок памяти указанного размера в байтах. Указатель на начало или NULL, если места недостаточно, а содержимое не определено.
Если файл представляется последовательностью однотипных записей, где длина записи - это количество байтов, составляющих эту запись.
fread (<буфер>,<длина записи>,<количество>,<файловая переменная>)
frite (<буфер>,<длина записи>,<количество>,<файловая переменная>)
fread считывает из файла соответствующей файловой переменной в указанный буфер заданное количество записей указанной длины.
frite из указанного буфера записывает заданное количество записей в файл соответствующей файловой переменной.