SlideShare uma empresa Scribd logo
1 de 57
www.studentam‐in.ru 
полезная информация для учащихся
Лабораторные работы (практикум) по направлению
«Изучение HTML, CSS, PHP, MySQL»

СОДЕРЖАНИЕ:
ЛАБОРАТОРНАЯ РАБОТА № 1. ЗНАКОМСТВО С PHP, HTML, CSS. ............................................................ 2
ЛАБОРАТОРНАЯ РАБОТА № 2. ИСПОЛЬЗОВАНИЕ ПЕРЕМЕННЫХ И ЭЛЕМЕНТОВ ВВОДА. ................ 11
ЛАБОРАТОРНАЯ РАБОТА № 3. УПРАВЛЕНИЕ ПРОГРАММОЙ С ПОМОЩЬЮ УСЛОВИЙ И ФУНКЦИЙ.16
ЛАБОРАТОРНАЯ РАБОТА № 4. ЦИКЛЫ И МАССИВЫ. ................................................................................ 22
ЛАБОРАТОРНАЯ РАБОТА № 5. РАБОТА С ФАЙЛАМИ. ............................................................................... 32
ЛАБОРАТОРНАЯ РАБОТА № 6. ИСПОЛЬЗОВАНИЕ MYSQL ДЛЯ СОЗДАНИЯ БАЗ ДАННЫХ (БД). ........ 47
ЛАБОРАТОРНАЯ РАБОТА № 7. ПОДКЛЮЧЕНИЕ К БД С ПОМОЩЬЮ PHP. ............................................. 50
ЛАБОРАТОРНАЯ РАБОТА № 8. НОРМАЛИЗАЦИЯ ДАННЫХ. ..................................................................... 52

Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru  

 

1

 
ЛАБОРАТОРНАЯ РАБОТА № 1. ЗНАКОМСТВО С PHP, HTML, CSS.
1. Установить локальный сервер (типа, wamp, denwer, phpTriad) и запустить его.
Подсказка:
Требуется установить конфигурацию Apache, PHP, MySQL.

Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru  

 

2

 
2. Написать программу на PHP вызывающую функцию phpInfo(); и запустить ее на своем веб-сервере.
Подсказка:
<?php
//файл program.php скопировать в папку www
//в браузере указать путь к файлу как localhost/program.php
phpInfo();
?>

Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru  

 

3

 
3. Создать страницу на html для своего резюме.
Подсказка:
<html>
<head>
<title>Резюме А.В. Гора</title>
</head>
<body>
<table width="100%" align="center" border="0" >
<tr>
<td width="15%"><a href="Gora.jpg" target="_blank" title="Увеличить фотографию"><img src="Gora.jpg"
width="110"></a></td>
<td width="85%"><left><u><h3>РЕЗЮМЕ</h3> <br> <h4>ГОРА АЛЕКСАНДР ВЛАДИМИРОВИЧ</h4></u></left></td>
</tr>
</table>

height="112"

<table width="100%" border="1" cellpadding="1" cellspacing="1">
<tr>
<td>Цель</td>
<td>Соискание должности по направлению "Преподаватель".</td>
</tr>
<tr>
<td>Сведения о себе</td>
<td><u>Год и место рождения:</u> .<br>
<u>Семейное положение:</u> .<br>
<u>Адрес:</u> г. Благовещенск, ул. .
</td>
</tr>
<tr>
<td>Образование</td>
<td><u>Высшее:</u> Благовещенский государственный педагогический университет (2003-08, очно).<br>
<u>Специальность:</u> «Информатика» с дополнительной квалификацией «переводчик в сфере профессиональной
коммуникации».</td>
</tr>
<tr>
<td>Профессиональный опыт</td>
<td>Преподаватель спец. дисциплин в филиале ФГБОУ ВПО «ВГУЭС» Благовещенском технологическом техникуме (200812).<br>
Преподаю следующие учебные дисциплины:
<ol>
<li>Информатика.</li>
<li>Информационные технологии в профессиональной деятельности. </li>
</ol>
</td>
</tr>
<tr>
<td>Знания языков</td>
<td>Английский выше среднего (разговорный, письменный; хорошее владение компьютерной лексикой, свободная
ориентация на англоязычных сайтах).</td>
</tr>
<tr>
<td>Дополнительные сведения</td>
<td>Водительское удостоверение <u>категории В.</u><br></td>
</tr>
<tr>
<td>Личностная характеристика</td>
<td>Ответственен, самообучаем, коммуникабелен.</td>
</tr>
</table>
</body>
</html>

Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru  

 

4

 
Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru  

 

5

 
4. Создать страницы на HTML с применением стилей CSS (внутренних и внешних).
Подсказка:
<html>
<head>
<title>Заголовок страницы</title>
<STYLE type="text/css">
h2 { color: blue }
</STYLE>
<head>
<body>
<center>
<h1 style =

"color:red;
background-color:yellow;
border-width: 10px;
border-style: groove;
border-color: green">

Привет мир</h1>
</center>
<br>
<h2>Привет мир</h2>
</body>
</html>

<html>
<head>
<title>Заголовок страницы</title>
<LINK rel="stylesheet" href="12 внешние стили.css" type="text/css">
<head>
<body>
<center>
<h1>Привет мир</h1>
</center>
</body>
</html>
h1 {
text-align:center;
color:red;
background-color:yellow;
border-width: 10px;
border-style: groove;
border-color: green
}

Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru  

 

6

 
CSS: СВОЙСТВА ШРИФТА
fontfamily

Используется для указания шрифта или шрифтового семейства, которым будет отображаться элемент.
P {font-family: Times New Roman, sans-serif;}

font-style Задает способ начертания шрифта: normal - Нормальный (по умолчанию), italic - Курсив, oblique Наклонный.
P {font-style: italic;}
fontvariant

Задает варианты начертания шрифта: normal - Нормальный (по умолчанию), small-caps - Все буквы
заглавные).
P {font-variant: small-caps;}

fontweight

Определяет степень жирности шрифта с помощью параметров: normal, bold, bolder, lighter, 100, 200,
300, 400, 500, 600, 700, 800, 900
B {font-weight: bolder;}

font-size Устанавливает размер шрифта. Параметр может указываться как в относительной (проценты), так и
абсолютной величине (пункты, пикселы, сантиметры)
H1 {font-size: 200%;}
H2 {font-size: 150px;}
H3 {font-size: 400pt;}
CSS: ЦВЕТ ЭЛЕМЕНТА И ЦВЕТ ФОНА
color

Определяет цвет элемента
I {color: green;}

backgroundcolor

Устанавливает цвет фона для элемента – именно для элемента, а не для странички. Разные
броузеры отображают это свойство по-разному: Microsoft IE отводит под фон элемента всю
доступную ширину страницы, а Netscape Navigator – лишь ширину, занимаемую этим элементом.
H4 {background-color: yellow;}
В скриптовых языках используйте object.style.backgroundColor [ = sColor ]

CSS: СВОЙСТВА ТЕКСТА
textdecoration

Устанавливает эффекты оформления шрифта, такие, как подчеркивание или зачеркнутый текст
H4 {text-decoration: underline;} - подчеркивание
A {text-decoration: none;} - стандартный текст
I {text-decoration: line-through;} - зачеркивание
B {text-decoration:overline;} - надчеркивание

texttransform

Задает преобразование регистра текста при отображении
H4 {text-transform: capitalize;} - Первая буква каждого слова преобразуется в заглавную
A {text-transform: uppercase;} - Все буквы преобразуются в заглавные
I {text-transform: lowercase;} - Все буквы преобразуются в строчные
B {text-decoration:none;} - Отменяет установленные преобразования

text-align

Определяет выравнивание элемента. Возможные значения: left, right, center, justify
P {text-align:justify}
H5 {text-align: center}

text-indent

Устанавливает отступ первой строки текста. Чаще всего используется для создания параграфов с
табулированной первой строкой.
P {text-indent: 50pt;}

line-height

Управляет интервалами между строками текста.
P {line-height: 50 %}

wordspacing

Устанавливает интервалам между словами. Можно использовать отрицательные значения
P {word-spacing: 50 %}

letterspacing

Устанавливает интервалам между буквами
P {letter-spacing: 50 pt}

vertical-align Устанавливает вертикальное положение элемента. Может принимать следующие значения: baseline
middle sub super text-top text-bottom top bottom
P {vertical-align: 50 pt}
CSS: ГРАНИЦЫ
Спецификация CSS2 описывает атрибут стиля border, который позволяет задать вид границ вокруг объектов.
Атрибут border может быть применен к любым объектам. Могут быть установлены следующие параметры
границы:
Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru  

 

7

 
borderwidth

Ширина границы. Может быть задана значением в пикселях или с помощью зарезервированных слов
thin (тонкая), medium (средняя), thick (толстая).
table {border-width: 2px;}

bordercolor

Цвет границы. Может принимать значение transparent для задания невидимой, но имеющей ширину,
границы, что иногда полезно
table {border-color: green;}

borderstyle

Задает стиль рисования границы. Может принимать следующие значения: none (по умолчанию),
hidden, dotted, dashed, solid, double,groove, ridge, inset, outset
table {border-style: dashed;}
table {border-style: groove;}

Примечание
Спецификация CSS2 позволяет задать стили для каждой из сторон границы. Например: border-сторона[-атрибут].
Где сторона может принимать следующие значения: top (верхняя граница), bottom (нижняя граница), left (левая
граница) и right (правая граница). Таким образом { border-bottom-width: 1px } будет означать, что ширина нижней
границы равна 1 пикселу.
ЕДИНИЦЫ ИЗМЕРЕНИЯ

В языке HTML существует два способа задать линейные размеры элемента: пиксели и проценты. В
CSS единиц длины гораздо больше.
ЕДИНИЦЫ ИЗМЕРЕНИЯ
in - Дюймы

pt - Пункты (типограф.)

px - Пикселы

cm - Сантиметры pc - Пика

em - Вычисляется относительно размера шрифта
элемента

mm Миллиметры

% - Проценты

ex - Высота строчной буквы "x" в
шрифте

Условно единицы измерения можно разделить на три группы.
Первая группа - это величины, которые используются для измерения длин реальных предметов. К ним
относятся:
•

in - дюймы;

•

cm - сантиметры;

•

mm - миллиметры.

Ко второй группе можно отнести величины, которые пришли в CSS из типографии. То есть они
используются для установки размеров шрифта, межстрочных интервалов и прочих типографских
величин. Данная группа величин привычна полиграфистам. К ним относятся:
•

pt - типографский пункт;

•

pc - пика;

•

ex - высота строчной буквы "x" в шрифте.

Третью группу составляют величины, которые являются относительными, то есть реальный размер
элемента вычисляется относительно какой-либо иной величины. К ним относятся:
•

em - вычисляется относительно размера шрифта элемента;

•

px - пиксель. Вычисляется относительно устройства отображения;

•

% - процент. Естественно, процентные соотношения не являются единицами измерения в привычном
смысле слова. Они вычисляются относительно размеров элемента-предка.

CSS: КУРСОРЫ

Internet Explorer позволяет задавать стили для курсоров. Некоторые стили доступны только для IE 6.
all-scroll

Курсор со стрелками во все четыре стороны и точкой в центре, показывающий на возможность
скроллинга страницы в любом направлении
I {cursor: all-scroll;}

Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru  

 

8

 
auto

По умолчанию. Браузер определяет самостоятельно, какой курсор требуется в данном контексте
I {cursor: auto;}

col-resize Курсор со стрелками влево-вправо и вертикальной разделяющей полоской. Используется для
индикации возможности изменения размеров по горизонтали
H4 {cursor: col-resize;}
crosshair

Курсор-крест
H4 {cursor: crosshair;}

default

Стандартный курсор, используемый системой
H4 {cursor: default;}

hand

Рука с вытянутым указательным пальцем. Используется при гиперссылке
H4 {cursor: hand;}

help

Стрелка с вопросительным знаком.
H3 {cursor: help;}

move

Курсор со 4 стрелками, показывающий возможность перемещения
H2 {cursor: move;}

no-drop

Рука с перечеркнутым кружочком. Нельзя сбросить объект в текущую позицию курсора
TD {cursor: no-drop;}

notallowed

Перечеркнутый круг. Данная операция не поддерживается
TD {cursor: not-allowed;}

pointer

Идентична стилю hand
TD {cursor: pointer;}

progress

Песочные часы, показывающие на продолжение операции
TD {cursor: progress;}

row-resize Курсор со стрелками вверх-вниз и вертикальной разделяющей полоской. Используется для индикации
возможности изменения размеров по вертикали
TD {cursor: row-resize;}
text

Текстовый курсор-каретка
TD {cursor: text;}

url(uri)

Ваш собственный курсор. Поддерживаются файлы .cur и .ani
TD {cursor:url(elogo.cur);}

verticaltext

Горизонтальная текстовая каретка для вертикального текста
TD {cursor: vertical-text;}

wait

Курсор, показывающий, что система занята и требуется подождать
TD {cursor: wait;}

*-resize

Курсоры, показывающие возможность потянуть за край окна. Вместо символа * используйте N, NE,
NW, S, SE, SW, E, или W, определяющие направление стрелок
TD {cursor: n-resize;}

CSS: ПОЛОСА ПРОКРУТКИ

Данные настройки применимы ко всем элементам, имеющим полосы прокрутки: сама страница
(элемент BODY), текстовый блок (TEXTAREA) и т.д.
scrollbar-3dlight- Определяет или устанавливает цвет верха и левой части ползунка и кнопок со стрелками на
color
полосе прокрутки
body {scrollbar-3dlight-color: green;}
scrollbar-arrowcolor

Устанавливает или определяет цвет стрелок на кнопке со стрелками
body {scrollbar-arrow-color: red;}

scrollbar-basecolor

Устанавливает или определяет цвет основных элементов ползунка: ползунка, кнопок со
стрелками, дорожки для ползунка, если не определены параметры в scrollbar-face-color
body {scrollbar-base-color: green;}

scrollbardarkshadowcolor

Устанавливает или определяет цвет тени для ползунка и кнопок со стрелками
body {scrollbar-darkshadow-color: red;}

scrollbar-facecolor

Устанавливает или определяет цвет ползунка и кнопок со стрелками. Также, если вы не задали
параметр SCROLLBAR-TRACK-COLOR, у вас изменится цвет дорожки
body {scrollbar-face-color: green;}

scrollbarhighlight-color

Устанавливает или получает цвет подсветки, создающий эффект объёмности. Это цвет,
который окаймляет освещённую часть кнопочки. Когда кнопка не нажата, то цвет заливает

Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru  

 

9

 
левый верхний угол и стороны между ним, когда нажата - нижний правый угол
body {scrollbar-highlight-color: green;}
scrollbarshadow-color

Схоже с scrollbar-darkshadow-color
body {scrollbar-shadow-color: green;}

scrollbar-trackcolor

Устанавливает или получает цвет дорожки для ползунка
body {scrollbar-track-color: aqua;}

CSS: РАЗМЕР ЭЛЕМЕНТА
min-height Устанавливает или получает минимальную высоту элемента
TR {min-height: 10px;}
Данный атрибут применим к TR, TD, TH в таблице, у которой свойство table-layout имеет значение fixed
CSS: СВОЙСТВА ТАБЛИЦЫ
tablelayout

Устанавливает или получает алгоритм обработки таблицы
TABLE {table-layout: fixed;}
Имеет два значения
•

auto - По умолчанию. Браузер самостоятельно вычисляет необходимые размеры таблицы

•

fixed - Браузер не учитывает содержимое отдельных ячеек при вычислении ширины таблицы и
отдельных ячеек. Он использует значения ширины таблицы, ширины столбцов, рамок и
расстояний между ячейками. Ширина столбцов таблицы вычисляется в следующем порядке:
1. используя значение атрибута WIDTH элементов COL
2. используя значение атрибута WIDTH элементов TD первого ряда таблицы
3. если данные значения не установлены, то ширина столбцов вычисляется соответственно
контенту ячеек

Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru  

 

10

 
ЛАБОРАТОРНАЯ РАБОТА № 2. ИСПОЛЬЗОВАНИЕ ПЕРЕМЕННЫХ И ЭЛЕМЕНТОВ ВВОДА.
1. Разработайте веб-страницу, которая будет спрашивать у пользователя его имя и фамилию, а потом с
помощью РНР-сценария сообщите ему, что он прошел регистрацию в системе.
Подсказка:
<html>
<body>
<h1>Программа приветствие</h1>
<form

method="post"
action="obrabotchik.php">

Пожалуйста введите имя:
<input

type="text"
name="imyaPolzovatelya"
value="Ваше имя?" />

<br>
<input

type="submit"
value="Отправить данные"/>

</form>
</body>
</html>

Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru  

 

11

 
<?php
print "Программа принимающее введенные пользователем данные в поле imyaPolzovatelya <br><br>";
//в ряде случаев создание переменной "на лету" запрещено администратором сервера
print "создание переменной на лету (если приветствие без указания имени пользователя, то функция отключена) <br>";
print "Привет $imyaPolzovatelya <br> <br>";
//делаем "принудительный" запрос на получение значения переменной imyaPolzovatelya
print "принудительное создание переменной <br>";
$imyaPolzovatelya = $_REQUEST["imyaPolzovatelya"];
print "Привет $imyaPolzovatelya <br>";
?>

Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru  

 

12

 
2. Измените предыдущую веб-страницу чтобы в ней использовалась передача данных по методу get.
Обратите внимание на адресную строку.
Подсказка:

Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru  

 

13

 
3. Создайте веб-страницу и разместите на ней ссылки в которых бы использовалась передача данных по
методу get.
Пусть эти ссылки указывают на ваши излюбленные поисковые системы, сайты местных новостей и погоды и
другие интересные вам веб-ресурсы.
Подсказка:

http://yandex.ru/yandsearch?text=php&site=&rstr=10306&zone=all&wordforms=all&lang=en&within=1&from_day=29&from_month=9&from_year=2012&to_day=13&to_month=10&to_year=2012
&mime=html&numdoc=10&lr=10596
<a href= "адрес_ссылки_с_передачей_параметров ">открыть страницу</a>

Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru  

 

