Меню
Безкоштовно
Головна  /  Освіта/ Керуючі конструкції у PHP. Керуючі конструкції мови Сі

Керуючі конструкції у PHP. Керуючі конструкції мови Сі

8. Структурне програмування.

Структурне програмуванняможна визначити як програмування, орієнтоване забезпечення простоти написання і розуміння програм людьми, а чи не комп'ютерами. Воно має такі мети: писати програми мінімальної складності, змусити програміста мислити ясно, полегшити сприйняття програми. Для досягнення цих цілей структурна програма повинна відповідати наступним основним вимогам.

    Текст програми повинен бути композицією трьох основних конструкцій: послідовне з'єднання (слідування), умовна пропозиція (розгалуження) і повторення (цикл).

    Вживання операторів переходу типу GOTO слід уникати всюди, де це можливо (якщо обмеження за обсягом та часом виконання не критичні, то скрізь). Найгіршим застосуванням GOTO вважається перехід на оператор, розташований вище (раніше) у тексті програми.

    По можливості слід відмовитися від використання оператора ELSE Він зазвичай не є необхідним, оскільки еквівалентний оператору IF (not<условие>) THEN. Конструкція ELSE потрібна лише в тій рідкісній ситуації, коли конструкція THEN змінює одну зі змінних умов.

    Програма має бути написана в прийнятному стилі, що полегшує її розуміння та модифікацію.

    Кожен модуль повинен мати рівно один вхід та один вихід.

    Програма є просте і ясне рішення задачі.

8.1.Керівні конструкції структурних програм.

Структурні програми складаються із трьох основних будівельних конструкцій управління обчислювальним процесом:

    слідування- Позначає послідовне виконання дій;

    розгалуження- відповідає вибору однієї з двох варіантів дій залежно умови (значення предиката);

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

Крім базових можуть використовуватися ще три керуючі конструкції, які легко реалізуються на їх основі:

    вибір- позначає вибір одного варіанта дій з кількох залежно від значення деякої величини чи умови;

    цикл із постумовою- визначає повторення дій доти, доки не буде виконано деяку умову, перевірка якої здійснюється після кожного повторення;

    цикл із заданим числом повторень (лічильний цикл) - Визначає повторення дій вказане число разів.

Дії, що є компонентами конструкцій структурного програмування, є або прості оператори мови (наприклад, оператори присвоювання, введення, виведення, виклику підпрограми), або фрагменти програм, що є композицією основних керуючих конструкцій.

    Конструкції структурного програмування

8.2.Понятие стилю програмування та її характеристики.

Стиль програмування- це манера, в якій розробник використовує мову програмування під час написання та оформлення тексту програми. Хорошим вважається стиль, що полегшує сприйняття та розуміння програми людьми. Стиль програмування характеризується двома основними показниками: ясністю програми та способом використання засобів мови.

Наслідування принципу забезпечення ясності програми є основною передумовою для хорошого стилю програмування і вимагає при написанні коду програми акцентування уваги на простоті та зрозумілості тексту за рахунок ігнорування менш важливих критеріїв, наприклад, стислості або машинної ефективності. Для підвищення ясності під час написання програми необхідно дотримуватися таких основних правил.

    Кожен об'єкт програми повинен мати осмислене, змістовне ім'я, яке б його призначення.

    Об'єкти програми не повинні мати схожі імена, наприклад, які відрізняються лише регістром символів або одним-двома знаками. Не можна також використовувати як імена ключові словамови та близькі до них за написанням.

    Слід уникати зайвих проміжних змінних.

    Щоб уникнути неоднозначності, необхідно використовувати дужки, що пояснюють порядок виконання операцій.

    Не слід розміщувати кілька операторів мови на одному рядку.

    Текст програми необхідно писати з використанням пропусків рядків та відступів.

    Текст програми має бути прокоментований у всіх місцях, де її розуміння може бути скрутним або зміст наведеного коду неочевидний. Коментарі повинні містити відомості, що пояснюють код і відображають цілі виконання тих чи інших дій та наслідки, до яких вони призводять. Крім того, рекомендується використовувати коментарі під час оголошення об'єктів програми.

    Слід дотримуватися єдиного стилю під час написання коду програми.

    Якщо в практиці застосування мови програмування склався більш-менш певний стиль оформлення програм, то рекомендується його використовувати, якщо вона не суперечить стандартам, прийнятим в організації або команді, де виконується розробка.

Друга важлива характеристика стилю програмування визначається тим, як розробник використовує засоби та можливості, що надаються мовою програмування. Основна рекомендація щодо застосування засобів мови полягає в тому, що необхідно вивчити та зрозуміти всі можливості мови та уникати тих з них, які можуть зменшити ясність програми, зокрема пов'язаних із погано продуманими чи реалізованими особливостями та залежать від виконання різних трюків.

9.Формальні засоби подання керуючих процесів
у структурних програмах.

9.1.Блок-схеми (структурні схеми) та його конструкції.

Для опису програм за допомогою блок-схем використовуються такі основні конструкції.

    Основні конструкції для формування блок-схем

1) Блок «Оригінатор/термінатор». Використовується для позначення початку та закінчення структурної схеми. Кожна схема повинна починатися та завершуватися цією конструкцією.

2) Блок "Процес". Застосовується для позначення однієї або кількох дій, що забезпечують зміну (обробку) даних, їх форми подання або розташування. Для поліпшення наочності схеми кілька блоків можуть бути об'єднані в один.

3) Блок "Рішення". Використовується для подання операції передачі керування відповідно до заданої умови. Для кожного такого блоку повинні бути задані власне умова (запитання), що визначає схему подальшого розвиткуобчислювального процесу, а також можливі результати перевірки цієї умови (відповіді), що відповідають варіантам передачі управління.

4) Блок «Введення/виведення». Застосовується для позначення операцій, пов'язаних із введенням або виведенням даних. Окремим логічним пристроям чи функціям обміну даними мають відповідати окремі блоки. У кожному блоці вказується операція, вид пристрою або файлу, а також тип беруть участь в обміні даних.

5)–6) Блоки «Зумовлений процес». Використовуються для визначення дзвінків підпрограм. Блок з горизонтальною лінією призначений для опису звернень до підпрограм, спеціально розроблених для програми і які представлені в документації своєю структурною схемою. Блок з вертикальними лініями позначає виклик зовнішніх стосовно програми підпрограм, наприклад входять до складу оточення операційної системи.

7) Блок "З'єднувач". Застосовується у тому випадку, коли через великий розмір необхідно розділити структурну схемуна кілька частин, розміщених на окремих аркушах паперу. У цьому випадку в кінці одного аркуша ставиться даний блок, який входить з'єднувальна лінія, а на початку наступного аркуша використовується такий же блок, з якого з'єднувальна лінія виходить.

8) Блок "Коментар". Дозволяє включити до схеми необхідні пояснення до тих чи інших блоків. Велика кількість таких блоків може знизити наочність структурної схеми.

Недолік блок-схем щодо вимог структурного програмування полягає в тому, що вони дозволяють використовувати в схемах неструктурні способи передачі управління, прикладом яких є достроковий вихід з циклу або застосування оператора безумовного переходу типу GOTO.

9.2.Flow-форми (потокові діаграми).

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

    Основні конструкції Flow-форм

9.3.Схеми (діаграми) Нассі-Шнейдермана.

Схеми Нассі-Шнайдермана є розвитком Flow-форм. Їхня основна відмінність полягає в тому, що в блоках, що представляють розгалуження та вибір, для зображення умов застосовуються трикутники, що дозволяє досягти більшої наочності при описі програми. Основні конструкції діаграм Нассі-Шнайдермана наведені нижче.

    Основні конструкції діаграм Нассі-Шнайдермана

Перевагою Flow-форм та діаграм Нассі-Шнайдермана є те, що вони дозволяють досить наочно зобразити вкладеність конструкцій. Загальний недолік цих графічних схем полягає у складності опису з їх допомогою великих програмчерез громіздкість конструкцій, що використовуються для цього.

10. Об'єктно-орієнтований підхід до програмування.

10.1.Основні концепції та принципи об'єктно-орієнтованого підходу до програмування.

