Одна из вещей, которые делают программы — это работа с числами. Если ты читал предыдущий урок, то
наверняка запомнил команду echo, которая печатает текст и числа. И наверняка ты помнишь,
что в PHP есть операторы
+, -, *, / (который ты не перепутаешь с обратным
слешем «\»), % (который обозначает деление с остатком), а дробные числа
пишутся через точку.
Когда выполняется код, нам надо где-то хранить промежуточные результаты и другие данные. Для этого
в программировании используются переменные. Переменная —
это такая штука, в которую можно сохранить какое-то число или строку. У каждой переменной есть имя,
и она обозначается конструкцией вроде $daysPassed (в начале
всегда ставится знак доллара). Название (daysPassed — «прошлоДней») придумывает программист (это ты).
Чтобы сохранить значение в переменной, используется оператор =:
$daysPassed = 7;
Надеюсь, ты еще помнишь, что после каждой инструкции ставится точка с запятой?
Эта команда создает переменную $daysPassed и кладет в нее число 7. Теперь ты можешь,
например, вывести это значение с помощью echo:
echo $daysPassed; → напечатает 7
Переменную можно вставить внутрь строки (если она в двойных кавычках, а не в одинарных), чтобы вывести поясняющий текст:
echo "Прошло дней: $daysPassed"; → выведет Прошло дней: 7
Также, в переменной можно сохранить (присвоить переменной значение, говорят программисты)
строку $name = "Ivan"; или результат вычисления какого-то выражения:
$balance = 1000 + 1000;.
Не знаешь английский и не можешь придумать имя переменной? Воспользуйся сервисом Яндекс.словари или Google translate, только не пиши по-русски, над тобой же смеяться будут.
Имена переменных могут состоять из латинских букв a-z, A-Z, цифр 0-9 и
знака подчеркивания _. Хоть знак подчеркивания и разрешено использовать в имени,
это не рекомендуется. Имена принято начинать с маленькой буквы, а если оно состоит
из нескольких слов, то эти слова, кроме первого, начинаются с большой буквы (это называется
camelCase):
Важно! Регистр букв в имени переменной (большая или маленькая)
имеет значение!
$a и $A — это 2 разных переменных (причем вторая еще и названа плохо,
имя должно начинаться с маленькой буквы).
Имя обязательно должно быть осмысленным и обозначать, что хранится в этой переменной. Имена надо писать на английском. Думай о тех, кому придется читать твой код, помни, что код пишется в первую очередь для людей.
W2. Допиши программу, переводящую доллары в рубли, чтобы она работала правильно. Заготовку можешь взять по ссылке http://ideone.com/CsCOBV или http://paste2.org/pE927NmC
Переменные можно использовать в выражениях и складывать, умножать, делить, и т.д. Для того, чтобы
увеличить значение в переменной на 5, можно написать $a = $a + 5; (мы прибавляем 5 к тому,
что ранее хранилось в переменной и сохраняем результат в нее же), но для таких целей есть более короткая
форма записи: $a += 5;. Чтобы увеличить переменную на 1, можно писать еще короче:
$a++; — делает то же самое, что и $a += 1;.
Эта информация только для тех, кто хочет знать больше необходимого минимума и изучать ее необязательно (хотя и полезно для расширения кругозора).
Интересно, что в PHP почти все операторы, даже такие, как = возвращают
какое-то значение, потому их можно использовать в выражениях (хотя это запутывает код и делает его
нечитаемым, так что злоупотреблять не стоит). Например, = возвращает присвоенное
значение и его потому можно использовать так:
$a = ($b = ($c = 1));
или, если убрать скобки, $a = $b = $c = 1;
Сначала выполнится действие $c = 1, которое присвоит $c значение 1 и
вернет это значение. Возвращенное значение присвоится $b, а затем и $a.
Таким образом, во всех 3 переменных окажется единица.
Операторы +=, -= и подобные возвращают увеличенное/уменьшенное
значение. А вот с оператором ++ ситуация сложнее. Его можно записать перед
переменной ++$i (префиксная форма) и после $i++
(постфиксная форма).
В первом случае сначала увеличивается переменная, и возвращается увеличенное значение, а
во втором — переменная тоже увеличивается, но возвращается исходное значение, которое было
в ней до инкремента.
Кстати, слово инкремент обозначает увеличение на 1, а декремент - уменьшение.
В PHP есть и более сложные операции над числами, например, округление или нахождение максимального из нескольких чисел, они делаются с помощью функций. Запоминать функции наизусть не надо, достаточно просто знать, что они существуют. Вот список основных функций, которые могут пригодиться. Полное их описание ты всегда можешь найти в официальном мануале по PHP.
| Функция | Описание | Мануал |
|---|---|---|
sqrt($x) |
Считает квадратный корень из числа $x | sqrt |
abs($x) |
Возвращает модуль числа (т.е. абсолютное значение без знака, abs(-5) => 5) |
abs |
mt_rand($a, $b) |
Возвращает случайное целое число от $a до $b | mt_rand |
max($a, $b, $c, $d) |
Возвращает наибольшее из нескольких чисел | max |
min($a, $b) |
Возвращает наименьшее из нескольких чисел | min |
pow($x, $y) |
Возводит $x в степень $y | pow |
pi() |
Возвращает число Пи (3.1415 и так далее) | pi |
floor($x) |
Округляет число вниз (в сторону -∞), например,
floor(3.8) => 3 |
floor |
ceil($x) |
Округляет число в большую сторону (в сторону +∞), например,
ceil(3.1) => 4 |
ceil |
round($x) |
Округляет число по математическим правилам (к ближайшему целому) | round |
round($x, $n) |
Округляет число по математическим правилам (к ближайшему
целому) до $n знаков после запятой, например,
round(3.1415, 2) => 3.14 |
round |
sin($x) |
Считает синус от $x (где $x задается в радианах, а не в градусах). Еще есть
cos($x), tan($x), asin($x), но нам они не понадобятся,
не бойся. |
sin |
Обрати внимание, что функция не меняет значение указанных в скобках переменных, а возвращает новое значение. Его надо сохранить в какую-нибудь переменную, например, так:
<?php
error_reporting(-1);
$a = 25;
$b = sqrt($a);
echo "Если взять корень из $a, получится $b";
Узнать, что хранится в переменной, можно, написав команду var_dump($x); или
echo $x;. Переменные также можно подставлять в строку (если она в двойных кавычках),
чтобы вывести какой-то поясняющий текст:
Итак, взяв за основу картинку ниже, выполни задание:
W3. Напиши программу, которая имитирует бросок кубика (генерирует случайное число от 1 до 6) и выводит его.
Подсказка: чтобы получить случайное число, есть функция mt_rand().
Код, заключенный в /* ... */ — это комментарий, интерпретатор его проигнорирует, но в нем ты
можешь оставить коллегам-программистам какое-то полезное сообщение. Специальная последовательность символов
\n (работает только в строке с двойными кавычками)
называется перевод строки и делает перенос текста на новую строку, без нее
все бы писалось в одну длинную-длинную строчку.
У значений, которые, например, хранятся в переменной, есть свой тип, например, число или строка.
Разница между ними в том, что, например, числа складываются и вычитаются, а строки — нет. Узнать
тип значения в переменной можно, сделав var_dump($x) — она выведет и тип, и
значение переменной. Всего в PHP 8 типов данных, вот они:
int и float — числа. Числа можно складывать, умножать, округлять, и т.д. Разница между
этими 2 типами в том, что int хранит целые числа, а float — дробные. PHP сам преобразует
числа одного типа в другой, когда это надо, потому тебе беспокоиться об этом не надо.string — строка. Строки по идее нельзя сложить или умножить, потому при попытке это
сделать PHP сначала преобразует их в числа, а потом сложит/умножит получившиеся числа.null — специальный тип, обозначающий «пустое значение» или «ничто». Его можно
присвоить любой переменной, например $x = null;. Возможно, этот тип где-то пригодится,
потому он тут упомянут.boolean, array, object и resource мы
будем изучать позже.Сделал задание? Молодец, переходи к следующему уроку.
-----
Куда вводить код? Что надо скачать? Читай первый урок.
Есть вопросы? Задай гуглу или автору.
Нравится урок? Лайкай, репости, приглашай друзей, пости котов и Канако, шли добра, решай задачи, помогай новичкам! Кнопок для лайка нет, кто хочет зарепостить, всегда может сделать это ручками.
Как связаться с автором? Я хочу переодеть его в платье школьницы и жениться на нем. Ящик codedokode (кот) gmail.com ждет ваших писем. А вконтактик и фейсбучек ждут ваших лайков. Но ответ на банальные вопросы лучше искать в Гугле или на stackoverflow.
Я решил задачку!!! Молодец, делай следующий урок
Ideone не работает!11 Ну так открой Гугл и найди сайты вроде https://repl.it/languages/php , http://phptester.net/ , http://sandbox.onlinephpfunctions.com/ , http://codepad.org/ или http://www.runphponline.com/ . Не ленись.
Почему так много рекламы? Всю рекламу на сайте ставит юкоз (бесплатный хостинг же), а не я.
На сайте установлена система Google Analytics (и еще несколько аналогичных систем от юкоза). Данные о твоем IP-адресе, посещаемых страницах, времени посещения отправляются в Google Corporation, США. Хочу знать, кто и зачем сюда заходит. Поверь, другие сайты делают точно так же. Все сайты пишут логи.