14

 
3. Напишите программу, описывающую человека. Создайте соответствующую форму для ввода данных и
выведите готовый текст при помощи РНР-сценария.
Подсказка:
<html>
<body>
<h1>Укажите данные о себе</h1>
<form
method="post"
action="obrabotchik.php">
Пожалуйста введите имя человека:
<input
type="text"
name="imyaPolzovatelya"
value="Ваше имя?" />
<br>
Пожалуйста введите пароль:
<input
type="password"
name="porolPolzovatelya"
value=""/>
<br>
Пожалуйста выберите гражданство:
<input
type="radio"
name="grazhdanstvo"
value="RF"> РФ
<input
type="radio"
name="grazhdanstvo"
value="Drugoe"> Другое <br>
Пожалуйста выберите цвет глаз:
<select size="3" name="cvetGlaz">
<option value ="Karie" selected>Карие</option>
<option value ="Golubie">Голубые</option>
<option value ="Drugie">Другие</option>
</select>
<br>
<input

type="submit"
value="Отправить данные"/>

</form>
</body>
</html>

<?php
$imyaPolzovatelya = $_REQUEST["imyaPolzovatelya"];
$parolPolzovatelya = $_REQUEST["parolPolzovatelya"];
$grazhdanstvo = $_REQUEST["grazhdanstvo"];
$cvetGlaz = $_REQUEST["cvetGlaz"];
print "Привет $imyaPolzovatelya.
Вы вводили пароль $parolPolzovatelya.
Ваше гражданство $grazhdanstvo.
Вы указали $cvetGlaz цвет глаз."
?>

Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru  

 

15

 
ЛАБОРАТОРНАЯ РАБОТА № 3. УПРАВЛЕНИЕ ПРОГРАММОЙ С ПОМОЩЬЮ УСЛОВИЙ И
ФУНКЦИЙ.
1. Напишите программу, бросающую игральные кости с 4 и 10 гранями.
Подсказка:

<?php
$sluchChis = rand(1,3);
print "Случайное число равно $sluchChis<br>";
if ($sluchChis == 1) {
print "<imgsrc=foto$sluchChis.jpg>";
} else
if ($sluchChis == 2) {
print "<imgsrc=foto$sluchChis.jpg>";
} else
if ($sluchChis == 3) {
print "<imgsrc=foto$sluchChis.jpg>";
}
?>

Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru  

 

16

 
2. Напишите программу, позволяющую пользователю решить сколько граней будет у кости используя элемент
выбора флажок.Выведите на экран случайно брошенную кость с учетом ограничения по количеству граней
(можно просто выводить цифру).
Подсказка:

<html>
<body>
<h1>Выберите максимальное число граней</h1>
<form
method="post"
action="obrabotchik.php">
<select size="3" name="chisloGranei">
<option value ="1" selected>1 грань</option>
<option value ="2">2 грани</option>
<option value ="3">3 грани</option>
</select>
<br>
<input

type="submit"
value="Отправить данные"/>

</form>
</body>
</html>
<?php
$chisloGranei = $_REQUEST["chisloGranei"];
$sluchChis = rand(1,$chisloGranei);
print "Случайноечислоравно $sluchChis<br>";
if ($sluchChis == 1) {
print "<imgsrc=foto$sluchChis.jpg>";
} else
if ($sluchChis == 2) {
print "<imgsrc=foto$sluchChis.jpg>";
} else
if ($sluchChis == 3) {
print "<imgsrc=foto$sluchChis.jpg>";
}
?>

Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru  

 

17

 
3. Измените первую программу таким образом, чтобы форма и программа хранились в одном файле.
Подсказка:

<?php
$pereklychatel = $_REQUEST["pereklychatel"]; //получить значение переменной переключатель
if (empty($pereklychatel)) {
//проверить пуста ли переменная
print "<formmethod=get>";
//создать форму с отправкой данных методом get (для отслеживания)
print "<input type=text name=pereklychatel><br>";
//создатьполеввода
print "<inputtype=submitvalue=отправить>"; //создать кнопку передачи данных
print "</form>";
} else {
print "Программа запущена 2й раз";
}
?>

Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru  

 

18

 
4. Создайте программу «шулерская кость», которая будет выбрасывать 1 в половине случаев и какое-либо
другое значение –в другой.
Подсказка:

<?php
$pereklychatel = $_REQUEST["pereklychatel"];
if (empty($pereklychatel)) {
print "Случайное число равно <b>1</b>";
print "<form method=get>";
print "<input type=submit value=броситьчисло>";
print "<input type=hidden name=pereklychatel value=1><br>";
print "</form>";
} else {
$sluchChis = rand(2, 100);
print "Случайноечислоравно<b>$sluchChis</b>";
print "<form method=get>";
print "<input type=submit value=броситьчисло>";
print "<input type=hidden name=pereklychatel value=><br>";
print "</form>";
}
?>

Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru  

 

19

 
5. Создайте генератор веб-страниц. Подготовьте форму, в которую бы вводился заголовок страницы, цвет
фона, цвет шрифта и текст страницы. Сгенерируйте HTML-страницу с помощью этой формы.
Подсказка:
<html>
<body>
<h1>Укажите параметры веб-страницы</h1>
<form
method="post"
action="obrabotchik.php">
Введите заголовок страницы:
<input
type="text"
name="zagolovok"
value="Страница 1" />
<br>
Пожалуйста укажите цвет фона в HEX-формате:
<br>
<table border="0">
<tr>
<td>Красный:</td>
<td><input
type="text" size="2" name="R" value="FF" /><br></td>
</tr>
<tr>
<td>Зеленый:</td>
<td><input
type="text" size="2" name="G" value="00" /><br></td>
</tr>
<tr>
<td>Голубой:</td>
<td><input
type="text" size="2" name="B" value="00" /><br></td>
</tr>
</table>
Пожалуйста выберите цвет шрифта:
<select name="cvetShrifta">
<option value ="Green">Зеленый</option>
<option value ="Blue">Голубой</option>
</select>
<br>
Введитетекстстраницы: <br>
<textarea name="tekst" rows="10" cols="50">
Введите свой текст.
</textarea>
<br>
<input

type="submit"
value="Генерировать страницу"/>

</form>
</body>
</html>

Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru  

 

20

 
<?php
$zagolovok = $_REQUEST["zagolovok"];
$R = $_REQUEST["R"];
$G = $_REQUEST["G"];
$B = $_REQUEST["B"];
$cvetShrifta = $_REQUEST["cvetShrifta"];
$tekst = $_REQUEST["tekst"];
print "<html>";
print "<head><title>$zagolovok</title></head>";
print "<body bgcolor=$R$G$B>";
print "<font color=$cvetShrifta>";
print "$tekst";
print "</font>";
print "</body>";
print "</html>";
?>

Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru  

 

21

 
ЛАБОРАТОРНАЯ РАБОТА № 4. ЦИКЛЫ И МАССИВЫ.
1. Напишите игру «Казино».
В начале игры вы получаете 100 руб. на счет.
Ставка в каждом розыгрыше составляет 2 руб.
ПК бросает 5 костей.
Вы решаете, какую кость оставить, а какую – бросить снова.
После второго броска ПК проверяет выпавшие комбинации костей.
Вы выигрываете деньги, если выпало 2, 3, 4 или 5 одинаковых цифр или стрит (5 цифр по порядку).
ИЗМЕНИТЕ ИГРУ «ПОКЕР В КОСТИ» С ПОМОЩЬЮ CSS.
ДОБАВЬТЕ СОБСТВЕННЫЙ ФОН, ПОМЕНЯЙТЕ ИЗОБРАЖЕНИЯ КОСТЕЙ ИЛИ МОДИФИЦИРУЙТЕ
СУММЫ ВЫПЛАТ, СМЕСТИВ ИГРОВОЙ БАЛАНС ПО СВОЕМУ ЖЕЛАНИЮ.
КОД ДАННОЙ ПРОГРАММЫ РАБОТАЕТ НЕКОРРЕКТНО!!!
ИСПРАВЬТЕ ЕГО В СООТВЕТСТВИИ С УСЛОВИЕМ ЗАДАЧИ!
Подсказка:

<?php
$etoVtoroiBrosok = $_REQUEST["etoVtoroiBrosok"];
$schet = $_REQUEST["schet"];
//у тега form отсутствует атрибут action, поэтому форма обратится сама к себе
//если программа запущена впервые
if (empty($schet)) {
$schet = 100;
}
function brositKosti() {
global $kost, $etoVtoroiBrosok, $galochka;
print "<table border = 1> <td><tr>";
//если это первый бросок, то галочку необходимо вывести под каждой костью
//галочка передает значение ТОЛЬКО если она отмечена
for ($i = 0; $i < 5; $i++) {
if($galochka[$i] == ""){
$kost[$i] = rand(1,6);
} else {
$kost[$i] = $galochka[$i];
}
//необходимо сохранить в папке изображения костей 50x50 px с именем типа f1.jpg, f2.jpg и т.д.
$kartinka = "f$kost[$i].jpg";
//вывод изображения кости
print "<td><img src=$kartinka height=50 width=50><br>";
//вывести галочки только при первом броске
if ($etoVtoroiBrosok == FALSE) {
//checked=true
print "<input type=checkbox name=$galochka[$i] value=$kost[$i]> </td>";
}
} //завершение цикла for
//вывод кнопки и окончание таблицы
print "</tr></td>";
print "<tr> <td colspan=5> <input type=submit value=OK> </td> <tr>";
print "</table>";
} //завершение функции brositKosti
function podschet() {
//цель функции: каждый кон получать ставку от игрока в размере 2 рублей.
global $kost, $schet;
//обнулить сумму выигрыша
$summa = 0;
//вычесть ставку на этот кон
$schet -= 2;
//подсчет костей
//в массиве sovpadenieChisel храниться сколько раз выпало то или иное значение
//при анализе проще определить различные комбинации
//$sovpadenieChisel[1] содержит число единиц, выпавших в костях
//$sovpadenieChisel[2] отображает сколько выпало двоек и т.д.
//$sovpadenieChisel = array[6];
for ($zn = 1; $zn <6; $zn++) {
for ($chKost = 0; $chKost < 5; $chKost++) {
if ($kost[$chKost] == $zn) {

Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru  

 

22

 
$sovpadenieChisel[$zn]++;
}
}
}
//выводим результаты
//for ($i = 1; $i <= 6; $i++) {
//print "$i: $znachKosti[$i] <br>";
//}
//считаем комбинации по два, три, четыре, пять
$chisloDvoek = 0;
$chisloTroek = 0;
$chisloChetverok = 0;
$chisloPyaterok = 0;
//если на костях выпало 1, 1, 5, 5, 5 то $sovpadenieChisel[1] будет равно 2
//а $sovpadenieChisel[5] будет равно 3
//после switch $chisloDvoek будет равно 1 и $chisloTroek тоже будет равно 1, а остальные переменные будут равны нулю
for ($i = 1; $i <= 6; $i++) {
switch($sovpadenieChisel[$i]){
case 2: $chisloDvoek++;
break;
case 3: $chisloTroek++;
break;
case 4: $chisloChetverok++;
break;
case 5: $chisloPyaterok++;
break;
}
}
//проверяем, есть ли две пары
if ($chisloDvoek == 2) {
print "У вас две пары <br>";
$summa = 1;
}
//проверяем, есть ли три или три плюс два
if ($chisloTroek == 1) {
if ($chisloDvoek == 1) {
//три плюс два
print "У вас full house (3+2) <br>";
$summa = 5;
} else {
print "У вас три одинаковых значения<br>";
$summa = 2;
}
}
//ищем 4 одинаковых значения
if ($chisloChetverok == 1) {
print "У вас четыре одинаковых значения<br>";
$summa = 5;
}
//ищем 5 одинаковых значения
if ($chisloPyaterok == 1) {
print "У вас пять одинаковых значений<br>";
$summa = 10;
}
//ищем стрит
if (($sovpadenieChisel[1] == 1)
&& ($sovpadenieChisel[2] == 1)
&& ($sovpadenieChisel[3] == 1)
&& ($sovpadenieChisel[4] == 1)
&& ($sovpadenieChisel[5] == 1)) {
print "У вас стрит (5 цифр по порядку)<br>";
$summa = 10;
}
if (($sovpadenieChisel[2] == 1)
&& ($sovpadenieChisel[3] == 1)
&& ($sovpadenieChisel[4] == 1)
&& ($sovpadenieChisel[5] == 1)
&& ($sovpadenieChisel[6] == 1)) {
print "У вас стрит (5 цифр по порядку)<br>";
$summa = 10;
}
print "Вы выиграли 2 руб.<br>";
print "Ваша сумма $summa руб.<br>";
$schet += $summa;
} //конец функции podschet
print "<form method=get>";
//функция бросающая кость и выводящая их на экран
brositKosti();
if ($etoVtoroiBrosok == TRUE) {
print "<br>Был совершен 2й бросок<br>";
$etoVtoroiBrosok = FALSE; //выполняется второй бросок
podschet(); //подсчитать выигрыш или проигрыш
} else {
print "<br>Компьютер бросил кости, какие кости бросить повторно? <br>";
$etoVtoroiBrosok = TRUE;
}
vivodRezultatov();
function vivodRezultatov() {
//вывод результатов
global $schet, $etoVtoroiBrosok;
print "Счет: $schet";
print "<br><b>Примечание: </b>в случае нуля совпадений, не забывайте что за бросок от общей суммы счета отнимается 2 руб.";
//сохраняем переменные в скрытых полях
print "<input type=hidden name=etoVtoroiBrosok value=$etoVtoroiBrosok>";
print "<input type=hidden name=schet value=$schet>";
} //конец vivodRezultatov
print "</form>";
?>

Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru  

 

23

 
<?php session_start() ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="EN" dir="ltr" xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>poker dice</title>
<link rel = "stylesheet"
type = "text/css"
href = "pd.css" />
</head>
<body>
<h1>pokerDice.php</h1>
<?php
//set things up if it's the first time here, otherwise play
if (filter_has_var(INPUT_POST, "doNext")){
play();
} else {
startGame();
} // end if
function play(){
//alternate control between firstPass and secondPass
//functions based on $doNext
$doNext = filter_input(INPUT_POST, "doNext");
if ($doNext == "firstPass"){
firstPass();
} else {
secondPass();
evaluate();
} // end if
} // end play
function startGame(){
// if it's the first time here, set up initial cash,
// and do firstPass
$cash = 100;
$_SESSION["cash"] = 100;
firstPass();
} // end reset
function firstPass(){
$cash = $_SESSION["cash"];
print <<< HERE
<h2>First Pass</h2>
<form method = "post"
action = "">
<fieldset>
HERE;
for ($i = 0; $i < 5; $i++){
$die[$i] = rand(1, 6);
//print "$i: $die[$i] ";
print <<< HERE
<div class = "dieImage">
<img src = "die$die[$i].jpg"
alt = "$i" />
<input type = "checkbox"
name = "keepIt[$i]"
value = "$die[$i]" />
</div>
HERE;
} // end for
print <<< HERE
<input type = "hidden"
name = "doNext"
value = "secondPass" />
<button type = "submit">
go
</button>
<p>Cash: $cash</p>
</fieldset>
</form>
HERE;
$_SESSION["cash"] = $cash;
} // end firstPass
function secondPass(){
global $die;
//get cash from session variable
$cash = $_SESSION["cash"];
//print "cash: $cash <br />";
print <<< HERE
<h2>Second Pass</h2>
<form method = "post"
action = "">
<fieldset>
HERE;
//check to see if keepIt exists
// (which happens if any of the checkboxes is checked)
if (filter_has_var(INPUT_POST, "keepIt")){
//pull all values from form
$formVals = filter_input_array(INPUT_POST);
//extract $keepIt array (easiest way to handle array input)
$keepIt = $formVals["keepIt"];
for ($i = 0; $i < 5; $i++){
//if any values are empty, replace them with zero
if (empty($keepIt[$i])){
$keepIt[$i] = 0;
} // end if
//print "$i) $keepIt[$i] <br />";
} // end for loop
} else {
//keepIt doesn't exist, so make it with
//all zero values
$keepIt = array(0, 0, 0, 0, 0);
} // end if
for ($i = 0; $i < 5; $i++){
//replace the image if the current value
//of keepIt is non-zero
if ($keepIt[$i] == 0){
$die[$i] = rand(1, 6);
} else {
$die[$i] = $keepIt[$i];
} // end if
print <<< HERE
<div class = "dieImage">
<img src = "die$die[$i].jpg"
alt = "$i" />
</div>
HERE;
} // end for
print <<< HERE
<input type = "hidden"
name = "doNext"
value = "firstPass" />
<button type = "submit">
go
</button>
</fieldset>
</form>
HERE;
} // end secondPass
function evaluate(){
global $die;
//set up payoff
$payoff = 0;
//create $numVals
for($i = 1; $i <= 6; $i++){
$numVals[$i] = 0;
} // end for loop
//count the dice
for ($theVal = 1; $theVal <= 6; $theVal++){
for ($dieNum = 0; $dieNum < 5; $dieNum++){
if ($die[$dieNum] == $theVal){
$numVals[$theVal]++;
} // end if
} // end dieNum for loop
} // end theVal for loop
//print out results
// for ($i = 1; $i <= 6; $i++){
//
// } // end for loop

print "$i: $numVals[$i]<br />n";

//count how many pairs, threes, fours, fives
$numPairs = 0;
$numThrees = 0;
$numFours = 0;
$numFives = 0;
for ($i = 1; $i <= 6; $i++){
switch ($numVals[$i]){
case 2:
$numPairs++;
break;
case 3:
$numThrees++;
break;
case 4:
$numFours++;
break;
case 5:
$numFives++;
break;
} // end switch
} // end for loop
print "<p> n";
//check for two pairs
if ($numPairs == 2){
print "You have two pairs!<br />n";
$payoff = 1;
} // end if
//check for three of a kind and full house
if ($numThrees == 1){
if ($numPairs == 1){
//three of a kind and a pair is a full house
print "You have a full house!<br />n";
$payoff = 5;
} else {

Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru  

 

24

 
print "You have three of a kind!<br />n";
$payoff = 2;
} // end 'pair' if
} // end 'three' if
//check for four of a kind
if ($numFours == 1){
print "You have four of a kind!<br />n";
$payoff = 5;
} // end if
//check for five of a kind
if ($numFives == 1){
print "You got five of a kind!<br />n";
$payoff = 10;
} // end if
//check for straights
if (($numVals[1] == 1)
&& ($numVals[2] == 1)
&& ($numVals[3] == 1)
&& ($numVals[4] == 1)
&& ($numVals[5] == 1)){
print "You have a straight!<br />n";
$payoff = 10;
} // end if
if (($numVals[2] == 1)
&& ($numVals[3] == 1)
&& ($numVals[4] == 1)
&& ($numVals[5] == 1)
&& ($numVals[6] == 1)){
print "You have a straight!<br />n";
$payoff = 10;
} // end if
$cash = $_SESSION["cash"];
//print "Cash: $cash<br />n";
//subtract some money for this roll
$cash -= 2;
print "You bet 2<br />n";
print "Payoff is $payoff<br />n";
$cash += $payoff;
print "Cash: $cash<br />n";
print "</p> n";
//store cash back to session:
$_SESSION["cash"] = $cash;
} // end evaluate
?>
</body>
</html>

