Анимация
JavaScript


Главная  Библионтека 

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 [ 83 ] 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103


Ответы к упражнениям

в этом приложении даны ответы к упражнениям, помещенным в конце каждой главы.

Глава 2 Скалярные данные

1. Вот один из способов решения этой задачи:

$pi = 3.141592654; $result = 2 * $pi * 12.5;

print "radius 12.5 is circumference $result\n";

Сначала мы присваиваем константу (число л) скалярной переменной $р i. Затем мы вычисляем длину окружности, используя значение $pi в выражении, и, наконец, выводим результат, применяя строку, содержащую ссылку на него.

2. Вот один из способов решения этой задачи:

print "What is the radius: "; chomp($radius = <STDIN>); $pi = 3.141592654; $result = 2 * $pi * $radius;

print "radius $radius is circumference $result\n";

Это похоже на предьщущий пример, но здесь мы попросили пользователя, выполняющего программу (применив для выдачи приглашения оператор print), ввести значение. Считывание строки с терминала осуществляется посредством операции <stdin>.



Если бы мы забыли применить функцию chomp, то получили бы посреди выведенной строки символ новой строки. Важно как можно быстрее выбросить этот символ из строки.

3. Вот один из способов решения этой задачи:

print "First number: "; chomp($a = <STDIN>); print "Second number: "; chomp($b = <STDIN>); $c = $a * $b; print "Answer is $c.\n";

Первая строка делает три вещи: приглашает вас ввести число, считывает строку со стандартного ввода, а затем избавляется от неизбежного символа новой строки. Поскольку мы используем значение $а строго как число, функцию chomp здесь можно опустить, потому что в числовом контексте 4 5\п - это 4 5. Однако столь небрежное программирование может впоследствии обернуться неприятностями (например, если нужно будет включить $а в сообщение).

Вторая строка делает то же самое со вторым числом и помещает его в скалярную переменную $Ь.

Третья строка перемножает эти два числа и выводит результат. Отметьте здесь наличие символа новой строки в конце строки (тогда как в первых двух строках он отсутствует). Первые два сообщения - это приглашения, в ответ на которые пользователь должен ввести число в той же строке. Последнее сообщение - это оператор; если бы мы выбросили символ новой строки, то сразу же за сообщением появилось бы приглашение shell. Не очень-то хорошо.

4. Вот один из способов решения этой задачи:

print "String: "; $а = <STDIN>;

print "Number of times: "; chomp($b = <STDIN>); $c = $a X $b; print "The result is:\n$c";

Как в предыдущем зтражнении, первые две строки запрашивают значения двух переменных и принимают их. Однако здесь мы не выбрасываем символ новой строки, потому что он нам нужен! Третья строка получает введенные значения и выполняет над ними операцию многократного повторения строк, а затем выводит ответ. Обратите внимание на то, что за вычисляемой переменной $с в операторе print нет символа новой строки, поскольку мы считаем, что $с в любом случае заканчивается этим символом.



Глава 3 Массивы и списочные данные"

1. Вот один из способов решения этой задачи:

print "Enter the list of strings:\n"; eiist = <STDIN>; @reverselist = reverse glist; print @reverselist;

Первая строка приглашает ввести строки. Вторая строка считывает эти строки в переменную-массив. Третья строка формирует список с обратным порядком расположения элементов и заносит его в другую переменную. Последняя строка выводит результат.

Последние три строки можно объединить:

print "Enter the list of strings:\n"; print reverse <STDIN>;

Этот код работает аналогично предыдущему, так как операция print ожидает ввода списка, а операция reverse возвращает список. Далее операции reverse нужен список значений для реверсирования, а операция <STDiN>, применяемая в списочном контексте, возвращает список строк - и они получают необходимое!

2. Вот один из способов решения этой задачи:

print "Enter the line number: "; chomp($a = <STDIN>); print "Enter the lines, end with D:\n"; @b = <STDIN>; print "Answer: Sb[$a-1]";

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

Если вы попробуете запустить эту программу с терминала, конфигурированного самым обычным образом, вам нужно будет нажать клавиши [Ctrl+D], чтобы обозначить конец файла.

3. Вот один из способов решения этой задачи:

srand;

print "List of strings: "; @b = <STDIN>; print "Answer: $b[rand(@b)]";



0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 [ 83 ] 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103