Тема 2 Практическое занятие 2 Основные операторы языка PHP МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ

advertisement
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
Тема 2
Практическое занятие 2
Основные операторы языка PHP
Цель: освоение методов работы с основными операторами:
оператором присваивания, операторами сравнения и операторами
управления программой на языке PHP.
Любая программа состоит из операторов. Базовым оператором является
оператор присваивания. Операторы в тексте программы выполняются
последовательно. Для изменения линейного порядка выполнения
операторов служат специальные конструкции: условные операторы,
операторы переключения и операторы, позволяющие организовать
циклическое повторение некоторой группы операторов.
Задачи:
1. Изучение простых и составных операторов присваивания.
2. Изучение
операций
сравнения
и принципов
построения
синтаксически правильных выражений сравнения.
3. Изучение операторов управления:
o условного оператора IF, IF ... ELSE, IF ... IFELSE;
o оператора переключения-выбора SWITCH;
o операторов организации циклов While, Do while, FOR.
Рекомендуется задания 1, 2, 5 и 6 выполнить на занятии в аудитории,
а задания 3, 4, 7 и 8 оставить на самостоятельную работу.
Задание 1
При выполнении операций в PHP допустимо одновременное присваивание.
Например, корректным будет оператор
$ a
=12;
=$
b
Простой
оператор
присваивания
в PHP —
расширен
арифметическими операциями, так допустимы операции
дополнительными
$ a +=5; $ b -=10;$ a *=$
b;
Написать программу, которая выполняет следующие действия (см. рис. 1).
При этом значение N равно номеру студента по журналу. Вместо букв ФИО
написать свои данные. Слово «студент» для лиц женского пола заменить на слово
«студентка».
После выполнения первого задания сделать выводы, в которых ответить
на следующие контрольные вопросы:
1. Чем отличается операция постинкремента от операции прединкремента?
2. Каков порядок операций при совмещении операций инкрементирования
и операций присваивания? Поясните примером задания 1.
1
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
3. Каков порядок при выполнении операций сложного присваивания?
4. Передавайте значение N и ФИО при запуске скрипта через протокол GET
(см. практическое занятие 1).
5. Подготовьте протокол выполнения первого задания в электронном виде: для
этого скопируйте скриншоты экранов при выполнении задания.
Рис. 1. Алгоритм задания 1
Задание 2
Условный оператор является основным оператором, который позволяет изменить
последовательный процесс выполнения операторов программы. В PHP имеется
несколько версий условного оператора:
 простой условный оператор. Его синтаксис:
IF ( условие) оператор1;
Особенности:
2
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
o
o
условие — это логическое выражение, которое может быть либо
истинным, либо ложным. Условие обязательно заключается в круглые
скобки;
после оператора 1 обязательно ставится точка с запятой.
При передаче данных от клиента на сервер первой задачей является проверка
переданных данных. В PHP существуют 2 встроенные функции, которые
позволяют решить эту задачу: функция Isset ($ a) истинна тогда, когда
переменная $ a определена, в противном случае она ложна. Функция empty
($ a) истинна тогда, когда переменная $ a имеет конкретное значение (не пуста).
Вы передаете исполняемому скрипту 2 переменные $ a и $ b . Напишите скрипт,
который выводит сообщения «Переменная $ a определена», «Переменная $
b определена»
в том
случае,
если
переменные
определены,
и ничего
не выводит — в противном случае. Аналогично выведите сообщения о том,
имеют ли переданные переменные конкретные значения, лучше даже выведите
эти значения.
При выводе используйте специальную конструкцию:
Print
“Переменная”.'$
определена”;
a
'.”не
Здесь точка — это операция конкатенации (соединения) символьных строк. Если
мы заключим переменную $ a в двойные кавычки транслятор выполнит
интерпретацию значения данной переменной, а нам необходимо вывести только
имя данной переменной, поэтому мы заключили ее в одинарные кавычки, и в этом
случае транслятор выведет текст как есть, без интерпретации.
Для того чтобы передать значения переменным на сервер, необходимо в строке
адрес (вызова) после имени вызываемого скрипта поставить знак вопроса
и набрать:
<имя
переменной>=значение.
Например: http :// localhost / kts / pr _2_2. php 3? a =2
Если не задавать знак вопроса и не писать после него ничего, то фактически
вы вызываете скрипт без передачи ему значений переменных, поэтому при
анализе система должна определить эти переменные, как не заданные. Например,
вы вызвали программу (см. рис. 2):
Рис. 2. Пример вызова программы без передачи переменной
3
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
и должны получить соответствующее сообщение.
В случае передачи имени переменной (см. рис. 3):
Рис. 3. Пример вызова программы с передачей имени переменной
Мы в этом случае передали только имя переменной, не присвоив ей конкретное
значение. Для того чтобы воспользоваться альтернативным вариантом анализа,
необходимо применить расширенную форму условного оператора:
IF
оператор1;
(условие)
Else оператор2;
В этом случае, если условие ложно, то выполнится оператор2.
Возможности
данного
сообщения (см. рис. 4):
оператора
позволяют
сформировать
следующие
Рис. 4. Пример вызова программы с передачей переменной с установленным значением
Для того чтобы можно было обрабатывать в одном операторе несколько
условий, конструкция условного оператора дополнена проверкой альтернативных
условий и имеет следующий вид:
IF (условие 1) оператор1;
Elseif (условие 2) оператор
2;
…
4
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
Elseif (условие N) оператор
N;
Else оператор N +1;
В этом случае последовательно проверятся все условия, начиная с первого,
и как только встретится условие, которое принимает значение «Истина»,
то выполняется соответствующий оператор, стоящий после круглых скобок,
и на этом работа условного оператора заканчивается. Управление передается
следующему за условным оператором оператору. Однако если ни одно
из заданных условий не является истинным, то выполняется оператор N +1,
который стоит в части else. В общем случае часть else является необязательной.
Вместо одиночных операторов после условий могут быть выполнены блоки
операторов, в этом случае каждый блок заключается в фигурные скобки. Точка
с запятой после замыкающей фигурной скобки не ставится.
Теперь требуется разработать скрипт, анализирующий 2 передаваемые
переменные, который бы выводил сообщение об определении и задании значений
каждой переменной, например следующим образом (см. рис. 5):
Рис. 5. Пример вызова программы, анализирующей 2 переменные при неполном задании
входных параметров
Проверьте работоспособность созданной программы для любых возможных
сочетаний передачи переменных. Помните, что для того, чтобы в строке вызова
передать значения нескольких переменных, их надо разделять знаком &
(амперсанд), например (см. рис. 6):
5
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
Рис. 6. Пример вызова программы с передачей значений нескольких параметров
Задание 3
Разработать скрипт с использованием условного оператора IF, реализующий
алгоритм, представленный на рис. 7:
Рис. 7. Алгоритм задания 3
Задание 4
Часто при разработке сайтов возникает необходимость оперативного
переключения на новые адреса. Это делается с использованием функции
Header("location : URL"). Здесь URL — адрес, на который необходимо
переключиться. Например:
If
header("location:pr_2_4.php");
($a>5)
6
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
Это означает, что при значении некоторой переменной $ a, превышающем
5, Web-сервер выполнит команду вызова программы pr _2_4. php, которая должна
находиться в том же каталоге, что и обрабатываемый скрипт. Условием
корректного
срабатывания
функции
Header
()
является
отсутствие
до ее использования операций вывода любых символов или сообщений.
При использовании функции Header можно кроме передачи управления
передать и любые параметры вызываемому скрипту. В этом случае формат вызова
может быть следующим:
header("location:
pr_2_4.php?p1=22&p2=red");
Мы передаем управление файлу pr _2_4. php и одновременно передаем ему
значения двух параметров p 1=22 и p 2=" red ". Следует помнить, что вместо
констант мы везде можем использовать имена соответствующих переменных,
поэтому возможна следующая команда вызова:
header("location:$script_name?p1=$p1&p2=$p2"
);
Разработать скрипт, который позволяет вызывать 3 других скрипта и передавать
им 2 параметра. В каждом вызываемом скрипте выводить значения переданных
параметров. Использовать оператор SWITCH.
Формат оператора переключения следующий:
{
SWITH (<имя переменной-переключателя>)
CASE значение 1
Оператор 11;
Оператор 12;
…
break;
CASE значение 2
Оператор 21;
Оператор 22;
…
break; … }
Проверить работоспособность написанной программы, Вы должны получать
сообщения похожие на те, которые представлен на рис. 8
7
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
Рис. 8. Пример работы программы-переключения
Модифицируйте задание. Используйте первый параметр в качестве цвета HTMLстраницы — это параметр BGCOLOR в теге <Body>. Отладьте взаимодействие всех
4 скриптов, предъявите преподавателю отлаженное задание.
Задание 5
Часто для выполнения ряда повторяющихся действий в программах требуется
использовать операторы цикла. В языке PHP имеется 3 вида циклов:
 цикл While;
 цикл Do ... While;
 цикл FOR.
Разработать скрипт с использованием оператора цикла, вычисляющий сумму
натуральных чисел от 1 до передаваемого значения и выводящий сообщение типа
«Сумма
5 натуральных
чисел
равна
15».
Реализовать
эту
задачу
с использованием операторов FOR, WHILE, DO WHILE тремя способами
соответственно (в одном файле создать три скрипта).
Предусмотреть в скрипте проверку на корректность введенных данных.
При выявлении некорректных данных выводить соответствующие сообщения.
Задание 6
Часто
в бизнес-центрах
помещения
<этаж><номер помещения на этаже>.
нумеруются
следующим
образом:
Напишите скрипт, который выводит все номера помещений на первом этаже,
количество помещений вам передается как параметр. Примените тернарный
оператор. Его синтаксис:
(<условие> ? оператор1 : оператор
2)
Если использовать тернарный оператор внутри оператора вывода, то это может
выглядеть следующим образом:
echo ($ i <10 ? ‘$ i '." больше 10 ” : ‘$ i '." меньше
8
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
10”);
Будет выведено одно из сообщений в зависимости от значения $ i :
«$ i больше 10» или «$ i меньше
10».
Номера помещений выводить списком, отделяя один от другого запятой.
Помните, что запятая может интерпретироваться транслятором PHP как разделить
списка переменных, поэтому если вы хотите вывести просто запятую, заключите
ее в одинарные кавычки.
Для количества помещений менее 10 вы должны получить нечто подобное
изображенному на рис.9.
Рис. 9. Список номеров помещений с количеством, не превышающим 9
Для количества помещений более 10 список должен выглядеть следующим
образом (см. рис. 10):
Рис. 10. Список номеров помещений с количеством более 10
Расширьте задание и выведите списки помещений на нескольких этажах, если
вам задано в качестве входных параметров количество этажей и количество
помещений на каждом этаже.
Считаем, что количество этажей не превышает 5.
9
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
Желательно, чтобы выводились следующие сообщения:
Помещения
этаже:
на
первом
на
втором
11,12,13
Помещения
этаже:
201,202,203,…
Задание 7
В номере проездного билета 4 цифры. Будем считать счастливым такой билет,
где сумма половины двух цифр справа равна сумме двух цифр слева.
Написать скрипт, который выводит список счастливых билетов, и пересчитать
эти билеты. Ваш скрипт должен выводить примерно следующее (см. рис. 11):
Рис. 11. Работа скрипта, печатающего счастливые билеты
Сколько всего у вас
не должны повторяться.
получилось
счастливых
билетов?
Номера
билетов
Для решения задачи используйте циклы и условные операторы.
Подумайте, как должен измениться ваш скрипт, если количество цифр в билете
увеличится до 6?
10
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
Задание 8
Создайте 2 файла, содержащие описание стилей заголовков 3 уровней и размер
шрифта параграфа (тег < p > в HTML).
Подготовьте файл с текстом, в котором используются заголовки 3 уровней и есть
некоторый текст внутри параграфов. Укажите в нем использование стилевых
таблиц. Задайте файл со стилевым оформлением с использованием передаваемой
переменной PHP.
Предъявите все выполненные задания преподавателю, получите зачет
по практическому занятию и обязательно сохраните все созданные вами
программы на своем сетевом ресурсе.
Вопросы для самопроверки
1. Что такое альтернативный синтаксис условного оператора, чем он отличается
от основного и когда имеет смысл применять именно альтернативный
синтаксис?
2. Чем отличается цикл While от цикла Do ... while?
3. В программу передается переменная $ k и по данной переменной организован
цикл While ($ k) {...}, сколько раз выполнится цикл, если мы вызываем
программу операцией:
http :// localhost / kts / pr . php 3? k
=1
или командой
http :// localhost / kts / pr . php 3? k
или командой
http :// localhost / kts / pr . php 3? k
=0
4. Что будет выведено в результате работы программы:
$n=3;
if ($n=5) echo $n;
else “ Значение $n
”;
Поясните ваш ответ, проверьте на практике и если предварительное решение
не совпало с результатом выполнения фрагмента, задумайтесь почему?
5. Есть фрагмент программы с оператором переключения
$n=2;
Switch ($p) {
Case ($p==$n);
Echo
значения”;
“Одинаковые
11
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
Case ($ p <$ n);
Echo “Меньше”;
Case ($ p >$ n);
Echo “Больше”;
}
какое сообщение мы получим в случае следующего вызова:
12
Download