Сутність об'єктного підходуполягає у переважному використанні декомпозиції об'єктів для опису та побудови ПЗ. При цьому функції такої програмної системивиражаються через операції з об'єктів різних рівнів ієрархії, тобто. їхня декомпозиція істотно залежить від декомпозиції об'єктів. Під об'єктно-орієнтованим підходоммається на увазі об'єктний підхід з орієнтацією опис об'єктів предметної області і побудовою їх моделей, у якому переважно використовуються активні об'єкти, т. е. об'єкти, які включають програмні частини, здатні перебувати у процесі виконання. Об'єктно-орієнтований підхід до розробки ПЗ включає три основні етапи:

    Об'єктно-орієнтований аналіз. Створюється об'єктно-орієнтована модель предметної області програмної системи, в якій модельні об'єкти представляють реальні або концептуальні об'єкти-сутності, а також визначаються операції, що виконуються над ними.

    Об'єктно-орієнтоване проектування. Розробляється об'єктно-орієнтована модель ПЗ (системна архітектура) з урахуванням наявних вимог, у якій визначення всіх об'єктів підпорядковане вирішенню конкретної задачі.

    Об'єктно-орієнтоване програмування. Реалізується архітектура (модель) системи за допомогою об'єктно орієнтованої мови програмування.

Об'єктно-орієнтоване уявлення та декомпозиція програмної системи ґрунтуються на принципах абстрагування, інкапсуляції, модульності та ієрархічної організації. Абстрагуваннязводиться до формування абстракцій. Кожна абстракція фіксує основні характеристики деякого об'єкта, які відрізняють його від інших видів об'єктів та забезпечують чіткі понятійні межі. Абстракція концентрує увагу зовнішньому уявленні об'єкта і дозволяє відокремити основне у поведінці об'єкта з його реалізації. Інкапсуляціямістить та приховує реалізацію об'єкта, що забезпечує його поведінку. Інкапсуляція досягається за допомогою інформаційної закритості. Зазвичай ховається структура об'єктів та деталі їх реалізації. Модульністьвизначає здатність системи піддаватися декомпозиції на ряд сильно пов'язаних та слабо зчеплених модулів. Модулі є фізичними контейнерами, в яких оголошуються компоненти програмної системи. Модульність визначає спосіб угруповання логічно пов'язаних абстракцій. Ієрархічна організаціяпризначена для формування абстракцій ієрархічної структури. Ієрархічна організація задає розміщення абстракцій на різних рівняхопис системи. Двома важливими інструментами ієрархічної організації в ООП є: виділення відносин «загальне-приватне» та відносин «ціле-частина». Найчастіше ієрархія «загальне-приватне» будується за допомогою наслідування. Ієрархія «ціле-частина» виходить з агрегації.

10.2.Объектно-ориентированный підхід до програмування: поняття об'єкта та його характеристики, зв'язок між об'єктами.

Об'єкт- це конкретне уявлення абстракції. Клас визначає структуру та поведінку схожих/подібних об'єктів, тобто. описує їхню абстракцію. Об'єкт має індивідуальність, стан і поведінку. Індивідуальність- це характеристика об'єкта, яка відрізняє його від інших об'єктів. Станоб'єкта являє собою перелік всіх його властивостей/атрибутів та поточні значення кожного з них. Поведінкахарактеризує те, як об'єкт впливає інші об'єкти (чи піддається впливу) в термінах змін його стану та передачі повідомлень. Поведінка об'єкта залежить від його стану та набору відповідних йому операцій. Операціянадає послугу, яку об'єкт пропонує для використання. Можливі п'ять типів операцій над об'єктом: - модифікатор - змінює стан об'єкта; селектор – надає доступ до стану, але не змінює його; ітератор - забезпечує доступ до змісту об'єкта частинами, у строго визначеному порядку; конструктор - створює об'єкт та ініціалізує його стан; деструктор - руйнує об'єкт і звільняє ним ресурси. Виконання операції забезпечує обробку відповідного повідомлення, яке може бути надіслано даному об'єкту. Засобом реалізації операцій є підпрограми (методи). Таким чином, повідомлення є викликом деякої підпрограми, що реалізує одну з операцій, властивих об'єкту. Набір підпрограм, що реалізують операції об'єкта, називається його протоколомабо інтерфейсом (повідомлень).

Взаємодія об'єктів залежить від відносин між ними, які ґрунтуються на взаємній інформації про дозволені операції та очікувану поведінку. Найбільш значущі два види відносин між об'єктами: зв'язки та агрегація. Зв'язок- це фізичне чи понятійне з'єднання між об'єктами. Зв'язок позначає з'єднання, за допомогою якого об'єкт-клієнт викликає операції об'єкта-постачальника (передає повідомлення) або один об'єкт переміщає дані до іншого об'єкта. Розрізняють чотири форми видимості між об'єктами: об'єкт-постачальник є глобальним для клієнта, об'єкт-постачальник є параметром операції клієнта, об'єкт-постачальник є частиною об'єкта-клієнта, об'єкт-постачальник є локально оголошеним об'єктом в операції клієнта. Агрегаціяпредставляє відносини об'єктів в ієрархії «ціле-частина» та забезпечує можливість переміщення від цілого (агрегату) до його частин (властивостей). Об'єкт, що є частиною (властивістю) іншого об'єкта (агрегату), має зв'язок зі своїм агрегатом. Через цей зв'язок агрегат може надсилати йому повідомлення. Агрегація може означати фізичне входження одного об'єкта до іншого, але не обов'язково.

10.3.Объектно-ориентированный підхід до програмування: поняття класу та його характеристики, відносини між класами.

Клас- Опис безлічі об'єктів, які поділяють однакові властивості, операції, відносини та семантику. Будь-який об'єкт – просто екземпляр класу. У класі виділяють зовнішнє уявлення (інтерфейс) та внутрішній пристрій(Реалізація). Інтерфейсвизначає можливості (послуги) класу, тобто. представляє довкілля абстракцію класу, його «видимий» образ. Інтерфейс складається з оголошень операцій, що підтримуються екземплярами класу, оголошень типів, змінних, констант та виняткових ситуацій, що уточнюють абстракцію, яку виражає клас. Інтерфейс може бути поділений на три частини: відкриту або публічну ( public), оголошення якої доступні всім клієнтам; захищену ( protected), оголошення якої доступні лише самому класу, його підкласам та друзям; закриту або приватну ( private), оголошення якої доступні лише самому класу та його друзям. Стан об'єкта задається у його класі через визначення констант чи змінних, розміщених у його захищеної чи закритої частини. Тим самим вони приховані (інкапсульовані) та їх зміни не впливають на клієнтів. Реалізаціякласу відбиває особливості його поведінки. Вона включає детальний опис (реалізацію) всіх операцій, визначених інтерфейс класу.

Абстракції кожної предметної області перебувають між собою у різних відносинах, у результаті формується структура класів системи. Існує чотири основні типи відносин між класами: асоціація – фіксує структурні відносини, тобто. зв'язки між екземплярами класів; залежність – відображає вплив одного класу на інший; узагальнення-спеціалізація - відносини «загальне-приватне»; ціле-частина - відносини агрегації/включення. Для вираження цих типів відносин більшість об'єктно-орієнтованих мов підтримує різні комбінації таких видів відносин: асоціація, спадкування, агрегація, залежність, конкретизація, метаклас, реалізація. Асоціаціяпозначає семантичний (смисловий) двосторонній зв'язок між класами. Вона є найбільш загальним та невизначеним ставленням, оскільки не вказує напрямок та точну реалізацію відносини. успадкування- Відношення, при якому один клас поділяє структуру та поведінку, визначені в іншому (одинкове успадкування) або в кількох інших класах (множинне успадкування). Наслідування є різновидом відносин узагальнення-спеціалізація. З наслідуванням пов'язане поняття поліморфізму. Поліморфізм- це можливість за допомогою одного імені позначати операції з різних класів, але які стосуються одного суперкласу. Виклик обслуговування поліморфного імені призводить до виконання однієї операції з деякого набору, відповідного ієрархії успадкування класів. Відносини агрегаціїміж класами аналогічні таким між об'єктами. Залежність- Відношення, яке показує, що зміна в одному класі (незалежному) може впливати на інший клас (залежний), який використовує його. Залежність дозволяє уточнити, яка абстракція є клієнтом, яка - постачальником певної послуги. Конкретизація- процес наповнення або налаштування шаблону (узагальненого або параметризованого класу) з метою отримання класу, від якого можливе створення екземплярів. Конкретизація виражає інший різновид відносини узагальнення-спеціалізація. Метаклас- Клас класів, тобто. клас, екземпляри якого є класи. Реалізація- Відношення, при якому клас-приймач забезпечує свою власну реалізацію інтерфейсу іншого класу-джерела.

