- •Иркутский государственный университет путей сообщения кафедра “информатика” программирование на языке php
- •Иркутск
- •Содержание
- •Внедрение php-сценария в html-документ
- •Алфавит языка
- •Служебные слова
- •Типы данных
- •Комментарии
- •Переменные
- •Математические функции
- •Математические константы
- •Выражения
- •Операторы присваивания
- •Проверка существования переменной
- •Isset(переменная);
- •Is_string(переменная);
- •Мои поздравления!
- •Платежная ведомость
- •Отладочная печать
- •Var_dump(переменная);
- •Форматирование чисел
- •Number_format(переменная, точность, разделитель1, разделитель2);
- •Массивы
- •Создание массивов
- •Многомерные массивы
- •Операции над массивами Перемещение по массиву
- •Копирование массивов
- •Сортировка массивов
- •Запись значений элементов массива в переменные из списка
- •Преобразование массива в текстовую строку
- •Преобразование текстовой строки в массив
- •Функции для работы с массивами
- •Глобальные предопределенные массивы
- •Работа с формой Работу выполнил студент группы ис-09 Пупкин Василий
- •Дата и время
- •Mktime(час, мин, сек, месяц, день, год);
- •1972450760 Секунд 547902.98888889 часов 22829.291203704 дней 62.546003297818 лет
- •Date(формат, число);
- •Strtotime(дата_время, число);
- •Функции
- •Рекурсия
- •Функция dumper()
- •Функции для работы со строками
- •Регулярные выражения
- •Автономные функции
- •Текстовые файлы
- •Включение файлов
- •Получение информации о файле
- •Блокировка файлов
- •Бинарные файлы
- •Алгоритм и его свойства
- •Схемы алгоритмов
- •Пример записи алгоритма:
- •Базовые структуры
- •Цепочка
- •Ветвления
- •Альтернатива
- •Действие альтернативы:
- •If (условие)
- •Вариант 2 – с использованием операции конъюнкции
- •Часто встречающиеся ошибки программирования:
- •Переключатель
- •Часто встречающиеся ошибки программирования:
- •Бесконечные циклы
- •Циклы с предусловием
- •Программа:
- •Часто встречающиеся ошибки программирования:
- •Циклы с постусловием
- •Программа:
- •Циклы с параметром
- •Действия цикла:
Вариант 2 – с использованием операции конъюнкции
s = z; $s = $z;
ЕСЛИ (x > y) & (x > z) if (($x > $y) && ($x > $z))
ТО s = x; $s=$x;
ЕСЛИ (y > x) & (y > z) if (($y > $x) && ($y > $z))
ТО s = y; $s=$y;
2.по заданной дате (день, месяц, год) определить день недели, приходящийся на нее:
<?php
$day=19;
$month=9;
$year=1949;
$kl=0;
$c=0;
$y1=$year/100;
$y2=$year-$y1*100;
if (($y2==0) && ($y1%4==0))
$c=1;
if (($y2!=0) && ($y2%4)==0))
$c=1;
if (($c==1) && ($month==1) ||($month==2))
$kl=1;
if (($c==0) && ($month==1) || $month==2))
$kl=2;
$c=ceil(365.25*$y2) + ceil(30.56*$month) + $day + $kl;
$c %= 7;
$c += 3;
if ($c==1)
echo “<BR>Это понедельник<BR>”;
if ($c==2)
echo “<BR>Это вторник<BR>”;
if ($c==3)
echo“<BR>Это среда<BR>”;
if ($c==4)
echo “<BR>Это четверг<BR>”;
if ($c==5)
echo “<BR>Это пятница<BR>”;
if ($c==6)
echo “<BR>Это суббота<BR>”;
if ($c==7)
echo “<BR>Это воскресенье<BR>”;
?>
По принятому в PHPсоглашению, ветвьelseвсегда относится к ближайшему предшествующему ему незанятомуif:
if ($n > 0)
if ($m % $n > 2)
$m -= $n;
else $m += $n;
else $m %= $n;
В данном случае ветвь else $m += $nотносится кif ($m % $n > 2),а ветвьelse $m %= $nотносится кif ($n > 0).
При переходе с ПаскалянаPHPпрограммисты часто допускают ошибки при формировании условия в оператореif,путая две операции:
=присваивания и
==сравнения:
if ($a==$b)
echo “<BR>Эти величины равны между собой<BR>”;
else echo “<BR>Эти величины не равны между собой<BR>”;
Это правильное сравнение значений двух переменных.
Перепишем это сравнение с ошибкой (интерпретатором не определяется):
if ($a = $b)
echo “<BR>Эти величины равны между собой<BR>”;
else echo “<BR>Эти величины не равны между собой<BR>”;
В этом случае сначала переменной $aбудет присвоено значение переменной$b, а потом будет проверено, какое именно значение присвоено. Если это значение отлично от нуля (неложь), то выведется сообщение:
Эти величины равны между собой
Если это значение равно нулю (ложь) – то сообщение:
Эти величины не равны между собой
Хотя и в этом случае обе переменные будут иметь одинаковые значения.
Часто встречающиеся ошибки программирования:
1.Использование else без первой ветви:
if ($n > $m)
else . . .
2. Использование открывающей фигурной скобки{ без закрывающей}и наоборот.
3.Отсутствие точки с запятой перед словомelse:
if ($n > $m)
$a=1
else $a=0;
4. Точка с запятой после условия:
if ($n > $m);
$a=1;
else $a=0;
Отсутствие точки с запятой перед закрывающей фигурной скобкой }или наличие точки с запятой после нее:
if ($c < 2.5)
{
$a=sin($c);
$b=abs($c);
};
else
{
$a=cos($c);
$b=1.0/$c
}
Пример: задан график функцииf(x)– полуокружность радиусаR=1:
Определить:
Значение функции yпри заданном значении аргументаx.
Площади фигур слева и справа от линии разреза.
По теореме Пифагора:
Площадь фигуры слева от линии разреза определяется суммой площадей прямоугольного треугольника:
s1 = 0,5 x y
и сектора:
s2 = 0,5 R2 (α – sin α),гдеα– центральный угол в радианах,
причем
α = arcsin(y/R).
Площадь всей фигуры (полукруга) определяется выражением:
S = π R2/2.
Программа решения задачи:
<?php
$x = 0.5;
if ($x <= 1.0) //первый участок
{
$y = sqrt(1.0 - ($x - 1.0 ) * ($x - 1.0 ));
if ($x <= 0.0)
$y=0.0;
}
else
{ //второй участок
$y = $sqrt(1.0-($x-floor($x)) * ($x-floor($x)));
if ($x >= $2.0)
$y=0.0;
}
if ($x == 1.0) //двойной знак равенства!
{
$s_left=0.7854;
$s_right=0.7854;
}
if ($x < 1.0) //первый участок
{
$sin_alfa = $y;
if ($sin_alfa != 1.0)
$alfa = atan($sin_alfa/sqrt(1.0-$sin_alfa*$sin_alfa));
else $alfa = M_PI/2.0;
$segment = 0.5*($alfa - $sin_alfa);
$s_left = $segment + 0.5*$x*$y;
$s_right = M_PI/2.0 - $s_left;
} // $x<1.0
if ($x > 1.0) //второй участок
{
$x = 2.0 - $x;
$sin_alfa = $y;
if ($sin_alfa != 1.0)
$alfa = atan($sin_alfa/sqrt(1.0 - $sin_alfa*$sin_alfa));
else $alfa = M_PI/2.0;
$segment = 0.5*($alfa - $sin_alfa);
$s_left = $segment + 0.5*$x*$y;
$s_right = M_PI/2.0 - $s_left;
} // $x>1.0
echo “<BR>y = $y<BR>”;
echo “<BR>s_left = $s_left<BR>”;
echo “<BR>s_right = $s_right<BR>”;
?>