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

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


 

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

1395. Общая физика 2.36 MB
  Вектора углового перемещения, угловой скорости и ускорения. Производная единичного вектора (при его повороте). Нормальное и касательное ускорения. Центр инерции системы тел. Теорема о движении центра инерции. Закон сохранения импульса. Работа. Кинетическая энергия. Закон сохранения кинетической энергии. Мощность. Следствия из преобразований Лоренца: длины тел и промежутки времени.
1396. Advanced Animation with DirectX 2.43 MB
  Simulating Cloth and Soft Body Mesh Animation. Using Particles in Animation. Blending Morphing Animations. Timing in Animation and Movement. The source filter uses a single interface to represent a collage of filter objects.
1397. Маркетинговое исследование Компании the Сoca-Сola company 286.03 KB
  Получившийся напиток был запатентован как лекарственное средство «от любых нервных расстройств» и начал продаваться через автомат в крупнейшей городской аптеке Джекоба в Атланте. Интересно, что производство «Кока-Колы» в первый год было убыточным, но постепенно популярность «Кока-Колы»
1398. Технологии разработки Windows–приложений в системе Microsoft Visual C++ 2005. Использование Windows Forms 544.17 KB
  Общие сведения о Windows Forms. Программный код приложения, созданного на основе Windows Forms. Создание обработчиков событий. Добавление новой формы в проект. Получение навыков разработки Windows–приложений в системе Microsoft Visual C++ 2005 (VC++) с использованием классов Windows Forms из библиотек.
1399. Разработка приложений на основе Windows Forms с использованием кнопочных элементов управления и графических объектов 656.3 KB
  Получить навыки разработки на основе классов Windows Forms приложений, реализующих пользовательский интерфейс с помощью кнопок и графических объектов. Построение графиков в клиентской области. Алгоритм построения графика функции.
1400. Разработка приложений с применением элементов управления Windows Forms, обеспечивающих взаимодействие с пользователем 438.98 KB
  Ознакомление с возможностями элементов управления Windows Forms и получить навыки разработки приложений, реализующих пользовательский интерфейс с применением этих элементов. Компонент GroupBox (группа элементов управления). Элементы управления с поддержкой редактирования текста. Формирование элемента меню MenuItem.
1401. Исследование особенностей назначения пенсии за выслугу лет федеральным государственным гражданским служащим 134 KB
  Назначения пенсии за выслугу лет федеральным государственным гражданским служащим в Российской Федерации. Правовой статус федерального государственного гражданского служащего по российскому законодательству. Порядок рассмотрения заявления о назначении пенсии за выслугу лет федеральным государственным гражданским служащим
1402. Календарне планування. 673.5 KB
  Календарне планування – використання мережевої моделі для визначення моментів початку і кінця операцій програми. Виявляються критичні операції, які впливають на тривалість програми, і некритичні операції, які мають резерви часу. Резерви часу можна використати для оптимізації потреб в ресурсах.
1403. Перехідні процеси. Загальна характеристика. Закони комутації. 481.5 KB
  Перехідні процеси відбуваються лише у колах, до складу яких входять реактивні елементи.