11. Захисне програмування.

11.1.Поняття коректної та надійної програми. Основні концепції розробки надійних програм. Концепція захисного програмування.

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

У процесі створення програми розробники намагаються передбачити всі можливі ситуації та написати програму так, щоб вона реагувала на них цілком задовільно. Багато принципи та методи розробки ПЗ (наприклад, структурне та модульне програмування, абстрактні типи даних та інкапсуляція та ін.) тією чи іншою мірою переслідують цілі створення надійних програм, тобто. орієнтовані те що, щоб знизити ймовірність появи помилок у готової програмі і мінімізувати їх вплив. Оскільки в загальному випадку неможливо розробити програму, яка була б абсолютно надійною та не містила б помилок, то необхідним є перевірка коректності та надійності програми. Вона включає перегляд проектної документації і тексту програми, аналіз тексту програми на наявність помилок і тестування. Знайдені за результатами перевірки помилки мають бути усунуті, після чого вона має бути частково або повністю виконана повторно.

У зв'язку з тим, що в процесі розробки програми зазвичай неможливо уникнути всіх помилок, доцільно включити у створюване програмне забезпеченнязасоби їх виявлення. Це дозволяє мінімізувати вплив помилки на роботу програми, так і подальші труднощі для людини, якій доведеться отримувати інформацію про цю помилку, знаходити її місце і виправляти. Після виявлення помилки або вона сама, або її наслідки мають бути виправлені програмою, навіщо можуть використовуватися різні методи. Таким чином, використання відповідних методів та засобів дозволяє забезпечити функціонування програмної системи за наявності у ній помилок.

Програмування, при якому застосовуються спеціальні прийоми попередження, раннього виявлення та нейтралізації помилок, називається захиснимабо програмуванням із захистом від помилок. Ці прийоми концентруються на захисті програм та їх складових від неправильних вхідних даних, а також способах виявлення, ізоляції та обробки помилок.

11.2.Види помилок, пов'язаних з вихідними даними, та способи захисту від них.

Виділяють такі види помилок, пов'язаних із вихідними даними:

    Помилки передачі- Викликаються апаратними засобами, які, наприклад внаслідок несправності, можуть спотворювати дані. Такі помилки зазвичай контролюються апаратно.

    Помилки перетворення- Виникають через те, що програма неправильно перетворює дані з вхідного формату у внутрішній робочий. Для захисту від таких помилок отримані в результаті введення дані зазвичай одразу демонструються користувачеві (так званий «відлуння»). При цьому спочатку здійснюється перетворення у внутрішній формат, а потім назад. Однак запобігти всім помилкам перетворення, як правило, досить складно. Тому слід використовувати інші методи захисного програмування, а також ретельно опрацьовувати та тестувати відповідні фрагменти програми.

    Помилки перезапису- обумовлені тим, що користувач помиляється під час введення даних, наприклад, вводить зайвий або інший символ. Подібні помилки можна виявити та усунути при використанні надлишкових даних, наприклад контрольних сум, та спеціальних обмежень на значення та формат вхідних даних, наприклад інтервалів допустимих значень. Слід перевіряти дані, що вводяться відповідно до встановлених обмежень і при наявності помилки або автоматично коригувати їх, або запитувати у користувача нові значення.

    Помилки даних- Викликані тим, що користувач вводить невірні дані. Такі помилки зазвичай може виявити тільки користувач, тому має сенс у процесі введення демонструвати йому введені дані і запитувати підтвердження виконання подальших операцій, особливо у випадках, коли виправити надалі неправильні відомості буде неможливо.

11.3.Основні методи попередження помилок.

Основні концепції попередження виникнення помилок у працюючій програмі включають:

    перевірку правильності вхідних даних та операцій введення-виведення;

    перевірку допустимості проміжних результатів;

    запобігання накопиченню похибок.

Ці ідеї спрямовані контроль правильності вихідних чи проміжних даних програми. Невірні дані можуть з'явитися як у результаті внутрішньої помилкинаприклад помилки пристроїв введення-виводу або ПЗ, так і внаслідок зовнішньої помилки, наприклад помилки користувача або взаємодіючої програми.

Один із методів захисного програмування полягає в ізоляції помилок, які можуть виникнути у зв'язку з невірними вхідними даними. З цією метою може бути розроблений спеціалізований програмний інтерфейс (наприклад, набір підпрограм, що обробляють вхідні дані), що використовується як своєрідна «захисна» оболонка для решти коду. Перевірка коректності даних та обробка відповідних помилок здійснюється на рівні цього інтерфейсу та пропущені через нього дані надалі вважаються безпечними. Той самий підхід застосовується і на рівні окремого модуля або класу. Відкриті підпрограми модуля або класу припускають, що дані можуть містити помилки та відповідають за їх перевірку та виправлення. Якщо дані були перевірені відкритими методами, закриті методи можуть обробляти їх як безпечні.

Перевірка проміжних результатів дозволяє знизити ймовірність пізнього прояву як помилок невірно певних даних, а й деяких помилок, допущених на етапі проектування і кодування. Для організації такої перевірки необхідно у програмі використовувати змінні, котрим існують обмеження будь-якого виду, наприклад, пов'язані з особливостями предметної області. При цьому слід враховувати те, що будь-які додаткові операції вимагають використання додаткових ресурсів (наприклад, часу або пам'яті) і можуть також містити помилки. Тому перевірку проміжних результатів доцільно виконувати тільки в тих випадках, коли це не складно і дозволяє виявити помилки. Наприклад:

    значення вхідного параметра підпрограми лежить у заданому числовому інтервалі або збігається з одним із визначених значень;

    індекс елемента масиву знаходиться у допустимих межах;

    значення змінної, що визначає кількість ітерацій циклу, не є негативним;

    потрібний файл існує або його вдалося відкрити для читання/запису;

    покажчик файлу знаходиться на початку або в кінці і т.д.

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

    уникати віднімання близьких чисел (машинний нуль);

    уникати поділу великих чиселна малі;

    починати складання довгої послідовності чисел з тих, що мають менше за модулем значення;

    не використовувати умову рівності дійсних чисел;

    прагнути наскільки можна зменшувати кількість операцій;

    застосовувати методи із відомими оцінками похибок;

    інформаційної Конспект

    Схем технологічних процесів. Технологія автоматизованоюобробки інформаціїбудується на наступних принципах... циклу інформаційноїсистемиКонцепціяжиттєвого циклу є одним із базових понятьметодології проектування інформаційних ...

Привіт шановні програмісти-початківці.

Вам вже зрозуміло з попередніх статей, що програма складається з виразів, рядків, чисел, операторів, функцій, які виконуються в певній послідовності.

Порядок виконання програми задає програміст, і застосовує для цього керуючі конструкції мови . Тобто керуюча конструкція - це команда на той чи інший порядок виконання програми.

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

Конструкції (можливі визначення - інструкція, команда) можуть бути як однорядковими, так і складовими, тобто зібраними в блок. Блок теж є окремою конструкцією, яка послідовно виконує конструкції в ній ув'язнені.

Загалом у PHP існує шість основних груп керуючих конструкцій. Це:

1. Умовні оператори.
2. Цикли.
3. Конструкції вибору.
4. Конструкції оголошення.
5. Конструкції повернення значень.
6. Конструкції включень.

Давайте розглянемо їх докладно і все по порядку.

Умовні оператори

Ми вже познайомилися з умовними операторами if, else, elseif у статті « Оператори PHP», так що зараз, розглядаючи їх як керуючі конструкції, у нас вийти повторення пройденого, що, як відомо, ніколи зайвим не буває.

Умовні оператори - це найчастіше застосовувані конструкції, не тільки в мові php, але й у всіх алгоритмічних мовах програмування.

Приклад однорядкової конструкції if

if ($next == 0 )
{
echo "Це конструкція мови програмування";
}
?>

У цьому прикладі конструкції if задана умова: змінна $next повинна дорівнювати нулю. Якщо ця умова відповідає істині, то echo виконається. Якщо ні – то відкриється порожня сторінка.

Наступним буде приклад складової конструкції.

$ next = 0;
if ($next == 0 )
{
echo $vegetables ." Овочі
";
echo $fruit. Фрукти
";
echo $berries. Ягоди
";
}
?>

Тут так само змінної $next присвоєно значення 0 і конструкція if , перевіривши його, виконує блок конструкцій echo .

Зверніть увагу, що для перенесення рядка в php застосовується знайомий нам з html тег
. Надалі ми ще не раз зустрінемо html теги, що застосовуються у php коді

І ще зазначу, що відступи в php значенняне мають, і застосовуються лише покращення читабельності коду.

У попередньому прикладі ми розглянули варіант, коли інструкція виконується, якщо вірно задана умова.

Тепер уявіть, що нам потрібно виконати якийсь оператор не тільки коли умова конструкції if правильна, але й тоді коли умова не вірна.

У цьому випадку застосовується конструкція else

$next = 1;
if ($next == 0 )
{
echo $vegetables. "Овочі";
}
else
{
echo $fruit . "Фрукти";
}
?>

І тут відкривається не порожня сторінка, а запис «Фрукти».

Конструкція elseif

Ця конструкція ще більше розширює можливості конструкцій if та else. Уявіть, що у нас більше двох операторів, один з яких має бути виконаний.

У такому випадку до попередніх конструкцій додається конструкція elseif .

$ next = 0;
if ($next == 0 )
{
echo $vegetables. "Овочі";
}
elseif ($next == 0 )
{
echo $fruit . "Фрукти";
}
else
{
echo $berries. "Ягоди";
}
?>

Теоретично, кількість elseif не обмежена. І скільки б їх не було, програма перевірятиме кожну, доки не знайде вірний варіант, тобто true .

Конструкції вибору

Дуже часто, при великій кількості операторів, застосування конструкції elseif стає не зручним через великий обсяг коду.

У такому разі на допомогу приходить конструкція switch-case, можна перемикач switch

Конструкція switch-case, за своєю дією схожа з конструкцією if-else, але на відміну від останньої дозволяє отримувати як результат більше двох варіантів.

Тіло конструкції полягає у фігурні дужки, і для кожного значення, яке потрібно обробити, застосовується оператор case, що закінчується двокрапкою, і завершальний оператор break.

$ next = "Фрукти";
switch ($next) (
case "Овочі":
echo "Картопля";
break;
case "Фрукти":
echo "Яблука";
break;
case "Ягоди":
echo "Вишня";
break;
}
//Виводиться яблука

У цьому прикладі спочатку буде оброблена умова, потім знайдено оператор case зі значенням відповідним до цієї умови, і тільки після цього конструкція switch почне виконуватися.

Для значень не вказаних у завданні, в конструкції switch-case, застосовується оператор default.

$next = "Гриби";
switch ($next) (
case "Овочі":
echo "Картопля";
break;
case "Фрукти":
echo "Яблука";
break;
case "Ягоди":
echo "Вишня";
break;
default :
echo "Шампіньйони";
}
//Виводиться печериці
?>

Якщо опустити оператор break, то програма обробить і виведе на екран усі значення конструкції switch-case

$ next = "Овочі";
switch ($next) (
case "Овочі":
echo "Картопля";
case "Фрукти":
echo "Яблука";
case "Ягоди":
echo "Вишня";
default :
echo "Шампіньйони";
}
/* Виводиться
Картопля
Яблука
Вишня
Печериці */

?>

Ще однією особливістю конструкції switch-case є можливість об'єднання декількох варіантів в один вираз.

$ next = "Клен";
switch ($next) (
case "Овочі":
case "Фрукти":
case "Ягоди":
echo "Картопля
Яблука
Вишня";
break;
case "Клен":
case "Дуб":
case "Ялина":
echo "Ліс";
break;
default :
echo "Шампіньйони";
}
// Виводиться Ліс
?>

Цикли або конструкції повторення.

Цикли призначаються для багаторазового (на відміну конструкції if ) виконання операторів складових тіло конструкції.

Процес виконання циклу називається ітерацією (iteration - повтор).

У php існує три види циклів:

1. while і do-while - цикли з невизначеним числом ітерацій.
2. for - цикл із заздалегідь відомим числом ітерацій.
3. foreach - цикл обробки (перебору) масиву.

Конструкція while

Приклад найпростішого циклу з одним оператором, зазвичай, їх буває більше.

$next = 1;
while ($next<= 8 )
{
echo $next. "
" ;
$ next ++;
}
//Виводить числа від 1 до 8. Тег
має в своєму розпорядженні їх стовпчик

?>

Докладно розглянемо, що відбувається, тобто як працює дана програма.

У першому рядку оголошується змінна $next , якій надається значення одиниця. Привласнення значення називається ініціалізацією змінної.

У другому рядку програма перевіряє умову while ($next<= 8) , которое будет являться истиной (true).

У третьому рядку виконується перший цикл, оскільки одиниця менше 8, і це підходить під визначення true

У четвертій, зміною, що у цьому випадку оператором, присвоюється оператор инкремента (++ ), котрий збільшує кожне наступне значення оператора $next на одиницю.

І програма буде обробляти, і виводити на екран кожне наступне за одиницею ціле число, поки не дійде до 9. І так як 9 виявиться false, то цикл завершиться.

Конструкція do-whileвідрізняється тим, що умова циклу перевіряється не до, а після ітерації.

В результаті, до завершення циклу, обов'язково виконається одна ітерація, яка є false

$next = 1;
do
{
echo $next;
}
while ($next++<= 8 );
//Виводить числа від 1 до 9 в один рядок.
?>

Як бачите, хоч 9 і є false, проте чергова ітерація все ж таки виконалася, після чого програма перевірила умову і цикл завершився.

Конструкція for, або цикл із лічильником, по своїй роботі схожий на цикл while , але має більш компактну форму запису.

Застосовується його краще тоді, коли число ітерацій відоме до початку циклу, і за допомогою нього можна виконувати дії більш складні, ніж проста перебірка значень лічильника.

У наступному прикладі напишемо зміст до невеликої книги.

for ($next = 1; $next< 5 ; $next++)
{
echo "- Сторінка" . $next. "
";
}
/*Виводить
-Сторінка 1
-Сторінка 2
-Сторінка 3
-Сторінка 4
-Сторінка 5 */

?>

Розглянемо докладно три вирази записаних за умови (круглі дужки) циклу.

$ next = 1; - Змінна лічильник, що починає відлік з одиниці.
$next< 5; — определяет продолжительность цикла.
$next++ - Визначає крок зміни значення лічильника. У нашому випадку одно одиниці.

Вирази поділяються між собою крапкою з комою. Можна в один вираз помістити кілька команд і розділити їх комами. Тоді той самий зміст можна зробити трохи інакше

for ($next = 1 $nev= 1 , $page= "-Сторінка"; $next<= 5 ; $nev++, $next=$nev)
{
$page=$page . "-";
echo $page, $next . "
";
}
/*Виводить
-Сторінка-1
-Сторінка--2
-Сторінка---3
-Сторінка----4
-Сторінка-----5 */

?>

Ще однією особливістю for є можливість обходитися без конструкції echo.

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

У ньому за умов циклу вводиться конструкція print

for ($next = 1; $ next<= 5 ; print $next, print "
", $ next++);
/*Виводить
1
2
3
4
5 */

?>

Конструкцію echo, за умови for, вводити не можна.

Всі вищенаведені конструкції, крім do-while , мають альтернативну форму запису — без фігурних дужок.

У цьому випадку рядок з конструкцією та умовою закінчується двокрапкою, а весь блок закривається конструкцією end, продовженням якої є конструкція до якої вона застосовується: endif, endwhile, і так далі.

$next = 1;
while ($next<= 10 ):
echo $next;
$ next ++;
endwhile;
?>

Конструкція foreach- це спеціальний тип циклу, призначений лише для перебору масиву.

$next[ "помідор"] = "Червоний";
$next[ "яблуко"] = "Зелене";
$next[ "виноград"] = "Солодкий";
$next[ "гриб"] = "Білий";
foreach ($next as $key => $value)
{

echo "$value $key
";
}
/*Виводить
Червоний помідор
Зелене яблуко
Солодкий виноград
Білий гриб */

?>

Для негайного виходу з циклу, за необхідності, існує конструкція break. Після її виконання управління передається до виразу, наступного після циклу.

$ next = 0;
while ($next++< 10 )
{
if ($next== 7) break;
echo "$next
";
}
/*Виводить
1
2
3
4
5
6 */

?>

Як бачите, на сьомій ітерації цикл перервався.

Конструкція continue, На відміну від break , перериває тільки поточну ітерацію, і переходить до наступної.

$ next = 0;
while ($next++< 5 )
{
if ($next== 3) continue;
echo "$next
";
}
/*Виводить
1
2
4
5 */

?>

Як бачите ітерація 3 відсутня, оскільки була перервана конструкцією continue

Конструкції оголошення

Конструкції оголошення у php представлені двома елементами. Це конструкція розпізнавання і типуповітря.

По суті вони абсолютно ідентичні, і з однаковим успіхом можна застосовувати як одну, так і іншу, для отримання одного й того самого результату.

Для зручності розуміння коду, в основному використовується конструкція declare. Застосовується вона для того, щоб встановити команди (директиви) на виконання блоку.

В даний час розпізнається дві директиви - це ticks та encoding

Директива ticks задає кількість тиків

declare (ticks = 1);

register_tick_function("tick_handler");

// Функція, що буде виконуватися при кожному тику
?>

Директива encoding застосовується для визначення кодування всього скрипта.

declare (encoding = "UFT-8");
?>

Конструкції включень

Конструкції включень використовуються для введення в програму окремих скриптів та файлів. Завдяки їм програму можна зібрати з готового матеріалу.

Так само конструкції включень застосовуються для зменшення обсягу коду скрипта, коли потрібно ввести код якийсь текст. Тоді до програми вводиться файл txt.

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

Всього в php існує 4 типи конструкцій включення, і всі вони приймають лише один аргумент - шлях до файлу:

include - підключає файл до програми, за його відсутності видає попередження;
require - підключає файл до програми, за його відсутності припиняє роботу скрипта;
include_once - допускає лише одноразове включення підключеного файлу, а за його відсутності видає попередження;
require_once – допускає лише одноразове включення підключеного файлу, а за його відсутності припиняє роботу скрипта;

Конструкції include_once і require_once зручні тим, що унеможливлюють плутанину при вкладених включеннях, коли є можливість повторного включення файлів, що містять оголошення функцій.

Невже не залишилося запитань?


Зміна

Тільки у нас слово «угу» є синонімом до слів «будь ласка», «дякую», «доброго дня», «ні за що» та «вибачте», а слово «давай» у більшості випадків замінює «до побачення».

Жодного кохання не чекаєш так, як автобус у -30°.

Синтаксис мови Transact SQLвключає два основних види управляючих структур. Це оператори: if, while. На кожну з цих структур існують відповідні обмеження та вимоги щодо їх написання з погляду стандартів. Також є деякі загальні вимоги для всіх цих структур. Всі ці вимоги та обмеження сформовані виходячи з принципів легкої подальшої читання вихідних текстів.

Правила написання керуючих конструкцій

Весь вихідний код, розташований всередині керуючих структур, а також вкладені логічні структури необхідно розташовувати з відступом 2 символи.

Не допускається використання інших інструкцій разом із керуючою однією рядку.

4.2.1.3 Конструкція “begin end” завжди повинна починатися з нового рядка.

Допускається вкладеність конструкцій, що управляють, крім явно зазначених винятків.

Умовний оператор IF

Формат:

Також допускається написання:

Формат: if [ логічний вираз 1 ]

Усі частини умовного оператора (if, else if, else, begin, end) необхідно розташовувати, починаючи з однієї й тієї позиції

4.2.2.2 Усередині “логічних дужок” умовного оператора оператори мови Transact SQL необхідно розташовувати відповідно до стандартної табуляції, що дорівнює 2 символам

При написанні логічних операторів у логічних виразах необхідно до і після них ставити прогалини

При написанні складних логічних виразів забороняється вставляти прогалини між дужками та частиною логічного виразу

Керуюча конструкція WHILE

Формат: while ([ умова продовження циклу ])

(оператори)

4.2.3.1 Усередині “логічних дужок” структури while оператори мови Transact SQL необхідно розташовувати відповідно до стандартної табуляції, що дорівнює 2 символам

Використання структури while є основним організації різних проходів з допомогою cursor.


Основні оператори

Синтаксис мови Transact SQL включає п'ять основних операторів. Це оператори: select, insert, update, delete, cursor. На кожен із цих операторів існують відповідні обмеження та вимоги до їх написання з погляду стандартів. Також є деякі загальні вимоги для всіх даних операторів. Всі ці вимоги та обмеження сформовані виходячи з принципів легкої подальшої читання вихідних текстів.

Будь-який сценарій PHP сформований із низки конструкцій. Конструкцією може бути оператори, функції, цикли, умовні оператори, навіть конструкції, які роблять нічого (порожні конструкції). Конструкції зазвичай закінчуються крапкою з комою. Крім того, конструкції можуть бути згруповані в групу, формуючи групу конструкцій із зігнутими фігурними дужками (...). Група конструкцій – це також окрема конструкція. Конструкції мови PHP схожі на конструкції мови Сі.

У PHP існують шість основних груп конструкцій, що управляють. Отже, основні групи керуючих конструкцій PHP та їх склад:

  • Умовні оператори:
    • else
    • elseif
  • Цикли:
    • while
    • do-while
    • foreach
    • break
    • continue
  • Конструкції вибору:
    • switch-case
  • Конструкції оголошення:
    • declare
    • return
  • Конструкції включень:
    • require()
    • include()
    • require_once()
    • include_once()
  • Альтернативний синтаксис конструкцій PHP

Умовні оператори PHP

Умовні оператори є, мабуть, найпоширенішими конструкціями у всіх алгоритмічних мовах програмування. Розглянемо основні умовні оператори мови PHP.

Конструкція if

Синтаксис конструкції if аналогічний конструкції if у мові Сі:

Згідно виразам PHP, конструкція if містить логічний вираз. Якщо логічне вираз істинно (true), то оператор, наступний за конструкцією if буде виконаний, і якщо логічне вираз хибно (false), наступний за if оператор виконаний нічого очікувати. Наведемо приклади:

$b) echo "значення a більше, ніж b"; ?>

У наступному прикладі, якщо змінна $a не дорівнює нулю, буде виведено рядок "значення a істинно (true)":

"значення a істинно (true)"; ?>

У наступному прикладі, якщо змінна $a дорівнює нулю, буде виведений рядок "значення a хибно (false)":

"значення a хибне (false)"; ?>

Часто вам буде необхідний блок операторів, який виконуватиметься за певного умовного критерію, тоді ці оператори необхідно помістити у фігурні дужки (...) Приклад:

$b) ( echo "a більше b"; $b = $a;) ?>

Наведений приклад виведе повідомлення "a більше b", якщо $a > $b, а потім змінна $a буде прирівняна до змінної $b. Зауважимо, що ці оператори виконуються в тілі конструкції if.

Конструкція else

Часто виникає потреба виконання операторів у тілі конструкції if, якщо виконано якесь умова конструкції if, а й у разі, якщо умова конструкції if не виконано. У цій ситуації не можна обійтися без конструкції else. Загалом така конструкція називатиметься конструкцією if-else.

Синтаксис конструкції if-else такий:

If (логічне_вираз) інструкція_1; else інструкція_2;

Дія конструкції if-else така: якщо логічне_вираз істинно, то виконується інструкція_1, а інакше - інструкція_2. Як і будь-якою іншою мовою, конструкція else може опускатися, в цьому випадку при отриманні належного значення просто нічого не робиться.

Якщо інструкція_1 або інструкція_2 повинні складатися з кількох команд, вони, як завжди, полягають у фігурні дужки. Наприклад:

$b) ( echo "a більше, ніж b" ; ) else ( echo "a НЕ більше, ніж b"; } ?>

Конструкція if-else має ще один альтернативний синтаксис:

If (логічний_вираз): команди; elseif(інше_логічне_вираження): інші_команди; else: інакше_команди; endif

Зверніть увагу на розташування двокрапки (:)! Якщо його пропустити, буде згенеровано повідомлення про помилку. І ще: як завжди, блоки elseif і else можна опускати.

Конструкція elseif

elseif – це комбінація конструкцій if та else. Ця конструкція розширює умовну конструкцію if-else.

Наведемо синтаксис конструкції elseif:

If (логічне_вираження_1) оператор_1; elseif (логічне_вираження_2) оператор_2; else оператор_3;

Практичний приклад використання конструкції elseif:

$b) ( echo "a більше, ніж b" ; ) elseif ($a == $b ) ( echo "a дорівнює b" ; ) else ( echo "a менше, ніж b" ; ) ?>

Взагалі, конструкція elseif не дуже зручна, тому застосовується не так часто.

Цикли:

На другому місці за частотою використання після конструкцій умов (умовних операторів) знаходяться цикли.

Цикли дозволяють повторювати певне (і навіть невизначене - коли робота циклу залежить від умови) кількість разів різні оператори. Дані оператори називають тілом циклу. Прохід циклу називається ітерацією.

PHP підтримує три види циклів:

  1. Цикл із передумовою (while);
  2. Цикл із постумовою (do-while);
  3. Цикл із лічильником (for);
  4. Спеціальний цикл перебору масивів (foreach).

При використанні циклів можна використовувати оператори break і continue. Перший перериває роботу всього циклу, а другий - лише поточної ітерації.

Розглянемо цикли PHP:

Цикл з передумовою while

Цикл з передумовою while працює за такими принципами:

  • Обчислюється значення логічного виразу.
  • Якщо значення істинно, виконується тіло циклу, інакше - переходимо наступний за циклом оператор.

"Синтаксис циклу з передумовою:

While (логічний_вираз) інструкція;

У разі тілом циклу є інструкція. Зазвичай тіло циклу складається з великої кількості операторів. Наведемо приклад циклу з передумовою while:

Зверніть увагу на послідовність виконання операцій умови $x++<10. Сначала проверяется условие, а только потом увеличивается значение переменной. Если мы поставим операцию инкремента перед переменной (++$x<10), то сначала будет выполнено увеличение переменной, а только затем - сравнение. В результате мы получим строку 123456789. Этот же цикл можно было бы записать по-другому:

// Збільшення лічильника echo $x; ) // Виводить 12345678910 ?>

Якщо ми збільшимо лічильник після виконання оператора echo, ми отримаємо рядок 0123456789. У будь-якому випадку ми маємо 10 ітерацій. Ітерація - це виконання операторів усередині тіла циклу.

Подібно до конструкції умовного оператора if, можна групувати оператори всередині тіла циклу while, використовуючи наступний альтернативний синтаксис:

While (логічний_вираз): інструкція; ... endwhile;

Приклад використання альтернативного синтаксису:

Цикл із постумовою do while

На відміну від циклу while цей цикл перевіряє значення виразу не до, а після кожного проходу (ітерації). Таким чином, тіло циклу виконується хоча б один раз. Синтаксис циклу з такою умовою:

Do ( тіло_цикла; ) while (логічне_вираз);

Після чергової ітерації перевіряється, чи логічний_вираз, істинно, і, якщо це так, управління передається знову на початок циклу, в іншому випадку цикл обривається. Альтернативного синтаксису для do-while розробники PHP не передбачили (мабуть через те, що, на відміну від прикладного програмування, цей цикл досить рідко використовується при програмуванні web-додатків).

Приклад скрипта, що показує роботу циклу з умовою do-while:

12345678910

Цикл з лічильником for

Цикл з лічильником використовується для виконання тіла циклу кілька разів. За допомогою циклу for можна (і потрібно) створювати конструкції, які виконуватимуть дії зовсім не такі тривіальні, як проста перебирання значення лічильника.

Синтаксис циклу для такої:

For (ініціалізують_команди; умова_циклу; команди_після_ітерації) ( тіло_циклу; )

Цикл for починає свою роботу з виконання команд, що ініціалізують. Ці команди виконуються лише один раз. Після цього перевіряється умова_циклу, якщо вона істинна (true), то виконується тіло_циклу. Після того, як буде виконано останній оператор тіла, виконуються команди_після_ітерації. Потім знову перевіряється умова циклу. Якщо воно істинне (true), виконується тіло_циклу та команди_після_ітерації, і.т.д.

Цей сценарій виводить: 0123456789

Є варіант виведення рядка 12345678910:

У цьому прикладі ми забезпечили збільшення лічильника під час перевірки логічного висловлювання. У такому разі нам не потрібні були команди після ітерації.

Якщо необхідно вказати кілька команд, їх можна розділити комами, наприклад:

Наведемо ще один, практичніший приклад використання кількох команд у циклі for:

// Виводить Точки.Точки..Точки...Точки.... ?>

Розглянутий приклад (та й взагалі будь-який цикл for) можна реалізувати і через while, тільки це буде виглядати не так витончено та лаконічно.

Для циклу for є альтернативний синтаксис:

For(ініціалізують_команди; умова_циклу; команди_після_ітерації): оператори; endfor;

Цикл перебору масивів foreach

У PHP4 з'явився ще один спеціальний тип циклу – foreach. Цей цикл призначений спеціально для перебору масивів.

Синтаксис циклу foreach виглядає так:

Foreach (масив as $ключ=>$значення) команди;

Тут команди циклічно виконуються для кожного елемента масиву, при цьому чергова пара ключ => значення виявляється в змінних $ключ і $значення. Наведемо приклад роботи циклу foreach:

$ value ) ( echo " $value $key
" ; } ?>

Розглянутий сценарій виводить:

Андрій Іванов Борис Петров Сергій Волков Федір Макаров

У циклу foreach є й інша форма запису, яку слід застосовувати, коли нас цікавить значення ключа чергового елемента. Виглядає вона так:

Foreach (масив as $ значення) команди;

У цьому випадку є лише значення чергового елемента масиву, але не його ключ. Це може бути корисно, наприклад, для роботи з масивами-списками:

$value
"
; } ?>

Увага: Цикл foreachоперує не вихідним масивом, яке копією. Це означає, що будь-які зміни, які вносяться до масиву, не можуть бути "видні" з тіла циклу. Що дозволяє, наприклад, як масив використовувати не тільки змінну, але і результат роботи якої-небудь функції, що повертає масив (у цьому випадку функція буде викликана всього один раз - до початку циклу, а потім робота буде проводитися з копією поверненого значення).

Конструкція break

Дуже часто для того, щоб спростити логіку якогось складного циклу, зручно мати можливість його перервати в ході чергової ітерації (наприклад, при виконанні якоїсь особливої ​​умови). Для цього існує конструкція break, яка здійснює негайний вихід з циклу. Вона може задаватися з одним необов'язковим параметром - числом, яке вказує, з якого вкладеного циклу має бути зроблено вихід. За замовчуванням використовується 1, тобто вихід із поточного циклу, але іноді застосовуються й інші значення. Синтаксис конструкції break:

Break; // За замовчуванням break (номер_цикла); // Для вкладених циклів (вказується номер циклу, що переривається)

Наведемо приклади:

Ітерація $x
"
; } // Коли $x дорівнює 3, цикл переривається ?>

Розглянутий сценарій виводить:

Ітерація 1 Ітерація 2

Якщо нам потрібно перервати роботу певного (вкладеного) циклу, потрібно передати конструкції break параметр - номер_цикла, наприклад, break(1). Нумерація циклів виглядає так:

For (...) // Третій цикл ( for (...) // Другий цикл ( for (...) // Перший цикл ( ) ) )

Конструкція continue

