Содержание
- 2. ФУНКЦИИ в С++ Сегодня мы поговорим о функциях в C++. Очень часто в программировании необходимо выполнять
- 3. ФУНКЦИИ в С++ А вот аналогичный пример с функцией: #include #include using namespace std; void check_pass
- 4. ФУНКЦИИ в С++ По сути, после компиляции не будет никакой разницы для процессора, как для первого
- 5. ФУНКЦИИ в С++ Функции — один из самых важных компонентов языка C++. Любая функция имеет тип,
- 6. Определение функции Все функции можно разбить на две категории: те, которые не возвращают значений, и те,
- 7. Определение функции Обычно функция void используется для выполнения каких-то действий. Например, функция, которая должна напечатать слово
- 8. Определение функции Параметр int n означает, что cheers() ожидает передачи значения типа int в качестве аргумента
- 9. Возвращаемое значение Функции с возвращаемыми значениями требуют использования оператора return таким образом, чтобы вызывающей функции было
- 10. Определение функции Функция завершается после выполнения оператора return. Если функция содержит более одного оператора return, например,
- 11. Пример построения функции #include using namespace std; void function_name () { cout } int main() {
- 12. Параметры и аргументы функции Во многих случаях нам нужно будет передавать данные в вызываемую функцию, чтобы
- 13. Параметры и аргументы функции Также существует такое понятие, как параметры функции по умолчанию. Такие параметры можно
- 14. Параметры функции Рассмотрим пример функции, возвращающей значение, на примере проверки пароля.
- 15. Параметры и аргументы функции В данном случае функция check_pass имеет тип string, следовательно, она будет возвращать
- 16. Параметры и аргументы функции При объявлении функций создается формальный параметр, имя которого может отличаться от параметра,
- 17. Параметры и аргументы функции Теперь мы проверяем, правильный ли пароль ввел пользователь или нет. Если пользователь
- 18. Параметры и аргументы функции Смотрите еще один пример: Функции очень сильно облегчают работу программисту и намного
- 19. Вызов функции Итак, функция — это последовательность операторов для выполнения определенного задания. Часто ваши программы будут
- 20. Вызов функции Программы на языке C++ работают похожим образом. Иногда, когда программа выполняет код, она может
- 21. Пример функции Функция, в которой находится вызов, называется caller, а функция, которую вызывают — вызываемая функция,
- 22. Пример функции Эта программа начинает выполнение с первой строки функции main(), где выводится на экран следующая
- 23. Оператор return Когда функция main() завершает свое выполнение, она возвращает целочисленное значение обратно в операционную систему,
- 24. Оператор return Рассмотрим простую функцию, которая возвращает целочисленное значение: Результат выполнения программы: 7 10
- 25. Оператор return Разберемся детально. Первый вызов функции return7() возвращает 7 обратно в caller, которое затем передается
- 26. Тип возврата void Как вы уже знаете, функции могут и не возвращать значения. Чтобы сообщить компилятору,
- 27. Тип возврата void Вот еще один пример использования функции типа void: В первом вызове функции returnNothing()
- 28. Возврат значений обратно в функцию main() Теперь у вас есть понимание того, как работает функция main().
- 29. Возврат значений обратно в функцию main() Почему нужно возвращать значения обратно в операционную систему? Дело в
- 30. Еще о возвращаемых значениях Во-первых, если тип возврата функции не void, то она должна возвращать значение
- 31. Еще о возвращаемых значениях Функция может возвращать только одно значение через return обратно в caller. Это
- 32. Повторное использование функций Одну и ту же функцию можно вызывать несколько раз, даже в разных программах,
- 33. Повторное использование функций Здесь main() прерывается 2 раза. Обратите внимание, в обоих случаях полученное пользовательское значение
- 34. Повторное использование функций Результат выполнения программы: Starting main() 0 K Ending main()
- 35. Вложенные функции Правильно вот так: В языке С++ одни функции не могут быть объявлены внутри других
- 36. Проверочный тест Какие из следующих программ не скомпилируются (и почему), а какие скомпилируются (и какой у
- 37. Проверочный тест Программа № 2:
- 38. Проверочный тест Программа № 3:
- 39. Проверочный тест Программа № 4:
- 40. Проверочный тест Программа № 5:
- 41. Проверочный тест Программа № 6:
- 42. Проверочный тест Программа № 7:
- 43. Ответы Ответ №1 Скомпилируется, результатом выполнения программы будет значение 13. Ответ №2 Эта программа не скомпилируется.
- 44. Использование функций Для того чтобы использовать функцию в C++, вы должны выполнить следующие шаги: • предоставить
- 45. Использование функций Ниже показан вывод программы из листинга. Выполнение программы в main() останавливается, как только управление
- 46. Прототипирование и вызов функции Вы уже знакомы с тем, как вызываются функции, но, возможно, менее уверенно
- 47. Прототипирование и вызов функции Программа из листинга помещает директиву using только в те функции, которые используют
- 48. Прототипирование и вызов функции Однако прототип функции не требует предоставления имен переменных-параметров; достаточно списка типов. Программа
- 49. Прототипирование и вызов функции Прототипом функции в языке Си или C++ называется объявление функции, не содержащее
- 50. Прототипирование и вызов функции В качестве примера, рассмотрим следующий прототип функции: int foo(int n); Этот прототип
- 51. Прототипирование и вызов функции Прототип описывает интерфейс функции для компилятора. Это значит, что он сообщает компилятору,
- 52. РЕКУРСИЯ Реку́рсия — определение, описание, изображение какого-либо объекта или процесса внутри самого этого объекта или процесса,
- 53. РЕКУРСИЯ Несколько рассказов Станислава Лема посвящены (возможным) казусам при бесконечной рекурсии. Рассказ из «Кибериады» о разумной
- 54. РЕКУРСИЯ И апофеозом идиотизма бесконечной рекурсии является шутка креативщиков из Гугла: Короче, рекурсия – это «У
- 55. РЕКУРСИЯ Рекурсия - это такой способ организации обработки данных, при котором программа вызывает сама себя непосредственно,
- 56. Отличие рекурсии от итерации Теперь нам нужны конкретные примеры из простой математики, чтобы можно было отличить
- 57. Отличие рекурсии от итерации Сравните алгоритмы рекурсивной и итерационной (циклической) реализации вычисления факториала, и вам все
- 58. Отличие рекурсии от итерации Сумма цифр числа. Сумму цифр натурального числа n можно найти при помощи
- 59. Отличие рекурсии от итерации
- 60. Отличие рекурсии от итерации Отбор в разведку. Из n солдат, выстроенных в шеренгу, требуется отобрать нескольких
- 61. Отличие рекурсии от итерации Решение. Обозначим через f(n) количество способов, которыми можно сформировать группы разведчиков из
- 62. Отличие рекурсии от итерации Таким образом, получена рекуррентная формула для вычисления значения f(n): f(n) = 2
- 63. Рекурсивные функции Функция C++ обладает интересной характеристикой — она может вызывать сама себя. (Однако, в отличие
- 64. Рекурсия с одиночным рекурсивным вызовом Если рекурсивная функция вызывает саму себя, затем этот новый вызов снова
- 65. Рекурсия с одиночным рекурсивным вызовом Если рекурсивная функция вызывает саму себя, затем этот новый вызов снова
- 66. Рекурсия Рекурсивные вызовы порождают замечательную цепочку событий. До тех пор, пока условие оператора if остается истинным,
- 67. Рекурсия Обратите внимание, что каждый рекурсивный вызов создает собственный набор переменных, поэтому на момент пятого вызова
- 68. Рекурсия с множественными рекурсивными вызовами Рекурсия, в частности, удобна в тех ситуациях, когда нужно вызывать повторяющееся
- 69. Рекурсия с множественным рекурсивным вызовом
- 70. Рекурсия с множественным рекурсивным вызовом. Ханойская башня Примером рекурсии с множественным рекурсивным вызовом может служить задача
- 71. Ханойская башня Решение здесь (если его таковым можно назвать) состоит в том, чтобы при необходимости переноса
- 72. Ханойская башня И вот как разворачивается решение для различных n:
- 73. Ханойская башня Только не спровоцируйте конец света! Число перестановок: для n=10 потребуется 1023 перестановки; для любого
- 74. УКАЗАТЕЛИ НА ФУНКЦИИ Функции, как и элементы данных, имеют адреса. Адрес функции — это адрес в
- 75. Основы указателей на функции Проясним этот процесс на примере. Предположим, что требуется спроектировать функцию estimate (),
- 76. Указатели на функции Получить адрес функции очень просто: вы просто используете имя функции без скобок. То
- 77. Указатели на функции Чтобы объявить указатель на тип данных, нужно явно задать тип, на который будет
- 78. Указатели на функции Объявление требует скобок вокруг *pf, чтобы обеспечить правильный приоритет операций. Скобки имеют более
- 79. Указатели на функции Вернемся к упомянутой ранее функции estimate (). Предположим, что вы хотите передавать ей
- 80. Использование указаьеля для вызова функции Теперь обратимся к завершающей части этого подхода — использованию указателя для
- 81. Задача «Шарики» А теперь, в качестве примера использования рекурсивного вызова функции, давайте разберем задачу, которая у
- 82. ЗАДАЧА «ШАРИКИ» Чтобы понять, какие комбинации шариков надо учитывать, проведем эксперимент с небольшим количеством шариков, составив
- 83. Задача «Шарики» Один из возможных вариантов алгоритма решения задачи про шарики 1. Задать количество шариков n.
- 84. Вывод рекуррентной формулы kn = (kn-1 + kn-2)(n-1) Мы с вами изучаем не комбинаторику, а программирование!
- 85. Генератор комбинаторных перестановок void generate (int t) // Создает все перестановки шариков, число которых равно t
- 87. Скачать презентацию