68918

Користувацькі функції

Лекция

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

У будь-якій мові програмування існують підпрограми. У мові С вони називаються функціями, в асемблері — підпрограмами і викликаються інструкцією CALL, а в мові Pascal існує навіть два види підпрограм: процедури і функції.

Украинкский

2014-09-27

45 KB

0 чел.

Лекція № 11

Тема: Користувацькі функції

План

  1.  Користувацькі функції
  2.  Створення функцій

Що таке «призначені для користувача функції»

У будь-якій мові програмування існують підпрограми. У мові С вони називаються функціями, в асемблері — підпрограмами і викликаються інструкцією CALL, а в мові Pascal існує навіть два види підпрограм: процедури і функції.

Підпрограма — це спеціальним чином оформлений фрагмент програми, до якого можна звернутися з будь-якого місця усередині програми. Підпрограми істотно спрощують життя програмістам: вони покращують читабельність початкового коду, скорочують початковий код (не потрібно писати один і той же фрагмент кілька разів). У мові PHP підпрограми називаються функціями.

Раніше ми розглядали стандартні функції, передбачені самою мовою PHP. Проте часто стандартні функції не вистачає і виникає необхідність створення своєї власної функції, що володіє необхідними якостями. Такі створювані самостійно функції і називаються призначеними для користувача. Про те, як їх створювати і використовувати, ми і дізнаємося в цьому розділі.

Особливості призначених для користувача функцій в РНР

Як уже згадувалося, в мові РНР підпрограми називаються функціями. Ось особливості використання функцій в РНР:

Ви можете використовувати параметри, встановлені за умовчанням. Це, зокрема, дозволяє викликати одну і ту ж функцію із змінним числом параметрів.

Функція може повертати будь-який тип.

Область видимості змінних усередині функції, так само як і в інших мовах програмування, деревовидна.

Наявність інструкції return, як в мові С.

Можна змінювати змінні,  передані як аргумент (як параметр-змінна в Паскалі).

Мова РНР надає програмістові величезну свободу при створенні власних функцій. При програмуванні на інших мовах мені дуже не вистачало параметри за умовчанням, які дозволяють написати функцію з різним числом параметрів. У мові C++ з'явився механізм перезавантаження функцій, але параметри за умовчанням — це гнучкіший засіб. Адже в C++ для кожної переобтяженої функції нам потрібно наново писати її тіло. А в мові РНР цього робити не потрібно. У цьому розділі ми обов'язково розглянемо параметри за умовчанням.

Проте у PHP-функцій окрім переваг є і недоліки, причому істотні. Перший недолік пов'язаний з оголошенням локальній функції. У РНР ви не можете оголосити локальну функцію, як це можна робити в інших мовах. Тобто, ви не можете створити функцію усередині іншої функції так, щоб перша (вкладена) функція була видна тільки в другій функції. У РНР вкладена функція буде видна всій програмі, тобто, не буде локальної. Розглянемо наступний приклад:

<?

function first() { echo "First"; function Second() (

echo "Second"; } )

First () ; second ()

?>

Сценарій надрукує FirstSecond. Це означає, що нібито локальна функція доступна у всій програмі.

  Примітка. Зверніть увагу на імена функцій при оголошенні (first і Second) і при виклику (First і second). Це не друкарська помилка - РНР нечутливий до регістра імен функцій. Ви можете викликати функцію first(), FIRsT() або якось інакше.

Другий недолік пов'язаний з областю видимості функцій. Але спочатку небагато скажемо про глобальні і локальні змінні. Глобальні змінні — це змінні, які видно і доступно всій програмі зі всіма вхідними в неї підпрограмами(функціям). Локальні змінні, визначені усередині підпрограм, видно і доступно тільки усередині самої підпрограми(функції), в якій вони визначені.

Так от, в РНР всі оголошені і використовувані у функції змінні за умовчанням локальні для функції. Тобто, за умовчанням ви не можете змінити значення глобальної змінної в тілі функції як це можна зробити в інших мовах програмування. Якщо ви у функції використовуватимете змінну з ім'ям, ідентичним імені глобальної змінної, то це ніякого відношення до глобальної змінної мати не буде. Просто у функції буде створена локальна змінна з таким же ім'ям і за межами функції вона видна не буде.

Наступний приклад підтверджує даний факт:

$i   =   10;

