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>"; }

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


 

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

66392. РОЗШИРЕННЯ МОЖЛИВОСТЕЙ ВІБРАЦІЙНОЇ ОБРОБКИ ПЛОСКИХ ДЕТАЛЕЙ НА ОСНОВІ УДОСКОНАЛЕННЯ ТЕХНОЛОГІЧНОЇ СИСТЕМИ 724.14 KB
  На сьогодні одним зі шляхів розвитку машинобудування є виготовлення деталей машин високої якості, довговічність і надійність яких значною мірою залежать від точності їх виготовлення, оптимальних фізико-механічних властивостей поверхневих шарів поверхонь, що сполучаються.
66393. МАТЕМАТИЧНІ МЕТОДИ ДІАГНОСТУВАННЯ ФІНАНСОВОЇ СТАБІЛЬНОСТІ БАНКІВСЬКОГО СЕКТОРУ УКРАЇНИ 283 KB
  В умовах розвитку ринкової економіки в Україні та зростання інтеграції до світової економічної спільноти першочергового значення набуває проблема підвищення фінансової стабільності банківського сектору країни що включає в себе такі системні характеристики...
66394. Клінічний перебіг гострого калькульозного пієлонефриту у хворих на цукровий діабет та удосконалення його комплексного лікування з урахуванням стану вегетативної нервової системи (клініко-експериментальне дослідження) 990.5 KB
  Однією з найбільш важливих, складних проблем в урології та медицині в цілому є інфекційно-запальні ускладнення, значення яких з відомих причин медичного, соціального, економічного характеру з часом зростає. Частота їх розвитку стає загрозливою, що знаходить відображення...
66395. ФІНАНСОВА СТРАТЕГІЯ ТОРГОВЕЛЬНИХ ПІДПРИЄМСТВ В УМОВАХ НЕСТАБІЛЬНОГО ЕКОНОМІЧНОГО СЕРЕДОВИЩА 315.5 KB
  Розвитку фінансової діяльності торговельних підприємств на сучасному етапі притаманний ряд недоліків. Ці недоліки фінансової діяльності суттєво знижують рівень її ефективності внаслідок чого протягом останніх років більш ніж третина торговельних підприємств є збитковими.
66396. ВНУТРІШНЬОАРТЕРІАЛЬНА ПОЛІХІМІОТЕРАПІЯ РАКУ МОЛОЧНОЇ ЗАЛОЗИ. УСКЛАДНЕННЯ, ЇХ ПРОФІЛАКТИКА ТА ЛІКУВАННЯ 272 KB
  Місцеворозповсюджені форми раку молочної залози вважаються прогностично несприятливими і лише впровадження сучасних схем хіміогормонотерапії в клінічну практику зокрема внутрішньоартеріальних інфузій хіміопрепаратів дозволило декілька покращити результати лікування хворих.
66397. Забезпечення продуктивності багатономенклатурних механообробних виробництв на основі синтезу структур технологічних систем 611 KB
  Існуючий стан машинобудування в Україні не достатньо забезпечує необхідні показники конкурентоспроможності продуктивності та якості техніки. Одним із напрямків підвищення ефективності таких виробництв є створення механообробних технологічних систем ТС що сполучають в собі суперечливі властивості високої продуктивності та гнучкості.
66398. ОСОБЛИВОСТІ МОРФОГЕНЕЗУ НАДНИРКОВИХ ЗАЛОЗ ПІД ВПЛИВОМ НА ОРГАНІЗМ ТОЛУОЛУ 232.5 KB
  У зв'язку з цим актуальним компонентом нашої роботи став пошук препаратів здатних нормалізувати структуру надниркових залоз щурів які перенесли вплив толуолу. Встановити особливості будови надниркових залоз статевозрілих щурівсамців...
66399. ГЕНДЕРНА СПЕЦИФІКА СТАНОВЛЕННЯ ПРОФЕСІЙНОГО ІНТЕЛЕКТУ У СТУДЕНТІВ ВИЩОГО ТЕХНІЧНОГО НАВЧАЛЬНОГО ЗАКЛАДУ 183 KB
  Сучасному молодому фахівцю інженерної галузі необхідно вміти продуктивно та творчо розв’язувати завдання й вирішувати виробничі проблеми виявляти здатність професійно інтелектуально розвиватися....
66400. РОЗВИТОК ТЕХНІЧНОГО МИСЛЕННЯ У МАЙБУТНІХ ВЧИТЕЛІВ ТЕХНОЛОГІЙ В ПРОЦЕСІ ВИВЧЕННЯ СПЕЦІАЛЬНИХ ДИСЦИПЛІН 252.5 KB
  Характер технічної оснащеності і наявних технологій у їх сукупності відображають рівень інтелектуального, духовного потенціалу суспільства, можливості самореалізації кожної людини. Безперечно, що підростаючому поколінню потрібно оволодівати знаннями про сутність технологічних перетворень навколишньої дійсності.