Дополнение к уроку:
Функции - это отдельный независимый ни от кого код, их так же называют подпрограммы. Взаимодействует основной код с функцией через ВХОДЯЩИЕ ПАРАМЕТРЫ и ИСХОДЯЩИЕ ПАРАМЕТРЫ. Внутри функции нельзя использовать переменные, которые могли появиться за её пределами. Если мы вызываем функцию через calc($x), то внутрь функции передаётся не переменная, а её содержание, никакой связи с $x не существует. Функция работает с входящими данными и так же возвращает данные, а не переменную. Если внутри функции написать return $x; то функция вернёт не $x, а её содержание.
Есть стандартные правила хорошего тона по работе с функциями. Следуя им у Вас не будет ошибок:
1) Если какая-либо переменная, которая создана была за пределами функции вроде $_POST, $_SERVER, константа и т.д. доступна внутри функции, то использовать её не надо. Опять же входящие параметры: calc($_POST['x']); Что такое $_POST, $_GET и т.д. Вы узнаете в следующих уроках, но сам принцип того, что не надо трогать внешние данные должен надолго отложиться в Вашем сознании.
2) В функции не должно быть вывода информации на экран, никакого echo. Исключениями могут быть функции, которые созданы для того, чтобы вывести данные на экран. В 99% случаев Вам нужно использовать return. В домашних заданиях мы придерживаемся этих же стандартных правил.
Функции служат для упаковки кода в удобный интерфейс, который можно будет использовать на разных страницах сайта. Если этот код выполняется лишь 1 раз и лишь на одной странице, то помещать код в функцию будет глупой идеей.
При работе с любым заданием бывают моменты, когда нам попадаются подводные камни. Подводные камни - это скрытый функционал, который на первый взгляд не описан в задании, но его необходимо так же выполнить, чтобы сделать хороший код. Этот функционал может быть не описан по той причине, что в начале работы программист не догадывается о том, что эта проблема может случиться, в связи с этим любая разработка кода может затянуться на больший срок и создать дополнительные трудности программисту. Возьмем пример самого простого подводного камня: из школьной программы по математике Вы знаете, что нельзя делать в калькуляторе одну операцию. Так вот, Ваша функция должна предусмотреть эту ситуацию и вернуть ответ: "Эта операция недопустима", а не пытаться её совершить и получить ошибку. Я думаю, что Вы уже догадались о какой операции идёт речь в нашем калькуляторе, а если нет, то я всегда в скайпе :)
Под каждым уроком есть 10 тестов, которые помогут Вам закрепить пройденный материал.
Один из тестов будет развивать Вашу логику и интеллект!
Чтобы получить доступ к тестам -
авторизируйтесь!
{"108":{"id":"108","lesson":"13","type":"yesno","title":"","text":"Если код повторяется в нескольких местах, то мы используем не цикл, а функцию. Верно?","answer_type":"Int","answer":"0","variables":{"0":""},"group":"lvl1","course":"2"},"109":{"id":"109","lesson":"13","type":"radio","title":"","text":"Какое из следующих утверждений не является верным?","answer_type":"Int","answer":"3","variables":{"0":"Функции упрощают корректировку кода, ведь нам необходимо будет исправить код только в 1 месте, а не в местах, где код бы дублировался","1":"Переменные внутри функции не видны за её пределами и переменные за пределами функции не видны внутри функции","2":"Функция является независимой подпрограммой не связанной с основным кодом и работает только через входящие и исходящие данные","3":"Ничего из вышеперечисленного"},"group":"lvl1","course":"2"},"110":{"id":"110","lesson":"13","type":"radio","title":"","text":"Мы знаем только работу функции, но не её код. Что из нижеперечисленного не верно?","answer_type":"Int","answer":"1","variables":{"0":"Функция может иметь, а может не иметь входящих или исходящих данных","1":"Через параметры мы передаём функции алгоритм её работы","2":"Функция возвращает только 1 переменную","3":"В функции категорично запрещено использовать echo"},"group":"lvl1","course":"2"},"111":{"id":"111","lesson":"13","type":"yesno","title":"","text":"Правильно ли утверждение, что мы не должны в функции использовать любой вывод информации на экран через echo и т.д. в 99% случаев за редчайшим исключением? В домашке так же не должны использовать echo!","answer_type":"Int","answer":"0","variables":{"0":""},"group":"lvl1","course":"2"},"112":{"id":"112","lesson":"13","type":"input","title":"","text":"Какая функция вернёт количество элементов в массиве?","answer_type":"Function","answer":"count","variables":{"0":""},"group":"lvl1","course":"2"},"113":{"id":"113","lesson":"13","type":"yesno","title":"","text":"Надо ли нам создать функцию count, чтобы она работала?","answer_type":"Int","answer":"1","variables":{"0":""},"group":"lvl1","course":"2"},"114":{"id":"114","lesson":"13","type":"yesno","title":"","text":"В ходе выполнения любого задания могут возникнуть подводные камни. Подводные камни - это очень мелкие детали, о которых даже не думаешь перед тем, как начнёшь писать код. В свою очередь требуют дополнительного написания кода, чтобы их предусмотреть, но на первый взгляд заметить их сложно. Допустим, поразмыслим, в математике мы знаем, что кое-что делать нельзя, и эту особенность мы обязаны предусмотреть в нашем коде калькулятора, хотя в задании это не указано.\r\nЗапомнили?","answer_type":"Int","answer":"0","variables":{"0":""},"group":"lvl1","course":"2"},"115":{"id":"115","lesson":"13","type":"input","title":"","text":"Напишите одну строчку кода, в которой мы вызовем функцию count, передадим в неё $array и выведем ответ на страницу без записи в переменные. Пишите полную строчку с ; на конце","answer_type":"Full","answer":"echo count($array);","variables":{"0":""},"group":"lvl1","course":"2"},"116":{"id":"116","lesson":"13","type":"radio","title":"","text":"Что из нижеуказанного является верным утверждением. В функцию мы можем передать:","answer_type":"Int","answer":"2","variables":{"0":"только ровное количество значений, сколько функция принимает","1":"меньше значений, чем она принимает из обязательных","2":"больше значений, чем она принимает","3":"и больше и меньше значений, без разницы"},"group":"lvl1","course":"2"},"117":{"id":"117","lesson":"13","type":"yesno","title":"","text":"Существуют ли в функции необязательные параметры, которые можно не передавать при вызове функции?","answer_type":"Int","answer":"0","variables":{"0":""},"group":"lvl1","course":"2"}}
{"0":"108","1":"109","2":"110","3":"111","4":"112","5":"113","6":"114","7":"115","8":"116","9":"117"}