- •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. Операции поиска и удаления в бинарном дереве.
33 Билет. Передача параметров-функций в подпрограмму.
Передача имени функции как параметра в другую функцию? вроде то..
Для того, чтобы функцию использовать как подпрограмму необходимо описать тип этой функции.
double (*fun) (double,double);
тип функции, возвращающей результат типа double и имеем два параметра типа double.
Если описание функции сложное то можно использовать typedef для улучшения читаемости программы:
typedef double (*pfun) (double,double);
теперь тип pfun можно использовать для описания параметров функции также как и стандартные типы для описания переменных.
например
void fun1 (pfun2,int x, double y) , здесь fun2 - имя функции типа pfun является параметром функции а x,y - простые переменные int и double.
Пример. Печать таблиц значения функции, на примере вычисления с точностью eps функции гиперболического косинуса cosh для аргумента x изменяемого в заданных пределах xn, xk с заданным шагом dx :
#include <stdio.h>
#include <math.h>
typedef double (*Tfun) (double, double);
// прототип функции pritn_tab и cosh
void print_tab ( Tfun ff, const double xn, const double xk, const double dx, const double eps);
double cosh (const double x, const double eps);
// oсновная программа
int main () {
double xn, xk, dx, eps;
printf (''enter xn ,xk, dx, eps \n'');
scanf (''%lf%lf",&xn,&xk,&dx,&eps);
print_tab (cosh, xn, xk, dx, eps);
return 0; }
// опр функции print_tab
void print_tab (Tfun ff, const double xn, const double xk, const double dx, const double eps) {
print ("------------------------------------\n");
print ("| x | y |\n");
print ("------------------------------------\n");
for (double x=xn; x<= xk; x=x+dx );
print ("| %9.2f | %14.bg | \n",x,ff(x,eps)|;
print ("------------------------------------- \n");
}
\\ Определение функции cosh :
{double cosh (const double x, const double eps);
const int max_iter = 500;double ch=1, y= ch;
for (int n = 0 ; fabs (ch)>eps; n++)
{ch *=x*x/ (2*n+1)/ (2*n+2); y+=ch;
if (n> max_iter) {printf " ряд расход. \n")l
return 0;};}
return y;
}
сам в шоке с того что написал. понятия не имею что надо а что не надо в этих программах.
34 Билет. Рекурсивные функции. Примеры.
Рекурсивные функции.
Ограниченный объект или явление, внутри которого содержится подобный ему объект или явление.
В математике существует рекурсивное определение, а в информатике - рекурсивные функции.
В программе функцию называют рекурсивной если она обращается к самой себе на прямую или через серию других подпрограмм ( такие функции называются косвенно рекурсивными).
Если функция вызывает саму себя то в стеке сохраняется копия значений её параметров как при вызове обычной функции, и управление передается первому оператору тела функции.
При следующем обращении к самой себе параметры снова сохраняются в стеке, и так до тех пор, пока значение параметров не станет таким, что вычисление алгоритма пойдет не по рекурсивной ветви.
Пример. Функция принимает в себя число, а потом печатает и декрементирует его, пока оно не закончится.
#include <iostream>
#include <cstdlib>
using namespace std;
void function(int n)
{ cout << n <<endl;
n--;
if(n > 0) function(n); }
int main()
{
function(9);
system("PAUSE");
return 0;
}
пример взят с какого то сайта так что не уверен стоит ли его демонстрировать в ответе на билет.
еще один пример
Примеры реализаций рекурсивных функций для вычисления факториала.
int factorial(int n) {
if ( n <= 1 ) {
return 1;
}
return n * factorial(n - 1);