Функции
в ЯП С/С++
Функция
- это поименованная часть программы,
которая может вызываться из других
частей программы столько раз, сколько
необходимо. Функция обычно служит для
решения определенной подзадачи.
Смысл
оформления части программного кода в
виде отдельной функции заключается в
том, что:
- функция, решающая достаточно универсальную подзадачу, может быть использована без изменения много раз в других программах;
- сравнительно небольшую по объему программного кода функцию легче отладить, написав для нее вызов и вывод данных в функции main.
Одну
и ту же функцию можно использовать
несколько раз с разными параметрами.
Например, в приведенном примере одна и та же функция вызывается для вычисления значения трех разных выражений:
#include <iostream>
using namespace std;
float fun1 ( float p, float q )
{return p+q;}
void main()
{
float a,b,c,d,f;
cout <<" vvod a,b="; cin >>a>>b;
cout <<" vvod c,d="; cin >>c>>d;
f=fun1(2*a,b);
cout <<" f= 2a+b="<<f <<endl<<" f= c-d="<<fun1(c,-d)<<endl;
cout <<" f= 2a+b-c="<<fun1(f,-c) <<endl;
}
Схема программы с подпрограммами, которую вам нужно написать:
Например, в приведенном примере одна и та же функция вызывается для вычисления значения трех разных выражений:
#include <iostream>
using namespace std;
float fun1 ( float p, float q )
{return p+q;}
void main()
{
float a,b,c,d,f;
cout <<" vvod a,b="; cin >>a>>b;
cout <<" vvod c,d="; cin >>c>>d;
f=fun1(2*a,b);
cout <<" f= 2a+b="<<f <<endl<<" f= c-d="<<fun1(c,-d)<<endl;
cout <<" f= 2a+b-c="<<fun1(f,-c) <<endl;
}
Схема программы с подпрограммами, которую вам нужно написать:
Текст
такой программы будет выглядеть примерно
так
Очень
важно понимать, что каждая функция имеет
свою область памяти, в которой размещаются
ее данные, и в которую другие функции
доступа не имеют.
Поэтому для
обмена данными между функциями используют
параметры.
Обычно параметры используют для передачи в функцию данных (например, для расчета), а результат возвращают с помощью имени функции:
При
этом параметры передаются по
значению
и не изменяются, их значения в вызывающую
функцию не возвращаются. Это происходит
потому, что при передаче значений
параметров в функцию, их значения просто
копируются в ее область памяти.
Однако, параметры можно использовать и для передачи данных (результатов работы функции) обратно, в вызывающую программу. Для этого параметры нужно передавать по ссылке (или как указатели). При этом в вызываемую функцию передается не значение параметра, а его адрес в области памяти вызывающей функции. Адрес позволяет вызываемой функции работать непосредственно в области памяти вызывающей функции:
Однако, параметры можно использовать и для передачи данных (результатов работы функции) обратно, в вызывающую программу. Для этого параметры нужно передавать по ссылке (или как указатели). При этом в вызываемую функцию передается не значение параметра, а его адрес в области памяти вызывающей функции. Адрес позволяет вызываемой функции работать непосредственно в области памяти вызывающей функции:
В
этом случае новые значения параметров
как бы "возвращаются" в вызывающую
функцию.
Разрабатывайте программу по шагам:
Шаг 1. Проектирование структуры программы
Сначала выделите вспомогательные алгоритмы (подзадачи), которые будут оформлены как отдельные функции. Предполагается, что должна быть функция, в которой вводятся данные задачи, и функция, в которой производится вспомогательный расчет.
Шаг 2. Определение параметров функций
Для каждой функции определите, какие данные она будет получать для выполнения своего вспомогательного алгоритма и какие результаты нужно будет передать обратно в главную функцию.
Данные в функцию передаются как параметры (стоят в скобках после имени функции).
Результаты работы функции передаются
Разрабатывайте программу по шагам:
Шаг 1. Проектирование структуры программы
Сначала выделите вспомогательные алгоритмы (подзадачи), которые будут оформлены как отдельные функции. Предполагается, что должна быть функция, в которой вводятся данные задачи, и функция, в которой производится вспомогательный расчет.
Шаг 2. Определение параметров функций
Для каждой функции определите, какие данные она будет получать для выполнения своего вспомогательного алгоритма и какие результаты нужно будет передать обратно в главную функцию.
Данные в функцию передаются как параметры (стоят в скобках после имени функции).
Результаты работы функции передаются
- либо с помощью имени функции (ему присваивается тип и в теле функции используется оператор return);
- либо с помощью параметров- ссылок или указателей - если результатов больше, чем один.
Обдумайте, как будут передаваться данные в Вашей программе. Напишите сигнатуры (заголовки) своих функций.
В данном выше примере в функции(см. выше рис. №2)
void vvod(int& d1, int& d2)
имя функции ничего не передает, а введенные внутри функции данные будут переданы в основную функцию с помощью параметров-ссылок d1 и d2.
В функции
int sum(int p, int q)
один результат -сумма значений, которые переданы как параметры, передается в основную функцию через имя sum, которое имеет целый тип.
Шаг 3. Разработка программного кода
Лучше написать текст программы сначала на бумаге. Части программы планируется оформить в отдельных файлах.Чтобы отдельные файлы были связаны, нужно написать заголовочный файл и ссылаться на него как в примере выше.
Шаг
4. Постепенная отладка программного
кода
В программах начинающих обычно очень много ошибок, в том числе плохо ими понимаемых логических ошибок. Поэтому сначала напишите заголовочный файл, первую функцию и часть основной, которая вызывает первую функцию (можно приписать какой-нибудь вывод на экран результатов, полученных из функции. После этого сделайте отладку этой части. затем уже впишете и отладите следующую функцию.
В программах начинающих обычно очень много ошибок, в том числе плохо ими понимаемых логических ошибок. Поэтому сначала напишите заголовочный файл, первую функцию и часть основной, которая вызывает первую функцию (можно приписать какой-нибудь вывод на экран результатов, полученных из функции. После этого сделайте отладку этой части. затем уже впишете и отладите следующую функцию.
Комментариев нет:
Отправить комментарий