Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КОНСПЕКТ1.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
292.04 Кб
Скачать

Функции

Модификатор inline – рекомендует компилятору вместо обращения к функции помещать её код непосредственно в каждую точку вызова. Модификатор inline ставится перед типом функции и она определена как встроенная. Применяется для коротких функций, чтобы снизить накладные расходы на вызов.

Рекомендует компилятору вместо обращения к функции помещать её код непосредственно в каждую точку вызова. Модификатор inline ставится перед типом функции и она определена как встроенная. Применяется для коротких функций, чтобы снизить накладные расходы на вызов.

Тип возвращаемого значения и типы параметров совместно определяют тип функции.

Для вызова функции в простейшем случае нужно указать её имя, за которым в круглых скобках через запятую перечисляются имена передаваемых аргументов. Вызов функции может находиться в любом месте программы, где по синтаксису допустимо выражение того типа, который формирует функция. Если тип возвращаемого функцией значения не void, она может входить в состав выражений или, в частном случае, располагаться в правой части оператора присваивания.

Пример1:

#include <iostream>

Using namespace std;

Int sum(int a, int b); // объявление функции

Int main() {

Int a=2, b=3,c,d;

C=sum(a,b); // вызов функции

Cin>>b;

Cout<<sum(c,d); // вызов функции

Return 0;

}

Int sum (int a, int b){ //определение функции

Return (a+b);

}

Пример 2:

#include <iostream>

Using namespace std;

Struct Worker {

Char fio[30];

Int date, code;

Double salary;

};

Void print_worker (worker); // объявление функции

Int main() {

Worker staff[100];

…/формирование массива staff/

For (int i=0; i<100; i++)

Print_worker(staff[i]); //вызов функции

Return 0;

}

Void print_worker (worker w) {

Cout<<w.fio<<’ ‘<<w.date<<’ ‘<<w.code<<’ ‘<w.salary<<endl;

}

Рекурсия

Рекурсивная функция – функция, вызывающая саму себя.

Линейная рекурсия, когда определение объекта включает в себя единственный аналогичный объект.

Ветвящаяся рекурсия, когда включаемых объектов.

Механизм параметров является основным способом обмена информацией между вызываемой и вызывающей функциями. Параметры, перечисленные в заголовке описания функции, называются формальными параметрами, а записанные в операторе вызова функции – фактическими параметрами, или аргументами.

При работе рекурсивной функции купируются части, связанные с локальными данными (формальные, фактические параметры, локальные переменные и точка возврата). Алгоритмическая часть (операторы, выражения) рекурсивной функции и глобальные переменные не меняются, поэтому они присутствуют в памяти компьютера в единственном экземпляре.

Этапы разработки рекурсивной функции:

  1. Зацепить рекурсию – определить, что составляет шаг рекурсивного алгоритма.

  2. Инварианты рекурсивного алгоритма. Основные свойства, соотношения, которые присутствуют на входе рекурсивной функции и которые сохраняют до следующего рекурсивного вызова, но уже в состоянии, более близком к цели.

  3. Глобальные переменные – общие данные процесса в целом.

  4. Начальное состояние шага рекурсивного алгоритма – формальные параметры рекурсивной функции.

  5. Ограничения рекурсии – обнаруживайте “успеха” – достижения цели на текущем шаге рекурсии и отсечения “неудач” – заведомо неприемлемых вариантов.

  6. Правила перебора возможных вариантов – способы формирования рекурсивного вызова.

  7. Начальное состояние следующего шага – фактические параметры рекурсивного вызова.

  8. Содержание и способ обработки результата – полный перебор с сохранением всех допустимых вариантов, первый возможный, оптимальный.

  9. Условия первоначального вызова рекурсивной функции в main.

Линейная рекурсия

Простейшим примером рекурсии является линейная рекурсия, когда функция содержит единственный условный вызов самой себя. В таком случае рекурсия становится эквивалентной обычному циклу. Любой циклический алгоритм можно преобразовать в линейно-рекурсивный, и наоборот.

// рекурсивный алгоритм вычисления факториала

Int fact(int n)

{ if (n==1) return 1; return n*fact(n-1);}

//Циклический алгоритм вычисления факториала

Int fact(int n) {

For (int s=1; n!=0; n--) s*=n;

Return s:}

Типы данных

Способы комментирования

Структура программы

Библиотеки

Структуры

Массивы

Оператор ветвления

Операторы цикла

Функции