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

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


 

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

45159. Лествичная система и княжое право периода раздробленности 13.13 KB
  Княжили в таком порядке: старший братмладшие братья по порядкусыновья старшего брата по старшинствусыновья следующих братьев по старшинствувнуки правнуки в той же последовательности и т. По мере смены главного князя все прочие переезжали по старшинству из города в город.
45160. Столыпинская модель ГУ. Реформа органов государственного управления 23.69 KB
  Об образовании из восточных частей Люблинской и Седлецкой губерний особой Холмской губернии с изъятием ее из управления варшавского генералгубернатора Столыпин и Государственная Дума это особый вопрос. К его чести Столыпин наверное единственный из министров царского правительства кто не боялся выступать в Думе с ответами по самым разным депутатским запросам. Между тем иногда аудитория была настроена к нему настолько враждебно что изза шума в зале Столыпин не мог начать выступление в течение 10 15 минут. Например выступая в Думе по...
45161. Кризис государственной власти и начало конца дворянской управленческой элиты 23.61 KB
  Кризис государственной власти и начало конца дворянской управленческой элиты Почему же относительно легко был сокрушен монархический строй в России Среди главных причин нужно назвать десакрализацию верховной власти потерю ею своего авторитета. В период кризиса власти негативную роль сыграло отсутствие у монарха качеств государственного лидера. Продвижение к власти осуществлялось по критерию личной преданности царю. Назреванию кризиса самодержавной власти способствовала мировая война кровавый воз которой Россия тянула с августа 1914 г.
45162. Двоевластие и его сущность. Кризисы Временного правительства: причины и последствия 16.38 KB
  Кризисы Временного правительства: причины и последствия 27 февраля был образован Петроградский совет рабочих депутатов в количестве 250 человек избравший свой исполнительный комитет. 1 марта между Исполнительным комитетом Совета и Временным комитетом Государственной Думы начались переговоры об образовании Временного правительства....
45163. Новая экономическая политика 30.19 KB
  Сущность НЭПа Сущность НЭПа была понятна не всем. При самом различном понимании НЭПа многие партийные деятели сходились в том что в конце гражданской войны в Советской России сохранилось два основных класса населения: рабочие и крестьяне а вначале 20 годов после ведения НЭПа появилась и новая буржуазия носительница реставраторских тенденций. Ленин понимал неизбежные противоречия опасности развития на пути НЭПа. Не отказываясь от конечной цели создания нерыночной системы экономики НЭПа большевики прибегли к использованию...
45164. Сталинская командно-административная система 23.45 KB
  В ЗОе годы совсем оформилась та административно командная система управления русским обществом которая тесновато связана с функционированием гос партии обладающей возможностями верховной власти в стране.Процесс преобразования коммунистической партии России в государственную партию начался в годы гражданской войны когда наряду с Советами призванными после Октября 1917 года осуществлять власть в центре и на местах стали создаваться в каждом уезде волости губернии и партийные комитеты. Опыт большевистской партии рассчитанный на...
45165. Влияние войны на политические настроения 28.1 KB
  Своими глазами увидели и смогли оценить тот мир о разложении и близкой гибели которого им говорили до войны. После окончания войны в сентябре 1945 г.Состоялись выборы в местные Советы Верховные Советы республик и Верховный Совет СССР в результате чего обновился депутатский корпус не менявшийся в годы войны.
45166. ГУ СССР периода стагнации(60-80гг 20 века) 16.14 KB
  ГУ СССР периода стагнации 60-80 гг 20 века Отставка с руководящих партийных и государственных постов Н. экономическая реформа разработка и реализация которой была связана с именем председателя Совета Министров СССР А. Тупик опасный ибо отрыв развитой экономики мира от экономики СССР неуклонно увеличивался. эта концепция была законодательно закреплена в новой Конституции СССР.
45167. Попытки реорганизации советской системы управления во второй половине 1980х гг 28.13 KB
  СССР пытался в одиночку выдержать гонку вооружений против США и НАТО. Андропов оставил пост председателя КГБ СССР сохранив фактический контроль за этой организацией и стал вторым секретарем ЦК КПСС официальным наследником Брежнева. было принято постановление ЦК КПСС и Совмина СССР провозгласившее курс на введение сухого закона. Удар по бюджету был столь значителен что он так и не был преодолен до последних дней существования СССР.