Анимация
JavaScript
|
Главная Библионтека • Если из строки можно без проблем вьщелить число, 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 |