Разработка Web-приложений
Развитие цифровых и компьютерных технологий, перенос бизнес-инструментов в сеть. Создание и тестирование Web-приложений. Задачи специалистов по клинингу. Основы технологии html, работа с тегами. Структура гипертекстовой страницы в различных браузерах.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | методичка |
Язык | русский |
Дата добавления | 02.04.2019 |
Размер файла | 2,8 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
echo "<p style='font-size: 2em;'>I say $hello at ". date("H.i.s")."</p>";
?>
</body></html>
На рис. 2 показано, как выглядит приведенный сценарий при выполнении в браузере.
Рис. 2. Результаты выполнения сценария в браузере
Примеры скриптов
<?php
// получение информации о настройках веб-сервера и PHP
phpinfo();
//основы синтаксиса и программные единицы
//переменные и вывод
$str = "Hello, world";
echo "<h1>$str</h1>"; // это правильная конструкция. PHP способен разбирать строки и выделять переменные в них
// условный оператор
$min = -100;
$max = 100;
$i = rand($min, $max);
if ($i > 0) {echo "<p>Число положительное</p>";}
else if ($i < 0) {echo "<p>Число отрицательное</p>";}
else {echo "<p>Ноль</p>";}
// цикл for
echo "<h2>Таблица умножения</h2>";
echo "<table>";
for ($i=1; $i<=10; $i++) {
echo "<tr>";
for ($j=1; $j<=10; $j++) {
echo "<td style = 'background-color: silver;width:25px; height:25px; text-align:center; vertical-align: middle;'>".($i*$j)."</td>";
}
echo "</tr>";
}
echo "</table>";
// оператор выбора (скрипт должен быть вызван с параметром uname (e.g.: samples.php?uname=vasya))
echo "<h2>Использование оператора выбора </h2>";
$who = $_GET["uname"];
$reply = "<b>Liza say:</b> ";
switch ($who) {
case "kolya" : $reply.="fiii..."; break;
case "petya" : $reply.="khm..."; break;
case "vasya" : $reply.="ohhh..yyyyes!"; break;
default : $reply.= " Who's next?";
}
echo "<p><b>".$who." say:</b> What do U think about Me? <p>".$reply;
// массивы
$fruits = array("banana", "plum", "apple", "peach");
sort($fruits); // сортировка - см. документацию PHP "Функции массивов"
$out = "";
foreach ($fruits as $f)
$out .= "<li>$f</li>"; // конкатенация строк
echo "<ul>$out</ul>"
echo "<p>В массиве fruits ".count($fruits)." элем.</p>";
$fruits[5] = "pinapple";
print_r($fruits); // обратите внимание - элемент с индексом 4 в этом примере будет не определен
echo $fruits[4]; // ошибка! этот элемент не определен
$fruits[4] = "";
echo $fruits[4]; // элемент определен, но содержит пустую строку
// многомерные массивы
$vertex[1][0][0] = 1;
$vertex[0][1][0] = 1;
$vertex[0][0][1] = 1;
print_r($vertex);
// ассоциативные массивы
$coords[0]["X"] = 55;
$coords[0]["Y"] = 32;
$coords[1]["X"] = 27;
$coords[1]["Y"] = 0.56;
print_r($coords);
$page["head"] = "<head><title>PHP - it's easy</title></head>";
$page["body"] = "<body><p>A simple sample using associative arrays</p></body>";
print_r($page);
$p = $page["head"].$page["body"];
// файловые операции
$f = "read.me"; // файл в текущей директории
if (file_exists($f)) // проверка существования файла
$text = file_get_contents($f); // чтение из файла
file_put_contents($f, $p); // запись в файл, директория должна быть доступна для записи (access rights - 777)
// еще о файлах
$fd = fopen($f, "a"); // открытие для дозаписи (здесь "a" - append)
$str = "some text";
fwrite($fd, $str); // запись в конец файла
fclose($fd);
// переменные окружения
echo "<h1>Переменные окружения</h1>";
foreach ($_SERVER as $var=>$val) {
echo "<p>$"."_SERVER['$var'] = $val</p>";
};
// перенаправление запроса
$url = "index.html";
header("Location:$url"); // функция header заголовки http, поэтому должна вызываться раньше любого вывода
// Обработка параметров
echo "<p>Пусть на сервер передан запрос вида
http://myserv.dom/test.php?id=2344&uname=vasya&nick=vasiliok&age=19 (использован метод GET)
<p>Требуется вывести все переменные из строки запроса.";
echo "<ol><li>Использование функции печати массива: <br>";
print_r($_GET);
foreach ($_GET as $key => $val){
echo "<li>parameter: <b>".$key."</b> value: <b>".$val."</b>";
}
echo "</ul>\n<li>Поэлементный вывод (выводим только значения)<ul>";
echo "<li>ID: <b>".$_GET["id"]."</b>";
echo "<li>Firstname: <b>".$_GET["uname"]."</b>";
echo "<li>Nickname: <b>".$_GET["nick"]."</b>";
echo "<li>Age: <b>".$_GET["age"]."</b>";
echo "</ul></ol>";
echo "<p>Проверка, что переданы нужные параметры:";
if (isset($_GET["id"])) {
echo "<p><b>do something...</b>";} else {
echo "<p><b>nothing to do ...</b>";
};echo "<h2>Проверка, что передан нужный параметр и требуемое значение</h2>";
if ((isset($_GET["id"]))&&($_GET["id"] == 2344)){
echo "<p><b>do something...</b>";} else {
echo "<p><b>nothing to do ...</b>";}?>
Задания к работе
1. Типы переменных. Присвоение значений переменным.
2. Переменные. Вывод и удаление.
3. Создание Константы.
4. Конструкция Switch - Case.
5. Решить пример с применением массивов.
6. Приминение двумерных массивов.
7. Приминение одномерных массивов.
8. Приминение ассоциативных массивов.
9. Решить пример с применением цикла For.
10. Задача на использование циклов.
11. Задача на использование Foreach.
12. Приминение и изучение файловых операций.
Практическое занятие №6
Тема: Работа с условным оператором if-else
Цель работы: приобретение практических навыков в составлении алгоритмов и программ разветвленной структуры.
Указание к работе: 1. Введите первую программу примера 2 и выполните ее.
Измените программу так, как это было сделано во втором случае, т. е. с учетом равенства вводимых чисел.
2. Составьте программу определения большего из двух чисел.
Основные сведения
Условные операторы: if, '?'
Иногда, в зависимости от условия, нужно выполнить различные действия.
Для этого используется оператор if.
Например:
var year = prompt ('В каком году появилась спецификация ECMA-262 5.1?', '');
if (year != 2011) alert( 'А вот и неправильно!' );
Оператор if
Оператор if («если») получает условие, в примере выше это year != 2011.
Он вычисляет его, и если результат - true, то выполняет команду.
Если нужно выполнить более одной команды - они оформляются блоком кода в фигурных скобках:
if (year != 2011) {
alert( 'А вот..' );
alert( '..и неправильно!' );
}
Рекомендуется использовать фигурные скобки всегда, даже когда команда одна.
Это улучшает читаемость кода.
Преобразование к логическому типу
Оператор if (...) вычисляет и преобразует выражение в скобках к логическому типу.
В логическом контексте:
· Число 0, пустая строка "", null и undefined, а также NaN являются false,
· Остальные значения - true.
Например, такое условие никогда не выполнится:
if (0) { // 0 преобразуется к false
...
}
…А такое - выполнится всегда:
if (1) { // 1 преобразуется к true
...
}
Можно и просто передать уже готовое логическое значение, к примеру, заранее вычисленное в переменной:
var cond = (year != 2011); // true/false
if (cond) {
...
}
Неверное условие, else
Необязательный блок else («иначе») выполняется, если условие неверно:
var year = prompt ('Введите год появления стандарта ECMA-262 5.1', '');
if (year == 2011) {
alert( 'Да вы знаток!' );
} else {
alert( 'А вот и неправильно!' ); // любое значение, кроме 2011
}
Несколько условий, else if
Бывает нужно проверить несколько вариантов условия. Для этого используется блок else if ....
Например:
var year = prompt('В каком году появилась спецификация ECMA-262 5.1?', '');
if (year < 2011) {
alert( 'Это слишком рано..' );
} else if (year > 2011) {
alert( 'Это поздновато..' );
} else {
alert( 'Да, точно в этом году!' );
}
В примере выше JavaScript сначала проверит первое условие, если оно ложно - перейдет ко второму - и так далее, до последнего else.
Оператор вопросительный знак „?“
Иногда нужно в зависимости от условия присвоить переменную. Например:
var access;
var age = prompt('Сколько вам лет?', '');
if (age > 14) {
access = true;
} else {
access = false;
}
alert(access);
Оператор вопросительный знак '?' позволяет делать это короче и проще.
Он состоит из трех частей:
условие ? значение1 : значение2
Проверяется условие, затем если оно верно - возвращается значение1, если неверно - значение2, например:
access = (age > 14) ? true : false;
Оператор '?' выполняется позже большинства других, в частности - позже сравнений, поэтому скобки можно не ставить:
access = age > 14 ? true : false;
…Но когда скобки есть - код лучше читается. Так что рекомендуется их писать.
На заметку: В данном случае можно было бы обойтись и без оператора '?', т.к. сравнение само по себе уже возвращает true/false:
access = age > 14;
«Тернарный оператор»
Вопросительный знак - единственный оператор, у которого есть аж три аргумента, в то время как у обычных операторов их один-два. Поэтому его называют «тернарный оператор».
Несколько операторов „?“
Последовательность операторов '?' позволяет вернуть значение в зависимости не от одного условия, а от нескольких.
Например:
var age = prompt('возраст?', 18);
var message = (age < 3) ? 'Здравствуй, малыш!' :
(age < 18) ? 'Привет!' :
(age < 100) ? 'Здравствуйте!' :
'Какой необычный возраст!';
alert( message );
Поначалу может быть сложно понять, что происходит.
Однако, внимательно приглядевшись, мы замечаем, что это обычная последовательная проверка!
Вопросительный знак проверяет сначала age < 3, если верно - возвращает 'Здравствуй, малыш!', если нет - идет за двоеточие и проверяет age < 18.
Если это верно - возвращает 'Привет!', иначе проверка age < 100 и 'Здравствуйте!'…
И наконец, если ничего из этого не верно, то 'Какой необычный возраст!'.
То же самое через if..else:
if (age < 3) {
message = 'Здравствуй, малыш!';
} else if (age < 18) {
message = 'Привет!';
} else if (age < 100) {
message = 'Здравствуйте!';
} else {
message = 'Какой необычный возраст!';
}
Нетрадиционное использование „?“
Иногда оператор вопросительный знак '?' используют как замену if:
var company = prompt('Какая компания создала JavaScript?', '');
(company == 'Netscape') ?
alert('Да, верно') : alert('Неправильно');
Работает это так: в зависимости от условия, будет выполнена либо первая, либо вторая часть после '?'.
Результат выполнения не присваивается в переменную, так что пропадёт (впрочем, alert ничего не возвращает).
Рекомендуется не использовать вопросительный знак таким образом.
Несмотря на то, что с виду такая запись короче if, она является существенно менее читаемой.
Вот, для сравнения, то же самое с if:
var company = prompt('Какая компания создала JavaScript?', '');
if (company == 'Netscape') {
alert('Да, верно');
} else {
alert('Неправильно');
}
При чтении кода глаз идёт вертикально и конструкции, занимающие несколько строк, с понятной вложенностью, воспринимаются гораздо легче.
Возможно, вы и сами почувствуете, пробежавшись глазами, что синтаксис с if более прост и очевиден чем с оператором '?'.
Смысл оператора '?' - вернуть то или иное значение, в зависимости от условия.
Пожалуйста, используйте его по назначению, а для выполнения разных веток кода есть if.
if (строка с нулём)
важность: 5
Выведется ли alert?
if ("0") {
alert( 'Привет' );
}
решение
Проверка стандарта
важность: 2
Используя конструкцию if..else, напишите код, который будет спрашивать: «Каково «официальное» название JavaScript?».
Если посетитель вводит «ECMAScript», то выводить «Верно!», если что-то другое - выводить «Не знаете? «ECMAScript»!».
Блок-схема:
Проверка логина
важность: 3
Напишите код, который будет спрашивать логин (prompt).
Если посетитель вводит «Админ», то спрашивать пароль, если нажал отмена (escape) - выводить «Вход отменён», если вводит что-то другое - «Я вас не знаю».
Пароль проверять так. Если введён пароль «Чёрный Властелин», то выводить «Добро пожаловать!», иначе - «Пароль неверен», при отмене - «Вход отменён».
Блок-схема:
Для решения используйте вложенные блоки if. Обращайте внимание на стиль и читаемость кода.
Запустить демо
решение
Перепишите 'if' в '?'
важность: 5
Перепишите if с использованием оператора '?':
if (a + b < 4) {
result = 'Мало';
} else {
result = 'Много';
}
решение
Перепишите 'if..else' в '?'
важность: 5
Перепишите if..else с использованием нескольких операторов '?'.
Для читаемости - оформляйте код в несколько строк.
var message;
if (login == 'Вася') {
message = 'Привет';
} else if (login == 'Директор') {
message = 'Здравствуйте';
} else if (login == '') {
message = 'Нет логина';
} else {
message = '';
}
Задание к работе
1. Запишите условный оператор if для определения знака переменной var.
2. В каких случаях следует использовать оператор switch?
3. Используя условный оператор, выполните проверку на принадлежность значения переменной диапазону [10; 20).
4. Приведите программу замены малых латинских букв большими с использованием оператора switch.
5. Как записывается логическое равенство в операторе if?
6. Приведите обозначение логического знака «не равно».
7. Какими символами обозначаются логические операции И и ИЛИ в условном операторе if?
8. Вычислить значение переменной у по одной из двух ветвей:
9. В компьютер вводятся два числа. Если первое больше второго, то вычислить их сумму, иначе - произведение. После этого компьютер должен напечатать результат и текст ЗАДАЧА РЕШЕНА
10. Дракон каждый год отращивает по три головы, но после того, как ему исполнится 100 лет - только по две. Сколько голов и глаз у дракона, которому Nлет?
11. Дано целое число A. Проверить истинность высказывания: «Число A является положительным».
12. Человек вводит в компьютер число. Если оно находится в интервале от 28 до 30, то нужно напечатать текст ПОПАЛ, если оно больше или равно 30 - то ПЕРЕЛЕТ, если оно находится на отрезке от 0 до 28, то НЕДОЛЕТ, если число меньше нуля - НЕ БЕЙ ПО СВОИМ
Практическое занятие №7
Тема: Циклические операторы while(do-while), for и работа над ними
Цель работы: существует три оператора цикла, которые очень важно хорошо знать для написания программ.
Указание к работе: написать примеры к трем операторам циклам и узнать разницу между ними.
Оператор while. Конструкция оператора while
while (Условие выполнения) {
Тело цикла;
}
Где выражение в скобках определяет условие: пока (while) оно выполняется, будет выполняться выражение в фигурных скобках.
class WhileLoop {
public static void main (String[] args ) {
int a = 0;
while(a < 10) {
System.out.print(a);
a++;
}
}
}
Данный цикл выведет:
0123456789
Конструкция оператора do while:
do {
Тело цикла;
} while (условие выполения);
Отличие данного оператора от while только в том, что он является оператором постусловия (сначала выполнит, потом проверит). То есть, даже если условие не выполняется никогда, всё равно действие будет выполнено один раз.
public class DoWhileLoop {
public static void main (String[] args) {
int i = 0;
do {
System.out.print(i);
i++;
} while (i < 10);
System.out.println(); //Это можно использовать для простого перевода строки
do {
System.out.print("Do...while is cool;");
} while (2 == 3); //Можно было написать и просто false
}}
Данный цикл выведет:
0123456789
Do...while is cool;
Как видно из кода, несмотря на то что 2 != 3 строчка всё равно была выведена на экран.
Оператор for[править]. Конструкция оператора for
for (Начальное значение переменной; Логическое выражение с переменной(условие выполнения цикла); Действие над переменной, вызываемое при выполнении условия) {
Операторы, которые будут выполнять цикл при условии, что логическое выражение - true;}
Цикл for использует переменную и проверяя её значение выполняет операторы, после чего совершает над ней действие. Например:
class ForLoop {
public static void main (String[] args ) {
for (int i = 0; i < 10; i++) {
System.out.print ("Ku-Ku "); } }}
Цикл работает с переменной i. После инициализации или после выполнения действия, проверяется условие продолжения, если оно равно true, действие выполняется снова, после чего переменная увеличивается операцией инкремента.
Данный цикл выведет:
Ku-Ku Ku-Ku Ku-Ku Ku-Ku Ku-Ku Ku-Ku Ku-Ku Ku-Ku Ku-Ku Ku-Ku
Задания к работе
1. В чем отличия между операторами while и do while?
2. Дайте понятие вложенного цикла.
3. Запишите прототип функции, которая принимает два целочисленных аргумента и возвращает вещественное число.
4. Запишите функцию возведения числа в квадрат.
5. Дайте понятие рекурсии.
6. В каких задачах целесообразно использовать рекурсивные функции?
7. Приведите функцию с тремя аргументами, один из которых задан со значением по умолчанию.
8. Дайте понятие статических переменных и какие особенности их использования существуют?
9. В компьютер вводятся два числа. Если первое больше второго, то вычислить их сумму, иначе - произведение. После этого компьютер должен напечатать результат и текст ЗАДАЧА РЕШЕНА
10. Дракон каждый год отращивает по три головы, но после того, как ему исполнится 100 лет - только по две. Сколько голов и глаз у дракона, которому Nлет?
11. Дано целое число A. Проверить истинность высказывания: «Число A является положительным».
12. Человек вводит в компьютер число. Если оно находится в интервале от 28 до 30, то нужно напечатать текст ПОПАЛ, если оно больше или равно 30 - то ПЕРЕЛЕТ, если оно находится на отрезке от 0 до 28, то НЕДОЛЕТ, если число меньше нуля - НЕ БЕЙ ПО СВОИМ
Практическое занятие №8
Тема: Конструкция switch_case
Цель работы: сравнить выражение сразу с несколькими вариантами.
Указание к работе: напишите "if", аналогичный "switch", перепишите код с использованием одной конструкции switch,
Оператор switch
В отличие от операторов if-then и if-then-else, оператор switch применим к известному числу возможных ситуаций. Можно использовать простые типы byte, short, char, int.
Также можно использовать Enum и String (начиная с JDK7), и специальные классы, которые являются обёрткой для примитивных типов: Character, Byte, Short, Integer.
Дублирование значений case не допускается. Тип каждого значения должен быть совместим с типом выражения.
Команду switch часто называют командой выбора. Выбор осуществляется в зависимости от целочисленного выражения. Форма команды выглядит так:
switch(ВыражениеДляСравнения) {
case Совпадение1:
команда;
break;
case Совпадение2:
команда;
break;
case Совпадение3:
команда;
break;
default:
оператор;
break;
}
Параметр ВыражениеДляСравнения - выражение, в результате вычисления которого получается целое число (как правило).
Команда switch сравнивает результат ВыражениеДляСравнения с каждым последующим Совпадением. Если обнаруживается совпадение, то исполняется команда или набор команд, которые прописаны за данным оператором.
Если совпадений не будет, то исполняется команда после ключевого слова default. Однако оператор default не является обязательным.
В этом случае при отсутствии совпадений программа не выполняет никаких действий.
Каждая секция case обычно заканчивается командой break, которая передаёт управление к концу команды switch.
Рассмотрим простейший пример с месяцами. Запустим наш учебный проект и добавим код в обработчик нажатия кнопки
int month = 3;
String monthString;
switch (month) {
case 1: monthString = "Январь";
break;
case 2: monthString = "Февраль";
break;
case 3: monthString = "Март";
break;
case 4: monthString = "Апрель";
break;
case 5: monthString = "Май";
break;
case 6: monthString = "Июнь";
break;
case 7: monthString = "Июль";
break;
case 8: monthString = "Август";
break;
case 9: monthString = "Сентябрь";
break;
case 10: monthString = "Октябрь";
break;
case 11: monthString = "Ноябрь";
break;
case 12: monthString = "Декабрь";
break;
default: monthString = "Не знаем такого";
break;
}
mInfoTextView.setText(monthString);
Запустите проект и нажмите кнопку - в текстовом поле появится слово Март (любимый месяц котов).
При желании, можно переписать пример с использованием if-then-else:
int month = 3;
if (month == 1) {
mInfoTextView.setText("Январь");
} else if (month == 2) {
mInfoTextView.setText("Февраль");
}
... // и так далее
В каждом блоке case имеется оператор break, который прерывает свой блок кода. Его нужно использовать обязательно, иначе выполнение кода продолжится. Хотя иногда это и используется.
java.util.ArrayList<String> futureMonths = new java.util.ArrayList<String>();
int month = 8;
switch (month) {
case 1:
futureMonths.add("January");
case 2:
futureMonths.add("February");
case 3:
futureMonths.add("March");
case 4:
futureMonths.add("April");
case 5:
futureMonths.add("May");
case 6:
futureMonths.add("June");
case 7:
futureMonths.add("July");
case 8:
futureMonths.add("August");
case 9:
futureMonths.add("September");
case 10:
futureMonths.add("October");
case 11:
futureMonths.add("November");
case 12:
futureMonths.add("December");
break;
default:
break;
}
if (futureMonths.isEmpty()) {
mInfoTextView.setText("Invalid month number");
} else {
for (String monthName : futureMonths) {
mInfoTextView.setText(monthName);
}
}
Если код в блоках case совпадает, то блоки можно объединить. Например, код для подсчёта дней в месяце:
int month = 2;
int year = 2012;
int numDays = 0;
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
numDays = 31;
break;
case 4:
case 6:
case 9:
case 11:
numDays = 30;
break;
case 2:
if (((year % 4 == 0) && !(year % 100 == 0)) || (year % 400 == 0))
numDays = 29;
else
numDays = 28;
break;
default:
mInfoTextView.setText("Несуществующий месяц");
break;
}
mInfoTextView.setText("Число дней = " + numDays);
При изучении оператора if мы рассматривали пример с временами года. Перепишем его с использованием оператора switch:
int month = 3;
String season;
switch (month) {
case 12:
case 1:
case 2:
season = "Зимушка-зима";
break;
case 3:
case 4:
case 5:
season = "Весна";
break;
case 6:
case 7:
case 8:
season = "Лето";
break;
case 9:
case 10:
case 11:
season = "Осень";
break;
default:
season = "Вы с какой планеты?";
}
mInfoTextView.setText("Мартовские песни коты поют, когда на дворе "
+ season);
Следующий пример случайным образом генерирует английские буквы. Программа определяет, гласные они или согласные:
Random random = new Random();
for (int i = 0; i < 100; i++) {
int c = random.nextInt(26) + 'a';
mInfoTextView.setText((char)c + ", " + c + ": ");
switch (c) {
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':
mInfoTextView.setText("Гласная");
break;
case 'y':
case 'w':
mInfoTextView.setText("Условная гласная");
break;
default:
mInfoTextView.setText("Согласная");
break;
}
}
Так как метод Random.nextInt(26) генерирует значение между 0 и 26, для получения символа нижнего регистра остаётся прибавить смещение 'a', при этом символ a автоматически преобразуется к типу int. Символы в секциях case также представляют собой целочисленные значения, используемые для сравнения.
Чтобы вывести переменную c в символьном виде, её необходимо преобразовать к типу char, иначе значение будет выведено в числовом виде.
В Java SE 7 появилась возможность использовать объект String в операторе switch. Возможно, это будет работать и на Android в будущем (Upd.: вроде уже работает):
public class StringSwitchDemo {
public static int getMonthNumber(String month) {
int monthNumber = 0;
if (month == null) {
return monthNumber;
}
switch (month.toLowerCase()) {
case "january":
monthNumber = 1;
break;
case "february":
monthNumber = 2;
break;
case "march":
monthNumber = 3;
break;
case "april":
monthNumber = 4;
break;
case "may":
monthNumber = 5;
break;
case "june":
monthNumber = 6;
break;
case "july":
monthNumber = 7;
break;
case "august":
monthNumber = 8;
break;
case "september":
monthNumber = 9;
break;
case "october":
monthNumber = 10;
break;
case "november":
monthNumber = 11;
break;
case "december":
monthNumber = 12;
break;
default:
monthNumber = 0;
break;
}
return monthNumber;
}
public static void main(String[] args) {
String month = "August";
int returnedMonthNumber =
StringSwitchDemo.getMonthNumber(month);
if (returnedMonthNumber == 0) {
System.out.println("Invalid month");
} else {
System.out.println(returnedMonthNumber);
}
}
}
Допустимы вложенные операторы switch, но на практике я не сталкивался с таким кодом.
Запомните важные свойства оператора switch:
· Оператор switch отличается от оператора if тем, что может выполнять проверку только равенства, а оператор if может вычислять результат булева выражения любого типа.
· Две константы case в одном и том же операторе switch не могут иметь одинаковые значения
· Оператор switch эффективнее набора вложенных операторов if
Задания к работе
1. Случайное трехзначное число, оканчивающееся на 0. Вывести нечетное число.
2. Программа «Угадай число» с использованием только оператора ветвления.
3. Определить количество дней в году.
4. Проверка кратности числа.
5. Определение четверти на координатной плоскости.
6. Оператор IF в задаче выбора.
7. Найти среднее число из 5 чисел.
8. Вычислить значение переменной у по одной из двух ветвей:
9. В компьютер вводятся два числа. Если первое больше второго, то вычислить их сумму, иначе - произведение. После этого компьютер должен напечатать результат и текст ЗАДАЧА РЕШЕНА
10. Дракон каждый год отращивает по три головы, но после того, как ему исполнится 100 лет - только по две. Сколько голов и глаз у дракона, которому Nлет?
11. Дано целое число A. Проверить истинность высказывания: «Число A является положительным».
12. Человек вводит в компьютер число. Если оно находится в интервале от 28 до 30, то нужно напечатать текст ПОПАЛ, если оно больше или равно 30 - то ПЕРЕЛЕТ, если оно находится на отрезке от 0 до 28, то НЕДОЛЕТ, если число меньше нуля - НЕ БЕЙ ПО СВОИМ
Практическое занятие №9
Тема: Одномерные и двумерные массивы в PНР. Работа над ассоциативными массивами
Цель работы: определение массива, создавать массивы любой сложности непосредственно в теле программы (скрипта).
Указание к работе: существует два типа массивов, различающиеся по способу идентификации элементов, необходимо их показать на примерах.
Рано или поздно каждому программисту приходится сталкиваться с таким понятием как массив.
Массивом можно считать разновидность переменных, в котором храниться несколько значений.
Массив определяется при помощи конструкции array(), в круглых скобках которой указываются его значения:
<?php $arr = array('PHP', 'MySQL', 'Apache'); ?>
или
<?php $arr[] = "PHP"; $arr[] = "MySQL"; $arr[] = "Apache"; ?>
В C-подобных языках программирования, индекс массива традиционно начинается с 0.
Это означает, что если мы захотим вывести первое значение массива "PHP", нам потребуется обратиться к нулевому индексу:
<?php echo $arr[0]; // PHP ?>
Если требуется начать массив с другого индекса, например, с 1, то необходимо явно это указать в конструкцииarray():
<?php $arr = array(1 => "PHP", 2 => "MySQL", 3 => "Apache"); ?>
или
<?php $arr[1] = "PHP"; $arr[2] = "MySQL"; $arr[3] = "Apache"; ?>
Элементы массива можно использовать в двойных кавычках как обычные переменные, так код
<?php echo "$arr[1] $arr[2] $arr[3]"; ?>
или через цикл:
<?php for ($i = 1; $i <= 3; $i++) { echo $arr[$i]." "; } ?>
Следует заметить, что число элементов в массиве не обязательно знать заранее -- его можно вычислить при помощи функции count():
<?php for ($i = 1; $i <= count($arr); $i++) { echo $arr[$i]." "; } ?>
Выведет строку "PHP MySQL Apache".
В качестве индексов массива могут выступать не только числа, но и строки:
<?php $arr = array("first" => "PHP", "second" => "MySQL", "third" => "Apache"); ?>
или
<?php $arr["first"] = "PHP"; $arr["second"] = "MySQL"; $arr["third"] = "Apache"; ?>
В этом случае массив называется ассоциативным, а его индексы называются ключами. Для вывода элемента массива в строке кавычки (ни двойные, ни одинарные) указывать не следует:
<?php echo "$arr[first] $arr[second] $arr[third]"; ?>
Так как у ассоциативных массивов нет индексов, для обхода их введён специальный вид цикла -- foreach:
<?php foreach($arr as $key => $value) { echo "$key = $value <br />"; } ?>
В результате работы цикла будет выведено три строки
first = PHP second = MySQL third = Apache
Конструкция "$key =>", позволяющая получить доступ к ключу массива на каждом из циклов является не обязательно и может быть опущена:
<?php foreach($arr as $value) { echo "$value <br />"; } ?>
Ряд функций, также позволяют возвращать массивы, например, функция file(), которая читает файл и возвращает его содержимое в виде массива. Каждый элемент массива соответствует одной строке.
<?php $arr = file("text.txt"); for($i = 0; $i < count($arr); $i++) { echo $arr[$i]."<br />"; } ?>
Другой полезной функцией является функция explode(), которая позволяет разбить строку на несколько фрагментов, каждый из которых помещается в отдельный элемент массива:
<?php $str = "345|mail@mail.ru|http://www.softtime.ru|login|password"; $arr = explode("|",$str); for($i = 0; $i < count($arr); $i++) { echo $arr[$i]."<br />"; } ?>
Результат работы скрипта может выглядеть следующим образом:
345 mail@mail.ru http://www.softtime.ru login password
Существует и обратная функция -- implode(), которая объединяет, элементы массива в строку, используя для этого заданный разделитель:
<?php $arr[] = "345"; $arr[] = "mail@mail.ru"; $arr[] = "http://www.softtime.ru"; $arr[] = "login"; $arr[] = "password"; $str = implode("##",$arr); echo $str; //345##mail@mail.ru##http://www.softtime.ru##login##password ?>
Замечание. Вообще функций, которые потрошат строку превеликое множество, рассмотрение всех их выходят за рамки данной статьи.
Удалить отдельный элемент массива можно при помощи функции unset(), а проверить существование массива можно при помощи функции isset().
Определим массив из 10 элементов и уничтожим каждый чётный элемент.
<?php $arr = array(9, 8, 7, 6, 5, 4, 3, 2, 1, 0); unset($arr[0], $arr[2], $arr[4], $arr[6], $arr[8]); // Проверяем существуют ли элементы массива for($i = 0; $i < 10; $i++) { if(isset($arr[$i])) echo "Элемент $arr[$i] определён <br />"; else echo "Элемент $arr[$i] не определён <br />"; } ?>
Результатом работы скрипта из будут следующие строки
Элемент $arr[0] не определён
Элемент $arr[1] определён
Элемент $arr[2] не определён
Элемент $arr[3] определён
Элемент $arr[4] не определён
Элемент $arr[5] определён
Элемент $arr[6] не определён
Элемент $arr[7] определён
Элемент $arr[8] не определён
Элемент $arr[9] определён
При помощи функции unset() можно уничтожить весть массив сразу.
<?php $arr = array(9, 8, 7, 6, 5, 4, 3, 2, 1, 0); unset($arr); if(isset($arr)) echo "Массив определён"; else echo "Массив не определён"; ?>
До этого массивы выводились при помощи цикла, однако в PHP предусмотрена специальная функция для вывода дампа массива print_r(). Функция ориентирована на вывод в консольный поток, поэтому при выводе результатов в окно браузера лучше обрамить её тэгами <pre> и </pre>:
<?php $arr[] = "345"; $arr[] = "mail@mail.ru"; $arr[] = "http://www.softtime.ru"; $arr[] = "login"; $arr[] = "password"; echo "<pre>"; print_r($arr); echo "</pre>"; ?>
Результат работы скрипта выглядит следующим образом:
Array ( [0] => 345 [1] => mail@mail.ru [2] => http://www.softtime.ru [3] => login [4] => password )
Многомерные массивы
В качестве элементов массива могут выступать не только скалярные величины, но и сами массивы. В этом случае получаются так называемые многомерные массивы.
Пусть необходимо получить такую таблицу:
Имя |
Профессия |
Зарплата |
|
Вася |
Слесарь |
2500 |
|
Миша |
Строитель |
3000 |
|
Андрей |
Шофер |
2700 |
Для этого создадим двумерный массив:
<?php $arr = array( array(`Вася', `слесарь', 2500 ), array(`Миша','строитель', 3000), array(`Андрей', `шофер', 2700)); ?>
Теперь таблицу можно вывести при помощи следующего кода:
<?php for ($i = 0; $i < 3; $i++) { for ($j=0; $j <3; $j++) { echo ' | '.$arr[$i][$j]; } echo '<br />'; } ?>
Результат:
| Вася | слесарь | 2500 | Миша | строитель | 3000 | Андрей | шофер | 2700
Также можно использовать трехмерные, четырехмерные и т.п. массивы.
Операции над массивами (сборник рецептов)
1) Определения числа элементов в массиве count():
Создадим массив $name:
<?php $name = array('Boss', 'Lentin', 'NAV', 'Endless', 'Dragons', 'SiLeNT', 'Doctor', 'Lynx'); ?>
Чтобы определить число элементов в массиве можно поступить следующим образом:
<?php echo `Число элементов в массиве - '.count($name); ?>
Результат:
Число элементов в массиве - 8
2) Объединение массивов
a) Создадим два ассоциативных массива $a и $b:
<?php $a = array(“a” => ”aa”, “b” => “bb”); $b = array(“c” => ”cc”, “d” => “dd”); ?>
Пусть необходимо создать массив $c, которые будет содержать как элементы массива $a так и массива $b:
<?php $a = array("a"=>"aa", "x"=>"xx"); $b = array("c"=>"cc", "d"=>"dd"); $c = $a + $b; echo "<pre>"; print_r($c); echo "</pre>"; ?>
Результат:
Array ( [a] => aa [x] => xx [c] => cc [d] => dd )
b) Создадим два числовых массива $a и $b:
<?php $a = array(10,20); $b = array(100,200,300,400,500); ?>
Их уже не получится объединить при помощи конструкции $c = $a + $b;. Для их объединения потребуется воспользоваться функцией array_merge():
<?php $c = array_merge($a,$b); ?>
3) Сортировка массива
Воспользуемся массивом $name:
<?php $name = array('Boss', 'Lentin', 'NAV', 'Endless', 'Dragons', 'SiLeNT', 'Doctor', 'Lynx'); ?>
Пусть требуется отсортировать массив в алфавитном порядке, для этого можно воспользоваться следующим кодом:
<?php sort($name); echo "<pre>"; print_r($name); echo "</pre>"; ?>
Результат:
Array ( [0] => Boss [1] => Doctor [2] => Dragons [3] => Endless [4] => Lentin [5] => Lynx [6] => NAV [7] => SiLeNT )
Пусть необходимо из массива $name выбрать самый короткий элемент(у которого наименьшее количество символов), в этом случае можно воспользоваться кодом:
<?php $name = array('Boss', 'Lentin', 'NAV', 'Endless', 'Dragons', 'SiLeNT', 'Doctor', 'Lynx'); $min = strlen($name[0]); $nam = $name[0]; for ($i=1; $i < count($name); $i++) { $len = strlen($name[$i]); if ($len < $min) { $nam = $name[$i]; $min = strlen($nam); } } echo 'Наименьшая длина - '.$nam; ?>
4) Перемещение внутри массива
Создадим массив $num:
<?php $num = array(1,2,3,4,5,6,7,8,9,10); ?>
Пусть требуется отобразить элементы массива в обратном порядке, в этом случае можно воспользоваться кодом:
<?php $end = end($num); While ($end) { echo $end.' - '; $end = prev($num); } ?>
Результат:
10 - 9 - 8 - 7 - 6 - 5 - 4 - 3 - 2 - 1
Приведённый выше код можно модифицировать:
<?php $num = range(1,10); print_r (array_reverse($num)); ?>
Функция range(1,10) создает массив (1,2,3,4,5,6,7,8,9,10) со случайным расположением элементов. Функцияarray_reverse() принимает массив и располагает элементы в обратном порядке (10,9,8,7,6,5,4,3,2,1)
Функции next(), each() перемещают указатель на один элемент вперед. Функция reset() возвращает указатель на 1 элемент в массиве. Воспользуемся массивом $num:
<?php $num = array(1,2,3,4,5,6,7,8,9,10); ?>
Пусть необходимо вывести все элементы по порядку, и на последнем элементе массива вернуть указатель на первый элемент массива. Эту операцию можно осуществить при помощи следующего кода:
<?php $i=0; //Индекс 1 элемента while ($i < count($num)) { echo $num[$i].' '; $i++; //Проверка если $i равен числу элементов в массиве //тогда выводим последний элемент и возвращаем указатель if ($num[$i] == count($num)) { echo $num[$i]; reset ($num); echo '<br />'."Конец массива"; exit(); }}?>
Результат:
1 2 3 4 5 6 7 8 9 10 Конец массива
5) Перемешивание элементов в массиве shuffle()
<?php $a = array(43,'PHP',4,57,'Boss',90); shuffle($a); foreach ($a as $n) echo "$n "; ?>
6) Случайный элемент массива
Если имеется готовый массив, из которого необходимо вывести один случайный элемент, для этого необязательно перемешивать весь массив при помощи функции shuffle(), достаточно сгенерировать случайный индекс массива:
<?php // Определяем массив $arr = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); // Генерируем случайный индекс массива $index = rand(0,count($arr) - 1); // Выводим случайный элемент массива echo $arr[$index]; ?>
7) Получение части массива array_slice()
Создадим массив $a
<?php $a = array(`a','b','3','5','f'); ?>
Получить часть массива можно при помощи следующего кода:
<?php $b = array_slice($a, 2) // вывод 3, 5, f $b = array_slice($a,0,3) // a, b, 3 ?>
8) Сериализация массива
Функции serialize() и unserialize() позволяют осуществлять упаковку и распаковку, соответственно, массивов и объектов.
Замечание. Сериализация впервые появилась в объектно-ориентированных библиотеках, (первой из которых была MFC), потом сериализация стала появляться в объектно-ориентированных языках (Java).
Идея сериализации заключается в том, что объекты и массивы очень сложны по своей структуре и на сохранения их путём перебора каждого элемента требуется значительный объём кода -- самым простым решением является сохранение таких структур в виде единой закодированной последовательности -- байт-коде.
В PHP функции сериализации упаковывают данные не виде байт-кода, а виде строки.
<?php $poll[0] = 23; $poll[1] = 45; $poll[2] = 34; $poll[3] = 2; $poll[4] = 12; // Упаковываем массив в строку $str = serialize($poll); echo $str."<br />"; // Извлекаем массив из строки $arr = unserialize($str); print_r($arr); ?>
Результат:
a:5:{i:0;i:23;i:1;i:45;i:2;i:34;i:3;i:2;i:4;i:12;} Array ( [0] => 23 [1] => 45 [2] => 34 [3] => 2 [4] => 12 )
Задания к работе
1. Создать массив student со значениями имен, фамилий и возраста студентов. Вывести на экран значения элементов массива.
2. Преобразования типов и перезаписи элементов. Обратите внимание на использование процедуры var_dump()
3. Использования многомерного массива и организации доступа к его элементам.
4. Найдите сумму и количество элементов массива, попавших в интервал [a; b]. Границы интервала вводятся с клавиатуры.
5. Задан упорядоченный по возрастанию целочисленный массив. Сформировать второй массив из случайных целых чисел, которые не встречаются в первом массиве, но имеют величину больше минимального и меньше максимального из чисел первого массива.
6. Вводится массив, представляющий собой сжатие серий нулей и единиц, где каждый элемент обозначает количество элементов в очередной серии нулей или единиц. Но если первым элементом вводимого массива является 0, значит первая серия распакованного массива - единицы.
7. Найти сумму положительных элементов массива.
8. Какая сумма элементов массива больше - с первого до элемента с номером К или от элемента с номером К+1 до последнего.
9. Найти элементы массива, которые сильно отклоняются от среднего значения (элементов массива).
10. Найти сумму тех элементов массива, которые одновременно имеют четные и отрицательные значения.
11. При заданных координатах A1, A2, ..., An одной точки и координатах B1, B2, ..., Bn другой точки n-мерного пространства. Найти расстояние между ними по формуле sqrt(sqr(A1-B1) + ... + sqr(An-Bn)).
12. В однородном массиве, состоящем из N вещественных элементов, найти максимальный по модулю элемент массива.
Практическое занятие №10.
Тема: Понятие функций в php.
Цель работы: функции предназначены для выполнения различных манипуляций со строками. Более специализированные функции см. в разделах, посвященных регулярным выражениям.
Указание к работе: для получения общей информации о работе со строками, особенно об использовании одиночных и двойных кавычек и экранировании символов мы используем функции.
Требования
Эти функции всегда доступны.
Установка
Для использования этих функций не требуется проведение установки, поскольку они являются частью ядра PHP.
Предопределенные константы
Перечисленные ниже константы определены данным расширением и могут быть доступны только в том случае, если PHP был собран с поддержкой этого расширения или же в том случае, если данное расширение подгружается во время выполнения.
CRYPT_SALT_LENGTH integer
CRYPT_STD_DES integer
CRYPT_EXT_DES integer
CRYPT_MD5 integer
CRYPT_BLOWFISH integer
HTML_SPECIALCHARS (integer)
HTML_ENTITIES (integer)
ENT_COMPAT (integer)
ENT_QUOTES (integer)
ENT_NOQUOTES (integer)
CHAR_MAX (integer)
LC_CTYPE (integer)
LC_NUMERIC (integer)
LC_TIME (integer)
LC_COLLATE (integer)
LC_MONETARY (integer)
LC_ALL (integer)
LC_MESSAGES (integer)
STR_PAD_LEFT (integer)
STR_PAD_RIGHT (integer)
STR_PAD_BOTH (integer)
Смотрите также
Для получения информации о более сложной обработке строк обратитесь к разделам о регулярных выражениях:POSIX-совместимых и Perl-совместимых.
Содержание
addcslashes -- Экранирует спецсимволы в стиле языка C
addslashes -- Экранирует спецсимволы в строке
bin2hex -- Преобразует бинарные данные в шестнадцатиричное представление
chop -- Псевдоним функции rtrim()
chr -- Возвращает символ по его коду
chunk_split -- Разбивает строку на фрагменты
convert_cyr_string -- Преобразует строку из одной кириллической кодировки в другую
convert_uudecode -- Преобразует строку из формата uuencode в обычный вид
convert_uuencode -- Преобразует строку в формат uuencode
count_chars -- Возвращает информацию о символах, входящих в строку
crc32 -- Вычисляет CRC32 для строки
crypt -- Необратимое шифрование (хэширование)
echo -- Выводит одну или более строк
explode -- Разбивает строку на подстроки
fprintf -- Записывает отформатированную строку в поток
get_html_translation_table -- Возвращает таблицу преобразований, используемую функциями htmlspecialchars() иhtmlentities()
hebrev -- Преобразует текст на иврите из логической кодировки в визуальную.
hebrevc -- Преобразует текст на иврите из логической кодировки в визуальную с преобразованием перевода строки.
html_entity_decode -- Преобразует HTML сущности в соответствующие символы
htmlentities -- Преобразует символы в соответствующие HTML сущности.
htmlspecialchars_decode -- Преобразует специальные HTML-сущности обратно в соответствующие символы
htmlspecialchars -- Преобразует специальные символы в HTML сущности
implode -- Объединяет элементы массива в строку
join -- Псевдоним функции implode()
levenshtein -- Вычисляет расстояние Левенштейна между двумя строками
localeconv -- Возвращает информацию о числовых форматах
ltrim -- Удаляет пробелы из начала строки
md5_file -- Возвращает MD5 хэш файла
md5 -- Возвращает MD5 хэш строки
metaphone -- Возвращает ключ metaphone для строки
money_format -- Форматирует число как денежную величину
nl_langinfo -- Возвращает информацию о языке и локали
nl2br -- Вставляет HTML код разрыва строки перед каждым переводом строки
number_format -- Форматирует число с разделением групп
ord -- Возвращает ASCII код символа
parse_str -- Разбирает строку в переменные
print -- Выводит строку
printf -- Выводит отформатированную строку
quoted_printable_decode -- Раскодирует строку, закодированную методом quoted printable
quotemeta -- Экранирует специальные символы
rtrim -- Удаляет пробелы из конца строки
setlocale -- Устанавливает локаль
sha1_file -- Возвращает SHA1 хэш файла
sha1 -- Возвращает SHA1 хэш строки
similar_text -- Вычисляет степень похожести двух строк
soundex -- Возвращает ключ soundex для строки
sprintf -- Возвращает отформатированную строку
sscanf -- Разбирает строку в соответствии с заданным форматом
str_ireplace -- Регистро-независимый вариант функции str_replace().
str_pad -- Дополняет строку другой строкой до заданной длины
str_repeat -- Возвращает повторяющуюся строку
str_replace -- Заменяет строку поиска на строку замены
str_rot13 -- Выполняет над строкой преобразование ROT13
str_shuffle -- Переставляет символы в строке
str_split -- Преобразует строку в массив
str_word_count -- Возвращает информацию о словах, входящих в строку
strcasecmp -- Сравнение строк без учета регистра, безопасное для данных в двоичной форме
strchr -- Псевдоним функции strstr()
strcmp -- Сравнение строк, безопасное для данных в двоичной форме
strcoll -- Сравнение строк с учетом текущей локали
strcspn -- Возвращает длину участка в начале строки, не соответствующего маске
strip_tags -- Удаляет HTML и PHP тэги из строки
stripcslashes -- Удаляет экранирование символов, произведенное функцией addcslashes()
stripos -- Возвращает позицию первого вхождения подстроки без учета регистра
stripslashes -- Удаляет экранирование символов, произведенное функцией addslashes()
stristr -- Регистро-независимый вариант функции strstr().
strlen -- Возвращает длину строки
strnatcasecmp -- Сравнение строк без учета регистра с использованием алгоритма "естественного упорядочения"
strnatcmp -- Сравнение строк с использованием алгоритма "естественного упорядочения"
strncasecmp -- Сравнение первых n символов строк без учета регистра, безопасное для данных в двоичной форме
strncmp -- Сравнение первых n символов строк без учета регистра, безопасное для данных в двоичной форме
strpbrk -- Ищет в строке любой символ из заданного набора
strpos -- Возвращает позицию первого вхождения подстроки
strrchr -- Находит последнее вхождение подстроки
strrev -- Переворачивает строку
strripos -- Возвращает позицию последнего вхождения подстроки без учета регистра
strrpos -- Возвращает позицию последнего вхождения символа
strspn -- Возвращает длину участка в начале строки, соответствующего маске
strstr -- Находит первое вхождение подстроки
strtok -- Разбивает строку
strtolower -- Преобразует строку в нижний регистр
strtoupper -- Преобразует строку в верхний регистр
strtr -- Преобразует заданные символы
substr_compare -- Безопасное для обработки данных в двоичной форме сравнение 2 строк со смещением, с учетом или без учета регистра
substr_count -- Возвращает число вхождений подстроки
substr_replace -- Заменяет часть строки
substr -- Возвращает подстроку
trim -- Удаляет пробелы из начала и конца строки
ucfirst -- Преобразует первый символ строки в верхний регистр
ucwords -- Преобразует в верхний регистр первый символ каждого слова в строке
vfprintf -- Записывает форматированную строку в поток
vprintf -- Выводит отформатированную строку
vsprintf -- Возвращает отформатированную строку
wordwrap -- Выполняет перенос строки на данное количество символов с использованием символа разрыва строки.
Задания к работе
1. Дайте понятие файла.
2. Для чего предназначена функция fopen() и в какой библиотеке она определена?
3. Чему должен быть равен второй аргумент функции fopen() для открытия файла на чтение?
4. Какое значение возвращает функция fopen() при неудачном открытии файла?
5. Дайте понятие текстового режима доступа к файлу.
6. Для чего предназначены функции getc(), fgets() и fscanf()?
7. Запишите программу для записи информации по книгам в файл с помощью функции fprintf().
8. В чем отличие режима добавления информации в файл от режима записи информации?
9. Что делают функции fseek() и ftell()?
10. Дайте понятие бинарного режима доступа к файлу.
11. Какие функции позволяют записывать и считывать информацию из бинарного файла?
12. Для чего предназначена функция fclose()?
Практическое занятие № 11
Тема: Работа над методами get и post
Цель работы: применить метод get и post с открытым исходным кодом и понять смысл применения этога метода на практике.
Указание к работе: в формах для отправки данных на сервер применяются два метода HTTP-запросов: GET и POST, каждый из которых имеет свои преимущества и недостатки и применяется в зависимости от конкретной ситуации
Протокол HTTP
Протокол HTTP работает поверх TCP/IP. Фактически же это означает, что клиент открывает сокет до сервера, пишет туда HTTP запрос (request), сервер читает запрос, обрабатывает его и посылает результат обработки (response) обратно клиенту.
Любой HTTP запрос, как и любой ответ по этому протоколу состоит из двух блоков: заголовок и собственно данные. Заголовок отделён от данных двойным символом переноса строки (в Java это будет "\n\n", хотя допускается и "\r\n\r\n" для платформы Windows).
Так как HTTP был изначально ориентирован на пересылку прежде всего текстовой информации, то HTTP заголовок является полностью текстовым, все символы, передающиеся в нём, являются печатными (прежде всего цифры и литеры латинского алфавита A-Z, a-z, а также набор других отображаемых символов + символ переноса строки "\n" или "\r\n"). При передаче в HTTP заголовке других символов, будет выдана ошибка "400 Вad request".
HTTP запросы. CGI интерфейс. Методы
Разберём подробнее HTTP запрос клиента. Он может выглядеть например так:
POST http://localhost/ HTTP/1.1
Подобные документы
Облачные технологии в бизнес-процессах. Модели использования бизнес-приложений в качестве интернет-сервисов. Практика применения облачных технологий. Приложения, созданные на основе Windows Azure. Создание систем и офисных приложений по запросу.
реферат [25,3 K], добавлен 16.06.2013Цели, задачи и компоненты информационной технологии управления. Разработка структуры сайта и программный код работы в HTML–редакторе: создание титульной страницы, документа с фреймами, связь информационных документов с помощью гипертекстовых ссылок.
курсовая работа [34,3 K], добавлен 11.08.2011Концептуальное проектирование сайта по онлайн-продаже кофе, его древовидная логическая структура страниц. Описание языка гипертекстовой разметки сайта HTML, особенности отображения HTML-тегов в браузерах. Создание формы заказа для онлайн-торговли.
курсовая работа [2,2 M], добавлен 16.04.2017Структура HTML–документа. Синтаксис записи тега. Обозначение цветов в шестнадцатеричной системе счисления. Формат задания и параметры таблицы в документе, параметры её заголовка, строк и ячеек, группирование столбцов. Наследование свойств выравнивания.
курсовая работа [318,8 K], добавлен 03.01.2014Создание приложений: ProgressBar, вычисление по формуле, двумерный массив, калькулятор, медиа-плеер, одномерный массив, список, текстовый редактор. Создание различных обработчиков событий. Разработка заставки, окна ввода пароля и главной формы.
лабораторная работа [781,7 K], добавлен 22.01.2015Создание сайта при помощи HTML и CSS. Язык гипертекстовой разметки HTML и таблица стилей CSS. Основные понятия об этих языках, этапы и алгоритмы программного обеспечения. Добавление стилей в документ. Свойства элементов, принцип построения Web-страницы.
курсовая работа [2,9 M], добавлен 12.01.2016Устройство веб-приложений, преимущества их построения. Характеристика технологий веб-программирования, используемых на стороне сервера и на стороне клиента. Формирование и обработка запросов, создание интерактивного и независимого от браузера интерфейса.
контрольная работа [76,4 K], добавлен 08.07.2014Проектирование системы управления базами данных. Особенности реализации в MS SQL. Разработка пользовательского интерфейса. Тестирование и отладка приложения. Руководство пользователя и системного администратора. Анализ и методы разработки приложений.
курсовая работа [867,9 K], добавлен 16.07.2013Технические возможности средств вычислительной техники. Понятие "информационная система" в Web. Обеспечение переносимости приложений и информационных ресурсов между различными программно–аппаратными платформами. Тенденции в развитии технологий Web.
курсовая работа [163,9 K], добавлен 25.05.2009Рассмотрение понятия и классификации Web-технологий. Основные требования к созданию главной страницы сайта, раздела "О нас", контента, привязанности. Определение направлений использования языков программирования HTML, PHP, JavaScript, VBScript, Perl.
курсовая работа [49,3 K], добавлен 13.07.2010