Методичка: Разработка Web-приложений

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

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(), достаточно сгенерировать случайный индекс массива: