69691

Параметри за умовчанням

Лекция

Информатика, кибернетика и программирование

Функції повинні повертати значення різних типів залежно від набору параметрів. Що ж до другої причини то в З у С можна перенавантажувати функції взагалі неможливо змінити тип значення що повертається. Параметри за умовчанням описуються так...

Украинкский

2014-10-08

61 KB

0 чел.

Тема 19: Параметри за умовчанням

При програмуванні досить часто виникала потреба створення функції із змінним числом параметрів. Тому є дві причини:

Параметрів дуже багато. При цьому немає особливого сенсу кожного разу указувати всі параметри.

Функції повинні повертати значення різних типів залежно від набору параметрів.

Що ж до другої причини, то в З (у С++ можна перенавантажувати функції) взагалі неможливо змінити тип значення, що повертається. Якщо ви оголосили тип значення, що поверталося, як int, то змінити його на double ви не зможете. Наприклад, наступне оголошення некоректне:

int   Multi();

int   Multi(int   а);

double   Multi(&avg);

У РНР функція може повертати будь-яке значення залежно від переданих нею параметрів.

Параметри за умовчанням описуються так:

имя_параметра=значение Наприклад, function  my_func   ($х   =   10   $у  =   5)

Якщо параметр не заданий при виклику функції, інтерпретатор передасть функції значення параметра за умовчанням. Зазвичай, потрібні не тільки параметри за умовчанням, але ще і найзвичайніші параметри. В цьому випадку параметри за умовчанням повинні слідувати після звичайних параметрів.

Приклад:

function GetMax($Arr, $i = 0) // правильне оголошення function GetMax($i « 0 $Arr ) // помилка

Наступний приклад (див. лістинг 8.3) демонструє гнучкість мови РНР. Припустимо, що нам потрібно написати функцію Multi, яка використовує глобальний масив Array. Якщо функції не передані параметри, вона повертає максимальне значення, якщо ж їй передано число, він спробує знайти в масиві такий елемент. Якщо елемент з таким значенням буде знайдений, вона поверне його номер, інакше він передасть значення —1.

Лістинг 8.3. Працюємо з функціями

$Array = array () ;

function Multi($a="-999999"){

global SArray; // передаємо у функцію глобальний масив Array() Si = 0;      -

if ($a =="-999999")

{

// немає параметрів, був переданий параметр за умовчанням a=-999999

$max = $Array[0] ; for ($i=0;$i<10;$i + + )

if ($max < $Array[$ij) $max = $Array[$i]; return $max;

}

else {

//   пошук   елементу

for($i=0;$i<10;$i++) if    ($Array[$i]   ==   $a)    return   Si; } }

for{$i=0;$i<lQ;$i++) $Array[]=$i+7; echo Multi(}."\n"; echo Multi(10)."\n";

?>

Якщо узятися те ж саме реалізувати на мові С++, то код збільшиться в півтора рази, а тіло функції доведеться переписувати двічі.

8.5. Змінне число параметрів у функції

Параметри за умовчанням — це, звичайно, дуже корисні функції. Але іноді ми точно не знаємо, скільки параметрів буде передано нашій функції. Спеціально для такого випадку розробники PHP передбачили можливість використання змінного числа параметрів. Напишемо функцію print_str, яка виводитиме передані нею рядки у вигляді таблиці HTML (лістинг 8.4).

Лістинг 8.4. Функція print_str

function print_str()

{

echo "<table border=l width=lQQ%>";

echo "<tr><td bgcolor=blue><font color=white>HoMep</font></td>" ;

echo "<td bgcolor=blue><font color=white>napaMeTp</font></td>" ;

for (Si=0; $i<func_num_args() ; Si + + )

{

echo "<tr><td>Si</td><td>".func_get_arg(Si)."</td></tr>"; I echo "</table>";

)

print_str("Первый","Второй","Третий", "Четвертий"); ?>

Мал. 8.2.  Створена таблиця параметрів

Основними в цій програмі є функції func_num_agrs() і func_get_arg(). Перша повертає число переданих функції аргументів, а друга — аргумент з вказаним номером.

Окрім даних двох функцій можна використовувати ще одну — func_get_args(), яка повертає список всіх аргументів. Використовувати її ще зручніше, ніж перші дві:

foreach(func_get_args()    as   $a=>$v) {

echo   "<trxtd>$a</tdxtd>$v</tdx/tr>"; }

І ще один важливий момент: звернете увагу на оголошення функції — в дужках ми нічого не пишемо, неначе ми і не збираємося передавати їй параметри.


 

А также другие работы, которые могут Вас заинтересовать

72636. ПОДПРОГРАММЫ-ФУНКЦИИ 13.95 KB
  С использованием функции RRMX непосредственно возвращающей значение максимального элемента массива и с помощью функции NUMX возвращающей номер максимального элемента массива. Так в приведенном ниже примере имя функции NUMX типизировано как целое по умолчанию а для функции RRMX необходима явная типизация.
72637. DATA 16.89 KB
  В тех случаях, когда переменные нужно присваивать в начале программы какие-либо значения , которые не должны меняться от одного прогона программы к другому, вместо операторов присваивания можно с большей эффективностью воспользоваться оператором DATA.
72638. Оператор PARAMETER 13.2 KB
  С помощью этого оператора можно любой константе дать символьное имя. Этот неисполняемыми оператор должен находиться перед исполняемыми операторами программы. Часто в разных местах программы употребляются длинные константы, такие как 3.14159265.
72640. ОПЕРАТОРЫ ЦИКЛА 20.64 KB
  Операторы цикла предназначены для многократного выполнения некоторых операторов. Эти операторы называются телом цикла. Различаются операторы цикла с предусловием и с постусловием. Блок-схемы операторов цикла показана на рисунке 1.2.
72641. Структурный IF 21.71 KB
  Сначала вычисляется условие e, а затем в зависимости от его истинности выполняется на выбор один из двух блоков, а после этого - следующий оператор. Один оператор if можно вкладывать в другой оператор IF. Один из таких случаев вложения, а именно if в блок НЕТ другого IF допускает...
72642. ЛОГИЧЕСКИЕ ВЫРАЖЕНИЯ 14.43 KB
  Логическими данными могут быть не только переменные и константы логического типа. Данные или выражения любого встроенного типа связанные операцией логического отношения образуют конструкцию логического типа. Такие конструкции могут входить в логические выражения наравне с логическими переменными и константами.
72643. Условные операторы 23.83 KB
  Условные операторы позволяют выбирать одно из нескольких возможных продолжений процесса программы. Имеется несколько форм условных операторов, из которых самым мощным и простым является структурный оператор IF.
72644. Последовательность выполнения операторов в программной единице 12 KB
  Главная программа является ведущей программной единицей, и обработка всей программы всегда начинается с первого исполняемого оператора главной программы. Обычно главную программу располагают в начале всей программы, т.к. этого требуют некоторые компиляторы; за главной программой следуют подпрограммы.