69677

ІНСТРУКЦІЯ SWITCH-CASE (КОНСТРУКЦІЯ ВИБОРУ)

Доклад

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

Нами залишилася непоміченій дуже важлива конструкція — switch-case. Дана конструкція призначена для вибору дій, залежно від значення вказаного виразу. Конструкція switch-case чимось нагадує оператора if-else, який, по суті, є її аналогом.

Украинкский

2014-10-08

52 KB

0 чел.

Тема  9: ІНСТРУКЦІЯ SWITCH-CASE (КОНСТРУКЦІЯ ВИБОРУ)

Нами залишилася непоміченій дуже важлива конструкція — switch-case. Дана конструкція призначена для вибору дій, залежно від значення вказаного виразу. Конструкція switch-case чимось нагадує оператора if-else, який, по суті, є її аналогом. Конструкцію вибору потрібно використовувати, якщо передбачувані варіантів багато, скажімо, більше 5, і для кожного варіанту потрібно виконати специфічні дії. В цьому випадку використовувати оператора вибору if-else просто незручно.

Синтаксис switch-case такий:

,

switch    (вираз)

{

case   значення1    :      команди1;    [break;]

case   значення2   :      команди2;    [break;]

[default:    команди_по_замовчуванню;    [break;]]

}

Альтернативний синтаксис конструкції виглядає так:

switch    (вираз):

case   значение1:   команди1;    [break;]

case   значение2   :      команди2;    [break;]

[default:   команди_по_замовчуванню;    [break;]]

endswitch;

 

Працює ця конструкція таким чином:

1.Обчислюється значення виразу.

2. Є видимим набір значень. Хай значення1 рівне значенню виразу, обчисленого на першому кроці. Якщо не вказаний оператор break, то будуть виконані команди i, i+1, i+2 ...,N. Інакше (є break) буде виконана тільки команда з номером i.

3. Якщо жодне значення з набору не співпало із значенням виразу, тоді виконується блок default, якщо він вказаний.

Невеликий приклад:

<?

$age=21;

switch ($age)

{

case 20 : echo "Вам двадцять років\n";

case 21 : echo "Вам двадцять один рік\n";

case 22 : echo "Вам двадцять два роки\n";

default: echo "Вам $age років\n";

}

?>

Якщо змінна   $age рівна 21, тоді будуть виведені рядки:

Вам двадцять один рік Вам двадцять два роки Вам   21   років

Ясна річ, що нам потрібне, щоб програма вивела тільки один рядок, тому потрібно використовувати операторів break:

<?

$age=21;

switch ($age)

{

case 20 : echo "Вам двадцять hjrsd\n"; break;

case 21 : echo "Вам двадцять один рік\n"; break;

case 22 : echo "Вам двадцять два роки\n"; break;

default: echo "Вам $age років\n"; break;

}

?>

Якщо хтось знає мову Pascal, то в нім була подібна конструкція case, що дозволяє указувати діапазони значень:

case    (age)

10..20   :   writeln('BAM   від   10   до   20   років');

end;

У РНР таку можливість можна реалізувати так (діапазон 20...22):

<?

$age=21; switch    ($age)

case 20 : case 21 : case 22 : echo "Вам від 20 до 22\n"; break;

?>

Збираємо один скрипт з декількох окремих скриптів

Інструкції require

Дані інструкції дозволяють зібрати велику програму на декілька окремих файлів. Інструкція require дозволяє включити код до виконання нашого сценарію.

Загальний синтаксис інструкції такий:

require   имя_файла;

Тепер розберемося докладніше, що ж робить require. Інтерпретатор аналізує сценарій і, знайшовши require, просто замінює її вмістом вказаного файлу. Це може бути HTML-файл або сценарій на PHP. B останньому випадку вміст файлу повинен бути обрамлений тегами <? і ?> — як у випадку із звичайним сценарієм. Вставка вмісту файлу, відбувається ДО виконання сценарію — прочитавши наступний пункт, ви відмітите різницю.

Дуже зручно використовувати цю інструкцію для включення HTML-заголовків. Наприклад:

Файл   header.html:

<html><head>

<title>My   Company's   Official   Web   Page</title> </head> <body>

Сценарій:

require   header.html /*   тіло   документа   */

Інструкції include

На відміну від require директива include дозволяє включити код в сценарій під час виконання сценарію. Використання цієї директиви виглядає таким чином:

include   ім'я  файлу;

Можливо, вам потрібно динамічно міняти заголовок залежно від ситуації:

for    ($i=0;    $i<4; $i++) {

inlcude   "header{$i}.html"

};

Створіть 4 файли: header0.html, headerl.html, header2.html і header3.html. Хай кожний з них містить відповідну імені файлу цифру — від 0 до 3. При виконанні сценарію ви побачите висновок 0123. Даний висновок означає, що вміст файлів вставляється в сценарій під час його виконання. Заміните include на require, і ви відчуєте різницю.

Звернете увагу на фігурні дужки. При такому контексті використання include вони обов'язкові. Чому? Інтерпретатор просто замінює include вмістом файлу. Уявіть, що наш файл містить не один, а декілька операторів. Вийде наступне:

for ($i=0; $i<4; $i++) operatorl; operator2; operator3;

Як ви бачите, ми отримуємо зовсім не те, на що розраховували. Ми хотіли, щоб всі три оператори виконалися чотири рази, а насправді, чотири рази виконується тільки перший оператор, а інші два будуть виконані після закінчення роботи циклу. Звідси слідує невеликий висновок: якщо ви забудете укласти include у фігурні дужки (у циклі), то ваша програма працюватиме некоректно або взагалі виникне помилка. Завжди беріть інструкцію include у фігурних дужок!

