Лабораторная работа № 2. Управляющие конструкции
Лабораторная работа № 1. Введение в php
По сути своей любой PHP-скрипт это обычный текстовый файл, который, помимо простого текста (или HTML-кода), содержит в себе команды PHP.
Когда пользователь обращается к такому скрипту, запрос передаётся серверу, который действует следующим образом: всё, что не является PHP-кодом, просто передаётся пользователю без изменений, но как только обработчик встречает метку начала PHP-кода, он выполняет этот код и «отдаёт» пользователю результат обработки.
PHP-код может находиться в любой части документа и может быть включен в документ одним из двух способов:
<?php PHP-код ?> | или | <? PHP-код ?> |
Основные правила написания программы на РНР:
- в именах переменных и функций большие и малые буквы различаются;
- в конце каждого оператора (команды) указывается точка с запятой (;);
- специального символа переноса оператора на другую строчку нет – переносить можно с любой позиции в которой можно указать пробел (слова не разрываются при переносе оператора).
Переменные в PHP
Переменные в РНР объявляются при первом их использовании в программе. Тип переменной косвенно определяется по типу хранящихся в ней данных.
Имена переменных:
- начинаются со знака доллара ($);
- могут содержать только латинские буквы, цифры, символы подчеркивания;
- состоят из одного или нескольких символов и начинаются с буквы или символа подчеркивания;
- не может совпадать с каким-либо из стандартных ключевых слов РНР;
- учитывается регистр символов.
С любыми переменными можно производить весь набор стандартных математических операций и некоторые дополнительные операции.
|
|
Таблица 1. Основные операции для работы с переменными
Знак | Назначение | Пример |
+ | Сложение двух переменных. | $v = 1; $k = 2; $s = $v + $k; // $s = 3 |
– | Вычитание одной переменной из другой | $v = 1; $k = 2; $s = $v - $k; // $s = –1 |
* | Произведение переменных | $v = 1; $k = 2; $s = $v * $k; // $s = 2 |
/ | Деление одной переменной на другую | $v = 1; $k = 2; $s = $v / $k; // $s = 0.5 |
% | Остаток от целочисленного деления | $v = 1; $k = 2; $s = $v % $k; // $s = 1 |
++ | Инкремент (увеличение на единицу) | $v = 6; $s = $v++; // $s = 6, а $v = 7 $v = 6; $s = ++$v; // $s = 7, и $v = 7 |
– – | Декремент (уменьшение на единицу) | $v = 6; $s = $v--; // $s = 6, а $v = 5 $v = 6; $s = --$v; // $s = 5, и $v = 5 |
• точка | Сложение двух строк (конкатенация) | $v = "Как"; $k ="Вас"; $m="зовут?"; $s = $v ." ".$k." ".$m;// $s = "Как Вас зовут?" |
?= | Составное присваивание. Вместо знака ?должен быть подставлен один из знаков операций:+ - * / % . | $a= 3; $b= 1; $b+= $a;// $b = 3 $a= 2; $b= 1; $b-= $a;// $b = –1 $a= 3; $b= 2; $b*= $a;// $b = 6 $a=5; $b = 1; $b /= $a; // $b = 0.2 $a = "Здравия";$b = "Желаю"; $b .= $a;// $b = "Желаю Здравия" $a = 5; $b = 17; $b %= $a; // $b = 2 |
Таблица 2. Логические операторы
|
|
Обозначение | Название | Пример |
and && | И | $a and $b $a && $b |
or || | ИЛИ | $a or $b $a || $b |
xor | Исключающее ИЛИ | $a xor $b |
! | Инверсия (NOT) | ! $a |
Таблица 3. Операторы сравнения
Обозначение | Название | Пример |
== | Равенство | $a == $b |
=== | Эквивалентность | $a === $b |
!= <> | Неравенство | $a != $b $a <> $b |
!== | Неэквивалентность | $a !== $b |
< | Меньше | $a < $b |
> | Больше | $a > $b |
<= | Меньше или равно | $a <= $b |
>= | Больше или равно | $a >= $b |
Функции ввода
В РНР существует несколько способов вывода информации на страницу:
- Операторы echoиprintвыводят значение аргумента:
echo<строка>;print(<строка>);
Работают одинаково, но print всегда возвращает 1, в то время какecho ничего не возвращает.
- var_dump (<переменная>); выводитпеременную вместе с типом.
Замечания:
- Строковое выражение может быть взято как в одинарные, так и в двойные кавычки.
- Если используются двойные кавычки, то вместо имен переменных будут выводиться их значения.
Функции для работы с переменными:
1. Функция isset (переменная) возвращаетtrue, если данная переменная существует (т.е. определена в программе).
2. Процедура unset (переменная); удаляет данную переменную из внутренних таблиц интерпретатора.
|
|
3. Функции определения типа переменных:
- is_integer (переменная)возвращаетtrue, еслипеременнаяцелое число;
- is_double (переменная)возвращаетtrue, еслипеременнаядействительное число;
- is_string (переменная)возвращаетtrue, еслипеременнаястрока;
- is_numeric (переменная)возвращаетtrue, еслипеременнаяявляется числом или строковым представлением числа (строка состоящая из цифр);
- is_bool (переменная)возвращаетtrue, еслипеременнаяявляется логической;
- is_array (переменная)возвращаетtrue, еслипеременнаямассив;
- gettype (переменная)возвращает строку, соответствующую типу переменной (integer,double,string...).
4. Процедура settype (переменная, тип данных);преобразует значение переменной из одного типа в другой.
Генерация случайных чисел
Функция lcg_value ( )возвращает случайное дробное число в диапазоне от 0 до 1.
Функция rand ([int start, int end]) возвращает случайное число из диапазона, заданного начальным значениемstartи конечным значениемend. Если значения не заданы, то возвращается случайное число от 0 до максимально-возможного значения (дляWindowsобычно до 32767).
Максимально-возможное значение можно определить функцией getrandmax ( ).
Перед тем как первый раз генерировать случайное число, нужно инициализировать генератор путем вызова функции srand ( ).
|
|
Пример:
<?php srand(); echo 'Наибольше случайное число - ' . getrandmax(); $a = rand(); $b = rand(1,50); $c = lcg_value(); echo '<br> rand() = ' . $a; echo '<br> rand(1,50) = ' . $b; echo '<br> lcg_value() = ' . $c; ?> |
Замечание. Начиная с версии PHP 4.2.0 не нужно вызывать srand() – PHP делает это автоматически.
Константы
Константы объявляются в РНР при помощи процедуры defme():
define('CONSTANT', value); или define(“CONSTANT”, value);
'CONSTANT'имя константы,valueеё значение. При использовании константы на неё ссылаются по имени. Например:
define('CONSTANT1', Группа) ;
define("CONSTANT2", "\x20"); // код пробела
define('CONSTANT3', 303);
По традиции имена констант пишут буквами верхнего регистра.
Существует функция defmed('CONSTANT'), которая проверяет, определена ли константа. Функция возвращаетtrue, если константа определена в теле программы выше вызова данной функции.
Практическая работа № 1
Во всех скриптах в заголовке окна браузера должны быть ваши фамилия и имя!
УПРАЖНЕНИЕ 1-1.Подготовительная работа
1. Запустите «Денвер».
2. На виртуальном диске «PHP-server»создайте в ней вашу личную папку (например,PHP_Фамилия). В вашей личной папке создайте еще одну папку с именемWWW (в ней будутрасполагаться все HTML и PHP-файлы вашего сайта).
3. Перезапустите «Денвер».
4. Откройте браузер и откройте в нём страницу http://192.168.0.44/student/ PHP_Фамилия/. Вы должны увидеть страницу с заголовком «Index of /» (рис. 1). Это означает, что новый сайт создан успешно. Таким же методом Вы можете создать любой другой сайт.
Рис. 1 - Внешний вид только что созданного сайта
5. В папке WWWтолько что созданного сайта создайте новый текстовый файл с именемindex.php.Откройте этот файл с помощью Блокнота и впишите в него следующий код:
<p> Дата и время: <p> <?php $d=date("d.m.YH:i"); echo($d); ?> |
Рис. 2 - Результат выполнения скрипта «Дата и время»
6. Сохраните файл. Откройте в браузере страницу http://192.168.0.44/student/ PHP_Фамилия/index.php. Если Вы сделали всё правильно, то перед Вами появится окно, показанное на рис. 2 (только дата и время будут другими).
Пояснения:
· В первой строке идёт обычный текст и HTML-тег. Они никак не обрабатываются и просто передаются в браузер пользователя.
· Вторая строка помимо HTML-тега содержит ещё и метку начала PHP-кода. Всё, что располагается до метки <?php, передаётся в браузер без изменений.
· Третья строка примера первая строка PHP-кода вычисляет текущую дату с помощью функцииdate("d.m.Y H:i")и заносит её в переменную с именем$d.
· Четвёртая строка выводит переменную $d на экран. За это отвечает функция echo( ).
· Пятая строка говорит о том, что PHP-код закончился.
· Заметьте, что каждая строка заканчивается точкой с запятой (;). Этот символ являетсяобязательнымконцом каждой завершённой команды PHP.
УПРАЖНЕНИЕ 1-2
1. В папке WWWсоздайте новый текстовый файл с именемlab-1-1.phpскодом:
<?php
$var1= '3';
$var2 = 5;
echo $var1 . ' - ' . gettype($var1) . '<br>';
print ($var2 . ' - ' . gettype($var2) . '<br>');
$var3= 'abc';
Var_dump ($var3);
echo '<br>';
$var4=123;
Var_dump ($var4);
?>
2. Сохраните файл. Откройте в браузере страницу http://192.168.0.44/student/ PHP_Фамилия/lab-1-1.php.
УПРАЖНЕНИЕ 1-3
1. В папке WWWсоздайте новый текстовый файл с именемlab-1-2.phpскодом:
<p> Арифметические операции:
<p>
<?php
$x=12;
$y=4;
echo('12+4=' . ($x+$y) . '<br>');
echo('12-4=' . ($x-$y) . '<br>');
echo('12*4=' . ($x*$y) . '<br>');
echo('12/4=' . ($x/$y));
?>
2. Сохраните файл. Откройте в браузере страницу http://192.168.0.44/student/ PHP_Фамилия/lab-1-2.php.
3. Измените текст файла lab-1-2.phpследующим образом:
<p> Арифметические операции:
<p>
<?php
$x=rand(1,10);
$y=rand(1,10);
print ($x . '+' . $y . '=' . ($x+$y) . '<br>');
print ($x . '-' . $y . '=' . ($x-$y) . '<br>');
print ($x . '*' . $y . '=' . ($x*$y) . '<br>');
print ($x . '/' . $y . '=' . ($x/$y) . '<br>');
?>
4. Сохраните файл. Откройте в браузере и несколько раз обновите страницу.
УПРАЖНЕНИЕ 1-4
1. Создайте php-скрипт lab-1-3.php, в котором создайте константуNUM_Eсо значением 2.71828 (число е).
2. Выведите на экран значение этой константы в виде строки «Число e равно …».
3. Присвойте переменной $num_e1значение константы и выведите на экран имя переменной$num_e1, ее значение и тип (т.е. в браузере должна получиться строка вида «$num_e1 = 2.71828 double»).
4. Последовательно измените тип переменной $num_e1на строковый, целый и булевский, каждый раз отображая тип и получившееся значение переменной$num_e1.
Лабораторная работа № 2. Управляющие конструкции
Условный оператор IF имеет два формата.
if (условие)
{ блок операторов 1 }
[else { блок операторов 2 }];
Если условие истинно, то выполнится блок операторов 1, а если условие ложно блок операторов 2.
if (условие) { блок операторов }
[ elseif (условие) { блок операторов }]
...
[ elseif (условие) { блок операторов } ]
[ else { блок операторов } ]
Очередное условие elselfвычисляется лишь в том случае, если все предшествующие условияifиelselfоказались ложными.
Замечание.Допускаются вложенные командыif.
Тернарный оператор ? работает почти также как и оператор IF:
Переменная = (условие) ? (Выражение-2) : (Выражение-З)
Тернарный оператор "?:" это вид условного оператора, он проверяет заданное условие и если оно верно, то присваивает переменной значение Выражения-2, иначе – Выражения-3.
Оператор SWITCHимеет вид:
switch(выражение) {
case (значение): { блок операторов }
[case (значение): { блок операторов }]
...
[default: { блок операторов }]
}
Значение выражения в операторе switchпоследовательно сравнивается с условиями в секцияхcase.
Когда секция case, равная значению выражения, найдена, выполняются все операторы после нее и до ближайшего оператораbreak(данный оператор может отсутствовать в конструкции) или до конца оператораswitch. Операторbreakпередает управление оператору, следующему за закрывающей скобкой оператораswitch.
Если не одно из значений caseне совпадает с выражением в скобках, то выполняются операторы, стоящие после ключевого словаdefault(данное значение может отсутствовать в конструкции, и тогда управление будет передаваться на команды, следующие за конструкциейswitch).
Оператор цикла с предусловием WHILEвыглядит так:
while (выражение-условие)
{ операторы тела цикла }
При входе в цикл вычисляется выражение-условие, и, если его значение истинно или отлично от нуля, выполняется тело цикла. Затем вычисления выражения-условия и операторов тела цикла выполняется до тех пор, пока значение выражения-условия не станет ложным или равным нулю.
Оператор цикла с постусловием DО WHILEработает почти так же, как и циклwhile, однако условие проверяется не в начале, а в конце каждой итерации.
do
{ операторы тела цикла }
while (условие);
При входе в цикл в любом случае выполняется тело цикла (т.е. цикл всегда будет выполнен хотя бы один раз), затем вычисляется условие, и если оно истинно, вновь выполняется тело цикла.
Оператор цикла FORимеет вид:
for (инициализация; условие; приращение)
{ операторы тела цикла }
Инициализация – операторычерез запятые, которыевыполняются всего один раз перед выполнением цикла (обычно они определяют начальные значения управляющей переменной цикла и других переменных).
Условие проверяется в начале каждой итерации и определяет, должна ли выполняться текущая итерация (если условие истинно) или нет.
Приращение- операторычерез запятые, которыевыполняются в конце каждой итерации цикла (обычно определяется изменение управляющей переменной при каждой итерации).
Пример:
for ($i = 10; $i <= 100; $i +=10) // обратная косая черта специальный
echo ("\$i = ". $i . "<br>"); // символ “$” делает обычным
В этом примере управляющая переменная $i инициализируется значением 10. Цикл продолжается до тех пор, пока $i не достигнет или не превысит пороговую величину 100. При каждой итерации значение $i увеличивается на 10. В результате команда echoвыполняется 10 раз, каждый раз выводя текущее значение $i. В управляющих выражениях циклов for могут отсутствовать любые компоненты.
Оператор breakнемедленно прерывает выполнение операторов циклов иswitch.
Оператор continueпредназначен для пропуска всех оставшихся команд текущей итерации цикла и немедленного начала новой итерации.
ПРАКТИЧЕСКАЯ РАБОТА № 2
Во всех скриптах в заголовке окна браузера должны быть ваши фамилия и имя!
УПРАЖНЕНИЕ 2-1. Использование IF
Создайте сценарий lab-2-1.php, содержащий код:
<?php
$a=1;$b = false;
if ($a) { echo '$a='."$a - истина <br>"; }
else { echo '$a='."$a - ложь <br>"; }
if ($b) { echo '$b='."$b - истина <br>"; }
else { echo '$b='."$b - ложь <br>"; }
?>
Проверьте результат работы скрипта при следующих значениях переменных:
$а = 0 и $b = "0"
$а= 10 и $b = "true"
$а = false и $b = "false"
$а = -1 и $b = ""
УПРАЖНЕНИЕ 2-2. Использование ELSEIF
1. Создайте сценарий lab-2-2.php, позволяющий найти наибольшее из двух чисел:
<p> Наибольшее число:
<p> <?php
srand();
$x=rand(1,10);
$y=rand(1,10);
print ('$x =' . $x . "<br>");
print ('$y =' . $y . "<br>");
if ($x>$y) echo("Наибольшее =" . $x);
elseif ($x<$y) echo ("Наибольшее =" . $y);
else print ("Наибольшего нет");
?>
2. Сохраните файл. Откройте в браузере и несколько раз обновите страницу.
УПРАЖНЕНИЕ 2-3. Использование SWITCH
1. Создайте сценарий lab-2-3.php со следующим кодом:
<?php
$а = "А";
switch ($а) {
case 'А' :
echo 'Переменная имеет значение "А"'; break;
case 'В':
echo 'Переменная имеет значение "В"'; break;
default:
echo 'Ответ не найден ' ;
}
?>
2. Проверьте результат выполнения данного скрипта, если переменная $а равна: "А", "В", "С".
3. Снова присвойте переменной $а значение "А".
4. Удалите из первой секции case операторbreak(6-ую строку кода).
5. Сохраните изменения и проверьте работу скрипта. Объясните получившийся результат.
УПРАЖНЕНИЕ 2-4.Использование SWITCH
1. Создайте сценарий lab-2-4.php со следующим кодом:
<?php
$dn=rand(1,7);
print ($dn ." - номер дня недели <br>");
switch ($dn) {
case 1: print ("это понедельник "); break;
case 2: print ("это вторник "); break;
case 3: print ("это среда "); break;
case 4: print ("это четверг "); break;
case 5: print ("это пятница "); break;
case 6: print ("это суббота "); break;
case 7: print ("это воскресенье");
}
?>
2. Сохраните файл. Откройте в браузере и несколько раз обновите страницу.
УПРАЖНЕНИЕ 2-5.Использование цикла WHILE
1. Создайте сценарий lab-2-5.php, выводящий в браузер числа от 1 до 5:
<?php
$var = 5; $i = 0;
while (++$i <= $var)
{ echo $i . ' '; }
?>
2. Дополните сценарий таким образом, чтобы в окне браузера с новой строки выводились числа в обратном порядке, то есть от 5 до 1.
УПРАЖНЕНИЕ 2-6.Использование цикла WHILE
1.Создайте сценарий lab-2-6.php со следующим кодом:
<?php
$a=rand(1,10); $b=rand(10,20);
print("<p> Числа из отрезка [".$a.",".$b."]: <br>");
while ($a<=$b) { echo($a . "<br>");
$a=++$a; }
?>
2. Сохраните файл. Откройте в браузере и несколько раз обновите страницу.
УПРАЖНЕНИЕ 2-7. Использование цикла DO WHILE
1.Создайте сценарий lab-2-7.php со следующим кодом:
<?php
$a=rand(-5,0);
$b=rand(0,5);
print ("<p> Числа из отрезка [".$a.",".$b."]: <br>");
do {
echo($a . "<br>");
$a=++$a; }
while ($a<=$b);
?>
2. Сохраните файл. Откройте в браузере и несколько раз обновите страницу.
УПРАЖНЕНИЕ 2-8.Использование цикла FOR
1.Создайте сценарий lab-2-8.php со следующим кодом:
<?php
$a=rand(1,10);
$b=rand(10,20);
print ("<p> Числа из отрезка [".$a.",".$b."]: <br>");
for ($i=$a; $i<=$b; ++$i) {
echo($a . "<br>");
$a=++$a; }
?>
2. Сохраните файл. Откройте в браузере и несколько раз обновите страницу.
УПРАЖНЕНИЕ 2-9.Вывод таблицы умножения
1.Создайте сценарий lab-2-9.php со следующим кодом:
<HTML>
<TITLE> Таблица умножения </TITLE>
<BODY>
<TABLE border=1>
<?php
for ($i=1; $i<=10; $i++) { // запускаем первый цикл
echo ("<tr>"); // начало строки таблицы
for ($k=1; $k<=10; $k++) { // запускаем второй цикл
echo ("<td align=center>"); // открываем ячейку таблицы
$p=$i*$k; // находим произведение двух чисел и...
echo ($p); // выводим его,
echo ("</td>"); // а потом закрываем ячейку
}
echo ("</tr>"); // конец строки таблицы
}
?>
</TABLE>
</BODY>
</HTML>
2. Сохраните файл. Откройте в браузере.
Дата добавления: 2019-11-16; просмотров: 666; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!