Конструкція continue так само, як і break, працює лише "у парі" з циклічними конструкціями. Вона негайно завершує поточну ітерацію циклу і переходить до нової (звичайно, якщо виконується умова циклу циклу з передумовою). Так само, як і для break, для continue можна вказати рівень вкладеності циклу, який буде продовжено після повернення управління.

В основному continue дозволяє вам заощадити кількість фігурних дужок у коді та збільшити його зручність читання. Це найчастіше буває потрібно в циклах-фільтрах, коли потрібно перебрати кілька об'єктів і вибрати з них тільки ті, які задовольняють певним умовам. Наведемо приклад використання конструкції continue:

Ітерація $x
"
; } // Цикл перерветься лише з третьої ітерації ?>

Розглянутий скрипт виводить:

Ітерація 1 Ітерація 2 Ітерація 4 Ітерація 5

Грамотне використання breakі continueдозволяє помітно покращити "читабельність" коду та кількість блоків else.

Конструкції вибору:

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

Синтаксис конструкції switch-case такий:

Switch (вираз) ( case значення1: команди1; case значення2: команди2; . . . case значенняN: командиN; ] )

Принцип роботи конструкції switch-case такий:

  • Обчислюється значення виразу;
  • Проглядається набір значень. Нехай значення1 дорівнює значенню виразу, обчисленого першому кроці. Якщо не вказано конструкцію (оператор) break, то буде виконано команди i, i+1, i+2, ... , N. В іншому випадку (є break) буде виконано тільки команду з номером i.
  • Якщо жодне з набору не співпало зі значенням виразу, тоді виконується блок default, якщо він вказаний.

Наведемо приклади використання конструкції switch-case:

// Використовуємо if-else if ($x == 0 ) ( echo "x=0
" ; ) elseif ($x == 1 ) ( echo "x=1
" ; ) elseif ($x == 2 ) ( echo "x=2
" ; } // Використовуємо switch-case switch ($x) ( case 0 : echo "x=0
; break ; case 1 : echo "x=1
; break ; case 2 : echo "x=2
" ; break ; ) ?>

Розглянутий сценарій виводить x=1 двічі. Ще приклад використання конструкції switch-case:

Цей скрипт виводить "Це яблуко".

Конструкція switch виконується поетапно. Спочатку ніякий код не виконано. Тільки коли конструкція case знайдена зі значенням, яке відповідає значенню виразу switch, PHP починає виконувати конструкції. PHP продовжує виконувати конструкції до кінця блоку switch, доки не зустрічається оператор break. Якщо не використовувати конструкції (оператори) break, скрипт виглядатиме так:

" ; case 1 : echo "x=1
" ; case 2 : echo "x=2
" ; } // Без використання break виводить// x=0 // x=1 // x=2?>

Операторний список для case може бути порожній, він просто передає управління в операторний список до наступної конструкції case:

"x менше, ніж 3, але не негативний"; break; case 3: echo "x=3"; ) ?>

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

"x не дорівнює 0, 1 або 2"; } ?>

Цей скрипт виводить "x не дорівнює 0, 1 або 2", оскільки змінна $x=3.

Конструкція switch-case також має альтернативний синтаксис:

Switch (вираз): case значення1: команди1; . . . case значення N: команди N; ]endswitch;

Практичний приклад використання альтернативного синтаксису для конструкції switch-case:

"x не дорівнює 0, 1 або 2"; endswitch; ?>

Як ви вже зрозуміли, цей скрипт виводить "x не дорівнює 0, 1 або 2", оскільки $ x = 3.

Конструкції оголошень:

Конструкція declare

Конструкція оголошення declare використовується для встановлення директиви виконання для блоку коду. Синтаксис declare подібний до синтаксису інших керуючих конструкцій мови PHP:

Declare (директива) інструкція;

Директива дозволяє встановити поведінку блоку declare. В даний час в PHP доступна лише одна директива – tick. Інструкція є частиною блоку declare.

Як буде виконано інструкцію (інструкцію), залежить від директиви.

Конструкція declareможе використовуватись у глобальній області, впливаючи на весь код після неї.

Директива tick

tick- це подія, яка відбувається для кожних N-інструкцій нижнього рівня, виконаних синтаксичним аналізатором у межах блоку declare. Події, що відбуваються на кожному тику, визначаються функцією register_tick_function().

Конструкції повернення значень:

Конструкція return

Конструкція rerurn повертає значення, переважно з функцій користувача, як параметри функціонального запиту. При виклику return виконання функції користувача переривається, а конструкція return повертає певні значення.

Якщо конструкція return буде викликана з глобальної області визначення (поза функціями користувача), то скрипт також завершить свою роботу, а return також поверне певні значення.

Переважно, конструкція return використовується для повернення значень функціями користувача.

Значення, що повертаються можуть бути будь-якого типу, в тому числі це можуть бути списки та об'єкти. Повернення призводить до завершення виконання функції та передачі управління назад до того рядка коду, в якому дана функціябула викликана.

Приклад використання конструкції return для повернення значень типу integer:

Приклад повернення конструкцією return масивів:

Для того, щоб функція повертала результат за посиланням, вам необхідно використовувати оператор & при описі функції, і при присвоєнні змінної значення, що повертається:

Як ми бачимо, конструкція returnдуже зручна для застосування в функціях користувача.

Конструкції включень:

Конструкції включень дозволяють збирати PHP програму (скрипт) із кількох окремих файлів.

У PHP існують дві основні конструкції включень: requireі include.

Конструкція включень require

Конструкція require дозволяє включати файли до сценарію PHP до виконання сценарію PHP. Загальний синтаксис require такий:

Require имя_файла;

При запуску (саме при запуску, а не при виконанні!) програми інтерпретатор просто замінить інструкцію на вміст файлу имя_файла (цей файл може також містити сценарій на PHP, обрамлений, як завжди, тэгами). Причому він зробить це безпосередньо перед запуском програми (на відміну від include, що розглядається нижче). Це досить зручно для включення у виведення сценарію різних шаблонних сторінок HTML-кодом. Наведемо приклад:

Файл header.html:

It is a title

Файл footer.html:

Home Company, 2005.

Файл script.php

// Сценарій виводить саме тіло документа require "footer.htm"; ?>

Таким чином, конструкція require дозволяє збирати PHP сценарії з декількох окремих файлів, які можуть бути як html-сторінками, так і php-скриптами.

Конструкція require підтримує увімкнення віддалених файлів (починаючи з версії PHP 4.3.0). Наприклад:

// Наступний приклад працює require; ?>

Конструкція require дозволяє вмикати видалені файлиякщо така можливість включена в конфігураційному файл PHP. Детальна інформаціядалі.

Конструкція включень включає

Конструкція include також призначена для включення файлів у код сценарію PHP.

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

Include имя_файла;

Пояснимо принципову різницю між конструкціями require та include на конкретному практичному прикладі. Створимо 10 файлів з іменами 1.txt, 2.txt тощо до 10.txt, вміст цих файлів - просто десяткові цифри 1, 2 ...... 10 (по одній цифрі у кожному файлі). Створимо такий сценарій PHP:

// Створюємо цикл, у тілі якого конструкція include for ($i = 1; $i<= 10 ; $i ++ ) { include "$i .txt"; } // Включили десять файлів: 1.txt, 2.txt, 3.txt... 10.txt // Результат - висновок 12345678910 ?>

В результаті ми отримаємо висновок, що складається із 10 цифр: "12345678910". З цього ми можемо зробити висновок, що кожен із файлів був включений по одному разу прямо під час виконання циклу! Якщо ми тепер поставимо замість include require, то сценарій згенерує критичну помилку (fatal error). Порівняйте результат.

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

Таким чином, доцільніше використовувати конструкцію require там, де не потрібно динамічне включення файлів до сценарію, а конструкцію includeвикористовувати тільки з метою динамічного включення файлів до коду PHP скрипта.

Конструкція includeпідтримує увімкнення віддалених файлів (починаючи з версії PHP 4.3.0). Наприклад:

// Наступний приклад працює, оскільки намагається включити локальний файл// Наступний приклад працює include "http://www.example.com/file.php?foo=1&bar=2"; ?>

Конструкція include дозволяє вмикати віддалені файли, якщо така можливість включена в конфігураційному файлі PHP. Детальніша інформація далі.

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