2. Напишите игру «Угадай число».
Пусть компьютер создает число и дает пользователю возможность его угадать.
Сообщайте пользователю, является ли его ответ слишком большим, слишком маленьким или правильным.
После того как пользователь угадает значение, сообщите ему, сколько попыток для этого
потребовалось.
Для этой игры не нужны массивы, зато понадобится хранить данные в скрытых полях формы.
Подсказка:

Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru  

 

25

 
<?php
//создаем форму ввода, а данные отправляем в файл 2.php методом get (через адресную строку)
print "<form method=get action=2.php>";
print "Угадай число от 0 до 100 <br><br>";
print "Введите свой ответ: ";
//создаем поле ввода ответа
print "<input type=text size = 3 name=otvetPolzovatelya> <br>";
//создаем кнопку отправки ответа
print "<input type=submit value=OK>";
//функция генерирует случайное число в диапазоне от 0 до 100
function zagodatChislo() {
$sluchChis = rand(0, 100);
//используем скрытое поле для сохранения значения переменной $sluchChis
print "<input type=hidden size = 3 name=sluchChis value=$sluchChis> <br>";
} //конец zagodatChislo
//вызываем функцию создания случайного числа
zagodatChislo();
print "</form>";
?>
<?php
//принимаем значения переменных из файла 1.php
$sluchChis = $_REQUEST["sluchChis"];
$otvetPolzovatelya = $_REQUEST["otvetPolzovatelya"];
//создаем форму для отправки данных самой себе
//т.к. данный файл содержит функцию проверки введенного пользователем числа
print "<form method=get action=2.php>";
//функция проверяющая совпадение ответа пользователя со сгенерированным случайным числом
function proveritChisla() {
//объявляем переменные глобальными, т.к. используются и за пределами функции
global $otvetPolzovatelya, $sluchChis;
if ($otvetPolzovatelya == $sluchChis) {
print "Вы угадали! Число равно $sluchChis.";
print "<br> <a href=1.php>Запустить игру повторно?</a>";
} else if ($otvetPolzovatelya < $sluchChis) {
print "Случайное число больше!";
} else {
print "Случайное число меньше!";
}
} //конец proveritChisla
//первый блок if требует того, чтобы пользователь ввел какое либо число
if (empty($otvetPolzovatelya)) {
print "Ошибка ввода ответа! <br>";
print "<a href=1.php>Запустить игру повторно?</a>";
print "<br> Случайное число равнялось: $sluchChis";
Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru  

 

26

 
} else {
//ВЫЗЫВАЕМ ФУНКЦИЮ СРАВНЕНИЯ ОТВЕТА СО СЛУЧАЙНЫМ ЧИСЛОМ
proveritChisla();
//если введеное число больше ИЛИ меньше случайного числа
//то необходимо создать поле ввода ответа, для повторного ввода значения пользователем
if ($otvetPolzovatelya != $sluchChis) {
print "<br>Введите свой ответ: ";
print "<input type=text size = 3 name=otvetPolzovatelya> <br>";
//сохраняем введенный во второй раз ответ пользователя в скрытое поле
print "<input type=hidden size = 3 name=sluchChis value=$sluchChis> <br>";
print "<input type=submit value=OK>";
}
} //конец if
?>

Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru  

 

27

 
3. Перепишите игру «Угадай число» наоборот.
Пусть пользователь загадывает случайное число от 1 до 100, а компьютер угадывает правильный ответ.
Пользователь будет выбирать из вариантов «слишком много», «слишком мало», «угадал».
Ваш алгоритм должен угадывать любое число не больше чем за семь ходов.
Подсказка:

<?php
//создаем форму ввода, а данные отправляем в файл 2.php методом get (через адресную строку)
print "<form method=get action=2.php>";
print "Компьютер попытается угадать ваше число!";
print "<br> Придумайте число от 0 до 100: ";
//создаем поле ввода ответа
print "<input type=text size=3 name=chisloPolzovatelya> <br>";
//создаем кнопку отправки ответа
print "<input type=submit value=OK>";
print "</form>";
?>
<?php
//принимаем значение переменной из файла 1.php
$chisloPolzovatelya = $_REQUEST["chisloPolzovatelya"];
//создаем форму для отправки данных самой себе
print "<form method=get action=2.php>";
Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru  

 

28

 
//ПК генерирует случайное число в диапазоне от 0 до 100 и сверяет его с "придуманным" числом
function PCugadivaetChislo() {
global $chisloPolzovatelya, $sluchChis;
$sluchChis = rand(0, 100);
//используем скрытое поле для сохранения значения переменной $sluchChis
print "<input type=text size = 3 name=chisloPolzovatelya value=$chisloPolzovatelya> <br>";
print "<input type=text size = 3 name=sluchChis value=$sluchChis> <br>";
if ($chisloPolzovatelya == $sluchChis) {
print "ПК отгадал Ваше число! Число равно $sluchChis.";
print "<br> <a href=1.php>Запустить игру повторно?</a>";
} else if ($chisloPolzovatelya < $sluchChis) {
print "ПК необходимо уменьшить число!<br>";
print "<input type=submit value=OK>";
} else {
print "ПК необходимо увеличить число!<br>";
print "<input type=submit value=OK>";
}
} //конец PCugadivaetChislo
//первый блок if требует того, чтобы пользователь ввел какое-либо число
if (empty($chisloPolzovatelya)) {
print "Вы не придумали число! <br>";
print "<a href=1.php>Запустить игру повторно?</a>";
} else {
PCugadivaetChislo();
}
print "</form>";
?>

Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru  

 

29

 
4. Напишите программу, случайным образом сдающую карты для игры в покер.
Она должна просто сдать пять случайных карт.
Для хранения колоды используйте массив.
Подсказка:

<?php
print "Программа выдающая (генерирующая) 5 карт (случайных чисел в диапазоне от 0 до 35) <br>";
//создаем массив значений (имен файлов с изображением карт)
$cards = array( "2c.gif", "2d.gif", "2h.gif", "2s.gif", //крести, буби, черви, пики
"3c.gif", "3d.gif", "3h.gif", "3s.gif",
"4c.gif", "4d.gif", "4h.gif", "4s.gif",
"5c.gif", "5d.gif", "5h.gif", "5s.gif",
"6c.gif", "6d.gif", "6h.gif", "6s.gif",
"7c.gif", "7d.gif", "7h.gif", "7s.gif",
"8c.gif", "8d.gif", "8h.gif", "8s.gif",
"9c.gif", "9d.gif", "9h.gif", "9s.gif",
"tc.gif", "td.gif", "th.gif", "ts.gif", //десятка
"jc.gif", "jd.gif", "jh.gif", "js.gif", //валет
"qc.gif", "qd.gif", "qh.gif", "qs.gif", //королева
"kc.gif", "kd.gif", "kh.gif", "ks.gif",
//король
"ac.gif", "ad.gif", "ah.gif", "as.gif" ); //туз
//пусть значение карт равно 1
$c1 = $c2 = $c3 = $c4 = $c5 = 1;
//пока одно из случайных чисел равно другому случайному числу требуется создавать случайные
числа
while (
($c2 == $c1)
| ($c3 == $c2) | ($c3 == $c1)
| ($c4 == $c3) | ($c4 == $c2) | ($c4 == $c1)
| ($c5 == $c4) | ($c5 == $c3) | ($c5 == $c2) | ($c5 == $c1)
){
//требуется число в диапазоне от 0 до 35 (36 чисел)
//т.к. первый элемент массива имеет индекс 0
//т.е. cards[0] = 2c.gif
$c1 = rand(0,35);
$c2 = rand(0,35);
$c3 = rand(0,35);
$c4 = rand(0,35);
$c5 = rand(0,35);
};
//пять случайных чисел создано
print "Эти случайные числа есть индексы массива cards: $c1, $c2, $c3, $c4, $c5 <br>";
print "<img src= ./papka_s_kartami/$cards[$c1]> ";
print "<img src= ./papka_s_kartami/$cards[$c2]> ";
print "<img src= ./papka_s_kartami/$cards[$c3]> ";
Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru  

 

30

 
print "<img src= ./papka_s_kartami/$cards[$c4]> ";
print "<img src= ./papka_s_kartami/$cards[$c5]> ";
//$имя_массива[$переменная_карта_(сл.число)]
// => cards[c1] =>
// => cards[случайное_число_от_0_до_35]
// => cards[1]
// => 2d.gif
?>

Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru  

 

31

 
ЛАБОРАТОРНАЯ РАБОТА № 5. РАБОТА С ФАЙЛАМИ.
1. Написать программу сохраняющую файл на ПК.
Подсказка:
<?php
$moi_tekst = "Данный текст будет записан в файл.";
//открыть файл на стороне сервера, если его не существует, то создать
//в качестве имени можно указать относительную ссылку
//функция fopen возвращает целое число (дескриптор, указатель), которое используется
//для обращения в следующих функциях
//w – модификатор доступа write (содержимое перезаписывается)
//r – модификатор доступа read
//a – модификатор доступа add (запись в конец файла)
//r+w+ – чтение и запись
//файл tekst_file.txt будет размещен в папке с php-программой, например, в папке www
$zapis_chtenie = fopen("tekst_file.txt", "w");
//указываем куда записать данные и какие
fputs($zapis_chtenie, $moi_tekst);
//завершить запись в файл
fclose($zapis_chtenie);
?>

Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru  

 

32

 
2. Написать программу считывающую файл и выводящую его содержимое.
Подсказка:
<?php
//если файл не существует вместо указателя получим FALSE
$zapis_chtenie = fopen("tekst_file.txt", "r");
//вывод первой строки текста из файла
$stroka = fgets($zapis_chtenie);
print "<center>$stroka</center> <br>";
//вывод оставшейся части текста
//пока не достигнут конец файла
while(!feof($zapis_chtenie)) {
//получить одну строку файла
$stroka = fgets($zapis_chtenie);
print "$stroka <br>";
}
fclose($zapis_chtenie);
?>

Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru  

 

33

 
3. Написать программу выводящую список файлов jpg, gif содержащихся в заданной папке.
Подсказка:
<?php
//программа выводит картинки, хранящиеся в папке с php-программой в браузер
//а также создает файл с названиями gif-, jpg-файлов, хранящихся в папке
//указываем путь к папке с картинками
//список будет сохранен в файле spisok_kartinok.html
$imyaPapki = "C:wampwww";
$deskriptor_papki = opendir($imyaPapki);
//изменить текущий каталог на указанный в качестве параметра
//возвращает TRUE в случае успешного завершения или FALSE в случае ошибки
chdir($imyaPapki);
//записать имена всех файлов в переменную $massiv_failov
while ($tekushii_fail !== false){
$tekushii_fail = readDir($deskriptor_papki);
$massiv_failov[] = $tekushii_fail;
} // конец цикла while
//извлекаем картинки gif и jpg из массива со списком файлов
//фильтруем картинки в соответствии с заданным шаблоном
//используем регулярные выражения
// | означает ИЛИ
// $ означает КОНЕЦ СТРОКИ (дополнительно смотри операторы регулярных выражений)
$kartinki = preg_grep("/jpg$|gif$/", $massiv);
//создаем файл для сохранения списка картинок
$fp = fopen("spisok_kartinok.html", "w");
foreach ($kartinki as $tekushii_fail) {
//выводим картинку в браузер
$vivod_v_brauzer = $tekushii_fail;
print "<img src=$vivod_v_brauzer height=50 width=50> <br><br>";
//записываем имя картинки в файл
fputs ($fp, $vivod_v_brauzer);
fputs ($fp, " ");
} // конец цикла foreach
//сохраняем текстовый файл с именами картинок
fclose($fp);
?>

Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru  

 

34

 
ОПЕРАТОРЫ РЕГУЛЯРНЫХ ВЫРАЖЕНИЙ
ОПЕРАТОР

ОПИСАНИЕ

ПРИМЕР
ШАБЛОНА

СОВПАДЕНИЕ

НЕСОВПАДЕНИЕ

.

Любой символ кроме перевода на
новую строку

.

e

n

^

Начало строки

^a

apple

banana

$

Конец строки

a$

banana

apple

[characters]

Любой символ в скобках

[abcABC]

a

d

[char range]

Диапазон символов

[a-zA-z]

r

9

d

Любая цифра

ddd-dddd

123–4567

the-thing

b

Границы слова

btheb

the

theater

+

Одно или более вхождение
предыдущего символа

d+

1234

text

*

Ни одного или несколько вхождений
предыдущего символа

[a-zA-z]d*

{digit}

Повторить предыдущий символ
указанное число раз

d{3}-d{4}

123–4567

999-99-9999

|

Оператор ИЛИ

apple|banana

apple, banana

peach

(pattern
segment)

Сохранить результат в шаблоне
памяти, возвращенном численным
кодом

(^.).*/1

gig, blab (любое другое слово начинающееся или any other word
заканчивающееся одной и той же буквой)

Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru  

 

35

 
4. Улучшите программу тестирования. Добавьте возможность отправки результатов тестирования по
электронной почте, анализ результатов тестирования, улучшите страницу редактирования тестов или добавьте
что-нибудь свое.
QuizMachine.php
(главная страница)

editQuiz.php
(редактировать
тест)

takeQuiz.php
(вывод теста)

showLog.php
(вывод журнала
ответов)

writeQuiz.php
(сохранение
файлов теста)

gradeQuiz.php
(проверка
ответов)

QuizMachine.php – Панель управления – стартовое окно программы
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="EN" dir="ltr" xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Quiz Builder</title>
<link rel = "stylesheet"
type = "text/css"
href = "quiz.css" />
</head>
<body>
<h1>Quiz Machine</h1>
<?php
getFiles();
showTest();
showEdit();
showLog();
function getFiles(){
//get list of all files for use in other routines
global $dirPtr, $theFiles;
chdir(".");
$dirPtr = openDir(".");
$currentFile = readDir($dirPtr);
while ($currentFile !== false){
$theFiles[] = $currentFile;
$currentFile = readDir($dirPtr);
} // end while
} // end getFiles
function showTest(){
//print a list of tests for user to take
global $theFiles;
//select only quiz html files
$testFiles = preg_grep("/mas$/", $theFiles);
//generate the select box first
$selQuiz = " <select name = "takeFile"> n";
Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru  

 

36

 
foreach ($testFiles as $myFile){
$fileBase = substr($myFile, 0, strlen($myFile) - 4);
$selQuiz .= <<<HERE
<option value = "$fileBase">
$fileBase
</option>
HERE;
} // end foreach
$selQuiz .= " </select> n";
print <<<HERE
<form action = "takeQuiz.php"
method = "post">
<fieldset>
<h3>Take a quiz</h3>
<label>quiz password</label>
<input type = "password"
name = "password" />
<label>quiz</label>
$selQuiz
<button type = "submit">
Take quiz
</button>
</fieldset>
</form>
HERE;
} // end showTest
function showEdit(){
// let user select a master file to edit
global $theFiles;
//get only quiz master files
$testFiles = preg_grep("/mas$/", $theFiles);
//generate the select box first
$selEdit = " <select name = "editFile"> n";
foreach ($testFiles as $myFile){
$fileBase = substr($myFile, 0, strlen($myFile) - 4);
$selEdit .= <<<HERE
<option value = "$fileBase">
$fileBase
</option>
HERE;
} // end foreach
// add a 'new quiz' option
$selEdit .= <<<HERE
<option value = "new">
new quiz
</option>
HERE;
$selEdit .= "

</select> n";

//edit a quiz
Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru  

 

37

 
print <<<HERE
<form action = "editQuiz.php"
method = "post">
<fieldset>
<h3>Edit a quiz</h3>
<label>admin password</label>
<input type = "password"
name = "password"
value = "absolute"/>
<label>quiz</label>
$selEdit
<button type = "submit">
Edit quiz
</button>
</fieldset>
</form>
HERE;
} // end showEdit
function showLog(){
//let user choose from a list of log files
global $theFiles;
$testFiles = preg_grep("/log$/", $theFiles);
//generate the select box first
$selLog = " <select name = "logFile"> n";
foreach ($testFiles as $myFile){
$fileBase = substr($myFile, 0, strlen($myFile) - 4);
$selLog .= <<<HERE
<option value = "$fileBase">
$fileBase
</option>
HERE;
} // end foreach
$selLog .= " </select> n";
//edit a quiz
print <<<HERE
<form action = "showLog.php"
method = "post">
<fieldset>
<h3>View a quiz log</h3>
<label>admin password</label>
<input type = "password"
name = "password"
value = "absolute" />
<label>quiz</label>
$selLog
<button type = "submit">
View log
</button>
</fieldset>
</form>
HERE;
Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru  

 

38

 
} // end showLog
?>
</body>
</html>
editQuiz.php – Редактор теста – вызывается через QuizMachine.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="EN" dir="ltr" xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Quiz Builder</title>
<link rel = "stylesheet"
type = "text/css"
href = "quiz.css" />
</head>
<body>
<h1>Edit a Quiz</h1>
<?php
//retrieve variables from form
$password = filter_input(INPUT_POST, "password");
$editFile = filter_input(INPUT_POST, "editFile");
if ($password != "absolute"){
print <<<HERE
<p class = "error">
Incorrect Password.<br />
You must have a password in order to edit this quiz.
</p>
</body>
</html>
HERE;
} else {
//check to see if user has chosen a form to edit
if ($editFile == "new"){
//if it's a new file, put in some dummy values
$quizName = "sample test";
$quizEmail = "root@localhost";
$quizData = "q:a:b:c:d:correct";
$quizPwd = "php";
} else {
//open up the file and get the data from it
$editFile .= ".mas";
$fp = fopen($editFile, "r");
$quizName = fgets($fp);
$quizEmail = fgets($fp);
$quizPwd = fgets($fp);
$quizData = "";
while (!feof($fp)){
$quizData .= fgets($fp);
} // end while
} // end 'new form' if
print <<<HERE
<form action = "writeQuiz.php"
method = "post">
<fieldset>
Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru  

 

39

 
<label>Quiz Name</label>
<input type = "text"
name = "quizName"
value = "$quizName" />
<label>Instructor Email</label>
<input type = "text"
name = "quizEmail"
value = "$quizEmail" />
<label>Password</label>
<input type = "text"
name = "quizPwd"
value = "$quizPwd" />
<textarea name = "quizData"
rows = "20"
cols = "60">
$quizData</textarea>
<button type = "submit">
save quiz
</button>
</fieldset>
</form>
HERE;
} // end if
?>
</body>
</html>
writeQuiz.php – Запись теста
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="EN" dir="ltr" xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Write Quiz</title>
<link rel = "stylesheet"
type = "text/css"
href = "quiz.css" />
</head>
<body>
<?php
//given a quiz file from editQuiz,
//generates a master file and an HTML file for the quiz
//load variables from form
$quizName = filter_input(INPUT_POST, "quizName");
$quizEmail = filter_input(INPUT_POST, "quizEmail");
$quizPwd = filter_input(INPUT_POST, "quizPwd");
$quizData = filter_input(INPUT_POST, "quizData");
//open the output file
$fileBase = str_replace(" ", "_", $quizName);
$htmlFile = $fileBase . ".html";
$masFile = $fileBase . ".mas";
$htfp = fopen($htmlFile, "w");
$htData = buildHTML();
fputs($htfp, $htData);
fclose($htfp);
$msfp = fopen($masFile, "w");
Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru  

 

40

 
$msData = buildMas();
fputs($msfp, $msData);
print <<<HERE
<pre>
$msData
</pre>
HERE;
fclose($msfp);
function buildMas(){
//builds the master file
global $quizName, $quizEmail, $quizPwd, $quizData;
$msData = $quizName . "n";
$msData .= $quizEmail . "n";
$msData .= $quizPwd . "n";
$msData .= $quizData;
return $msData;
} // end buildMas
function buildHTML(){
global $quizName, $quizData;
$htData = <<<HERE
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="EN" dir="ltr" xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>$quizName</title>
<style type = "text/css">
ol ol {
border-bottom: 1px solid black;
}
ol ol li {
list-style-type: upperAlpha;
}
</style>
</head>
<body>
HERE;
//get the quiz data
$problems = split("n", $quizData);
$htData .= <<<HERE
<h1>$quizName</h1>
<form action = "gradeQuiz.php"
method = "post">
<fieldset>
<label>Name</label>
<input type = "text"
name = "student" />
<ol>
HERE;
$questionNumber = 1;
foreach ($problems as $currentProblem){
list($question, $answerA, $answerB, $answerC, $answerD, $correct) =
explode (":", $currentProblem);
$htData .= <<<HERE
Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru  

 

41

 
<li>
$question
<ol>
<li>
<input type = "radio"
name = "quest[$questionNumber]"
value = "A" />
$answerA
</li>
<li>
<input type = "radio"
name = "quest[$questionNumber]"
value = "B" />
$answerB
</li>
<li>
<input type = "radio"
name = "quest[$questionNumber]"
value = "C" />
$answerC
</li>
<li>
<input type = "radio"
name = "quest[$questionNumber]"
value = "D" />
$answerD
</li>
</ol>
</li>
HERE;
$questionNumber++;
} // end foreach
$htData .= <<<HERE
</ol>
<input type = "hidden"
name = "quizName"
value = "$quizName" />
<input type = "submit"
value = "submit quiz" />
</fieldset>
</form>
</body>
</html>
HERE;
//print $htData;
return $htData;
} // end buildHTML
?>
</body>
</html>
takeQuiz.php – Прохождение теста
<?php
//takeQuiz.php
Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru  

 

42

 
//given a quiz file, prints out that quiz
//no doctype, because that's embedded in HTML
//get password and filebase from form
$takeFile = filter_input(INPUT_POST, "takeFile");
$password = filter_input(INPUT_POST, "password");
//get the password from the file
$masterFile = $takeFile . ".mas";
$fp = fopen($masterFile, "r");
//the password is the third line, so get the first two lines, but ignore them
$dummy = fgets($fp);
$dummy = fgets($fp);
$magicWord = fgets($fp);
$magicWord = rtrim($magicWord);
fclose($fp);
if ($password == $magicWord){
$htmlFile = $takeFile . ".html";
//print out the page if the user got the password right
readFile($htmlFile);
} else {
print <<<HERE
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="EN" dir="ltr" xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Quiz Builder</title>
<link rel = "stylesheet"
type = "text/css"
href = "quiz.css" />
</head>
<body>
<p class = "error">
Incorrect Password.<br />
You must have a password in order to take this quiz.
</p>
</body>
</html>
HERE;
} // end if
?>
gradeQuiz.php – Выставление оценки за прохождение теста
<?php
//retrieve data from form
$student = filter_input(INPUT_POST, "student");
$quizName = filter_input(INPUT_POST, "quizName");
$quest = $_REQUEST["quest"];
print <<<HERE
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="EN" dir="ltr" xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Grade for $quizName, $student</title>
<link rel = "stylesheet"
type = "text/css"
href = "quiz.css" />
</head>
<body>
Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru  

 

43

 
<h1>Grade for $quizName, $student</h1>
HERE;
//open up the correct master file for reading
$fileBase = str_replace(" ", "_", $quizName);
$masFile = $fileBase . ".mas";
$msfp = fopen($masFile, "r");
$logFile = $fileBase . ".log";
//the first three lines are name, instructor's email, and password
$quizName = fgets($msfp);
$quizEmail = fgets($msfp);
$quizPwd = fgets($msfp);
//step through the questions building an answer key
$numCorrect = 0;
$questionNumber = 1;
while (!feof($msfp)){
$currentProblem = fgets($msfp);
list($question, $answerA, $answerB, $answerC, $answerD, $correct) =
split (":", $currentProblem);
$key[$questionNumber] = $correct;
$questionNumber++;
} // end while
fclose($msfp);
//Check each answer from user
for ($questionNumber = 1; $questionNumber <= count($quest); $questionNumber++){
$guess = $quest[$questionNumber];
$correct = $key[$questionNumber];
$correct = rtrim($correct);
//print "$questionNumber, Guess = $guess, Correct = $correct.<br>n";
if ($guess == $correct){
//user got it right
$numCorrect++;
print "<p>problem # $questionNumber was correct</p> n";
} else {
print <<<HERE
<p style = "color: red">
problem # $questionNumber was incorrect
</p>
HERE;
} // end if
} // end for
$percentage = ($numCorrect /count($quest)) * 100;
print <<<HERE
<p>
you got $numCorrect right
for $percentage percent
</p>
HERE;
date_default_timezone_set("AMERICA/INDIANA/INDIANAPOLIS");
$today = date("F j, Y, g:i a");
//print "Date: $today<br>n";
$location = getenv("REMOTE_ADDR");
//print "Location: $location<br>n";
Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru  

 

44

 
//add results to log file
$lgfp = fopen($logFile, "a");
$logLine = $student . "t";
$logLine .= $today . "t";
$logLine .= $location . "t";
$logLine .= $numCorrect . "t";
$logLine .= $percentage . "n";
fputs($lgfp, $logLine);
fclose($lgfp);
?>
</body>
</html>
showLog.php – Просмотр журнала под учетной записью
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="EN" dir="ltr" xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Quiz Builder</title>
<link rel = "stylesheet"
type = "text/css"
href = "quiz.css" />
</head>
<body>
<?php
//showLog.php
//shows a log file
//requires admin password
$password = filter_input(INPUT_POST, "password");
$logFile = filter_input(INPUT_POST, "logFile");
$logFile .= ".log";
if ($password == "absolute"){
$lines = file($logFile);
print "<pre>n";
foreach ($lines as $theLine){
print $theLine;
} // end foreach
print "</pre>n";
} else {
print <<<HERE
<p class = "error">
Incorrect Password.<br />
You must have a password in order to view this log.
</p>
HERE;
} // end if
?>
</body>
</html>

Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru  

 

45

 
5. Создайте просмотрщик исходного кода.
Программа должна по заданному имени файла считывать его и преобразовывать все экземпляры < в &lt;,
после чего сохранять этот новый файл с другим именем.
Это позволит вам показывать свой исходный код другим людям.
6. Создайте простую гостевую книгу. Позвольте пользователю вводить информацию в форму, и когда он
нажмет на кнопку Sumbit, добавьте его комментарий в конец страницы.
Для этого вы можете использовать один или два файла.

Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru  

 

46

 
ЛАБОРАТОРНАЯ РАБОТА № 6. ИСПОЛЬЗОВАНИЕ MYSQL ДЛЯ СОЗДАНИЯ БАЗ ДАННЫХ
(БД).
1. Запустите PhpMyAdmin на локальном сервере.
Измените язык интерфейса на русский.
Просмотрите список созданных БД.
Запишите назначение остальных вкладок PhpMyAdmin(SQL, Состояние, Переменные и т.д.).

Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru  

 

47

 
2. Создайте базу данных, например, «Телефонный справочник».

3. Разработайте простую таблицу для БД в тетради, например, «Список телефонов учителей».
Ключ
0
1

Имя
Александр
Алексей

Фамилия
Гора
Ниценко

Почта
gora@mail.ru
nicenko@gmail.com

Телефон
8-914-585-94-12
8-924-383-82-19

4. Напишите код для создания таблицы, например, «Список телефонов учителей».
Просмотрите структуру таблицы в PhpMyAdmin.
USE TelSprav;
CREATE TABLE Spisok (
Klych INT PRIMARY KEY,
Imya VARCHAR(15),
Familiya VARCHAR(15),
Pochta VARCHAR(20),
Telefon VARCHAR(15)
);
DESCRIBE Spisok;

5. Напишите код для заполнения таблицы данными.
Просмотрите содержимое таблицы в PhpMyAdmin.
USE TelSprav;
INSERT INTO Spisok
VALUES
(0, 'Alexander', 'Gora', 'gora@mail.ru', '8-914-585-94-12');

6. Удалите созданную базу данных.

Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru  

 

48

 
7. Установите SQLyog.

9. Создайте базу данных, например, «Телефонный справочник».

10. Разработайте простую таблицу для БДв тетради.
11. Напишите код для создания таблицы.
12. Напишите код для заполнения таблицы данными.
13. Просмотрите содержимое таблицы.
USE telsprav;
DESCRIBE spisok;

13. Ознакомьтесь самостоятельно с SQLyog.
Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru  

 

49

 
ЛАБОРАТОРНАЯ РАБОТА № 7. ПОДКЛЮЧЕНИЕ К БД С ПОМОЩЬЮ PHP.
1. Написать программу, подключающуюся к БД и выводящая ее данные в виде таблицы.

<?php
//установить соединение с БД
//функция языка PHP для работы с БД
//mysql_connect требует 3 параметров: имя сервера, пользователя и пароль
$soedinenie = mysql_connect("localhost", "root", "");
//выбор базы данных
$db_selected = mysql_select_db("telsprav",$soedinenie);
//создание запроса на выборку
$zapros = "SELECT Imya, Familiya, Pochta, Telefon FROM spisok ORDER BY Familiya";
//функция отправляет БД любую команду SQL
$otpravka_zaprosa = mysql_query($zapros, $soedinenie);
//пример обращения к атрибуту поля "table" (название таблицы, которой принадлежит поле)
$atribut = mysql_fetch_field($otpravka_zaprosa);
print "Имя таблицы: " . $atribut->table . "<br>";
//создаем таблицу
print "<table border = 1>";
//создаем и заполняем через цикл первую строку таблицы
print "<tr>";
Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru  

 

50

 
print "<th> Imya </th>";
//получить названия полей (столбцов) используя атрибут "name" – название поля
while ($atribut = mysql_fetch_field($otpravka_zaprosa)) {
//создаем ячейку тегом <th> сохраняем название поля
print "<th>";
print "$atribut->name";
print "</th>";
}
print "</tr>";
while ($stroka = mysql_fetch_assoc($otpravka_zaprosa)){
print "<tr>";
//просмотреть каждое поле (столбец)
foreach ($stroka as $st => $znachenie){
print "<td>$znachenie</td>";
} // конец foreach
print "<br>";
}// конец while
//конец таблицы
print "</table>";
mysql_close($soedinenie);
?>

Свойство

АТРИБУТЫ ПОЛЯ
Описание атрибута

max_length

Длина поля (важно для типа VARCHAR)

name

Название поля (столбца)

primary_key

TRUE если поле является первичным ключом

table

Название таблицы, которой принадлежит поле

type

Тип данных этого поля

2. Написать программу, позволяющую просматривать, добавлять и редактировать записи в
списке телефонов (предварительно создайте БД с таким списком телефонов).
3. Написать программу, которая запрашивает имя пользователя и выводит данные о нем из
базы данных.

Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru  

 

51

 
ЛАБОРАТОРНАЯ РАБОТА № 8. НОРМАЛИЗАЦИЯ ДАННЫХ.
1. Запустите PhpMyAdmin на локальном сервере.
•

Измените язык интерфейса на русский.

2. Создайте базу данных Translation (Перевод).
База данных имеет следующие особенности:
• Переводчикам поручаются задания по ведению переговоров по всему миру.
• У каждого переводчика есть имя.
• Переводчик может знать несколько языков.
• Несколько переводчиков могут знать один и тот же язык.
• Каждый переводчик в определенный момент может выполнять только одно переводческое задание.
• Каждое переводческое задание может выполнять несколько переводчиков.
• Местоположение переводчика определяется выполняемым им переводом.
• У каждого перевода есть только одно местоположение.
CREATE DATABASE `Translation`;

3. Изучите структуру базы данных Translation (Перевод).
Запишите в тетради ответы на следующие вопросы:
А) Сколько полей в базе данных?
Б) Какие типы данных представлены в структуре, их особенности?
В) Какое поле является ключевым?
Г) Для чего служит ключевое поле?
Д) Какими языками владеют переводчики?
Е) В чем проявляется ненормализованность базы данных?
Схема НЕНОРМАЛИЗОВАННОЙ базы данных Перевод.
Поле
IDperevodchika
Imya
Yazik
Zadanie
Opisanie
Mestonahozhdenie

Тип
int(11)
varchar(30)
varchar(40)
varchar(40)
varchar(40)
varchar(20)

Ноль
YES
YES
YES
YES
YES
YES

Ключ
PRI

IDperevodchika
1
2

Imya
Rinat
Alex

Yazik
Kitaiskii
Angliiskii

3

Anton

EN

4

Anna

Ukrainskii

5

Viktor

Ukrainskii

Zadanie
Ustnii perevod
Pismennii
perevod
Sinhronnii
perevod
Pismennii
perevod
Ustnii perevod

По умолчанию
(NULL)
(NULL)
(NULL)
(NULL)
(NULL)
(NULL)

Дополнительно
AUTO_INCREMENT

Opisanie
Vstrecha gostei
Perevod bukleta

Mestonahozhdenie
Kitai
Angliya

Perevod dialoga
ministrov
Perevod bukleta

Angliya

Perevod gida

Ukraina

Rossiya

Проблемы базы данных Перевод.
1. Противоречивости данных вызвана тем, что пользователь вводящий несколько раз одни и те же данные
может использовать разное написание слов: например, для английского языка Angliiskii, English, EN и т.п.
Таким образом написание для одного и того же слова, разное.
2. Сохранения данных вызвана тем, что информация храниться в одной записи. Так, удалив переводчика
Rinat мы удалим информацию о задании Vstrecha gostei, т.к. она храниться только в записи удаляемого
переводчика.
3. Определения типа и размера полей вызвана тем, что трудно вычислить размер поля, которое
содержит несколько записей, так если талантливый переводчик владеет пятью языками, то необходимо
выделить место для хранения пяти направлений перевода для каждой записи каждого переводчика.

Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru  

 

52

 
Изучение HTML, CSS, PHP, MySQL
Изучение HTML, CSS, PHP, MySQL
Изучение HTML, CSS, PHP, MySQL
Изучение HTML, CSS, PHP, MySQL
Изучение HTML, CSS, PHP, MySQL

Mais conteúdo relacionado

Semelhante a Изучение HTML, CSS, PHP, MySQL

Верстка_Лекция_3
Верстка_Лекция_3Верстка_Лекция_3
Верстка_Лекция_3itc73
 
Редактор Mail.ru. Frontend
Редактор Mail.ru. FrontendРедактор Mail.ru. Frontend
Редактор Mail.ru. FrontendAlexander Rusakov
 
Present forms&css
Present forms&cssPresent forms&css
Present forms&cssitc73
 
основы нтмл
основы нтмлосновы нтмл
основы нтмлolgaoov
 
Практикум Web программирование
Практикум Web программированиеПрактикум Web программирование
Практикум Web программированиеRauan Ibraikhan
 
CSS глазами машин
CSS глазами машинCSS глазами машин
CSS глазами машинRoman Dvornov
 
Лекция #3. Введение в языки разметки web-страниц
Лекция #3. Введение в языки разметки web-страницЛекция #3. Введение в языки разметки web-страниц
Лекция #3. Введение в языки разметки web-страницЯковенко Кирилл
 
Наполнение сайта. Руководство
Наполнение сайта. РуководствоНаполнение сайта. Руководство
Наполнение сайта. РуководствоNimax
 
Документ: от печати до выписок из базы данных. От аппликативного программиров...
Документ: от печати до выписок из базы данных. От аппликативного программиров...Документ: от печати до выписок из базы данных. От аппликативного программиров...
Документ: от печати до выписок из базы данных. От аппликативного программиров...Marcus Akoev
 
Web страницы.язык html
Web страницы.язык htmlWeb страницы.язык html
Web страницы.язык htmlГимназия
 
Основные операции с текстом
Основные операции с текстомОсновные операции с текстом
Основные операции с текстомEd Solovey
 
борьба яндекса с оптиммизаторами
борьба яндекса с оптиммизаторамиборьба яндекса с оптиммизаторами
борьба яндекса с оптиммизаторамиIvan Murketolog
 

Semelhante a Изучение HTML, CSS, PHP, MySQL (20)

Верстка_Лекция_3
Верстка_Лекция_3Верстка_Лекция_3
Верстка_Лекция_3
 
Lection1
Lection1Lection1
Lection1
 
Редактор Mail.ru. Frontend
Редактор Mail.ru. FrontendРедактор Mail.ru. Frontend
Редактор Mail.ru. Frontend
 
Present forms&css
Present forms&cssPresent forms&css
Present forms&css
 
основы нтмл
основы нтмлосновы нтмл
основы нтмл
 
Практикум Web программирование
Практикум Web программированиеПрактикум Web программирование
Практикум Web программирование
 
лекц14
лекц14лекц14
лекц14
 
CSS глазами машин
CSS глазами машинCSS глазами машин
CSS глазами машин
 
Лекция #3. Введение в языки разметки web-страниц
Лекция #3. Введение в языки разметки web-страницЛекция #3. Введение в языки разметки web-страниц
Лекция #3. Введение в языки разметки web-страниц
 
