- •Вопросы к экзамену по дисциплине
- •6. Типы данных: целый, вещественный, символьный. Размеры данных.
- •7.Правила определения переменных в программе. Инициализация переменных.
- •10.Операции сдвига.
- •11.Операции отношения, логические операции.
- •Int I, j, k;
- •15.Приоритет операций и порядок вычисления выражений.
- •16.Функция форматированного вывода printf.
- •18.Операторы преобразования данных и операторы управления. Оператор простой и составной, блок.
- •(Последовательно выполняемые операторы)
- •19.Виды управляющих конструкций программы.
- •20.Операторы ветвления, условный оператор.
- •21.Оператор переключения(Switch).
- •22.Оператор цикла с заданным числом повторений.
- •23.Оператор цикла с предусловием.
- •24.Оператор цикла с постусловием.
- •25.Операторы прерывания и продолжения цикла.
- •26.Одномерные и многомерные массивы, их инициализация.
- •27.Указатели. Связь между указателями и массивами.
- •28.Операции над указателями и массивами.
- •29.Операции взятия адреса, обращения по адресу.
- •30.Определение функции. Возвращение значения: оператор return. Описание функции, вызов функции.
- •31.Аргументы функции: формальные и фактические. Передача аргументов, стек.
- •32.Рекурсивные программы.
- •33.Функции для работы со строками: сравнение, копирование.
- •47. Функции для работы со строками: поиск в строке.
- •34.Функции для работы со строками: преобразование форматов.
- •35.Локальные и глобальные переменные.
- •36.Классы памяти. Автоматические переменные. Внешние и статические переменные.
- •37. Декларация структур.
- •38. Инициализация и доступ к элементам структуры.
- •39. Вложенные структуры и массивы структур.
- •40. Указатели на структуры.
- •41.Файлы.Функции работы с указателем текущей позиции файла.
- •43.Функция чтения и записи в файл в построчном режиме.
- •44.Функция чтения и записи в файл в посимвольном режиме.
- •45.Функция чтения и записи двоичных файлов.
- •46.Списки.Операции над списками. Односвязные и двусвязные списки.
- •47.Реализация списка на основе массива структур.
- •48.Реализация списка на основе массива данных.
- •49.Очереди. Операции над очередями.
- •50.Реализация очереди на основе массива.
- •51.Стеки. Операции над стеками.
- •52.Реализация стека на основе массива.
- •53.Сортировка методом обмена(пузырька).
- •Анализ пузырьковой сортировки. Пузырьковая сортировка обладает несколькими характеристиками:
- •54.Методом выбора.
- •55.Методом вставки.
- •56.Методом Шелла.
- •57.Метод быстрой сортировки(Хоара).
31.Аргументы функции: формальные и фактические. Передача аргументов, стек.
Аргументы:
Параметры в списке аргументов различаются на формальные и фактические. Фактические параметры - это параметры, формируемые в вызывающей функции и передаваемые в списке при вызове функции. Формальные - это параметры, описываемые в списке параметров вызываемой функции. Порядок и типы формальных параметров должны быть одинаковыми в определении функции и во всех ее объявлениях. Типы фактических параметров при вызове функции должны быть совместимы с типами соответствующих формальных параметров.
void fun(int,char,double); // прототип функции
imt k; // глобальная переменная
main()
{ int n=1;
char c=’a’;
fun(n,c,1.5); // n, c, 1.5 фактические параметры
}
void fun(int nn, char cc, double dd) // nn, cc, dd формальные параметры
{
. . .
}
Стек:
Стек- это конечная последовательность некоторых однотипных элементов - скалярных переменных, массивов, структур или объединений, среди которых могут быть и одинаковые. Стек обозначается в виде: S= и представляет динамическую структуру данных; ее количество элементов заранее не указывается и в процессе работы, как правило изменяется. Если в стеке элементов нет, то он называется пустым и обозначается S=<>.
Допустимыми операциями над стеком являются:
- проверка стека на пустоту S=<>,
- добавление нового элемента Sn+1 в конец стека - преобразование < S1,...,Sn> в < S1,...,Sn+1>;
- изъятие последнего элемента из стека - преобразование < S1,...,Sn-1,Sn> в < S1,...,Sn-1>;
- доступ к его последнему элементу Sn, если стек не пуст.
Таким образом, операции добавления и удаления элемента, а также доступа к элементу выполняются только в конце списка. Стек можно представить как стопку книг на столе, где добавление или взятие новой книги возможно только сверху.
32.Рекурсивные программы.
Рекурсивными называются процедуры и функции, которые вызывают сами себя. Функцию вычисления факториала можно записать так:
intfactorial(intn)
{if(n<=0)return1; // рекурсия закончилась
else return n*factorial(n-1); //рекурсивный вызов
}
Функция factorialвызывает сама себя, еслиn>0.
Обычно, в программировании под рекурсией понимают такую реализацию, в которой подпрограмма использует в своем теле вызов самой себя. Такие вызовы называют рекурсивными. Когда функция А в своем теле вызывает только одну рекурсивную функцию (саму себя), то говорят о простой рекурсии. Под косвенной рекурсией понимают явление, когда рекурсивные функции вызывают друг друга (например, функция А вызывает В, а функция В вызывает А).
Прямая рекурсия:
voidA() {операторы;
A();
oператоры;}
Косвенная рекурсия:
voidA() {операторы;
В();
oператоры;}
voidВ() {операторы;
A();
oператоры;}
При реализации рекурсивных алгоритмов необходимо уделять внимание тому, чтобы алгоритм был конечным, т.е. выполнение рекурсивной функции должно когда-нибудь завершиться.