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)

?>


 

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

60237. Будуйте храм в своїй душі 100.5 KB
  Мета: продовжувати знайомити із людськими чеснотами; довести до свідомості дітей що добро й милосердя чиняться безкорисливо; розвивати почуття доброти чуйності милосердя; викликати бажання творити добро бути милосердними й уникати злих вчинків...
60238. Перші кроки до світу інформатики 463.5 KB
  Компютерна підтримка навчальних предметів; подальший розвиток інтересу до курсу формування мовленевої інформаційної соціальної компететностей розвиток логічного мислення уваги памяті фантазії кмітливості та творчих здібностей виховання...
60239. Чайный калейдоскоп. Внеклассное мероприятие 1.92 MB
  Цель: познакомить учащихся с историей возникновения чая; происхождением и сортами чая традициями чаепития; научить правильно заваривать чай сервировать стол к чаепитию; развивать творческие способности эстетический вкус культуру поведения за столом...
60240. Позакласний захід: Рідне слово 90 KB
  Доброго дня любі шанувальники українського слова Корені українського слова проросли з найдавніших діалектів прасловянських племен рясними пагонами розвинулися в часи Давньоруської держави. відео презентація Рідна мово Сьогодні...
60241. ОСТРІВ ЗДОРОВ’Я – ДИТИНСТВА КРАЙ. ЗАВЖДИ ДЛЯ СЕБЕ ЙОГО ОБИРАЙ 60.5 KB
  Мета: Застосовуючи методи соціально-активного навчання формувати у дітей прагнення до зміцнення і збереження здоровя. Вчитель Вітаємо вас дорогі друзі у нашому дружньому крузі В нас буде свято Щоб рости і гартуватись...
60242. Скажи палінню – ні! 82.5 KB
  Мета: переконати учнів у шкідливості куріння інформування про негативний вплив тютюну на здоровя не лише того хто палить але й оточуючих; викликати негативне ставлення до цієї згубної звички інформування...
60243. У світі пірамід 75 KB
  Перше чудо світу єгипетські піраміди. Але навіть тепер піраміди справляють таке могутнє враження що нам важко висловити почуття які охоплюють нас коли ми споглядаємо ці камяні геометричні споруди над Нілом.
60244. ДАНИНА ПОДВИГУ 302.5 KB
  Сьогодні визначається знаменна дата 70-а річниця боїв за Дніпро і визволення столиці України Києва від гітлерівських загарбників. Серед видатних перемог Великої Вітчизняної війни операція по визволенню Києва...
60245. Виховний захід: Поле чудес 187 KB
  І завданням кожного з нас є турбота про світ природи що нас оточує та охорона тварин рослин та природних ресурсів. Виходячи з цього і враховуючи притаманні державі геополітичні географічні демографічні соціально-економічні та екологічні особливості цілями...