У великих PHP сценаріях інструкції include та require застосовуються дуже часто. Тому стає досить складно контролювати, як би випадково не включити той самий файл кілька разів, що найчастіше призводить до помилки, яку складно виявити.

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

Конструкції одноразових включень також require_once та include_ince також дозволяють включати віддалені файли, якщо така можливість увімкнена в конфігураційному файлі PHP. Детальніша інформація далі.

Увімкнення видалених файлів

PHP дозволяє працювати з об'єктами URL, як із звичайними файлами. Пакувальні пакети, доступні за умовчанням, служать для роботи з віддаленими файлами з використанням протоколу ftpабо http.

Якщо "URL fopen-оболонки" включені в PHP (як у конфігурації за замовчуванням), ви можете специфікувати файл, що підключається з використанням URL (через HTTP) замість локального шляху. Якщо цільовий сервер інтерпретує цільовий файл як PHP-код, змінні можуть передаватися в файл, що підключається з використанням URL-рядка запиту, як в HTTP GET. Строго кажучи, це не те саме, що підключення файлу і успадкування їм області видимості змінних батьківського файлу; адже скрипт працює на віддаленому сервері, а результат потім підключається до локального скрипту.

Щоб віддалене включення файлів було доступно, необхідно в конфігураційному файлі (php.ini) встановити allow_url_fopen=1.

Зверніть увагу: Версії PHPдля Windows до PHP 4.3.0 не підтримують можливість використання віддалених файлів цією функцією навіть у тому випадку, якщо опцію allow_url_fopen увімкнено.

/* Тут передбачається, що www.example.com налаштований для разбора.php * файлів, а чи не.txt файлів. Також "Works" тут означає, що змінні * $foo та $bar доступні у підключеному файлі. */ // Не працюватиме, оскільки file.txt не обробляється www.example.com як PHP include "http://www.example.com/file.txt?foo=1&bar=2"; // Не працюватиме, оскільки шукає файл "file.php?foo=1&bar=2" у локальній // Файловій системі. include "file.php?foo=1&bar=2" ; // Наступний приклад працює: include "http://www.example.com/file.php?foo=1&bar=2"; $ foo = 1; $bar = 2; include "file.txt"; // Працює include "file.php"; // Працює?>

Дивіться також видалені файли, опис функцій fopen() та file() для отримання додаткової інформації.

Додатково:

Ви вже знаєте, як здійснюється вставка HTML-коду в тіло сценарію. Для цього досить просто закрити дужку?>, код, а потім знову відкрити її за допомогою

Можливо, ви звернули увагу на те, як це виглядає некрасиво. Тим не менш, якщо докласти небагато зусиль для оформлення, все виявиться не так уже й погано. Особливо якщо використовувати альтернативний синтаксис if-else та інших конструкцій мови.

Найчастіше потрібно робити не вставки HTML усередину скрипта, а вставки коду всередину HTML. Це набагато простіше для дизайнера, який можливо в майбутньому захоче переоформити сценарій, але не зможе розібратися, що йому змінювати, а що не чіпати. Тому доцільно буває відокремлювати HTML-код від програми (скрипта), наприклад, помістити його в окремий файл, який підключається до скрипту за допомогою конструкції include. Ось, наприклад, як виглядатиме сценарій, який вітає користувача на ім'я, з використанням альтернативного синтаксису if-else:

Вітання, !

method=get> Ваше ім'я:

Погодьтеся, що навіть людина, зовсім не знайома з PHP, зате добре знається на HTML, легко зможе зрозуміти, що до чого в цьому сценарії. Розглянемо альтернативний синтаксис для деяких конструкцій у контексті використання його спільно з HTML:

Альтернативний синтаксис для if-else

...HTML-код......HTML-код...

Альтернативний синтаксис для циклу while

...HTML-код...

Приклад використання альтернативного синтаксису для циклу while:

Як бачимо, використання альтернативного синтаксису дозволяє зробити сценарії PHP удобочитаемыми у випадках, коли необхідно активно оперувати PHP спільно HTML-кодом.

Анотація: Розглядаються керуючі конструкції мови Сі: розгалуження "if-else" та "if-else if", цикли "while" та "for". Наводяться також конструкції, яких краще уникати: "switch", "do-while", "goto". Розглядається представлення програми як набору функцій, прототипи функцій, методи передачі вхідних і вихідних параметрів. Перераховуються різні види пам'яті: статична, стекова, динамічна (купа) та способи роботи з пам'яттю в Сі. Вводиться складовий тип даних "структура". Матеріал ілюструється численними прикладами програм: розв'язання квадратного рівняння, обчислення квадратного кореня, обчислення НОД двох чисел та розширений алгоритм Евкліда, друк N перших простих чисел, рекурсивний обхід дерева та ін.

Керуючі конструкції

Керуючі конструкції дозволяють організовувати цикли та розгалуження у програмах. У Сі всього кілька конструкцій, причому половину з них можна не використовувати (вони реалізуються через інші).

Фігурні дужки

Фігурні дужки дозволяють об'єднати кілька елементарних операторів в один складовий оператор або блок. У всіх синтаксичних конструкціях складовий оператор можна використовувати замість простого.

У Сі початок блоку можна поміщати описи локальних змінних. Локальні змінні, описані всередині блоку, створюються при вході до блоку і знищуються при виході з нього.

У C++ локальні змінні можна описувати будь-де, а не тільки на початку блоку. Тим не менш, вони, як і в Сі, автоматично знищуються при виході з блоку.

Наведемо фрагмент програми, що обмінює значення двох речових змінних:

double x, y; . . . ( double tmp = x; x = y; y = tmp; )

Тут, щоб обміняти значення двох змінних x і y ми спочатку запам'ятовуємо значення x у допоміжній змінній tmp . Потім x записується значення y , а y - збережене в tmp попереднє значення x . Оскільки змінна tmp потрібна лише всередині цього фрагмента, ми уклали його в блок і описали змінну tmp всередині цього блоку. Після виходу з блоку пам'ять, зайнята змінною tmp, буде звільнена.

Оператор if

Оператор if ("якщо") дозволяє організувати розгалуження у програмі. Він має дві форми: оператор "якщо" та оператор "якщо...інакше". Оператор "якщо" має вигляд

if (умова) дія;

оператор "якщо ... інакше" має вигляд

if (умова) дію1; else дію2;

Як умову можна використовувати будь-який вираз логічного чи цілого типу. Нагадаємо, що при використанні цілого чисельного виразу значення "істина" відповідає будь-яке ненульове значення. При виконанні оператора "якщо" спочатку обчислюється умовний вираз після if. Якщо воно істинне, то виконується дія, якщо хибно, нічого не відбувається. Наприклад, у наступному фрагменті змінну m записується максимальне зі значень змінних x і y :

double x, y, m; . . . m = x; if (y> x) m = y;

При виконанні оператора "якщо...інакше" у разі, коли умова істинна, виконується дія, записана після if; в іншому випадку виконується дія після else. Наприклад, попередній фрагмент переписується так:

double x, y, m; . . . if (x> y) m = x; else m = y;

Коли потрібно виконати кілька дій залежно від істинності умови, слід використовувати фігурні дужки, об'єднуючи кілька операторів у блок, наприклад,

double x, y, d; . . . if (d > 1.0) ( x / = d; y / = d; )

Тут змінні x і y поділяються на d тільки у тому випадку, коли значення d більше за одиницю.

Фігурні дужки можна використовувати навіть коли після if або else стоїть тільки один оператор. Вони покращують структуру тексту програми та полегшують її можливу модифікацію. Приклад:

double x, y; . . . if (x != 0.0) ( y = 1.0; )

Якщо потрібно буде додати ще одну дію, що виконується за умови "х відмінно від нуля", то ми просто додамо рядок усередині фігурних дужок.

Вибір кількох можливостей: if...else if...

Декілька умовних операторів типу "якщо ... інакше" можна записувати послідовно (тобто дія після else може знову являти собою умовний оператор). В результаті реалізується вибір із кількох можливостей. Конструкція вибору використовується у програмуванні дуже часто. Приклад: дана речова змінна x , потрібно записати в речову змінну y значення функції sign(x) .