Наполнение сайта. Руководство
Наполнение сайта. РуководствоНаполнение сайта. Руководство
Наполнение сайта. Руководство
 
Html лаб 2
Html лаб 2Html лаб 2
Html лаб 2
 
Документ: от печати до выписок из базы данных. От аппликативного программиров...
Документ: от печати до выписок из базы данных. От аппликативного программиров...Документ: от печати до выписок из базы данных. От аппликативного программиров...
Документ: от печати до выписок из базы данных. От аппликативного программиров...
 
Web страницы.язык html
Web страницы.язык htmlWeb страницы.язык html
Web страницы.язык html
 
Css
CssCss
Css
 
L10N
L10NL10N
L10N
 
Rgsu04
Rgsu04Rgsu04
Rgsu04
 
Rgsu04
Rgsu04Rgsu04
Rgsu04
 
Основные операции с текстом
Основные операции с текстомОсновные операции с текстом
Основные операции с текстом
 
борьба яндекса с оптиммизаторами
борьба яндекса с оптиммизаторамиборьба яндекса с оптиммизаторами
борьба яндекса с оптиммизаторами
 
Шаблонизация
ШаблонизацияШаблонизация
Шаблонизация
 

Mais de Alexandr Konfidentsialno

Реферат на заказ на www.studentam-in.ru
Реферат на заказ на www.studentam-in.ruРеферат на заказ на www.studentam-in.ru
Реферат на заказ на www.studentam-in.ruAlexandr Konfidentsialno
 
Презентация к защите курсовой работы на заказ на www.studentam-in.ru
Презентация к защите курсовой работы на заказ на www.studentam-in.ruПрезентация к защите курсовой работы на заказ на www.studentam-in.ru
Презентация к защите курсовой работы на заказ на www.studentam-in.ruAlexandr Konfidentsialno
 
Презентация к защите дипломной работы
Презентация к защите дипломной работыПрезентация к защите дипломной работы
Презентация к защите дипломной работыAlexandr Konfidentsialno
 
Отчет по практике на заказ на www.studentam-in.ru
Отчет по практике на заказ на www.studentam-in.ruОтчет по практике на заказ на www.studentam-in.ru
Отчет по практике на заказ на www.studentam-in.ruAlexandr Konfidentsialno
 
Курсовая работа на заказ на www.studentam-in.ru
Курсовая работа на заказ на www.studentam-in.ruКурсовая работа на заказ на www.studentam-in.ru
Курсовая работа на заказ на www.studentam-in.ruAlexandr Konfidentsialno
 
Дипломная работа на заказ на www.studentam-in.ru
Дипломная работа на заказ на www.studentam-in.ruДипломная работа на заказ на www.studentam-in.ru
Дипломная работа на заказ на www.studentam-in.ruAlexandr Konfidentsialno
 
Техническое обслуживание персонального компьютера
Техническое обслуживание персонального компьютераТехническое обслуживание персонального компьютера
Техническое обслуживание персонального компьютераAlexandr Konfidentsialno
 
Программирование на языке C Sharp (СИ решетка) ПРАКТИКУМ
Программирование на языке C Sharp (СИ решетка) ПРАКТИКУМПрограммирование на языке C Sharp (СИ решетка) ПРАКТИКУМ
Программирование на языке C Sharp (СИ решетка) ПРАКТИКУМAlexandr Konfidentsialno
 
Операционные системы и среды
Операционные системы и средыОперационные системы и среды
Операционные системы и средыAlexandr Konfidentsialno
 
Конструкция и компоновка персонального компьютера
Конструкция и компоновка персонального компьютераКонструкция и компоновка персонального компьютера
Конструкция и компоновка персонального компьютераAlexandr Konfidentsialno
 
Архитектура электронно-вычислительных машин (ЭВМ) и систем
Архитектура электронно-вычислительных машин (ЭВМ) и системАрхитектура электронно-вычислительных машин (ЭВМ) и систем
Архитектура электронно-вычислительных машин (ЭВМ) и системAlexandr Konfidentsialno
 
Программирование на языке C Sharp (СИ решетка)
Программирование на языке C Sharp (СИ решетка)Программирование на языке C Sharp (СИ решетка)
Программирование на языке C Sharp (СИ решетка)Alexandr Konfidentsialno
 

Mais de Alexandr Konfidentsialno (12)

Реферат на заказ на www.studentam-in.ru
Реферат на заказ на www.studentam-in.ruРеферат на заказ на www.studentam-in.ru
Реферат на заказ на www.studentam-in.ru
 
Презентация к защите курсовой работы на заказ на www.studentam-in.ru
Презентация к защите курсовой работы на заказ на www.studentam-in.ruПрезентация к защите курсовой работы на заказ на www.studentam-in.ru
Презентация к защите курсовой работы на заказ на www.studentam-in.ru
 
Презентация к защите дипломной работы
Презентация к защите дипломной работыПрезентация к защите дипломной работы
Презентация к защите дипломной работы
 
Отчет по практике на заказ на www.studentam-in.ru
Отчет по практике на заказ на www.studentam-in.ruОтчет по практике на заказ на www.studentam-in.ru
Отчет по практике на заказ на www.studentam-in.ru
 
Курсовая работа на заказ на www.studentam-in.ru
Курсовая работа на заказ на www.studentam-in.ruКурсовая работа на заказ на www.studentam-in.ru
Курсовая работа на заказ на www.studentam-in.ru
 
Дипломная работа на заказ на www.studentam-in.ru
Дипломная работа на заказ на www.studentam-in.ruДипломная работа на заказ на www.studentam-in.ru
Дипломная работа на заказ на www.studentam-in.ru
 
Техническое обслуживание персонального компьютера
Техническое обслуживание персонального компьютераТехническое обслуживание персонального компьютера
Техническое обслуживание персонального компьютера
 
Программирование на языке C Sharp (СИ решетка) ПРАКТИКУМ
Программирование на языке C Sharp (СИ решетка) ПРАКТИКУМПрограммирование на языке C Sharp (СИ решетка) ПРАКТИКУМ
Программирование на языке C Sharp (СИ решетка) ПРАКТИКУМ
 
Операционные системы и среды
Операционные системы и средыОперационные системы и среды
Операционные системы и среды
 
Конструкция и компоновка персонального компьютера
Конструкция и компоновка персонального компьютераКонструкция и компоновка персонального компьютера
Конструкция и компоновка персонального компьютера
 
Архитектура электронно-вычислительных машин (ЭВМ) и систем
Архитектура электронно-вычислительных машин (ЭВМ) и системАрхитектура электронно-вычислительных машин (ЭВМ) и систем
Архитектура электронно-вычислительных машин (ЭВМ) и систем
 
Программирование на языке C Sharp (СИ решетка)
Программирование на языке C Sharp (СИ решетка)Программирование на языке C Sharp (СИ решетка)
Программирование на языке C Sharp (СИ решетка)
 

