Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник Моя первая программа на С++.docx
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
6 Мб
Скачать
☆

Глава 7

ДЛЯ ЧЕГО НУЖНЫ ФУНКЦИИ

Если вы возьмете все свое имущество и свалите в большую кучу на полу, то поиск нужных вещей будет каждый раз отнимать массу времени. Чтобы облегчить себе жизнь, вы предусмотрительно сортируете предметы, раскладывая их по полкам, и как только вам понадобится какая-нибудь вещь, вы точно знаете, где ее можно найти (по крайней мере, так предполагается).

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

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

Си или Си++. Вы вызываете функцию для выполнения определенной задачи, передавая ей аргументы и получая от нее результат.

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

Рис. 7.1. Многократный вызов функции

потребовалось временно приостановить вывод информации на дисплей, достаточно просто вызвать дан- ную функцию (рис.7.1).

Вы можете использовать функции для структурирования сложной программы. Попытайтесь поделить про- грамму на блоки, каждый из которых выполняет какую-то одну вполне законченную задачу. Эти блоки, в свою очередь, при необходимости также можно разделить на меньшие. Продолжайте деление на все бо- лее мелкие части до тех пор, пока остается возможность написать инструкции для выполнения самостоя- тельной задачи. Каждый такой набор инструкций помещается в свою собственную функцию. Как только вы напишите все необходимые функции и объедините их функцией main()— программа готова!

Как использовать функции

Собственные функции помещаются после закрывающей фигурной скобки main().

Рис. 7.2. Структура функции

Каждая функция имеет структуру, аналогичную структуре функции main() (рис.7.2): после имени функ- ции ставится пара круглых скобок, точка с запятой в конце строки отсутствует, инструкции, составляю- щие тело функции, заключаются в пару фигурных скобок.

При вызове функции компьютер выполняет инструкции, записанные в теле функции, а затем управление возвращается строке, которая стоит непосредственно после инструкции вызова функции. В зависимости от компилятора использование инструкции return (0); в теле функции может быть необязательным. Си может обеспечить автоматический возврат после завершения всех инструкций.

На рис. 7.3 в качестве примера показана программа, которая выводит на дисплей вопрос и ответ на него. Цифры указывают порядок выполнения инструкций.

Инструкция

answer();

в main() вызывает функцию answer() так, как если бы она содержалась в библиотеке Си, с той разницей, что текст функции answer() находится не в

Рис. 7.3. Вызов функции

библиотеке, а включен в программный код. Вызов этой функции осуществляется после выполнения двух функций puts(). Функции answer() не передаются никакие параметры, так как она содержит всю инфор- мацию, необходимую для выполнения своей задачи. После выполнения функции puts() в answer() инст- рукция return(0); передает управление инструкции, помещенной в теле main() непосредственно за инст- рукцией вызова функции answer(). Инструкция return(0); в main() завершает выполнение программы.

Приведенную на рис. 7.3 программу компьютер выполнит в следующем порядке: