Учебное пособие 889
.pdf<?
echo phpinfo(); ?>
Задание № 2. Создать программу для расчета математического выражения, используя функции из табл. 2. На экран вывести результат и формулу, по которой производился расчет. Значение a должно генерироваться с помощью датчика случайных чисел. Варианты задания приведены в табл. 3.
Таблица 3
Варианты задания № 2
Номер |
|
|
|
|
|
|
|
|
Функция |
варианта |
|
|
|
|
|
|
|
|
|
1 |
|
|
|
x |
|
, если a 1; |
|||
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
y sin(x), если a 2; |
||||||||
|
a cos(x), если a 3. |
||||||||
|
|
|
|
|
|
|
|
|
|
2 |
a sin(x), если a 1; |
||||||||
|
|
|
x |
3 |
, если a 2; |
||||
|
y |
|
|
|
|
|
|||
|
|
|
e |
x |
, если a 3. |
||||
|
|
|
|
|
|
|
|||
3 |
|
|
x |
|
, если a 1; |
||||
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
y ln x, если a 2; |
||||||||
|
cos(x), если a 3. |
||||||||
|
|
|
|
|
|
|
|
|
|
4 |
tg (x), если a 1; |
||||||||
|
|
2 |
, если a 2; |
||||||
|
y x |
|
|
||||||
|
sin(x), если a 3. |
||||||||
|
|
|
|
|
|
|
|
|
|
5 |
x3 , если a 1; |
||||||||
|
|
2 |
, если a 2; |
||||||
|
y x |
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
x, если a 3. |
||||||||
|
|
Продолжение табл. 3
6 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
x, если a 1; |
||||||||||||
|
|
4 |
, если a 2; |
|||||||||||||
|
y x |
|
|
|
||||||||||||
|
sin(x), если a 3. |
|||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
7 |
|
|
|
|
|
|
cos(x) |
|
, если a 1; |
|||||||
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
y sin(x) cos(x), если a 2; |
|||||||||||||||
|
|
5 |
, если a 3. |
|||||||||||||
|
x |
|
|
|
||||||||||||
8 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
x, если a 1; |
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
y ctg (x), если a 2; |
|||||||||||||||
|
|
3 |
, если a 3. |
|||||||||||||
|
x |
|
|
|
|
|||||||||||
9 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
x, если a 1; |
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
y log10 (x), если a 2; |
|||||||||||||||
|
cos(x), если a 3. |
|||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
10 |
|
|
|
x, если a 1; |
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
y arctg (x), если a 2; |
|||||||||||||||
|
|
|
x |
|
, если a 3. |
|||||||||||
|
|
|
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
11 |
|
|
|
|
|
x |
|
, если a 1; |
||||||||
|
|
|
|
|
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
y cos(x), если a 2; |
|||||||||||||||
|
a sin(x), если a 3. |
|||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
12 |
tg (x), если a 1; |
|||||||||||||||
|
|
|
|
|
3 |
, если a 2; |
||||||||||
|
x |
|
||||||||||||||
|
y |
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
x |
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
, если a 3. |
|||||||
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
a |
|
|
|
|
|
|
|
|||||
13 |
|
|
|
|
|
x, если a 1; |
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
y sin(x) x, если a 2; |
|||||||||||||||
|
a tg (x), если a 3. |
|||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
20 |
Окончание табл. 3
14 |
x 4 , если a 1; |
||||||||||||||
|
|
3 |
, если a 2; |
||||||||||||
|
y x |
|
|
|
|
|
|
|
|
||||||
|
|
|
x |
|
, если a 3. |
||||||||||
|
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
15 |
tg (x), если a 1; |
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
y cos(x), если a 2; |
||||||||||||||
|
sin(x), если a 3. |
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
||||
16 |
|
|
x |
|
, если a 1; |
||||||||||
|
|
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
x, если a 2; |
||||||||||
|
y |
|
|
||||||||||||
|
|
2 |
|
, если a 3. |
|||||||||||
|
x |
|
|
|
|
|
|||||||||
17 |
|
|
|
|
x4 , если a 1; |
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
y cos(x), если a 2; |
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
x, если a 3. |
||||||||||||
|
|
|
|
||||||||||||
18 |
tg (x), если a 1; |
||||||||||||||
|
|
x |
2 |
, если a 2; |
|||||||||||
|
y |
|
|
|
|
||||||||||
|
|
|
x |
|
, если a 3. |
||||||||||
|
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
Задание 3. Составить программу, которая:
–создает и выводит на экран массив из 7 – 10 целых элементов с помощью датчика случайных чисел;
–рассчитывает сумму и произведение элементов массива;
–находит в массиве максимальный и минимальный эле-
менты;
–сортирует массив по возрастанию и по убыванию;
–перемешивает элементы массива в случайном порядке.
Задание 4. Составить программу по работе с двумерным массивом согласно варианту задания.
21
1. Дана матрица F(3,4). Сформировать массив E(3), элементы которого представляют суммы элементов строк матрицы F. Вывести E и F по строкам.
2.Найти и вывести сумму максимального и минимального элементов матрицы B(3,3). Вывести B по строкам.
3.Дана матрица A(5,5), найти максимальный элемент среди отрицательных элементов матрицы, вывести его значе-
ние, номер строки и столбца, где он расположен. Вывести A по строкам.
4.Дана матрица B(3,5), сформировать массив А(5), элементы которого представляют произведение элементов строк матрицы B. Вывести A и матрицу B по строкам.
5.Дана матрица B(4,4), найти минимальный элемент среди положительных элементов матрицы, вывести его значение, номер строки и столбца, где он расположен. Вывести B по
строкам.
6.Найти максимальный элемент в каждой строке матрицы А(4,4). Вывести на печать эти элементы, номера столбцов и строк, в которых они расположены. Вывести A по строкам.
7.Найти минимальный элемент в каждом столбце матри-
цы B(3,4). Вывести на печать эти элементы, номера столбцов и строк, в которых они расположены. Вывести B по строкам.
8. Найти максимальный элемент на главной диагонали матрицы F(4,4) и сформировать матрицу P(4,4), элементы которой получены из элементов F путем умножения на максимальный. Матрицы P и F вывести по строкам.
9.Найти первый отрицательный элемент в матрице R(3,3)
исформировать матрицу P(3,3), элементы которой получаются
из соответствующих элементов матрицы R путем деления на первый отрицательный. Матрицы P и R вывести по строкам.
10. Дана матрица B(3,4). Все отрицательные элементы заменить на -1, все положительные - на 1, нулевые оставить без изменения. Преобразованную и исходную матрицы вывести по строкам.
22
11. Найти максимальный элемент ниже главной диагонали матрицы S(4,4). Сформировать матрицу T(4,4), элементы которой получены из элементов S путем деления на найденный элемент. Матрицы S и T вывести по строкам.
12.Дана матрица Q(4,4). Заменить на нули все элементы выше главной диагонали. Преобразованную и исходную матрицы вывести по строкам.
13.Дана матрица R(3,3). Найти сумму элементов массива
вкаждом столбце. Вывести на экран матрицу и полученные суммы.
14.Дана матрица D(4,4). Заменить на 0 все четные элементы матрицы. Преобразованную и исходную матрицы выве-
сти по строкам.
15.Дана матрица V(3,5). Найти сумму элементов массива
вкаждой строке. Вывести на экран матрицу и полученные
суммы.
16.Дана матрица T(4,4). Найти количество отрицательных элементов в каждой строке матрицы. Вывести на экран матрицу и полученные результаты.
17.Дана матрица K(4,4). Заменить все нечетные элементы
матрицы на -1. Преобразованную и исходную матрицы вывести по строкам.
18. Дана матрица P(3,4). Найти произведение минимального и максимального элементов матрицы. Вывести на экран матрицу и полученные результаты.
23
2. ЛАБОРАТОРНАЯ РАБОТА № 11. РАБОТА С АССОЦИАТИВНЫМИ МАССИВАМИ.
ФОРМАТИРОВАНИЕ ВЫВОДА. РАБОТА С ДАТОЙ И ВРЕМЕНЕМ
2.1. Общие методические указания по выполнению лабораторной работы
Цели работы:
–освоить методы работы с ассоциативными массивами;
–изучить принципы форматирования вывода данных в
PHP;
– ознакомиться с основными функциями по работе с датой и временем.
Среда выполнения и отладки:
Текстовый редактор Notepad++, веб-браузер (Firebox, Internet Explorer, Opera или др.).
2.2. Теоретические сведения
Ассоциативные массивы
Использование данных массивов позволяет ссылаться на элементы массива по именам, а не по номерам.
Например, рассмотренный выше массив можно создать следующим способом:
<?php
$paper[‘copier’] = “Copier & Multipurpose”; $paper[‘inkjet’] = “Inkjet Printer”; $paper[‘laser’] = “Laser Printer”; $paper[‘photo’] = “Photographic Paper”; echo $paper[‘laser’];
?>
24
Теперь у каждого элемента вместо числа (не содержащего никакой полезной информации, кроме позиции элемента в массиве) имеется уникальное имя, по которому на него можно сослаться где-нибудь в другом месте (например, в инструкции echo).
Присваивание с использованием ключевого слова
array
Помимо вышеуказанных, существует более краткий и быстрый способ присваивания значений с использованием ключевого слова array.
Пример ниже иллюстрирует создание обоих видов массивов с помощью ключевого слова array.
<?php
$p1 = array(“Copier”, “Inkjet”, “Laser”, “Photo”); echo “Элемент массива p1:” . $p1[2] . ”<br>”;
$p2 = array( ‘copier’ => “Copier & Multipurpose”, ‘inkjet’ => “Inkjet Printer”,
‘laser’ => “Laser Printer”,
‘photo’ => “Photographic Paper”);
echo “Элемент массива p2: “ . $p2[‘inkjet’] . “<br>”;
?>
В первой части этого кодового фрагмента массиву $p1 присваивается укороченное описание товара. Здесь используются четыре элемента, поэтому они занимают позиции от 0 до 3. Инструкция echo выводит следующий текст:
Элемент массива p1: Laser
Во второй части кода массиву $p2 присваиваются ассоциативные идентификаторы и сопутствующие им длинные описания товаров. Для этого используется формат index => value. Использование оператора => похоже на использование опера-
25
тора присваивания =, за исключением того, что значение присваивается индексу, а не переменной. После этого индекс приобретает неразрывную связь с этим значением до тех пор, пока ему не будет присвоено другое значение. Поэтому команда echo выводит следующий текст:
Элемент массива p2: Inkjet Printer
Цикл foreach…as
Данный цикл специально ориентирован на работу с массивами. Используя цикл foreach, можно перебрать все элементы массива и произвести с ними какие-нибудь действия.
Процесс начинается с первого элемента и заканчивается последним, поэтому не необходимости указывать пределы цикла. Например:
<?php
$paper = array(“Copier”, “Inkjet”, “Laser”, “Photo”); $j = 0;
foreach ($paper as $item)
{
echo “$j: $item<br>”; $j++;
}
?>
Когда PHP встречает инструкцию foreach, он извлекает первый элемент массива и помещает его значение в переменную, указанную после ключевого слова as, и при каждом возвращении управления инструкции foreach в эту переменную помещается значение следующего элемента массива. В данном случае переменной $item присваиваются по очереди все четыре значения, хранящиеся в массиве $paper. Как только будут использованы все значения, выполнение цикла завершается.
26
С ассоциативным массивом foreach работает следующим образом:
<?php
$paper = array( ‘copier’ => “Copier & Multipurpose”, ‘inkjet’ => “Inkjet Printer”,
‘laser’ => “Laser Printer”,
‘photo’ => “Photographic Paper”); foreach ($paper as $item => $description)
echo “$item: $description<br>”;
?>
Ассоциативным массивам не требуются числовые индексы, поэтому каждый элемент массива $paper вводится в пару «ключ – значение», представленную переменными $item и $description, из которых эта пара выводится на экран в следующем виде:
copier: copier & Multipurpose inkjet: Inkjet Printer
laser: Laser Printer
photo: Photographic Paper
В качестве альтернативы синтаксису foreach…as можно воспользоваться функцией list в сочетании с функцией each.
<?php
$paper = array( ‘copier’ => “Copier & Multipurpose”, ‘inkjet’ => “Inkjet Printer”,
‘laser’ => “Laser Printer”,
‘photo’ => “Photographic Paper”); while (list($item, $description) = each($paper))
echo “$item: $description”;
?>
27
В этом примере организуется цикл while, который будет продолжать работу до тех пор, пока функция each не вернет значение FALSE. Функция each ведет себя как foreach: она возвращает из массива $paper массив, содержащий пару «ключ
– значение», а затем перемещает встроенный указатель на следующую пару в исходном массиве. Когда возвращать станет нечего, функция each возвращает значение FALSE.
Функция list в качестве аргументов принимает массив (в данном случае пару «ключ – значение», возвращенную функцией each), а затем присваивает значение массива переменным, перечисленным внутри круглых скобок.
Форматирование вывода с использованием функции printf()
Функция printf() управляет форматом выводимых данных путем вставки в строку специальных форматирующих символов.
Функция printf() ожидает, что для каждого форматирующего символа будет предоставлен аргумент, который будет отображаться с использованием заданного формата. Например, в следующем фрагменте используется спецификатор преобразования %d, для того, чтобы значение 3 отображалось в виде десятичного числа:
printf(“В Вашей корзине находится %d покупки”, 3);
Если заменить %d на %b, значение 3 будет отображено в виде двоичного числа (11). В табл. 4 показаны поддерживаемые функцией спецификаторы преобразования.
28