function   change()    {

$i   =   5;

echo "i = $i<br>\n";

change () ;

echo "i = $i";

Сценарій спочатку надрукує 5, а потім — 10.

Проте, в РНР існує можливість позбавитися від цього недоліку. Для цього передбачено використання спеціальної інструкції global, яка дозволяє функції працювати з глобальними змінними. Докладніше про це ми говоритимемо в п. 8.6.

Створення призначених для користувача функцій

Функція може бути оголошена в будь-якій частині програми (в межах операторів <? і ?>), але до місця першого її використання. Іншими словами, не потрібно ніякого попереднього оголошення, як в інших мови програмування, зокрема, в С. Дойдя до визначення функції, транслятор перевірить коректність визначення і відтранслюватиме визначення функції у внутрішнє уявлення, але транслювати код він не стане. Даний підхід є найправильнішим — навіщо транслювати код, який, можливо, ніколи не використовуватиметься?

Для оголошення функцій використовується такий синтаксис:

function   Ім'я    (аргумент1[=значение1],...,аргумент1[=значение1])

{

тіло   функції

}

Оголошення функції починається службовим словом function, потім слідує ім'я функції, після імені — список аргументів в дужках. Тіло функції полягає у фігурні дужки і може містити довільне число операторів.

Вимоги до імен функцій:

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

Ім'я функції не повинне містити пропусків і пробільних символів.

Ім'я повинне бути унікальним з точністю до регістра, тобто
функції F1() і fl() — це одна і та ж функція.

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

Оскільки тип повертаного значення може бути будь-яким, його (тип) не указують зовсім. Для передачі результату роботи функції в основну програму використовується інструкція return. Якщо функція нічого не повертає, інструкцію return не указують. Інструкція return може повертати все, що завгодно, у тому числі і масиви.

Перша функція

Ми вже знаємо достатньо про функції, щоб написати власну функцію. Наприклад, наступна функція повертає масив з 10 випадкових чисел.

<?

function GetRand() {

$LocalArr = array();

mt_srand(time());

for($i=;$i<10;$i++) $LocalArr[] = mt_rand(0,100);

return $LocalArr;

}

$A = GetRand();

foreach($a as)

?>


 

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

3339. Оброблення деталей методом пластичного деформування 313.5 KB
  Оброблення деталей методом пластичного деформування. Обладнання, Інструмент. Токарно-гвинторізний верстат, набір накаток: кулькова жорстка, роликова жорстка і пружна, роликова для відновлення пружин, при стрій для кріплення пружин, твердомір Т...
3340. Відновлення деталей електролітичним хромуванням 81 KB
  Відновлення деталей електролітичним хромуванням Обладнання, інструмент. Хромувальна установка, джерело живлення, підвісні пристрої для деталей при хромуванні, ключі ріжкові 10 X 12; 12 X 14; 17 X 19, 22 X 24, мікрометр. МК 25-2, ...
3341. Анализ товарооборота и факторов, влияющих на его изменение 479 KB
  Введение В настоящие время главной целью торговых предприятий должно быть получение максимальной прибыли, при этом товарооборот выступает как важнейшее и необходимое условие, без которого не может быть достигнута эта цель. Поскольку торговое предпри...
3342. Модульные задания по 1 части курса физики 692 KB
  Физика является основой практически всех общеинженерных и специальных дисциплин. Глубокое знание физики необходимо студентам инженерно-педагогических специальностей, так как характер их будущей работы требует творческого отношения к делу, умения неп...
3343. Физические величины. Основы физики 706.92 KB
  Кинематика материальной точки. Система отсчета. Траектория, перемещение, скорость, ускорение. Равномерное и равнопеременное прямолинейное движение. Кинема́тика точки — раздел кинематики, изучающий математическое описание движения материальных точек. Основной задачей кинематики является описание движения при помощи математического аппарата без выяснения причин, вызывающих это движение.
3344. Маятник Максвелла 537 KB
  Цель работы. На примере маятника Максвелла познакомиться с вычислением и экспериментальным измерением момента инерции цилиндрического твердого тела относительно оси симметрии. Оборудование. Маятник Максвелла. Темы для изучения. В лаборат...
3345. Сборник лабораторных по физике 730 KB
  Определение момента инерции тела при помощи крутильных колебаний Целью работы является определение момента инерции диска путем сравнения периода его крутильных колебаний с периодом колебаний системы, состоящей из этого же диска и кольца. ОПИСАНИЕ УС...
3346. Физика среды и ограждающих конструкций 167.29 KB
  Физика среды и ограждающих конструкций К ограждающим конструкциям относятся элементы зданий и сооружений, ограничивающие некоторое пространство для создания в нем заданного режима эксплуатации. К ограждающим конструкциям жилых и общественных зданий...
3347. Магнитное поле и его характеристики 673 KB
  Магнитное поле и его характеристики План лекции: Магнитное поле. Индукция и напряженность магнитного поля. Магнитный поток. Теорема Гаусса для магнитного потока. Закон Био-Савара-Лапласа и его применение для расчета магнитных полей. Теорема о циркул...