Анимация
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 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122

• Если из строки можно без проблем вьщелить число, Perl использует число, например:

$а=42; # Число

print $а+18; t Печатает 60 5Ь="50"; . * Строка print $b-10j i Печатает 40

• Если число используется в строковом выражении, Perl преобразовывает число в строку, например:

$а=42/3; * Число

$ее , "Hello"; \ Шххшзуется чизю как слрска Print $а; I Шчагает -ИЕеНо"

• Если в выражении строка используется там, где должно быть число г1 использует число 0, например:

$a="Hello, World!";

print $а+б; # Шчагает чютэ б

Однако, если включен режим вывода предупреждений, в последнем случае Perl в]даст соответствующее сообщение.

Все эти примеры иллюстрируют философию, свойственную г1, - философию "минимальной неожиданности". Даже получив абсурдные аргументы, как в предыдущем примере, Perl пытается сделать с ними нечто осмысленное. Если вы включили режим вывода предупреждений, указав ключ -v в первой строке вашей программы или в командной строке, Perl предупредит вас, что совершает бессмысленное действие, следующим сообщением: Aliment X isnt numeric.

Упражнение: вычисление сложных процентов

ДЛЯ ЭТО упражнения мы выбрали задачу вычисления сложных процентов. Программа будет высчитывать доход, исходя из информации о процентных ставках, сумме депозита и времени хранения. Мы будем при этом использовать следующую формулу:

Сумма = Взнос -

Наберите в текстовом редакто+е/пр/ой]2а}мм]напр1свйденну1Р в листинге 2.2, и назовите ее interest. Номера строкнабирЖнуЖ ™Ж interest исполняемым, следуя инструкциям, приведенны10ног1(/з1яяииставка

После этого попытайтесь запустить программу, набрав в командной строке

perl interest

В листинге 2.3 приведен пример вывода программы interest.

Лизинг 2.2. Полный исходный код программы interest

1 bin/perl -v 2:

3: print Ъэпижга 1всячЕЮпэ взЕЕса? 4: $pmt=<STDIN>; 5: cirnpSpait; 6:

44 Часть I. Основы Perl



7: print "Годовая процентная ставка? (гриуер 7% - .07) "; 8: SintereBt=<STDIN>;

9: chomp $interest; 10:

11: print Первод депозита в мес5щах? "; 12:Smons=<STDIN>;

$mons;

14 :

15;IB формупе заложена месячная цроцентная ставка

16:$interest/=12;

18:$total=$pmt * ( ( 1 + $interest) ** {$mons -1) )/ Sinterest;

20:print -После $mons месяцев цри ежемесячной ставке Sinterest \n"; 21:print "у вас будет сумма $total.\n";

щЩ!!! Проведем анализ программы.

• Строка 1. В этой строке находятся имя программы интерпретатора (вы можете изменить его в соответствии с конфигурацией вашей системы) и ключ -W. Всегда включайте режим вьщачи цредуцрежцений!

• Строка 3. Пользователь вводит размер месячного взноса.

• Строка 4. Значение переменной $pmt считывается со стандартного устройства ввода (клавиатуры).

• Строка 5. Удаляется символ перевода строки в конце $pmt.

• Строки 7~9. Считывается с клавиатуры значение переменное Rarest и удаляется символ перевода строки.

• Строка 13. Считывается с клавиатуры значение переменное ns и удаляется символ перевода строки.

• Строка 16. Содержимое переменной $interest делится на 12, результат помешается в переменную $interest.

• Строка 18. Вычисляются сложные цроценты, результат заносится в цере-менную $total.

• Строка 21. Печать результатов.

Листинг2.3, Пример работе! программы interest

1: Величина месяжого взноса? 180

2: Годовая гроцентная ставка? (гример 74 - .07) .07 3: Период депозита в месяцам? 120

4: После 120 месяцев при ежемесячной ставке 0.00583333333333333

5: у вас буд сумма 61652.767054031.

2-й час. Строительные блоки Pert: числа и строки 45



Резюме

На этом занятии вы узнали, что основным типом данных в Perl является скаляр. Скалярные переменные могут содержать любые данные. Числовые литералы могут быть представлены в.разных форматах ~ целочисленном, вещественном и в формате

с плавающей точкой. Строковые литералы заключаются в двойные или одинарные кавычки. В Perl предусмотрены операторы, позволяющие выполнять строковые и арифметические операции.

Вопросы и ответы

В1вод программе! interest в1глядит неряшливо. Как можно указать, сколько деся-тичн1х знаков нужно в1водить?

Проще всего управлять количеством выводимых десятичных знаков с помощью функции printf(), описанной на 9-м занятии, "Дополнительные функции и операторы".

Имеется ли ег1 функция для округления?

Функция printf о округляет числа при выводе. Если вам необходима функция round{), воспользуйтесь модулем POSIX, содержащим как эту функцию, так и многие

другие функции.

Какое минимальное и максимальное значение числа допускается в Perl?

Ответ на данный вопрос зависит от того, какая у вас операционная система. В числах двойной точности с плавающей точкой в типичной Intel-совместимой UNIX-системе можно использовать более чем 300-значные числа. Обычно для вычислений вполне достаточно 14 разрядов.

Семинар

Контрольные вопросы

1. Внутри оператора qq переменные интерпретируются:

а) да;

б) нет.

2. Определите значение переменной $с после выполнения следующего фрагмента кода:

$а=6;

$а++;

$Ь=$а;

$Ь-;

$с=$Ьг

а) 6;

6)7;

в) 8.

46 Ч1ь I. cEi



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 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122