Изучение HTML, CSS, PHP, MySQL

  • 1. www.studentam‐in.ru  полезная информация для учащихся Лабораторные работы (практикум) по направлению «Изучение HTML, CSS, PHP, MySQL» СОДЕРЖАНИЕ: ЛАБОРАТОРНАЯ РАБОТА № 1. ЗНАКОМСТВО С PHP, HTML, CSS. ............................................................ 2 ЛАБОРАТОРНАЯ РАБОТА № 2. ИСПОЛЬЗОВАНИЕ ПЕРЕМЕННЫХ И ЭЛЕМЕНТОВ ВВОДА. ................ 11 ЛАБОРАТОРНАЯ РАБОТА № 3. УПРАВЛЕНИЕ ПРОГРАММОЙ С ПОМОЩЬЮ УСЛОВИЙ И ФУНКЦИЙ.16 ЛАБОРАТОРНАЯ РАБОТА № 4. ЦИКЛЫ И МАССИВЫ. ................................................................................ 22 ЛАБОРАТОРНАЯ РАБОТА № 5. РАБОТА С ФАЙЛАМИ. ............................................................................... 32 ЛАБОРАТОРНАЯ РАБОТА № 6. ИСПОЛЬЗОВАНИЕ MYSQL ДЛЯ СОЗДАНИЯ БАЗ ДАННЫХ (БД). ........ 47 ЛАБОРАТОРНАЯ РАБОТА № 7. ПОДКЛЮЧЕНИЕ К БД С ПОМОЩЬЮ PHP. ............................................. 50 ЛАБОРАТОРНАЯ РАБОТА № 8. НОРМАЛИЗАЦИЯ ДАННЫХ. ..................................................................... 52 Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru     1  
  • 2. ЛАБОРАТОРНАЯ РАБОТА № 1. ЗНАКОМСТВО С PHP, HTML, CSS. 1. Установить локальный сервер (типа, wamp, denwer, phpTriad) и запустить его. Подсказка: Требуется установить конфигурацию Apache, PHP, MySQL. Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru     2  
  • 3. 2. Написать программу на PHP вызывающую функцию phpInfo(); и запустить ее на своем веб-сервере. Подсказка: <?php //файл program.php скопировать в папку www //в браузере указать путь к файлу как localhost/program.php phpInfo(); ?> Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru     3  
  • 4. 3. Создать страницу на html для своего резюме. Подсказка: <html> <head> <title>Резюме А.В. Гора</title> </head> <body> <table width="100%" align="center" border="0" > <tr> <td width="15%"><a href="Gora.jpg" target="_blank" title="Увеличить фотографию"><img src="Gora.jpg" width="110"></a></td> <td width="85%"><left><u><h3>РЕЗЮМЕ</h3> <br> <h4>ГОРА АЛЕКСАНДР ВЛАДИМИРОВИЧ</h4></u></left></td> </tr> </table> height="112" <table width="100%" border="1" cellpadding="1" cellspacing="1"> <tr> <td>Цель</td> <td>Соискание должности по направлению "Преподаватель".</td> </tr> <tr> <td>Сведения о себе</td> <td><u>Год и место рождения:</u> .<br> <u>Семейное положение:</u> .<br> <u>Адрес:</u> г. Благовещенск, ул. . </td> </tr> <tr> <td>Образование</td> <td><u>Высшее:</u> Благовещенский государственный педагогический университет (2003-08, очно).<br> <u>Специальность:</u> «Информатика» с дополнительной квалификацией «переводчик в сфере профессиональной коммуникации».</td> </tr> <tr> <td>Профессиональный опыт</td> <td>Преподаватель спец. дисциплин в филиале ФГБОУ ВПО «ВГУЭС» Благовещенском технологическом техникуме (200812).<br> Преподаю следующие учебные дисциплины: <ol> <li>Информатика.</li> <li>Информационные технологии в профессиональной деятельности. </li> </ol> </td> </tr> <tr> <td>Знания языков</td> <td>Английский выше среднего (разговорный, письменный; хорошее владение компьютерной лексикой, свободная ориентация на англоязычных сайтах).</td> </tr> <tr> <td>Дополнительные сведения</td> <td>Водительское удостоверение <u>категории В.</u><br></td> </tr> <tr> <td>Личностная характеристика</td> <td>Ответственен, самообучаем, коммуникабелен.</td> </tr> </table> </body> </html> Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru     4  
  • 6. 4. Создать страницы на HTML с применением стилей CSS (внутренних и внешних). Подсказка: <html> <head> <title>Заголовок страницы</title> <STYLE type="text/css"> h2 { color: blue } </STYLE> <head> <body> <center> <h1 style = "color:red; background-color:yellow; border-width: 10px; border-style: groove; border-color: green"> Привет мир</h1> </center> <br> <h2>Привет мир</h2> </body> </html> <html> <head> <title>Заголовок страницы</title> <LINK rel="stylesheet" href="12 внешние стили.css" type="text/css"> <head> <body> <center> <h1>Привет мир</h1> </center> </body> </html> h1 { text-align:center; color:red; background-color:yellow; border-width: 10px; border-style: groove; border-color: green } Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru     6  
  • 7. CSS: СВОЙСТВА ШРИФТА fontfamily Используется для указания шрифта или шрифтового семейства, которым будет отображаться элемент. P {font-family: Times New Roman, sans-serif;} font-style Задает способ начертания шрифта: normal - Нормальный (по умолчанию), italic - Курсив, oblique Наклонный. P {font-style: italic;} fontvariant Задает варианты начертания шрифта: normal - Нормальный (по умолчанию), small-caps - Все буквы заглавные). P {font-variant: small-caps;} fontweight Определяет степень жирности шрифта с помощью параметров: normal, bold, bolder, lighter, 100, 200, 300, 400, 500, 600, 700, 800, 900 B {font-weight: bolder;} font-size Устанавливает размер шрифта. Параметр может указываться как в относительной (проценты), так и абсолютной величине (пункты, пикселы, сантиметры) H1 {font-size: 200%;} H2 {font-size: 150px;} H3 {font-size: 400pt;} CSS: ЦВЕТ ЭЛЕМЕНТА И ЦВЕТ ФОНА color Определяет цвет элемента I {color: green;} backgroundcolor Устанавливает цвет фона для элемента – именно для элемента, а не для странички. Разные броузеры отображают это свойство по-разному: Microsoft IE отводит под фон элемента всю доступную ширину страницы, а Netscape Navigator – лишь ширину, занимаемую этим элементом. H4 {background-color: yellow;} В скриптовых языках используйте object.style.backgroundColor [ = sColor ] CSS: СВОЙСТВА ТЕКСТА textdecoration Устанавливает эффекты оформления шрифта, такие, как подчеркивание или зачеркнутый текст H4 {text-decoration: underline;} - подчеркивание A {text-decoration: none;} - стандартный текст I {text-decoration: line-through;} - зачеркивание B {text-decoration:overline;} - надчеркивание texttransform Задает преобразование регистра текста при отображении H4 {text-transform: capitalize;} - Первая буква каждого слова преобразуется в заглавную A {text-transform: uppercase;} - Все буквы преобразуются в заглавные I {text-transform: lowercase;} - Все буквы преобразуются в строчные B {text-decoration:none;} - Отменяет установленные преобразования text-align Определяет выравнивание элемента. Возможные значения: left, right, center, justify P {text-align:justify} H5 {text-align: center} text-indent Устанавливает отступ первой строки текста. Чаще всего используется для создания параграфов с табулированной первой строкой. P {text-indent: 50pt;} line-height Управляет интервалами между строками текста. P {line-height: 50 %} wordspacing Устанавливает интервалам между словами. Можно использовать отрицательные значения P {word-spacing: 50 %} letterspacing Устанавливает интервалам между буквами P {letter-spacing: 50 pt} vertical-align Устанавливает вертикальное положение элемента. Может принимать следующие значения: baseline middle sub super text-top text-bottom top bottom P {vertical-align: 50 pt} CSS: ГРАНИЦЫ Спецификация CSS2 описывает атрибут стиля border, который позволяет задать вид границ вокруг объектов. Атрибут border может быть применен к любым объектам. Могут быть установлены следующие параметры границы: Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru     7  
  • 8. borderwidth Ширина границы. Может быть задана значением в пикселях или с помощью зарезервированных слов thin (тонкая), medium (средняя), thick (толстая). table {border-width: 2px;} bordercolor Цвет границы. Может принимать значение transparent для задания невидимой, но имеющей ширину, границы, что иногда полезно table {border-color: green;} borderstyle Задает стиль рисования границы. Может принимать следующие значения: none (по умолчанию), hidden, dotted, dashed, solid, double,groove, ridge, inset, outset table {border-style: dashed;} table {border-style: groove;} Примечание Спецификация CSS2 позволяет задать стили для каждой из сторон границы. Например: border-сторона[-атрибут]. Где сторона может принимать следующие значения: top (верхняя граница), bottom (нижняя граница), left (левая граница) и right (правая граница). Таким образом { border-bottom-width: 1px } будет означать, что ширина нижней границы равна 1 пикселу. ЕДИНИЦЫ ИЗМЕРЕНИЯ В языке HTML существует два способа задать линейные размеры элемента: пиксели и проценты. В CSS единиц длины гораздо больше. ЕДИНИЦЫ ИЗМЕРЕНИЯ in - Дюймы pt - Пункты (типограф.) px - Пикселы cm - Сантиметры pc - Пика em - Вычисляется относительно размера шрифта элемента mm Миллиметры % - Проценты ex - Высота строчной буквы "x" в шрифте Условно единицы измерения можно разделить на три группы. Первая группа - это величины, которые используются для измерения длин реальных предметов. К ним относятся: • in - дюймы; • cm - сантиметры; • mm - миллиметры. Ко второй группе можно отнести величины, которые пришли в CSS из типографии. То есть они используются для установки размеров шрифта, межстрочных интервалов и прочих типографских величин. Данная группа величин привычна полиграфистам. К ним относятся: • pt - типографский пункт; • pc - пика; • ex - высота строчной буквы "x" в шрифте. Третью группу составляют величины, которые являются относительными, то есть реальный размер элемента вычисляется относительно какой-либо иной величины. К ним относятся: • em - вычисляется относительно размера шрифта элемента; • px - пиксель. Вычисляется относительно устройства отображения; • % - процент. Естественно, процентные соотношения не являются единицами измерения в привычном смысле слова. Они вычисляются относительно размеров элемента-предка. CSS: КУРСОРЫ Internet Explorer позволяет задавать стили для курсоров. Некоторые стили доступны только для IE 6. all-scroll Курсор со стрелками во все четыре стороны и точкой в центре, показывающий на возможность скроллинга страницы в любом направлении I {cursor: all-scroll;} Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru     8  
  • 9. auto По умолчанию. Браузер определяет самостоятельно, какой курсор требуется в данном контексте I {cursor: auto;} col-resize Курсор со стрелками влево-вправо и вертикальной разделяющей полоской. Используется для индикации возможности изменения размеров по горизонтали H4 {cursor: col-resize;} crosshair Курсор-крест H4 {cursor: crosshair;} default Стандартный курсор, используемый системой H4 {cursor: default;} hand Рука с вытянутым указательным пальцем. Используется при гиперссылке H4 {cursor: hand;} help Стрелка с вопросительным знаком. H3 {cursor: help;} move Курсор со 4 стрелками, показывающий возможность перемещения H2 {cursor: move;} no-drop Рука с перечеркнутым кружочком. Нельзя сбросить объект в текущую позицию курсора TD {cursor: no-drop;} notallowed Перечеркнутый круг. Данная операция не поддерживается TD {cursor: not-allowed;} pointer Идентична стилю hand TD {cursor: pointer;} progress Песочные часы, показывающие на продолжение операции TD {cursor: progress;} row-resize Курсор со стрелками вверх-вниз и вертикальной разделяющей полоской. Используется для индикации возможности изменения размеров по вертикали TD {cursor: row-resize;} text Текстовый курсор-каретка TD {cursor: text;} url(uri) Ваш собственный курсор. Поддерживаются файлы .cur и .ani TD {cursor:url(elogo.cur);} verticaltext Горизонтальная текстовая каретка для вертикального текста TD {cursor: vertical-text;} wait Курсор, показывающий, что система занята и требуется подождать TD {cursor: wait;} *-resize Курсоры, показывающие возможность потянуть за край окна. Вместо символа * используйте N, NE, NW, S, SE, SW, E, или W, определяющие направление стрелок TD {cursor: n-resize;} CSS: ПОЛОСА ПРОКРУТКИ Данные настройки применимы ко всем элементам, имеющим полосы прокрутки: сама страница (элемент BODY), текстовый блок (TEXTAREA) и т.д. scrollbar-3dlight- Определяет или устанавливает цвет верха и левой части ползунка и кнопок со стрелками на color полосе прокрутки body {scrollbar-3dlight-color: green;} scrollbar-arrowcolor Устанавливает или определяет цвет стрелок на кнопке со стрелками body {scrollbar-arrow-color: red;} scrollbar-basecolor Устанавливает или определяет цвет основных элементов ползунка: ползунка, кнопок со стрелками, дорожки для ползунка, если не определены параметры в scrollbar-face-color body {scrollbar-base-color: green;} scrollbardarkshadowcolor Устанавливает или определяет цвет тени для ползунка и кнопок со стрелками body {scrollbar-darkshadow-color: red;} scrollbar-facecolor Устанавливает или определяет цвет ползунка и кнопок со стрелками. Также, если вы не задали параметр SCROLLBAR-TRACK-COLOR, у вас изменится цвет дорожки body {scrollbar-face-color: green;} scrollbarhighlight-color Устанавливает или получает цвет подсветки, создающий эффект объёмности. Это цвет, который окаймляет освещённую часть кнопочки. Когда кнопка не нажата, то цвет заливает Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru     9  
  • 10. левый верхний угол и стороны между ним, когда нажата - нижний правый угол body {scrollbar-highlight-color: green;} scrollbarshadow-color Схоже с scrollbar-darkshadow-color body {scrollbar-shadow-color: green;} scrollbar-trackcolor Устанавливает или получает цвет дорожки для ползунка body {scrollbar-track-color: aqua;} CSS: РАЗМЕР ЭЛЕМЕНТА min-height Устанавливает или получает минимальную высоту элемента TR {min-height: 10px;} Данный атрибут применим к TR, TD, TH в таблице, у которой свойство table-layout имеет значение fixed CSS: СВОЙСТВА ТАБЛИЦЫ tablelayout Устанавливает или получает алгоритм обработки таблицы TABLE {table-layout: fixed;} Имеет два значения • auto - По умолчанию. Браузер самостоятельно вычисляет необходимые размеры таблицы • fixed - Браузер не учитывает содержимое отдельных ячеек при вычислении ширины таблицы и отдельных ячеек. Он использует значения ширины таблицы, ширины столбцов, рамок и расстояний между ячейками. Ширина столбцов таблицы вычисляется в следующем порядке: 1. используя значение атрибута WIDTH элементов COL 2. используя значение атрибута WIDTH элементов TD первого ряда таблицы 3. если данные значения не установлены, то ширина столбцов вычисляется соответственно контенту ячеек Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru     10  
  • 11. ЛАБОРАТОРНАЯ РАБОТА № 2. ИСПОЛЬЗОВАНИЕ ПЕРЕМЕННЫХ И ЭЛЕМЕНТОВ ВВОДА. 1. Разработайте веб-страницу, которая будет спрашивать у пользователя его имя и фамилию, а потом с помощью РНР-сценария сообщите ему, что он прошел регистрацию в системе. Подсказка: <html> <body> <h1>Программа приветствие</h1> <form method="post" action="obrabotchik.php"> Пожалуйста введите имя: <input type="text" name="imyaPolzovatelya" value="Ваше имя?" /> <br> <input type="submit" value="Отправить данные"/> </form> </body> </html> Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru     11  
  • 12. <?php print "Программа принимающее введенные пользователем данные в поле imyaPolzovatelya <br><br>"; //в ряде случаев создание переменной "на лету" запрещено администратором сервера print "создание переменной на лету (если приветствие без указания имени пользователя, то функция отключена) <br>"; print "Привет $imyaPolzovatelya <br> <br>"; //делаем "принудительный" запрос на получение значения переменной imyaPolzovatelya print "принудительное создание переменной <br>"; $imyaPolzovatelya = $_REQUEST["imyaPolzovatelya"]; print "Привет $imyaPolzovatelya <br>"; ?> Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru     12  
  • 13. 2. Измените предыдущую веб-страницу чтобы в ней использовалась передача данных по методу get. Обратите внимание на адресную строку. Подсказка: Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru     13  
  • 14. 3. Создайте веб-страницу и разместите на ней ссылки в которых бы использовалась передача данных по методу get. Пусть эти ссылки указывают на ваши излюбленные поисковые системы, сайты местных новостей и погоды и другие интересные вам веб-ресурсы. Подсказка: http://yandex.ru/yandsearch?text=php&site=&rstr=10306&zone=all&wordforms=all&lang=en&within=1&from_day=29&from_month=9&from_year=2012&to_day=13&to_month=10&to_year=2012 &mime=html&numdoc=10&lr=10596 <a href= "адрес_ссылки_с_передачей_параметров ">открыть страницу</a> Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru     14  
  • 15. 3. Напишите программу, описывающую человека. Создайте соответствующую форму для ввода данных и выведите готовый текст при помощи РНР-сценария. Подсказка: <html> <body> <h1>Укажите данные о себе</h1> <form method="post" action="obrabotchik.php"> Пожалуйста введите имя человека: <input type="text" name="imyaPolzovatelya" value="Ваше имя?" /> <br> Пожалуйста введите пароль: <input type="password" name="porolPolzovatelya" value=""/> <br> Пожалуйста выберите гражданство: <input type="radio" name="grazhdanstvo" value="RF"> РФ <input type="radio" name="grazhdanstvo" value="Drugoe"> Другое <br> Пожалуйста выберите цвет глаз: <select size="3" name="cvetGlaz"> <option value ="Karie" selected>Карие</option> <option value ="Golubie">Голубые</option> <option value ="Drugie">Другие</option> </select> <br> <input type="submit" value="Отправить данные"/> </form> </body> </html> <?php $imyaPolzovatelya = $_REQUEST["imyaPolzovatelya"]; $parolPolzovatelya = $_REQUEST["parolPolzovatelya"]; $grazhdanstvo = $_REQUEST["grazhdanstvo"]; $cvetGlaz = $_REQUEST["cvetGlaz"]; print "Привет $imyaPolzovatelya. Вы вводили пароль $parolPolzovatelya. Ваше гражданство $grazhdanstvo. Вы указали $cvetGlaz цвет глаз." ?> Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru     15  
  • 16. ЛАБОРАТОРНАЯ РАБОТА № 3. УПРАВЛЕНИЕ ПРОГРАММОЙ С ПОМОЩЬЮ УСЛОВИЙ И ФУНКЦИЙ. 1. Напишите программу, бросающую игральные кости с 4 и 10 гранями. Подсказка: <?php $sluchChis = rand(1,3); print "Случайное число равно $sluchChis<br>"; if ($sluchChis == 1) { print "<imgsrc=foto$sluchChis.jpg>"; } else if ($sluchChis == 2) { print "<imgsrc=foto$sluchChis.jpg>"; } else if ($sluchChis == 3) { print "<imgsrc=foto$sluchChis.jpg>"; } ?> Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru     16  
  • 17. 2. Напишите программу, позволяющую пользователю решить сколько граней будет у кости используя элемент выбора флажок.Выведите на экран случайно брошенную кость с учетом ограничения по количеству граней (можно просто выводить цифру). Подсказка: <html> <body> <h1>Выберите максимальное число граней</h1> <form method="post" action="obrabotchik.php"> <select size="3" name="chisloGranei"> <option value ="1" selected>1 грань</option> <option value ="2">2 грани</option> <option value ="3">3 грани</option> </select> <br> <input type="submit" value="Отправить данные"/> </form> </body> </html> <?php $chisloGranei = $_REQUEST["chisloGranei"]; $sluchChis = rand(1,$chisloGranei); print "Случайноечислоравно $sluchChis<br>"; if ($sluchChis == 1) { print "<imgsrc=foto$sluchChis.jpg>"; } else if ($sluchChis == 2) { print "<imgsrc=foto$sluchChis.jpg>"; } else if ($sluchChis == 3) { print "<imgsrc=foto$sluchChis.jpg>"; } ?> Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru     17  
  • 18. 3. Измените первую программу таким образом, чтобы форма и программа хранились в одном файле. Подсказка: <?php $pereklychatel = $_REQUEST["pereklychatel"]; //получить значение переменной переключатель if (empty($pereklychatel)) { //проверить пуста ли переменная print "<formmethod=get>"; //создать форму с отправкой данных методом get (для отслеживания) print "<input type=text name=pereklychatel><br>"; //создатьполеввода print "<inputtype=submitvalue=отправить>"; //создать кнопку передачи данных print "</form>"; } else { print "Программа запущена 2й раз"; } ?> Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru     18  
  • 19. 4. Создайте программу «шулерская кость», которая будет выбрасывать 1 в половине случаев и какое-либо другое значение –в другой. Подсказка: <?php $pereklychatel = $_REQUEST["pereklychatel"]; if (empty($pereklychatel)) { print "Случайное число равно <b>1</b>"; print "<form method=get>"; print "<input type=submit value=броситьчисло>"; print "<input type=hidden name=pereklychatel value=1><br>"; print "</form>"; } else { $sluchChis = rand(2, 100); print "Случайноечислоравно<b>$sluchChis</b>"; print "<form method=get>"; print "<input type=submit value=броситьчисло>"; print "<input type=hidden name=pereklychatel value=><br>"; print "</form>"; } ?> Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru     19  
  • 20. 5. Создайте генератор веб-страниц. Подготовьте форму, в которую бы вводился заголовок страницы, цвет фона, цвет шрифта и текст страницы. Сгенерируйте HTML-страницу с помощью этой формы. Подсказка: <html> <body> <h1>Укажите параметры веб-страницы</h1> <form method="post" action="obrabotchik.php"> Введите заголовок страницы: <input type="text" name="zagolovok" value="Страница 1" /> <br> Пожалуйста укажите цвет фона в HEX-формате: <br> <table border="0"> <tr> <td>Красный:</td> <td><input type="text" size="2" name="R" value="FF" /><br></td> </tr> <tr> <td>Зеленый:</td> <td><input type="text" size="2" name="G" value="00" /><br></td> </tr> <tr> <td>Голубой:</td> <td><input type="text" size="2" name="B" value="00" /><br></td> </tr> </table> Пожалуйста выберите цвет шрифта: <select name="cvetShrifta"> <option value ="Green">Зеленый</option> <option value ="Blue">Голубой</option> </select> <br> Введитетекстстраницы: <br> <textarea name="tekst" rows="10" cols="50"> Введите свой текст. </textarea> <br> <input type="submit" value="Генерировать страницу"/> </form> </body> </html> Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru     20  
  • 21. <?php $zagolovok = $_REQUEST["zagolovok"]; $R = $_REQUEST["R"]; $G = $_REQUEST["G"]; $B = $_REQUEST["B"]; $cvetShrifta = $_REQUEST["cvetShrifta"]; $tekst = $_REQUEST["tekst"]; print "<html>"; print "<head><title>$zagolovok</title></head>"; print "<body bgcolor=$R$G$B>"; print "<font color=$cvetShrifta>"; print "$tekst"; print "</font>"; print "</body>"; print "</html>"; ?> Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru     21  
  • 22. ЛАБОРАТОРНАЯ РАБОТА № 4. ЦИКЛЫ И МАССИВЫ. 1. Напишите игру «Казино». В начале игры вы получаете 100 руб. на счет. Ставка в каждом розыгрыше составляет 2 руб. ПК бросает 5 костей. Вы решаете, какую кость оставить, а какую – бросить снова. После второго броска ПК проверяет выпавшие комбинации костей. Вы выигрываете деньги, если выпало 2, 3, 4 или 5 одинаковых цифр или стрит (5 цифр по порядку). ИЗМЕНИТЕ ИГРУ «ПОКЕР В КОСТИ» С ПОМОЩЬЮ CSS. ДОБАВЬТЕ СОБСТВЕННЫЙ ФОН, ПОМЕНЯЙТЕ ИЗОБРАЖЕНИЯ КОСТЕЙ ИЛИ МОДИФИЦИРУЙТЕ СУММЫ ВЫПЛАТ, СМЕСТИВ ИГРОВОЙ БАЛАНС ПО СВОЕМУ ЖЕЛАНИЮ. КОД ДАННОЙ ПРОГРАММЫ РАБОТАЕТ НЕКОРРЕКТНО!!! ИСПРАВЬТЕ ЕГО В СООТВЕТСТВИИ С УСЛОВИЕМ ЗАДАЧИ! Подсказка: <?php $etoVtoroiBrosok = $_REQUEST["etoVtoroiBrosok"]; $schet = $_REQUEST["schet"]; //у тега form отсутствует атрибут action, поэтому форма обратится сама к себе //если программа запущена впервые if (empty($schet)) { $schet = 100; } function brositKosti() { global $kost, $etoVtoroiBrosok, $galochka; print "<table border = 1> <td><tr>"; //если это первый бросок, то галочку необходимо вывести под каждой костью //галочка передает значение ТОЛЬКО если она отмечена for ($i = 0; $i < 5; $i++) { if($galochka[$i] == ""){ $kost[$i] = rand(1,6); } else { $kost[$i] = $galochka[$i]; } //необходимо сохранить в папке изображения костей 50x50 px с именем типа f1.jpg, f2.jpg и т.д. $kartinka = "f$kost[$i].jpg"; //вывод изображения кости print "<td><img src=$kartinka height=50 width=50><br>"; //вывести галочки только при первом броске if ($etoVtoroiBrosok == FALSE) { //checked=true print "<input type=checkbox name=$galochka[$i] value=$kost[$i]> </td>"; } } //завершение цикла for //вывод кнопки и окончание таблицы print "</tr></td>"; print "<tr> <td colspan=5> <input type=submit value=OK> </td> <tr>"; print "</table>"; } //завершение функции brositKosti function podschet() { //цель функции: каждый кон получать ставку от игрока в размере 2 рублей. global $kost, $schet; //обнулить сумму выигрыша $summa = 0; //вычесть ставку на этот кон $schet -= 2; //подсчет костей //в массиве sovpadenieChisel храниться сколько раз выпало то или иное значение //при анализе проще определить различные комбинации //$sovpadenieChisel[1] содержит число единиц, выпавших в костях //$sovpadenieChisel[2] отображает сколько выпало двоек и т.д. //$sovpadenieChisel = array[6]; for ($zn = 1; $zn <6; $zn++) { for ($chKost = 0; $chKost < 5; $chKost++) { if ($kost[$chKost] == $zn) { Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru     22  
  • 23. $sovpadenieChisel[$zn]++; } } } //выводим результаты //for ($i = 1; $i <= 6; $i++) { //print "$i: $znachKosti[$i] <br>"; //} //считаем комбинации по два, три, четыре, пять $chisloDvoek = 0; $chisloTroek = 0; $chisloChetverok = 0; $chisloPyaterok = 0; //если на костях выпало 1, 1, 5, 5, 5 то $sovpadenieChisel[1] будет равно 2 //а $sovpadenieChisel[5] будет равно 3 //после switch $chisloDvoek будет равно 1 и $chisloTroek тоже будет равно 1, а остальные переменные будут равны нулю for ($i = 1; $i <= 6; $i++) { switch($sovpadenieChisel[$i]){ case 2: $chisloDvoek++; break; case 3: $chisloTroek++; break; case 4: $chisloChetverok++; break; case 5: $chisloPyaterok++; break; } } //проверяем, есть ли две пары if ($chisloDvoek == 2) { print "У вас две пары <br>"; $summa = 1; } //проверяем, есть ли три или три плюс два if ($chisloTroek == 1) { if ($chisloDvoek == 1) { //три плюс два print "У вас full house (3+2) <br>"; $summa = 5; } else { print "У вас три одинаковых значения<br>"; $summa = 2; } } //ищем 4 одинаковых значения if ($chisloChetverok == 1) { print "У вас четыре одинаковых значения<br>"; $summa = 5; } //ищем 5 одинаковых значения if ($chisloPyaterok == 1) { print "У вас пять одинаковых значений<br>"; $summa = 10; } //ищем стрит if (($sovpadenieChisel[1] == 1) && ($sovpadenieChisel[2] == 1) && ($sovpadenieChisel[3] == 1) && ($sovpadenieChisel[4] == 1) && ($sovpadenieChisel[5] == 1)) { print "У вас стрит (5 цифр по порядку)<br>"; $summa = 10; } if (($sovpadenieChisel[2] == 1) && ($sovpadenieChisel[3] == 1) && ($sovpadenieChisel[4] == 1) && ($sovpadenieChisel[5] == 1) && ($sovpadenieChisel[6] == 1)) { print "У вас стрит (5 цифр по порядку)<br>"; $summa = 10; } print "Вы выиграли 2 руб.<br>"; print "Ваша сумма $summa руб.<br>"; $schet += $summa; } //конец функции podschet print "<form method=get>"; //функция бросающая кость и выводящая их на экран brositKosti(); if ($etoVtoroiBrosok == TRUE) { print "<br>Был совершен 2й бросок<br>"; $etoVtoroiBrosok = FALSE; //выполняется второй бросок podschet(); //подсчитать выигрыш или проигрыш } else { print "<br>Компьютер бросил кости, какие кости бросить повторно? <br>"; $etoVtoroiBrosok = TRUE; } vivodRezultatov(); function vivodRezultatov() { //вывод результатов global $schet, $etoVtoroiBrosok; print "Счет: $schet"; print "<br><b>Примечание: </b>в случае нуля совпадений, не забывайте что за бросок от общей суммы счета отнимается 2 руб."; //сохраняем переменные в скрытых полях print "<input type=hidden name=etoVtoroiBrosok value=$etoVtoroiBrosok>"; print "<input type=hidden name=schet value=$schet>"; } //конец vivodRezultatov print "</form>"; ?> Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru     23  
  • 24. <?php session_start() ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html lang="EN" dir="ltr" xmlns="http://www.w3.org/1999/xhtml"> <head> <title>poker dice</title> <link rel = "stylesheet" type = "text/css" href = "pd.css" /> </head> <body> <h1>pokerDice.php</h1> <?php //set things up if it's the first time here, otherwise play if (filter_has_var(INPUT_POST, "doNext")){ play(); } else { startGame(); } // end if function play(){ //alternate control between firstPass and secondPass //functions based on $doNext $doNext = filter_input(INPUT_POST, "doNext"); if ($doNext == "firstPass"){ firstPass(); } else { secondPass(); evaluate(); } // end if } // end play function startGame(){ // if it's the first time here, set up initial cash, // and do firstPass $cash = 100; $_SESSION["cash"] = 100; firstPass(); } // end reset function firstPass(){ $cash = $_SESSION["cash"]; print <<< HERE <h2>First Pass</h2> <form method = "post" action = ""> <fieldset> HERE; for ($i = 0; $i < 5; $i++){ $die[$i] = rand(1, 6); //print "$i: $die[$i] "; print <<< HERE <div class = "dieImage"> <img src = "die$die[$i].jpg" alt = "$i" /> <input type = "checkbox" name = "keepIt[$i]" value = "$die[$i]" /> </div> HERE; } // end for print <<< HERE <input type = "hidden" name = "doNext" value = "secondPass" /> <button type = "submit"> go </button> <p>Cash: $cash</p> </fieldset> </form> HERE; $_SESSION["cash"] = $cash; } // end firstPass function secondPass(){ global $die; //get cash from session variable $cash = $_SESSION["cash"]; //print "cash: $cash <br />"; print <<< HERE <h2>Second Pass</h2> <form method = "post" action = ""> <fieldset> HERE; //check to see if keepIt exists // (which happens if any of the checkboxes is checked) if (filter_has_var(INPUT_POST, "keepIt")){ //pull all values from form $formVals = filter_input_array(INPUT_POST); //extract $keepIt array (easiest way to handle array input) $keepIt = $formVals["keepIt"]; for ($i = 0; $i < 5; $i++){ //if any values are empty, replace them with zero if (empty($keepIt[$i])){ $keepIt[$i] = 0; } // end if //print "$i) $keepIt[$i] <br />"; } // end for loop } else { //keepIt doesn't exist, so make it with //all zero values $keepIt = array(0, 0, 0, 0, 0); } // end if for ($i = 0; $i < 5; $i++){ //replace the image if the current value //of keepIt is non-zero if ($keepIt[$i] == 0){ $die[$i] = rand(1, 6); } else { $die[$i] = $keepIt[$i]; } // end if print <<< HERE <div class = "dieImage"> <img src = "die$die[$i].jpg" alt = "$i" /> </div> HERE; } // end for print <<< HERE <input type = "hidden" name = "doNext" value = "firstPass" /> <button type = "submit"> go </button> </fieldset> </form> HERE; } // end secondPass function evaluate(){ global $die; //set up payoff $payoff = 0; //create $numVals for($i = 1; $i <= 6; $i++){ $numVals[$i] = 0; } // end for loop //count the dice for ($theVal = 1; $theVal <= 6; $theVal++){ for ($dieNum = 0; $dieNum < 5; $dieNum++){ if ($die[$dieNum] == $theVal){ $numVals[$theVal]++; } // end if } // end dieNum for loop } // end theVal for loop //print out results // for ($i = 1; $i <= 6; $i++){ // // } // end for loop print "$i: $numVals[$i]<br />n"; //count how many pairs, threes, fours, fives $numPairs = 0; $numThrees = 0; $numFours = 0; $numFives = 0; for ($i = 1; $i <= 6; $i++){ switch ($numVals[$i]){ case 2: $numPairs++; break; case 3: $numThrees++; break; case 4: $numFours++; break; case 5: $numFives++; break; } // end switch } // end for loop print "<p> n"; //check for two pairs if ($numPairs == 2){ print "You have two pairs!<br />n"; $payoff = 1; } // end if //check for three of a kind and full house if ($numThrees == 1){ if ($numPairs == 1){ //three of a kind and a pair is a full house print "You have a full house!<br />n"; $payoff = 5; } else { Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru     24  
  • 25. print "You have three of a kind!<br />n"; $payoff = 2; } // end 'pair' if } // end 'three' if //check for four of a kind if ($numFours == 1){ print "You have four of a kind!<br />n"; $payoff = 5; } // end if //check for five of a kind if ($numFives == 1){ print "You got five of a kind!<br />n"; $payoff = 10; } // end if //check for straights if (($numVals[1] == 1) && ($numVals[2] == 1) && ($numVals[3] == 1) && ($numVals[4] == 1) && ($numVals[5] == 1)){ print "You have a straight!<br />n"; $payoff = 10; } // end if if (($numVals[2] == 1) && ($numVals[3] == 1) && ($numVals[4] == 1) && ($numVals[5] == 1) && ($numVals[6] == 1)){ print "You have a straight!<br />n"; $payoff = 10; } // end if $cash = $_SESSION["cash"]; //print "Cash: $cash<br />n"; //subtract some money for this roll $cash -= 2; print "You bet 2<br />n"; print "Payoff is $payoff<br />n"; $cash += $payoff; print "Cash: $cash<br />n"; print "</p> n"; //store cash back to session: $_SESSION["cash"] = $cash; } // end evaluate ?> </body> </html> 2. Напишите игру «Угадай число». Пусть компьютер создает число и дает пользователю возможность его угадать. Сообщайте пользователю, является ли его ответ слишком большим, слишком маленьким или правильным. После того как пользователь угадает значение, сообщите ему, сколько попыток для этого потребовалось. Для этой игры не нужны массивы, зато понадобится хранить данные в скрытых полях формы. Подсказка: Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru     25  
  • 26. <?php //создаем форму ввода, а данные отправляем в файл 2.php методом get (через адресную строку) print "<form method=get action=2.php>"; print "Угадай число от 0 до 100 <br><br>"; print "Введите свой ответ: "; //создаем поле ввода ответа print "<input type=text size = 3 name=otvetPolzovatelya> <br>"; //создаем кнопку отправки ответа print "<input type=submit value=OK>"; //функция генерирует случайное число в диапазоне от 0 до 100 function zagodatChislo() { $sluchChis = rand(0, 100); //используем скрытое поле для сохранения значения переменной $sluchChis print "<input type=hidden size = 3 name=sluchChis value=$sluchChis> <br>"; } //конец zagodatChislo //вызываем функцию создания случайного числа zagodatChislo(); print "</form>"; ?> <?php //принимаем значения переменных из файла 1.php $sluchChis = $_REQUEST["sluchChis"]; $otvetPolzovatelya = $_REQUEST["otvetPolzovatelya"]; //создаем форму для отправки данных самой себе //т.к. данный файл содержит функцию проверки введенного пользователем числа print "<form method=get action=2.php>"; //функция проверяющая совпадение ответа пользователя со сгенерированным случайным числом function proveritChisla() { //объявляем переменные глобальными, т.к. используются и за пределами функции global $otvetPolzovatelya, $sluchChis; if ($otvetPolzovatelya == $sluchChis) { print "Вы угадали! Число равно $sluchChis."; print "<br> <a href=1.php>Запустить игру повторно?</a>"; } else if ($otvetPolzovatelya < $sluchChis) { print "Случайное число больше!"; } else { print "Случайное число меньше!"; } } //конец proveritChisla //первый блок if требует того, чтобы пользователь ввел какое либо число if (empty($otvetPolzovatelya)) { print "Ошибка ввода ответа! <br>"; print "<a href=1.php>Запустить игру повторно?</a>"; print "<br> Случайное число равнялось: $sluchChis"; Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru     26  
  • 27. } else { //ВЫЗЫВАЕМ ФУНКЦИЮ СРАВНЕНИЯ ОТВЕТА СО СЛУЧАЙНЫМ ЧИСЛОМ proveritChisla(); //если введеное число больше ИЛИ меньше случайного числа //то необходимо создать поле ввода ответа, для повторного ввода значения пользователем if ($otvetPolzovatelya != $sluchChis) { print "<br>Введите свой ответ: "; print "<input type=text size = 3 name=otvetPolzovatelya> <br>"; //сохраняем введенный во второй раз ответ пользователя в скрытое поле print "<input type=hidden size = 3 name=sluchChis value=$sluchChis> <br>"; print "<input type=submit value=OK>"; } } //конец if ?> Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru     27  
  • 28. 3. Перепишите игру «Угадай число» наоборот. Пусть пользователь загадывает случайное число от 1 до 100, а компьютер угадывает правильный ответ. Пользователь будет выбирать из вариантов «слишком много», «слишком мало», «угадал». Ваш алгоритм должен угадывать любое число не больше чем за семь ходов. Подсказка: <?php //создаем форму ввода, а данные отправляем в файл 2.php методом get (через адресную строку) print "<form method=get action=2.php>"; print "Компьютер попытается угадать ваше число!"; print "<br> Придумайте число от 0 до 100: "; //создаем поле ввода ответа print "<input type=text size=3 name=chisloPolzovatelya> <br>"; //создаем кнопку отправки ответа print "<input type=submit value=OK>"; print "</form>"; ?> <?php //принимаем значение переменной из файла 1.php $chisloPolzovatelya = $_REQUEST["chisloPolzovatelya"]; //создаем форму для отправки данных самой себе print "<form method=get action=2.php>"; Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru     28  
  • 29. //ПК генерирует случайное число в диапазоне от 0 до 100 и сверяет его с "придуманным" числом function PCugadivaetChislo() { global $chisloPolzovatelya, $sluchChis; $sluchChis = rand(0, 100); //используем скрытое поле для сохранения значения переменной $sluchChis print "<input type=text size = 3 name=chisloPolzovatelya value=$chisloPolzovatelya> <br>"; print "<input type=text size = 3 name=sluchChis value=$sluchChis> <br>"; if ($chisloPolzovatelya == $sluchChis) { print "ПК отгадал Ваше число! Число равно $sluchChis."; print "<br> <a href=1.php>Запустить игру повторно?</a>"; } else if ($chisloPolzovatelya < $sluchChis) { print "ПК необходимо уменьшить число!<br>"; print "<input type=submit value=OK>"; } else { print "ПК необходимо увеличить число!<br>"; print "<input type=submit value=OK>"; } } //конец PCugadivaetChislo //первый блок if требует того, чтобы пользователь ввел какое-либо число if (empty($chisloPolzovatelya)) { print "Вы не придумали число! <br>"; print "<a href=1.php>Запустить игру повторно?</a>"; } else { PCugadivaetChislo(); } print "</form>"; ?> Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru     29  
  • 30. 4. Напишите программу, случайным образом сдающую карты для игры в покер. Она должна просто сдать пять случайных карт. Для хранения колоды используйте массив. Подсказка: <?php print "Программа выдающая (генерирующая) 5 карт (случайных чисел в диапазоне от 0 до 35) <br>"; //создаем массив значений (имен файлов с изображением карт) $cards = array( "2c.gif", "2d.gif", "2h.gif", "2s.gif", //крести, буби, черви, пики "3c.gif", "3d.gif", "3h.gif", "3s.gif", "4c.gif", "4d.gif", "4h.gif", "4s.gif", "5c.gif", "5d.gif", "5h.gif", "5s.gif", "6c.gif", "6d.gif", "6h.gif", "6s.gif", "7c.gif", "7d.gif", "7h.gif", "7s.gif", "8c.gif", "8d.gif", "8h.gif", "8s.gif", "9c.gif", "9d.gif", "9h.gif", "9s.gif", "tc.gif", "td.gif", "th.gif", "ts.gif", //десятка "jc.gif", "jd.gif", "jh.gif", "js.gif", //валет "qc.gif", "qd.gif", "qh.gif", "qs.gif", //королева "kc.gif", "kd.gif", "kh.gif", "ks.gif", //король "ac.gif", "ad.gif", "ah.gif", "as.gif" ); //туз //пусть значение карт равно 1 $c1 = $c2 = $c3 = $c4 = $c5 = 1; //пока одно из случайных чисел равно другому случайному числу требуется создавать случайные числа while ( ($c2 == $c1) | ($c3 == $c2) | ($c3 == $c1) | ($c4 == $c3) | ($c4 == $c2) | ($c4 == $c1) | ($c5 == $c4) | ($c5 == $c3) | ($c5 == $c2) | ($c5 == $c1) ){ //требуется число в диапазоне от 0 до 35 (36 чисел) //т.к. первый элемент массива имеет индекс 0 //т.е. cards[0] = 2c.gif $c1 = rand(0,35); $c2 = rand(0,35); $c3 = rand(0,35); $c4 = rand(0,35); $c5 = rand(0,35); }; //пять случайных чисел создано print "Эти случайные числа есть индексы массива cards: $c1, $c2, $c3, $c4, $c5 <br>"; print "<img src= ./papka_s_kartami/$cards[$c1]> "; print "<img src= ./papka_s_kartami/$cards[$c2]> "; print "<img src= ./papka_s_kartami/$cards[$c3]> "; Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru     30  
  • 31. print "<img src= ./papka_s_kartami/$cards[$c4]> "; print "<img src= ./papka_s_kartami/$cards[$c5]> "; //$имя_массива[$переменная_карта_(сл.число)] // => cards[c1] => // => cards[случайное_число_от_0_до_35] // => cards[1] // => 2d.gif ?> Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru     31  
  • 32. ЛАБОРАТОРНАЯ РАБОТА № 5. РАБОТА С ФАЙЛАМИ. 1. Написать программу сохраняющую файл на ПК. Подсказка: <?php $moi_tekst = "Данный текст будет записан в файл."; //открыть файл на стороне сервера, если его не существует, то создать //в качестве имени можно указать относительную ссылку //функция fopen возвращает целое число (дескриптор, указатель), которое используется //для обращения в следующих функциях //w – модификатор доступа write (содержимое перезаписывается) //r – модификатор доступа read //a – модификатор доступа add (запись в конец файла) //r+w+ – чтение и запись //файл tekst_file.txt будет размещен в папке с php-программой, например, в папке www $zapis_chtenie = fopen("tekst_file.txt", "w"); //указываем куда записать данные и какие fputs($zapis_chtenie, $moi_tekst); //завершить запись в файл fclose($zapis_chtenie); ?> Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru     32  
  • 33. 2. Написать программу считывающую файл и выводящую его содержимое. Подсказка: <?php //если файл не существует вместо указателя получим FALSE $zapis_chtenie = fopen("tekst_file.txt", "r"); //вывод первой строки текста из файла $stroka = fgets($zapis_chtenie); print "<center>$stroka</center> <br>"; //вывод оставшейся части текста //пока не достигнут конец файла while(!feof($zapis_chtenie)) { //получить одну строку файла $stroka = fgets($zapis_chtenie); print "$stroka <br>"; } fclose($zapis_chtenie); ?> Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru     33  
  • 34. 3. Написать программу выводящую список файлов jpg, gif содержащихся в заданной папке. Подсказка: <?php //программа выводит картинки, хранящиеся в папке с php-программой в браузер //а также создает файл с названиями gif-, jpg-файлов, хранящихся в папке //указываем путь к папке с картинками //список будет сохранен в файле spisok_kartinok.html $imyaPapki = "C:wampwww"; $deskriptor_papki = opendir($imyaPapki); //изменить текущий каталог на указанный в качестве параметра //возвращает TRUE в случае успешного завершения или FALSE в случае ошибки chdir($imyaPapki); //записать имена всех файлов в переменную $massiv_failov while ($tekushii_fail !== false){ $tekushii_fail = readDir($deskriptor_papki); $massiv_failov[] = $tekushii_fail; } // конец цикла while //извлекаем картинки gif и jpg из массива со списком файлов //фильтруем картинки в соответствии с заданным шаблоном //используем регулярные выражения // | означает ИЛИ // $ означает КОНЕЦ СТРОКИ (дополнительно смотри операторы регулярных выражений) $kartinki = preg_grep("/jpg$|gif$/", $massiv); //создаем файл для сохранения списка картинок $fp = fopen("spisok_kartinok.html", "w"); foreach ($kartinki as $tekushii_fail) { //выводим картинку в браузер $vivod_v_brauzer = $tekushii_fail; print "<img src=$vivod_v_brauzer height=50 width=50> <br><br>"; //записываем имя картинки в файл fputs ($fp, $vivod_v_brauzer); fputs ($fp, " "); } // конец цикла foreach //сохраняем текстовый файл с именами картинок fclose($fp); ?> Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru     34  
  • 35. ОПЕРАТОРЫ РЕГУЛЯРНЫХ ВЫРАЖЕНИЙ ОПЕРАТОР ОПИСАНИЕ ПРИМЕР ШАБЛОНА СОВПАДЕНИЕ НЕСОВПАДЕНИЕ . Любой символ кроме перевода на новую строку . e n ^ Начало строки ^a apple banana $ Конец строки a$ banana apple [characters] Любой символ в скобках [abcABC] a d [char range] Диапазон символов [a-zA-z] r 9 d Любая цифра ddd-dddd 123–4567 the-thing b Границы слова btheb the theater + Одно или более вхождение предыдущего символа d+ 1234 text * Ни одного или несколько вхождений предыдущего символа [a-zA-z]d* {digit} Повторить предыдущий символ указанное число раз d{3}-d{4} 123–4567 999-99-9999 | Оператор ИЛИ apple|banana apple, banana peach (pattern segment) Сохранить результат в шаблоне памяти, возвращенном численным кодом (^.).*/1 gig, blab (любое другое слово начинающееся или any other word заканчивающееся одной и той же буквой) Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru     35  
  • 36. 4. Улучшите программу тестирования. Добавьте возможность отправки результатов тестирования по электронной почте, анализ результатов тестирования, улучшите страницу редактирования тестов или добавьте что-нибудь свое. QuizMachine.php (главная страница) editQuiz.php (редактировать тест) takeQuiz.php (вывод теста) showLog.php (вывод журнала ответов) writeQuiz.php (сохранение файлов теста) gradeQuiz.php (проверка ответов) QuizMachine.php – Панель управления – стартовое окно программы <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html lang="EN" dir="ltr" xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Quiz Builder</title> <link rel = "stylesheet" type = "text/css" href = "quiz.css" /> </head> <body> <h1>Quiz Machine</h1> <?php getFiles(); showTest(); showEdit(); showLog(); function getFiles(){ //get list of all files for use in other routines global $dirPtr, $theFiles; chdir("."); $dirPtr = openDir("."); $currentFile = readDir($dirPtr); while ($currentFile !== false){ $theFiles[] = $currentFile; $currentFile = readDir($dirPtr); } // end while } // end getFiles function showTest(){ //print a list of tests for user to take global $theFiles; //select only quiz html files $testFiles = preg_grep("/mas$/", $theFiles); //generate the select box first $selQuiz = " <select name = "takeFile"> n"; Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru     36  
  • 37. foreach ($testFiles as $myFile){ $fileBase = substr($myFile, 0, strlen($myFile) - 4); $selQuiz .= <<<HERE <option value = "$fileBase"> $fileBase </option> HERE; } // end foreach $selQuiz .= " </select> n"; print <<<HERE <form action = "takeQuiz.php" method = "post"> <fieldset> <h3>Take a quiz</h3> <label>quiz password</label> <input type = "password" name = "password" /> <label>quiz</label> $selQuiz <button type = "submit"> Take quiz </button> </fieldset> </form> HERE; } // end showTest function showEdit(){ // let user select a master file to edit global $theFiles; //get only quiz master files $testFiles = preg_grep("/mas$/", $theFiles); //generate the select box first $selEdit = " <select name = "editFile"> n"; foreach ($testFiles as $myFile){ $fileBase = substr($myFile, 0, strlen($myFile) - 4); $selEdit .= <<<HERE <option value = "$fileBase"> $fileBase </option> HERE; } // end foreach // add a 'new quiz' option $selEdit .= <<<HERE <option value = "new"> new quiz </option> HERE; $selEdit .= " </select> n"; //edit a quiz Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru     37  
  • 38. print <<<HERE <form action = "editQuiz.php" method = "post"> <fieldset> <h3>Edit a quiz</h3> <label>admin password</label> <input type = "password" name = "password" value = "absolute"/> <label>quiz</label> $selEdit <button type = "submit"> Edit quiz </button> </fieldset> </form> HERE; } // end showEdit function showLog(){ //let user choose from a list of log files global $theFiles; $testFiles = preg_grep("/log$/", $theFiles); //generate the select box first $selLog = " <select name = "logFile"> n"; foreach ($testFiles as $myFile){ $fileBase = substr($myFile, 0, strlen($myFile) - 4); $selLog .= <<<HERE <option value = "$fileBase"> $fileBase </option> HERE; } // end foreach $selLog .= " </select> n"; //edit a quiz print <<<HERE <form action = "showLog.php" method = "post"> <fieldset> <h3>View a quiz log</h3> <label>admin password</label> <input type = "password" name = "password" value = "absolute" /> <label>quiz</label> $selLog <button type = "submit"> View log </button> </fieldset> </form> HERE; Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru     38  
  • 39. } // end showLog ?> </body> </html> editQuiz.php – Редактор теста – вызывается через QuizMachine.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html lang="EN" dir="ltr" xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Quiz Builder</title> <link rel = "stylesheet" type = "text/css" href = "quiz.css" /> </head> <body> <h1>Edit a Quiz</h1> <?php //retrieve variables from form $password = filter_input(INPUT_POST, "password"); $editFile = filter_input(INPUT_POST, "editFile"); if ($password != "absolute"){ print <<<HERE <p class = "error"> Incorrect Password.<br /> You must have a password in order to edit this quiz. </p> </body> </html> HERE; } else { //check to see if user has chosen a form to edit if ($editFile == "new"){ //if it's a new file, put in some dummy values $quizName = "sample test"; $quizEmail = "root@localhost"; $quizData = "q:a:b:c:d:correct"; $quizPwd = "php"; } else { //open up the file and get the data from it $editFile .= ".mas"; $fp = fopen($editFile, "r"); $quizName = fgets($fp); $quizEmail = fgets($fp); $quizPwd = fgets($fp); $quizData = ""; while (!feof($fp)){ $quizData .= fgets($fp); } // end while } // end 'new form' if print <<<HERE <form action = "writeQuiz.php" method = "post"> <fieldset> Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru     39  
  • 40. <label>Quiz Name</label> <input type = "text" name = "quizName" value = "$quizName" /> <label>Instructor Email</label> <input type = "text" name = "quizEmail" value = "$quizEmail" /> <label>Password</label> <input type = "text" name = "quizPwd" value = "$quizPwd" /> <textarea name = "quizData" rows = "20" cols = "60"> $quizData</textarea> <button type = "submit"> save quiz </button> </fieldset> </form> HERE; } // end if ?> </body> </html> writeQuiz.php – Запись теста <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html lang="EN" dir="ltr" xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Write Quiz</title> <link rel = "stylesheet" type = "text/css" href = "quiz.css" /> </head> <body> <?php //given a quiz file from editQuiz, //generates a master file and an HTML file for the quiz //load variables from form $quizName = filter_input(INPUT_POST, "quizName"); $quizEmail = filter_input(INPUT_POST, "quizEmail"); $quizPwd = filter_input(INPUT_POST, "quizPwd"); $quizData = filter_input(INPUT_POST, "quizData"); //open the output file $fileBase = str_replace(" ", "_", $quizName); $htmlFile = $fileBase . ".html"; $masFile = $fileBase . ".mas"; $htfp = fopen($htmlFile, "w"); $htData = buildHTML(); fputs($htfp, $htData); fclose($htfp); $msfp = fopen($masFile, "w"); Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru     40  
  • 41. $msData = buildMas(); fputs($msfp, $msData); print <<<HERE <pre> $msData </pre> HERE; fclose($msfp); function buildMas(){ //builds the master file global $quizName, $quizEmail, $quizPwd, $quizData; $msData = $quizName . "n"; $msData .= $quizEmail . "n"; $msData .= $quizPwd . "n"; $msData .= $quizData; return $msData; } // end buildMas function buildHTML(){ global $quizName, $quizData; $htData = <<<HERE <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html lang="EN" dir="ltr" xmlns="http://www.w3.org/1999/xhtml"> <head> <title>$quizName</title> <style type = "text/css"> ol ol { border-bottom: 1px solid black; } ol ol li { list-style-type: upperAlpha; } </style> </head> <body> HERE; //get the quiz data $problems = split("n", $quizData); $htData .= <<<HERE <h1>$quizName</h1> <form action = "gradeQuiz.php" method = "post"> <fieldset> <label>Name</label> <input type = "text" name = "student" /> <ol> HERE; $questionNumber = 1; foreach ($problems as $currentProblem){ list($question, $answerA, $answerB, $answerC, $answerD, $correct) = explode (":", $currentProblem); $htData .= <<<HERE Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru     41  
  • 42. <li> $question <ol> <li> <input type = "radio" name = "quest[$questionNumber]" value = "A" /> $answerA </li> <li> <input type = "radio" name = "quest[$questionNumber]" value = "B" /> $answerB </li> <li> <input type = "radio" name = "quest[$questionNumber]" value = "C" /> $answerC </li> <li> <input type = "radio" name = "quest[$questionNumber]" value = "D" /> $answerD </li> </ol> </li> HERE; $questionNumber++; } // end foreach $htData .= <<<HERE </ol> <input type = "hidden" name = "quizName" value = "$quizName" /> <input type = "submit" value = "submit quiz" /> </fieldset> </form> </body> </html> HERE; //print $htData; return $htData; } // end buildHTML ?> </body> </html> takeQuiz.php – Прохождение теста <?php //takeQuiz.php Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru     42  
  • 43. //given a quiz file, prints out that quiz //no doctype, because that's embedded in HTML //get password and filebase from form $takeFile = filter_input(INPUT_POST, "takeFile"); $password = filter_input(INPUT_POST, "password"); //get the password from the file $masterFile = $takeFile . ".mas"; $fp = fopen($masterFile, "r"); //the password is the third line, so get the first two lines, but ignore them $dummy = fgets($fp); $dummy = fgets($fp); $magicWord = fgets($fp); $magicWord = rtrim($magicWord); fclose($fp); if ($password == $magicWord){ $htmlFile = $takeFile . ".html"; //print out the page if the user got the password right readFile($htmlFile); } else { print <<<HERE <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html lang="EN" dir="ltr" xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Quiz Builder</title> <link rel = "stylesheet" type = "text/css" href = "quiz.css" /> </head> <body> <p class = "error"> Incorrect Password.<br /> You must have a password in order to take this quiz. </p> </body> </html> HERE; } // end if ?> gradeQuiz.php – Выставление оценки за прохождение теста <?php //retrieve data from form $student = filter_input(INPUT_POST, "student"); $quizName = filter_input(INPUT_POST, "quizName"); $quest = $_REQUEST["quest"]; print <<<HERE <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html lang="EN" dir="ltr" xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Grade for $quizName, $student</title> <link rel = "stylesheet" type = "text/css" href = "quiz.css" /> </head> <body> Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru     43  
  • 44. <h1>Grade for $quizName, $student</h1> HERE; //open up the correct master file for reading $fileBase = str_replace(" ", "_", $quizName); $masFile = $fileBase . ".mas"; $msfp = fopen($masFile, "r"); $logFile = $fileBase . ".log"; //the first three lines are name, instructor's email, and password $quizName = fgets($msfp); $quizEmail = fgets($msfp); $quizPwd = fgets($msfp); //step through the questions building an answer key $numCorrect = 0; $questionNumber = 1; while (!feof($msfp)){ $currentProblem = fgets($msfp); list($question, $answerA, $answerB, $answerC, $answerD, $correct) = split (":", $currentProblem); $key[$questionNumber] = $correct; $questionNumber++; } // end while fclose($msfp); //Check each answer from user for ($questionNumber = 1; $questionNumber <= count($quest); $questionNumber++){ $guess = $quest[$questionNumber]; $correct = $key[$questionNumber]; $correct = rtrim($correct); //print "$questionNumber, Guess = $guess, Correct = $correct.<br>n"; if ($guess == $correct){ //user got it right $numCorrect++; print "<p>problem # $questionNumber was correct</p> n"; } else { print <<<HERE <p style = "color: red"> problem # $questionNumber was incorrect </p> HERE; } // end if } // end for $percentage = ($numCorrect /count($quest)) * 100; print <<<HERE <p> you got $numCorrect right for $percentage percent </p> HERE; date_default_timezone_set("AMERICA/INDIANA/INDIANAPOLIS"); $today = date("F j, Y, g:i a"); //print "Date: $today<br>n"; $location = getenv("REMOTE_ADDR"); //print "Location: $location<br>n"; Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru     44  
  • 45. //add results to log file $lgfp = fopen($logFile, "a"); $logLine = $student . "t"; $logLine .= $today . "t"; $logLine .= $location . "t"; $logLine .= $numCorrect . "t"; $logLine .= $percentage . "n"; fputs($lgfp, $logLine); fclose($lgfp); ?> </body> </html> showLog.php – Просмотр журнала под учетной записью <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html lang="EN" dir="ltr" xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Quiz Builder</title> <link rel = "stylesheet" type = "text/css" href = "quiz.css" /> </head> <body> <?php //showLog.php //shows a log file //requires admin password $password = filter_input(INPUT_POST, "password"); $logFile = filter_input(INPUT_POST, "logFile"); $logFile .= ".log"; if ($password == "absolute"){ $lines = file($logFile); print "<pre>n"; foreach ($lines as $theLine){ print $theLine; } // end foreach print "</pre>n"; } else { print <<<HERE <p class = "error"> Incorrect Password.<br /> You must have a password in order to view this log. </p> HERE; } // end if ?> </body> </html> Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru     45  
  • 46. 5. Создайте просмотрщик исходного кода. Программа должна по заданному имени файла считывать его и преобразовывать все экземпляры < в &lt;, после чего сохранять этот новый файл с другим именем. Это позволит вам показывать свой исходный код другим людям. 6. Создайте простую гостевую книгу. Позвольте пользователю вводить информацию в форму, и когда он нажмет на кнопку Sumbit, добавьте его комментарий в конец страницы. Для этого вы можете использовать один или два файла. Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru     46  
  • 47. ЛАБОРАТОРНАЯ РАБОТА № 6. ИСПОЛЬЗОВАНИЕ MYSQL ДЛЯ СОЗДАНИЯ БАЗ ДАННЫХ (БД). 1. Запустите PhpMyAdmin на локальном сервере. Измените язык интерфейса на русский. Просмотрите список созданных БД. Запишите назначение остальных вкладок PhpMyAdmin(SQL, Состояние, Переменные и т.д.). Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru     47  
  • 48. 2. Создайте базу данных, например, «Телефонный справочник». 3. Разработайте простую таблицу для БД в тетради, например, «Список телефонов учителей». Ключ 0 1 Имя Александр Алексей Фамилия Гора Ниценко Почта gora@mail.ru nicenko@gmail.com Телефон 8-914-585-94-12 8-924-383-82-19 4. Напишите код для создания таблицы, например, «Список телефонов учителей». Просмотрите структуру таблицы в PhpMyAdmin. USE TelSprav; CREATE TABLE Spisok ( Klych INT PRIMARY KEY, Imya VARCHAR(15), Familiya VARCHAR(15), Pochta VARCHAR(20), Telefon VARCHAR(15) ); DESCRIBE Spisok; 5. Напишите код для заполнения таблицы данными. Просмотрите содержимое таблицы в PhpMyAdmin. USE TelSprav; INSERT INTO Spisok VALUES (0, 'Alexander', 'Gora', 'gora@mail.ru', '8-914-585-94-12'); 6. Удалите созданную базу данных. Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru     48  
  • 49. 7. Установите SQLyog. 9. Создайте базу данных, например, «Телефонный справочник». 10. Разработайте простую таблицу для БДв тетради. 11. Напишите код для создания таблицы. 12. Напишите код для заполнения таблицы данными. 13. Просмотрите содержимое таблицы. USE telsprav; DESCRIBE spisok; 13. Ознакомьтесь самостоятельно с SQLyog. Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru     49  
  • 50. ЛАБОРАТОРНАЯ РАБОТА № 7. ПОДКЛЮЧЕНИЕ К БД С ПОМОЩЬЮ PHP. 1. Написать программу, подключающуюся к БД и выводящая ее данные в виде таблицы. <?php //установить соединение с БД //функция языка PHP для работы с БД //mysql_connect требует 3 параметров: имя сервера, пользователя и пароль $soedinenie = mysql_connect("localhost", "root", ""); //выбор базы данных $db_selected = mysql_select_db("telsprav",$soedinenie); //создание запроса на выборку $zapros = "SELECT Imya, Familiya, Pochta, Telefon FROM spisok ORDER BY Familiya"; //функция отправляет БД любую команду SQL $otpravka_zaprosa = mysql_query($zapros, $soedinenie); //пример обращения к атрибуту поля "table" (название таблицы, которой принадлежит поле) $atribut = mysql_fetch_field($otpravka_zaprosa); print "Имя таблицы: " . $atribut->table . "<br>"; //создаем таблицу print "<table border = 1>"; //создаем и заполняем через цикл первую строку таблицы print "<tr>"; Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru     50  
  • 51. print "<th> Imya </th>"; //получить названия полей (столбцов) используя атрибут "name" – название поля while ($atribut = mysql_fetch_field($otpravka_zaprosa)) { //создаем ячейку тегом <th> сохраняем название поля print "<th>"; print "$atribut->name"; print "</th>"; } print "</tr>"; while ($stroka = mysql_fetch_assoc($otpravka_zaprosa)){ print "<tr>"; //просмотреть каждое поле (столбец) foreach ($stroka as $st => $znachenie){ print "<td>$znachenie</td>"; } // конец foreach print "<br>"; }// конец while //конец таблицы print "</table>"; mysql_close($soedinenie); ?> Свойство АТРИБУТЫ ПОЛЯ Описание атрибута max_length Длина поля (важно для типа VARCHAR) name Название поля (столбца) primary_key TRUE если поле является первичным ключом table Название таблицы, которой принадлежит поле type Тип данных этого поля 2. Написать программу, позволяющую просматривать, добавлять и редактировать записи в списке телефонов (предварительно создайте БД с таким списком телефонов). 3. Написать программу, которая запрашивает имя пользователя и выводит данные о нем из базы данных. Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru     51  
  • 52. ЛАБОРАТОРНАЯ РАБОТА № 8. НОРМАЛИЗАЦИЯ ДАННЫХ. 1. Запустите PhpMyAdmin на локальном сервере. • Измените язык интерфейса на русский. 2. Создайте базу данных Translation (Перевод). База данных имеет следующие особенности: • Переводчикам поручаются задания по ведению переговоров по всему миру. • У каждого переводчика есть имя. • Переводчик может знать несколько языков. • Несколько переводчиков могут знать один и тот же язык. • Каждый переводчик в определенный момент может выполнять только одно переводческое задание. • Каждое переводческое задание может выполнять несколько переводчиков. • Местоположение переводчика определяется выполняемым им переводом. • У каждого перевода есть только одно местоположение. CREATE DATABASE `Translation`; 3. Изучите структуру базы данных Translation (Перевод). Запишите в тетради ответы на следующие вопросы: А) Сколько полей в базе данных? Б) Какие типы данных представлены в структуре, их особенности? В) Какое поле является ключевым? Г) Для чего служит ключевое поле? Д) Какими языками владеют переводчики? Е) В чем проявляется ненормализованность базы данных? Схема НЕНОРМАЛИЗОВАННОЙ базы данных Перевод. Поле IDperevodchika Imya Yazik Zadanie Opisanie Mestonahozhdenie Тип int(11) varchar(30) varchar(40) varchar(40) varchar(40) varchar(20) Ноль YES YES YES YES YES YES Ключ PRI IDperevodchika 1 2 Imya Rinat Alex Yazik Kitaiskii Angliiskii 3 Anton EN 4 Anna Ukrainskii 5 Viktor Ukrainskii Zadanie Ustnii perevod Pismennii perevod Sinhronnii perevod Pismennii perevod Ustnii perevod По умолчанию (NULL) (NULL) (NULL) (NULL) (NULL) (NULL) Дополнительно AUTO_INCREMENT Opisanie Vstrecha gostei Perevod bukleta Mestonahozhdenie Kitai Angliya Perevod dialoga ministrov Perevod bukleta Angliya Perevod gida Ukraina Rossiya Проблемы базы данных Перевод. 1. Противоречивости данных вызвана тем, что пользователь вводящий несколько раз одни и те же данные может использовать разное написание слов: например, для английского языка Angliiskii, English, EN и т.п. Таким образом написание для одного и того же слова, разное. 2. Сохранения данных вызвана тем, что информация храниться в одной записи. Так, удалив переводчика Rinat мы удалим информацию о задании Vstrecha gostei, т.к. она храниться только в записи удаляемого переводчика. 3. Определения типа и размера полей вызвана тем, что трудно вычислить размер поля, которое содержит несколько записей, так если талантливый переводчик владеет пятью языками, то необходимо выделить место для хранения пяти направлений перевода для каждой записи каждого переводчика. Лабораторные работы (практикум) «Архитектура ЭВМ и вычислительных систем»   www.studentam‐in.ru     52