- •1…Понятие информатики, информации, кодирования информации.
- •2…Системы счисления, переводы чисел из одной позиционной системы счисления в другую.
- •3… Понятия алгоритма: рекурсивные функции системы текстовых замен.
- •4… Способы описания языков программирования: бнф-нотации, синтаксические диаграммы
- •12…Оператор безусловного перехода, операторы продолжения и завершения, примеры использования.
- •16…Ввод/Вывод данных в с.
- •18…Производные типы данных, массивы, работа с массивами.
- •22…Файлы прямого и последовательного доступа к данным, форматизованный и неформатизованный ввод/вывод.
- •24…Понятие подпрограммы, назначение подпрограмм, использование подпрограмм.
- •26…Передача параметров в подпрограмму, параметры входные и выходные, параметры , передаваемые по значению и по адресу.
- •27…Использование подпрограмм, параметры формальные, локальные, глобальные, обращения к подпрограммам, фактические параметры.
- •28…Передача параметров массивов в подпрограмму, примеры.
- •29…Рекурсивные функции, примеры.
- •30…Понятие структурного программирования, этап проектирования – композиция и декомпозиция, понятие статической и динамической структуры программы, спецификация программы.
- •31…Понятие частичной и полной корректности программы, правила вывода – общий вид, правила консеквенции.
- •32… Правила вывода для операторов: пустого, присваивания, составного.
- •33… Правила вывода для оператора ветвления.
- •34… Правило вывода для операторов: оператора выбора, операторов цикла с параметром.
- •35… Правила вывода для циклов с предусловием и постусловием, пример использования правил вывода для реализации цикла с постусловием оператором цикла с постусловием.
- •36… Пример для доказательства правильности программы.
27…Использование подпрограмм, параметры формальные, локальные, глобальные, обращения к подпрограммам, фактические параметры.
Параметры, указанные в описании подпрограммы, называются формальными, а указанные в обращении к ней – фактическими.
Все величины, описанные в подпрограмме, а так же формальные параметры являются локальными величинами, областью их действия является только тело функции. При обращении к функции в стеке выделяется память под все локальные величины, записываются значения регистров процессора, а также адрес возврата из подпрограммы – адрес команды, которая должна выполниться следующей после выхода из подпрограммы
При выходе из подпрограммы этот участок стековой памяти очищается, это значит, что значения локальных величин не сохраняются между обращениями к одной и той же подпрограмме.
Если значение какого-то локального параметра необходимо сохранить между вызовами, то этот параметр нужно описать статически (static int n=0). Такая статическая переменная сохраняется не в стеке, а в сегменте данных и инициализируется один раз при первом обращении к подпрограмме.
Глобальные параметры описываются вне функций, в том числе и вне main, поэтому они видны во всех функциях программы и могут использоваться для передачи данных между всеми функциями. Если имена глобальных и локальных параметров совпадают, то внутри функций локальные переменные «заменяют» глобальные, а после выхода из функции значение глобальной переменной восстанавливается. Однако с помощью операции доступа к области видимости (::) можно получить доступ к одноименной глобальной переменной.
28…Передача параметров массивов в подпрограмму, примеры.
При использовании массива в качестве параметра в функцию передается указатель на первый элемент массива. Массив всегда предается по адресу.
При этом информация о количестве элементов массива теряется, это значит, что размеры массива нужно передавать в подпрограмму доп.параметрами.
Если требуется запретить изменение параметров внутри функции, то перед этими параметрами ставится const.
Если размерность массива постоянна и известна, то передача массива в качестве параметра реализуется следующим образом
# include <iostream.h>
const int n=2;
int sum (int mas[n][n], const int n) {
int s=0;
for (int i=0; i<n; i++)
for (int j=0; l<n; j++)
s+=mas[i][j];
return s;
}
int main ( ) {
int x[n][n]={1,2,3,4}; int y[n][n];
cout<<”введите массив\n”;
for (int i=0; i<n; i++)
for (int j=0; j<n; j++)
cin>>y[i][j];
cout<<”сумма элемнтов массива x:”<<sum(x,n)<<”\n”;
cout<<”сумма элемнтов массива y:”<<sum(y,n)<<”\n”;
return 0;
}
29…Рекурсивные функции, примеры.
Рекурсия (от recursion – возвращение)– самовложение, определяющее объект или явление, внутри которого содержится подобный ему объект или явление.
Функцию называют рекурсивной, если она вызывает сама себя в качестве вспомогательной
n!=1 при n=0 и n!=1*2*3*…*n при n>0
это итерационное (итеративное) определение
n!=1 при n=0
n!=(n-1)!*n при n>0 – определение рекурсивное
Если подпрограмма обращается сама к себе, то такая рекурсия называется прямой. Если несколько подпрограмм обращаются друг к другу, то такое обращение называется косвенной рекурсией
long fact (long n) {
if (n==0 || n==1) return 1;
return n*fact (n-1);
}
long fact (long n) {
return (n>1)? n*fact(n-1):1;
}