Особливості використання include і require

Що ж відбувається насправді при використанні include? Ми знаємо, що РНР перетворить наш сценарій у власне внутрішнє уявлення. Перший рядок, другий, третій... І так, поки він не дійде до інструкції include. Потім РНР припиняє транслювати наш сценарій і перемикається на вказаний в include файл. Цілком з'ясовно: інтерпретатор не знає, що буде в цьому файлі, тому не може відкласти його трансляцію «до кращих часів». Якщо у вас велика програма, і вона підключає додаткові файли за допомогою include, навряд чи вона працюватиме швидко, оскільки із-за особливостей include швидкодія різко знижується.

З require таких проблем немає: файл включається до виконання сценарію, тобто на момент трансляції він вже включений в наш сценарій і РНР немає необхідності чекати, поки відтранслюється вказаний файл.

Що ж використовувати? Якщо вам потрібно підключити якийсь додатковий модуль (наприклад, клас HtmlMimeMail, який розглядатиметься в цій книзі), використовуйте require. Якщо ви точно знаєте, що вам потрібно включити якийсь файл не один раз, використовуйте include, проте прагніть по можливості використовувати require скрізь, де тільки можна.

Інструкції одноразового включення include_once і require_once

Ваша програма розрослася до такого ступеня, що ви не можете пригадати, який файл ви включали, а який — ні? Такого бути не може! Невже не видно, що і де включається?

Така ситуація зустрічається досить часто при розробці дійсно великих сценаріїв. Припустимо, що у нас є сценарій main.php, у який включені файли header.php, code.php, footer.php. У файл code.php теж включається декілька файлів. У одному з цих файлів знаходиться інструкція:

require   "header.php";

Виходить, що файл header.php включений двічі. Що ж буває — ви забули або хтось з ваших колег навіть не підозрював, що файл header.php вже включений. Таке включення може стати причиною серйозної помилки, яку дуже важко знайти.

Розробники PHP передбачили вихід з цієї ситуації. Використовуючи інструкції одноразового включення include_once і require_once, ви можете бути упевнені: жоден файл не буде включений двічі. Працюють ці інструкції точно так, як і include і require, але з однією відмінністю: перед включенням файлу інтерпретатор перевіряє, чи включався цей файл чи ні. Якщо так, то файл не буде включений до складу сценарію. Звичайно, використання цих інструкцій вимагає додаткових зусиль від вашого інтерпретатора, оскільки він повинен пам'ятати імена всіх включених файлів, але це краще, ніж пам'ятати їх самому.


 

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

27598. Конфискация имущества как мера уголовно-правового характера 30 KB
  Конфискация имущества как мера уголовноправового характера Уже прошло несколько лет с того момента когда в уголовном законе были произведены наиболее ожидаемые изменения Федеральным законом от 27 июля 2006 г. № 153 восстановлен институт конфискации имущества. № 162ФЗ не вызвало столь острых дискуссий на страницах юридической литературы как отмена конфискации имущества. В обновленной редакции конфискация имущества определяется как мера уголовноправового характера заключающаяся в принудительном безвозмездном обращении по решению суда в...
27599. Крайняя необходимость. Понятие и условия ее правомерности. Отличие крайней необходимости от необходимой обороны 30 KB
  Отличие крайней необходимости от необходимой обороны. 39 УК не является преступлением причинение вреда охраняемым уголовным законом интересам в состоянии крайней необходимости т. для устранения опасности непосредственно угрожающей личности и правам данного лица или иных лиц охраняемым законом интересам общества или государства если эта опасность не могла быть устранена иными средствами и при этом не было допущено превышение пределов крайней необходимости. Акт крайней необходимости является правом граждан но не обязанностью.
27601. Лишение права занимать определенные должности и заниматься определенной деятельностью. Лишение специального, воинского или почетного звания, классного чина и государственных наград. Понятие данных видов наказания, порядок и условия их применения 31.5 KB
  Лишение права занимать определенные должности и заниматься определенной деятельностью. Лишение права занимать определенные должности или заниматься определенной деятельностью состоит в запрещении занимать должности на государственной службе в органах местного самоуправления либо заниматься определенной профессиональной или иной деятельностью. Лишение права занимать определенные должности или заниматься определенной деятельностью может назначаться в качестве основного или дополнительного наказания. Лишение права занимать определенные должности...
27603. Лишение свободы как вид наказания. Сроки лишения свободы. Основания и порядок назначения вида исправительного учреждения. Отличие лишения свободы от ареста и ограничения свободы 43.5 KB
  Лишение свободы как вид наказания. Сроки лишения свободы. Отличие лишения свободы от ареста и ограничения свободы. Лишение свободы на определенный срок состоит в изоляции осужденного от общества на установленный в приговоре срок путем помещения его в одно из исправительных учреждений специально предназначенных для исполнения этого вида наказания.
27605. Массовые беспорядки (ст. 212 УК), понятие и виды этого преступления, отличие от хулиганства (ст. 213 УК) 33 KB
  Объект – общественная безопасность сопротивление представителям власти способное причинить вред здоровью и собственности большого числа людей. Объективная сторона: Массовые беспорядки это совершаемое большой группой людей толпой посягательство на общественную безопасность сопровождающееся насилием над людьми погромами поджогами уничтожением имущества применением огнестрельного оружия взрывчатых веществ или взрывных устройств оказанием вооруженного сопротивления представителям власти. Во время массовых беспорядков нарушается...