Пришло время познакомиться с базовыми понятиями программирования. В качестве вступления напишем коротенькую программу, которая будет выполнять элементарные математические действия и научимся описывать работу программ с помощью алгоритмов.
Создайте новый документ с шаблоном, рассмотренным в посте о разметке страницы. Можете сохранить его в отдельном файле, так как он вам еще не раз понадобится. Вот этот шаблон:
В тело документа вставьте следующий код (цифры перед строчками писать не надо. Они нужны для комментирования кода):
Сохраните документ в папке веб-сервера с именем "primer4". Не забудьте указать правильное расширение имени файла - php. Иначе сервер будет рассматривать команды программы как простой текст.
Откройте страничку в браузере и полюбуйтесь результатом. Здорово, не правда ли?
Рассмотрим созданный нами код. В программе появились элементы, с которыми мы раньше не сталкивались. Это конструкции "$a", "$b" и "$result" в строках 1, 2 и 3. Такие элементы языка, начинающиеся с символа "$" называют "переменными". Такое название они получили благодаря своему функционалу - менять свое содержимое. Наиболее просто для понимания представить переменную как некий ящик, в котором может храниться необходимая нам информация. Такой информацией могут быть числа, отдельные символы или строки, значения даты или времени и т.д. Символ "$" указывает обработчику команд PHP (интерпретатору) что перед ним переменная. После символа "$" без пробела указывают имя переменной (название ящика). В примере это имена "a", "b" и "result".
В третьей строке мы просуммировали содержимое переменных $a и $b и результат поместили в переменную "$result".
Для переменных характерно множественное их использование. На то они и переменные. Иллюстрация тому - пятая строка. До этого мы хранили в переменной $result значение суммы переменных. Но когда результат вывели на экран, применив ранее рассмотренную команду "echo" (строка 4), информация, хранящаяся в переменной $result, перестала нам быть нужна. Поэтому мы использовали "$result" еще раз, поместив в нее значение разности. Другими словами $result ПЕРЕМЕНила свое значение.
Подробнее о переменных почитайте на этой странице руководства по PHP.
Последовательность, в которой выполняются команды программы, называют "алгоритм". В нашем примере последовательность линейная - команды выполнялись одна за другой как они идут в исходном коде страницы.
Для понимания логики работы сложных программ разработчики используют графическое представление алгоритмов. Элементы алгоритма (шаги) изображаются в виде геометрических фигур. Так, простое действие обозначается прямоугольником. Операции ввода-вывода (когда программа выводит что то на экран, принтер, или получает данные от клавиатуры, мыши) изображают параллелограммом. Любой алгоритм должен иметь конечное количество шагов и обязательно начало и конец. На рисунке ниже приведено графическое представление алгоритма работы программы из примера.
Разберем работу программы по представленному выше алгоритму:
Пункт 1 - начало работы алгоритма;
Пункты 2-3 - присваивание значений переменным $a и $b;
Пункт 4 - вычисление суммы значений переменных;
Пункт 5 - вывод на экран результата вычислений;
Пункт 6 - вычисление разности значений переменных;
Пункт 7 - вывод на экран результата вычислений;
Пункт 1 - окончание работы алгоритма.
Линейная последовательность выполнения программы - самая простая. Рассмотрим более сложную конструкцию.
Допустим, в зависимости от каких-либо условий, нам нужно принять какое-то определенное решение. С такой задачей мы сталкиваемся в повседневной жизни постоянно. Если на улице идет дождь, то нужно взять зонт, иначе зонт не нужен. Если хочется кушать, надо что-то приготовить, иначе посмотреть телевизор (или позаниматься PHP). Такая конструкция в языках программирования называется условием. Графически условие изображается в виде ромба. В одном условном операторе можно комбинировать несколько условий с помощью алгебры логики (И, ИЛИ).
В PHP условный оператор описывается следующей конструкцией
В посте об основах PHP мы рассматривали оператор вывода значения текущей даты. Напишем такую программу, которая в зависимости от времени суток приветствовала нас соответствующей фразой. Утром - "Доброе утро!", вечером - "Добрый вечер" и т.д.
Ниже алгоритм программы, выполняющий такую задачу.
Разбор работы программы будет заданием для самостоятельной работы. В действительности, код достаточно избыточен. При больших значениях переменной $hour происходят лишние присваивания переменной $message. Чтобы избежать этого, можно применить конструкцию условия, когда проверяется попадание в интервал. Например, попаданию в интервал дня будет соответствовать такой код:
if ($hour > 10 AND $hour < 17) {
$message = "Добрый день!";
}
Попробуйте переписать алгоритм и программу, с использованием в условии алгебры логики.
Создаем недокалькулятор
Компьютер - это прежде всего вычислитель, перевести это слово с английского можно как "считатель". На заре своего существования он мог только считать. Благодаря применению очень сложных алгоритмов и выполнению миллионов элементарных операций в секунду инженеры заставили ЭВМ рисовать, проигрывать мелодии и воспроизводить музыку. Никто не мешает нам сделать так, чтобы компьютер для нас что-то посчитал. Давайте попробуем.Создайте новый документ с шаблоном, рассмотренным в посте о разметке страницы. Можете сохранить его в отдельном файле, так как он вам еще не раз понадобится. Вот этот шаблон:
<html>
<head>
<meta charset="UTF-8">
<meta http-equiv="cache-control" content="no-cache">
</head>
<body>
</body>
</html>
<head>
<meta charset="UTF-8">
<meta http-equiv="cache-control" content="no-cache">
</head>
<body>
</body>
</html>
В тело документа вставьте следующий код (цифры перед строчками писать не надо. Они нужны для комментирования кода):
<?php
1 $a = 2;
2 $b = 2;
3 $result = $a + $b;
4 echo "Сумма чисел $a и $b равна $result <br>";
5 $result = $a - $b;
6 echo "Разность чисел $a и $b равна $result";
?>
1 $a = 2;
2 $b = 2;
3 $result = $a + $b;
4 echo "Сумма чисел $a и $b равна $result <br>";
5 $result = $a - $b;
6 echo "Разность чисел $a и $b равна $result";
?>
Сохраните документ в папке веб-сервера с именем "primer4". Не забудьте указать правильное расширение имени файла - php. Иначе сервер будет рассматривать команды программы как простой текст.
Откройте страничку в браузере и полюбуйтесь результатом. Здорово, не правда ли?
Рассмотрим созданный нами код. В программе появились элементы, с которыми мы раньше не сталкивались. Это конструкции "$a", "$b" и "$result" в строках 1, 2 и 3. Такие элементы языка, начинающиеся с символа "$" называют "переменными". Такое название они получили благодаря своему функционалу - менять свое содержимое. Наиболее просто для понимания представить переменную как некий ящик, в котором может храниться необходимая нам информация. Такой информацией могут быть числа, отдельные символы или строки, значения даты или времени и т.д. Символ "$" указывает обработчику команд PHP (интерпретатору) что перед ним переменная. После символа "$" без пробела указывают имя переменной (название ящика). В примере это имена "a", "b" и "result".
В третьей строке мы просуммировали содержимое переменных $a и $b и результат поместили в переменную "$result".
Для переменных характерно множественное их использование. На то они и переменные. Иллюстрация тому - пятая строка. До этого мы хранили в переменной $result значение суммы переменных. Но когда результат вывели на экран, применив ранее рассмотренную команду "echo" (строка 4), информация, хранящаяся в переменной $result, перестала нам быть нужна. Поэтому мы использовали "$result" еще раз, поместив в нее значение разности. Другими словами $result ПЕРЕМЕНила свое значение.
Подробнее о переменных почитайте на этой странице руководства по PHP.
Алгоритмы
Последовательность, в которой выполняются команды программы, называют "алгоритм". В нашем примере последовательность линейная - команды выполнялись одна за другой как они идут в исходном коде страницы.
Для понимания логики работы сложных программ разработчики используют графическое представление алгоритмов. Элементы алгоритма (шаги) изображаются в виде геометрических фигур. Так, простое действие обозначается прямоугольником. Операции ввода-вывода (когда программа выводит что то на экран, принтер, или получает данные от клавиатуры, мыши) изображают параллелограммом. Любой алгоритм должен иметь конечное количество шагов и обязательно начало и конец. На рисунке ниже приведено графическое представление алгоритма работы программы из примера.
Разберем работу программы по представленному выше алгоритму:
Пункт 1 - начало работы алгоритма;
Пункты 2-3 - присваивание значений переменным $a и $b;
Пункт 4 - вычисление суммы значений переменных;
Пункт 5 - вывод на экран результата вычислений;
Пункт 6 - вычисление разности значений переменных;
Пункт 7 - вывод на экран результата вычислений;
Пункт 1 - окончание работы алгоритма.
Линейная последовательность выполнения программы - самая простая. Рассмотрим более сложную конструкцию.
Условный оператор
Допустим, в зависимости от каких-либо условий, нам нужно принять какое-то определенное решение. С такой задачей мы сталкиваемся в повседневной жизни постоянно. Если на улице идет дождь, то нужно взять зонт, иначе зонт не нужен. Если хочется кушать, надо что-то приготовить, иначе посмотреть телевизор (или позаниматься PHP). Такая конструкция в языках программирования называется условием. Графически условие изображается в виде ромба. В одном условном операторе можно комбинировать несколько условий с помощью алгебры логики (И, ИЛИ).
В PHP условный оператор описывается следующей конструкцией
if (условие) {
операторы, если условие выполняется
} else {
операторы, если условие не выполняется
}
операторы, если условие выполняется
} else {
операторы, если условие не выполняется
}
В посте об основах PHP мы рассматривали оператор вывода значения текущей даты. Напишем такую программу, которая в зависимости от времени суток приветствовала нас соответствующей фразой. Утром - "Доброе утро!", вечером - "Добрый вечер" и т.д.
Ниже алгоритм программы, выполняющий такую задачу.
В начале определим час и создадим переменную, в которой содержится приветствие по умолчанию. Если полученное значение часа меньше 5, то сообщение не изменится. Затем нужно последовательно сравнить значение текущего часа граничными значениями. В результате выполнения алгоритма переменная $message будет содержать необходимое приветствие.
Код, соответствующий описанному алгоритму:
$hour = date('H');
$message = "Доброй ночи!";
if ($hour > 5) {
$message = "Доброе утро!";
if ($hour > 10) {
$message = "Добрый день!";
if ($hour > 17) {
$message = "Добрый вечер!";
if ($hour > 22) {
$message = "Доброй ночи!";
}
}
}
}
echo $message;
$message = "Доброй ночи!";
if ($hour > 5) {
$message = "Доброе утро!";
if ($hour > 10) {
$message = "Добрый день!";
if ($hour > 17) {
$message = "Добрый вечер!";
if ($hour > 22) {
$message = "Доброй ночи!";
}
}
}
}
echo $message;
Разбор работы программы будет заданием для самостоятельной работы. В действительности, код достаточно избыточен. При больших значениях переменной $hour происходят лишние присваивания переменной $message. Чтобы избежать этого, можно применить конструкцию условия, когда проверяется попадание в интервал. Например, попаданию в интервал дня будет соответствовать такой код:
if ($hour > 10 AND $hour < 17) {
$message = "Добрый день!";
}
Попробуйте переписать алгоритм и программу, с использованием в условии алгебры логики.
При выполнении задания не работает... =(
ОтветитьУдалитьЧто не работает? Какие ошибки выдает?
ОтветитьУдалитьСутра не не пожелал мне доброго утра.
ОтветитьУдалитьНевежливо как-то... А что пожелал?
ОтветитьУдалитьМожно попробовать вывести промежуточные значения. Вставь например, после присвоения часа
echo "Текущий час - $hour";
или в какой переменной хранится час?
Вот код твоей программы:
ОтветитьУдалить$hour = date('H');
$m0 = "Доброй ночи!";
if ($hour > 5 AND $hour < 10) {
$m0 = "Доброе утро!";
if ($hour > 10 AND $hour < 17) {
$m0 = "Добрый день!";
if ($hour > 17 AND $hour < 22) {
$m0 = "Добрый вечер!";
}
}
}
echo $m0;
Никита, после проверки первого условия в нем же ты пытаешься провести проверку попадание во второй диапазон, а это уже не сработает, т.к. произошло попадание в первый. Нужно использовать конструкцию "иначе" (else):
$hour = date('H');
$m0 = "Доброй ночи!";
if ($hour > 5 AND $hour < 10) {
$m0 = "Доброе утро!";
} else {
if ($hour > 10 AND $hour < 17) {
$m0 = "Добрый день!";
}else {
$m0 = "Добрый вечер!";
}
}
ну я догадался что else не хватает, только не знал как его применить правильно =)
ОтветитьУдалить