билеты. 1. Алгоритм и его свойства. Способы записи алгоритма. Программа. Языки программирования. Примеры алгоритмов и программ
![]()
|
Билет №18 1. Функцииввод-вывода (scanf(), printf(), puts(), gets(), putchar(),getchar()). Функция printf() является функцией стандартного вывода. С помощью этой функции можно вывести на экран монитора строку символов, число, значение переменной... Функция printf() имеет прототип в файле stdio.h int printf(char *управляющая строка, ...); Функция printf() это функция форматированного вывода. Это означает, что в параметрах функции необходимо указать формат данных, которые будут выводиться. Формат данных указывается спецификаторами формата. Спецификатор формата начинается с символа % за которым следует код формата. %с символ %d целое десятичное число %i целое десятичное число %e десятичное число в виде x.xx e+xx %E десятичное число в виде x.xx E+xx %f десятичное число с плавающей запятой xx.xxxx %F десятичное число с плавающей запятой xx.xxxx %g %f или %e, что короче %G %F или %E, что короче %o восьмеричное число %s строка символов %u беззнаковое десятичное число %x шестнадцатеричное число %X шестнадцатеричное число %% символ % %p указатель %n указатель ункция scanf() - функция форматированного ввода. С её помощью вы можете вводить данные со стандартного устройства ввода (клавиатуры). Вводимыми данными могут быть целые числа, числа с плавающей запятой, символы, строки и указатели. Функция scanf() имеет следующий прототип в файле stdio.h: int scanf(char *управляющая строка); Функция возвращает число переменных которым было присвоено значение. Функции gets() и puts() позволяют читать и выводить строки на консоль. Функция gets() читает строку символов, введенных с клавиатуры и помещает их по адресу, указанному в аргументе. Можно набирать символы, пока не будет нажат ввод. Символ, соответствующий клавише ввод - возврат каретки, - не станет частью строки. Вместо этого в конце строки появится нулевой символ, и gets() закончит работу. Фактически невозможно использовать gets() для получения возврата каретки (можно использовать getchar() и ее варианты). Если при вводе допущены ошибки, то они могут быть исправлены нажатием на клавишу BACKSPASE перед нажатием ввода. Функция gets() имеет прототип: getchar() Читает символ с клавиатуры, ожидает нажатия ввода getche() Читает символ с эхом, не ожидает нажатия ввода, не определена в стандарте ANSI С, но является типичным расширением getch() Читает символ без эха, не ожидает нажатия ввода, не определена в стандарте ANSI С, но является типичным расширением putchar() Выводит символ на экран gets() Читает строку с клавиатуры puts() Выводит строку на экран 2. Динамические структуры данных (однонаправленные и двунаправленные списки). Во многих задачах требуется использовать данные, у которых конфигурация, размеры и состав могут меняться в процессе выполнения программы. Для их представления используют динамические информационные структуры. К таким структурам относят: -линейные списки; -стеки; -очереди; -бинарные деревья; Они отличаются способом связи отдельных элементов и допустимыми операциями. Динамическая структура может занимать несмежные участки динамической памяти. Линейный список — это динамическая структура данных, каждый элемент которой посредством указателя связывается со следующим элементом. Каждый элемент односвязного списка кроме собственно данных содержит поле с адресом следующего элемента. В двухсвязном списке каждый элемент имеет поля с данными и два указателя: один указатель хранит адрес предшествующего элемента списка, второй — адрес последующего элемента. Над списками можно выполнять следующие операции: -начальное формирование списка (создание первого элемента); -добавление элемента в конец списка; -добавление элемента в начало списка; -удаление элемента с заданным номером; -чтение элемента с заданным ключом; -вставка элемента в заданное место списка (до или после элемента с заданным клю- чом); -упорядочивание списка по ключу Билет №19 1. Функции в С++. Формальные и фактические параметры. Передача параметров по адресу и по значению. Локальные и глобальные переменные. Примеры. Формальные параметры – это параметры, которые принимают значение, переменные функции от функционального вызова. Формальные параметры объявляются в списке параметров в начале описания функции. Список параметров определяет имена параметров и порядок, в котором они принимают значение при вызове функции. Формальные параметры – входные и выходные. Входные – те, которые должны быть известны для вычисления в функции. Выходные – результат. Аргументы могут передаваться по значению (by value) и по ссылке (by reference). При передаче аргументов по значению внешний объект, который передается в качестве аргумента в функцию, не может быть изменен в этой функции. В функцию передается само значение этого объекта. Например: При передаче параметров по ссылке передается ссылка на объект, через которую мы можем манипулировать самим объектов, а не просто его значением. Локальная переменная - переменная, объявленная внутри какой-либо функции. Областью видимости локальных переменных является тело функции, в которой эта переменная объявлена. Локальная переменная может быть проинициализирована константой или выражением, соответствующими ее типу. Глобальная переменная - переменная, объявленная за пределами всех функций. Областью видимости глобальных переменных является вся программа. Глобальная переменная не локализована ни на каком уровне. Глобальная переменная может быть проинициализирована только соответствующей ее типу константой (но не выражением). Инициализация глобальных переменных производится однократно перед началом исполнения специальных функций. 2. Потоковый ввод-вывод в С++. Открытие и закрытие потока. Стандартные потоки ввода-вывода. Библиотека ввода-вывода C++ предусматривает четыре предопределенных объекта-потока, связанных со стандартными входным и выходным устройствами. Ниже дана сводка этих объектов. Cin – стандартный ввод с клавиатуры Cout – стандартный вывод на экран Cerr – показ ошибок на экране без буферизации Clog – показ ошибок с буферизацией Операции извлечения и передачи в поток Основными классами ввода-вывода C++ являются istream и ostream. Первый из них перегружает операцию правого сдвига (>>), которая служит в нем для ввода данных и называется операцией извлечения из потока. Класс ostream перегружает соответственно операцию левого сдвига (<<); она применяется для вывода и называется операцией передачи в поток. Билет №20 1. Прототип функции. Библиотечные файлы. Директива препроцессора #include. Прототипом функции в языке Си или C++ называется объявление функции, не содержащее тела функции, но указывающее имя функции, арность, типы аргументов и возвращаемый тип данных. Библиотечные файлы. Библиотеки — это наборы заранее откомпилированных функций, написанных в расчете на многократное использование. Препроцессор — это специальная программа, являющаяся частью компилятора языка Си. Она предназначена для предварительной обработки текста программы. Препроцессор позволяет включать в текст программы файлы и вводить макроопределения. Работа препроцессора осуществляется с помощью специальных директив (указаний). Они отмечаются знаком решетка #. По окончании строк, обозначающих директивы в языке Си, точку с запятой можно не ставить. 2. Прямой доступ к файлам. Для внешних файлов определены два сорта доступа: последовательный доступ и прямой доступ. В настраиваемых пакетах SEQUENTIAL_IO и DIRECT_IO описаны соответствующие файловые типы и связанные с ними операции. Объект файлового типа, используемый для последовательного доступа, называется последовательным файлом, а используемый для прямого доступа — прямым файлом. Для использования прямого доступа к файлу требуется стандартная библиотека Файлы прямого доступа могут быть форматными, двоичными, неформатными. Все записи в файле прямого доступа имеют одинаковую длину. Длина записи задается параметром RECL= в операторе открытия файла. Для открытия форматного файла прямого доступа в программе записывается оператор следующей структуры: OPEN(N, FILE=fname, ACCESS=`DIRECT`, FORM=`FORMATTED`, RECL=recl) Оператор открытия двоичного файла прямого доступа: OPEN(N, FILE=fname, ACCESS=`DIRECT`, FORM=`BINARY`, RECL=recl) Здесь recl – целое число, задающее длину записи. По умолчанию файл прямого доступа имеет опцию FORM=`UNFORMATTED`. В файле прямого доступа можно перейти на начало любой записи с номером r с помощью оператора read, в котором задан параметр REC=r-1. При этом список ввода может отсутствовать. В неформатном или двоичном файле оператор имеет вид READ(N, [rec=r-1]) [список_ввода] В форматном файле: READ(N, frm, [rec=r-1]) [список_ввода] Если список ввода отсутствует, то просто происходит установка ФУ на соответствующую запись. Если отсутствует параметр rec=, то читается текущая запись. Аналогично записывается оператор WRITE для двоичного или неформатного файла: WRITE(N, [rec=r-1]) список_вывода Для форматного файла: WRITE(N, frm, [rec=r-1]) список_вывода |