Операционная система UNIX

Арифметические действия



10.12.1. Арифметические действия

В качестве действия могут использоваться уловные арифметические выражения, чтобы вычислить числовые значения. В качестве простого примера предположим, что нужно напечатать плотность населения для каждой страны в файле countries. Так как второе поле - это площадь в тысячах квадратных километров, а третье поле - это население в миллионах, то выражение: 100 * $3 / $2 дает плотность населения на 1 квадратный километр.

Программа: {print "%10s %6.1f\n", $1, 1000 *$3 / $2} печатает название страны и плотность населения: USSR 30.3 Canada 6.2 China 234.6 USA 60.6 Brazil 35.3 Australia 4.7 India 502.0 Argentina 24.3 Sudan 19.6 Algeria 19.6

Арифметические действия выполняются с плавающей точкой. Арифметическими операторами являются: +, -, *, /, %, ^

Арифметические выражения создаются при применении этих операторов над константами, переменными, именами полей, элементами массивов, функциями и другими выражениями. awk делает присвоения подобно присвоениям в языке программирования Си. Простейшей формой присвоения является: v = e где v - переменная или имя поля;
e - выражение.

Например, чтобы вычислить число стран континента "Asia" и общее количество населения, вы должны написать: $4 == "Asia" { pop = pop = $3; n = n + 1 } END { print "population of", n, "Asian countries in million is", pop }



Относительно файла countries эта программа выдает результат: population of 3 Asian countries in million is 1765

Действие, связанное с шаблоном $4 == "Asia" выполняет 2 назначения, одно - накопление населения и другое - подсчет стран.

Назначения в предыдущей программе могут быть записаны более сжато с использованием операторов "+=" и "++": $4 == "Asia" {pop += $3; ++n}

Оператор "+=" заимствован из языка программирования Си, следовательно: pop += $3 аналогично: pop = pop + $3 но оператор "+=" короче и работает быстрее.

Операторами назначения являются: +=, -=, *=, /=, %=, ^=

Операторами приращения являются "++" и "--". Как и в языке Си они могут использоваться как префиксные (++x) или постфиксные (x++) операторы. Если x равно 1, то "i = ++x" увеличивает x, затем устанавливает i равным 2, в то время как "i = x++" устанавливает i равным 1, затем увеличивает x. Аналогичная интерпретация для префиксного и постфиксного операторов "--".

Операторы присвоения, увеличения и уменьшения могут использоваться в арифметических выражениях.

Мы используем установки по умолчанию в следующих программах, которые находят страны с наибольшим населением: maxpop < $3 { maxpop = $3; country = $1 } END { print country, maxpop }

Обратите внимание, что эта программа будет некорректна, если значение $3 будет отрицательным.

В табл. 24 перечислены встроенные арифметические функции.



Содержание раздела