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


 

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

39887. Разработать на основе МПК I8085 контроллер управления, обеспечивающий и поддерживающий определенную температуру (точность: плюс/минус 0.1 С) в холодильной камере, в зависимости от вида продукции для хранения 204.08 KB
  3 Постановка задачи4 Структурная схема устройства5 Общая схема алгоритма.6 Функциональная схема8 Детальная схема алгоритма. Структурная организация устройства Общая схема алгоритма Основная программа Х1: 1 значение с датчиков равно значению с переключателей; 0 не равно; Х2: 1 значение датчика больше чем значение переключателей; 0 меньше: Рис. Общая схема алгоритма работы устройства.
39888. Прохождение практики на Предприятии ОАО «Апатит» 177.73 KB
  Служба эксплуатации контрольноизмерительных приборов и автоматики КИП и А выполняет следующие функции: метрологический надзор; техническое обслуживание; ремонт и настройку контрольноизмерительных приборов и приборов автоматического управления. Цех КИП и А выполняет такие наиболее ответственные работы как ремонт и поверка приборов эксплуатация сложных систем автоматики и др. Внедряет новые системы автоматики осуществляет техническое руководство группами эксплуатации приборов КИП и А в других цехах предприятия организует...
39889. ОПРЕДЕЛЕНИЕ РАВНОВЕСНОЙ ТЕМПЕРАТУРЫ ВОЗДУХА В ОХЛАЖДАЕМОМ ПОМЕЩЕНИИ (НА ПРИМЕРЕ НИЗКОТЕМПЕРАТУРНЫХ ПРИЛАВКОВ И ШКАФОВ) 6.31 MB
  При включении холодильной машины в охлаждаемом помещении устанавливается температура ниже температуры наружного окружающего помещение воздуха. при балансе: При наступлении равновесия между теплопритоками и теплоотводом в камере установится определенная температура называемая равновесной температурой. Не будет теплопритока от грузов и в случае если это камера длительного хранения куда грузы заложены уже давно и их температура стала равна температуре в охлаждаемом помещении. Для ограждения не подверженного действию солнечной радиации:...
39890. Бизнес-план создания ОАО «Мебель Интерьер Центр» 300.5 KB
  Расчетные данные согласно приложениям 16 показывают что предприятие в 2013 году будет иметь стабильный экономический рост: общая выручка от реализации продукции составит 14187 млн. 7663 млн. Темп роста составит 1851; объемы реализации промышленной продукции увеличатся с 45069 млн. в 2012 году до 102270 млн.
39891. Программирование баз данных 29 KB
  Создание модуля данных Доступ к базе данных в системе DELPHI выполняется достаточно просто с использованием богатого набора невизуальных компонентов работы с СУБД. Как правило эти компоненты группируются в создаваемой программе в специальном модуле данных TDtModule. Модуль данных представляет собой хранилище объектов которое позволяет централизованно управлять их работой и отделяет программную логику связанную с базами данных от программного кода выполняющего вычислительные действия и отображение данных на форме.
39892. Объектно-ориентированное программирование. Скрытие данных в объектах 42 KB
  Наследование определение объекта и дальнейшее использование всех его свойств для построения иерархии порожденных объектов с возможностью для каждого порожденного объекта относящегося к иерархии доступа к коду и данным всех порожденных объектов...
39893. Компоненты страницы Standard 146 KB
  Button1ClickSender: TObject; begin lbel4.Text; end; Результат работы процедуры: Пример: при изменении состояния флажка о его текущем состоянии будет выведена надпись.CheckBox1ClickSender: TObject; begin cse CheckBox1.Cption:= 'Включен'; end; end; Результат работы процедуры: Пример: при изменении состояния переключателя о его текущем состоянии будет выведена надпись.
39895. Введение в DELPHI 127.5 KB
  Модуль состоит из кода который реализует функционирование приложения а также обработку событий для формы и ее компонентов. Первый файл двоичный он хранит образ формы и ее свойства. Свойства формы: ctive содержит значение true если форма имеет фокус ввода; ctiveControl объект на форме который имеет фокус ввода; BorderStyle вид границ формы; Cnvs область рисования формы; ClientRect ClientHeight размеры формы ClientWidth FormStyle стиль формы; HelpFile название файла справки для формы; Icon значок обозначающий форму...