php Пример оформления решения задачи в виде функции
Primary tabs
(заметка относится, как минимум, к этому списку задач)
Возьмём код из решения задачки (один из учеников), и прокомментирую его:
/**
* Эта функция, которая решает задачу
* (комментарий в стиле phpdoc)
*
* @param int $n номер числа
*/
function fib($n)
{
$a = 1;
$b = 1;
for ($d = 3; $d <= $n; $d++) {
$c = $a + $b;
$a = $b;
$b = $c;
}
echo $c;
}
// а дальше идет код (его называют "клиентским"),
// который и использует нашу функцию
fib(7);// вызов функции с конкретными параметрами
Сейчас для нас не важно что именно делает функция, важно что снаружи она получает значение (в данном случае одно типа integer) и выполняет свою работу (в примере выше она рассчитывает по переданному параметру некоторое другое значение, и после того как рассчет окончен выводит полученное значение на экран в строке:
echo $c;
).
Обратите внимание, что эта функция оказывает побочный эффект прямо в своем теле (выводит значение на экран), а это не всегда удобно -- что если мы хотим просто использовать это значение снаружи, скажем просуммировав его с чем-то и только потом выводя на экран?
В этом случае оказывается, что функция, которая возвращает значение универсальнее той, которая его распечатывает (ведь то что возвращается всегда можно распечатать снаружи, как именно мы увидим ниже), поэтому "идеальным" с точки зрения повторного использования кода функции будет решение:
/**
* Эта функция, которая решает задачу
* (комментарий в стиле phpdoc)
*
* @param int $n номер числа
* @return int
*/
function fib($n)
{
$a = 1;
$b = 1;
for ($d = 3; $d <= $n; $d++) {
$c = $a + $b;
$a = $b;
$b = $c;
}
return $c;
}
// а дальше идет код (его называют "клиентским"),
// который и использует нашу функцию
echo fib(7);// вызов функции с конкретными параметрами
// и сразу же распечатка
Уточним, для лучше понимания, что клиентский код в последнем примере можно было бы переписать как:
$result = fib(7); echo $result;
Но для краткости записи кода, возвращаемое нашей пользовательской функцией fib() значение используется в echo() напрямую:
echo fib(7);
- Log in to post comments
- 2858 reads