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, але з однією відмінністю: перед включенням файлу інтерпретатор перевіряє, чи включався цей файл чи ні. Якщо так, то файл не буде включений до складу сценарію. Звичайно, використання цих інструкцій вимагає додаткових зусиль від вашого інтерпретатора, оскільки він повинен пам'ятати імена всіх включених файлів, але це краще, ніж пам'ятати їх самому.


 

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

65775. Опасности, возникающие в повседневной жизни и безопасное поведение 212.5 KB
  Понятие пожарной опасности Понятие пожарная опасность емко и многогранно. В этом случае пожарная опасность обуславливается видом объекта степенью горючести обрабатываемых производимых или потребляемых материалов технологической культурой производства и степенью точности...
65776. Вестфальская система МО 14.33 KB
  Закончившаяся поражением Франции и триумфальной победой бисмарковской Германии привела к установлению недолгого Франкфуртского мира ставшего третьей модификацией Вестфальской системы международных отношений. Эта война закончившаяся тотальным поражением Германии Японии и их союзников создала...
65777. ИСТОРИЯ И ОРГАНИЗАЦИЯ ДЕЛОПРОИЗВОДСТВА В БЕЛАРУСИ 593.5 KB
  В этот период утверждается система органов центрального и местного управления определяется состав документов регламентирующих все стороны государственной и частной жизни. Статуты широко известные в государственных учреждениях разных инстанций послужили образцом для писцов последующих десятилетий и источником грамматических средств...
65778. Белоруссия и Литва в составе Российской империи (РИ) 20.57 KB
  Территория современной Беларуси окончательно вошла в состав Российской Империи 26 января 1797 года в день состоявшегося деюре упразднения польского государства. После присоединения Беларуси к России имперское правительство начало проводить политику направленную на нивелировку...
65779. Национальный вопрос во внутренней политики Российского государства (1905-1917 гг.) 48 KB
  В начале 20 в. в национальной политике России существовало 3 болевые точки: а) Польский вопрос (не получил развития в ходе революции, т.к. национальное движение формировалось не по национальному признаку, а по классовому); б) Украинский вопрос, представлявший для России вопрос внешнеполитический...
65780. Источники права. Понятие нормативно-правового акта и его виды 30.5 KB
  Для понимания процессов правообразования а также для понимания того откуда брать право в решении юридических дел необходимо обратиться к источникам права. Об источниках права говорят прежде всего как о факторах питающих появление и действие права.
65782. Язык и речь. Формы и типы речи 23.42 KB
  Таким образом речь это язык в действии реализация конкретного языка. Речь отражает опыт говорящего его состояние. Мимика и жестикуляция в подавляющем большинстве случаев только сопровождают звуковую речь придавая ей добавочные эмоции либо смысловые оттенки.