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)

?>


 

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

55818. Українські рушники – обереги, символи працелюбності нашого народу 45 KB
  Ознайомити дітей з різними функціями рушника. Зал прикрашений різними рушниками. На стінах плакати: Хата без рушників родина без дітей Рушники на кілочку хата у віночку Не лінуйся дівонько вишивати буде чим гостей шанувати.
55819. Український рушничок – символ мого роду 55 KB
  Україна - це милосердна рідна мова вишитий рушник і задушевна лірична пісня. дівчата вишивають рушники серветки і виконують пісню Вишивання Український рушник. Ознакою охайності працьовитості кожної господині є прибрана хата: вишиті рушники.
55820. А. Малишка, «Пісня про рушник» 64 KB
  Малишка з Піснею про рушник; удосконалювати навички виразного читання; формувати навички аналізу поетичного твору; виховувати любов до рідного слова. МЕТАобслуговуюча праця: домогтися глибокого осмислення учнями значення рушника в житті рідного народу вироблення душевної потреби берегти його як сімейний скарб бажання вишити свій рушник; виховувати в учнів почуття гордості за свій народ свою національну культуру виховувати почуття національної самосвідомості любов до рідного краю пошану до народних майстрів.Малишка грамзапис Пісні...
55821. Русская народная сказка «Репка» 34 KB
  Цель: Знакомство с содержанием русской народной сказки Репка. Коломыткина сказка Репка в иллюстрациях лист ватмана с рисунком фоном сказки Репка сказочные персонажи трафарет репки шестигранный карандаш цветные карандаши посылочный ящик для сюрпризного момента. В руках у меня книжка посмотрите и скажите как называется...
55822. Падежное управление 61.5 KB
  Вспомним чем служебные части речи отличаются от самостоятельных На какие три группы делятся служебные части речи Для чего служат союзы Частицы Предлоги Как называются словосочетания в которых для связи слов используются предлог Приведите пример.
55824. Правописание гласных в приставках ЗА- НА- НАД- 44 KB
  Цель: научить детей правильно писать приставки с гласной буквой А. Обучить детей правильно писать приставки. Закрепить умения детей находить приставки в словах. Давайте выделим приставки поставим ударение и подчеркнём букву безударного гласного в приставках.
55825. Правописание О-Е после шипящих и Ц в окончаниях существительных 64 KB
  Цель урока: обучающая: познакомить учащихся с орфограммой и её графическим обозначением на письме; формировать умение распознавать условия выбора орфограммы: часть речи часть слова ударение...
55826. Глаголы - исключения 48 KB
  Цель: познакомить учащихся с глаголами-исключениями, продолжить работу по определению спряжения глаголов и правописанию личных окончаний глаголов...