Вы находитесь на странице: 1из 15

—1—

uroki-flash-as3.ru | «Все об арифметических вычислениях в ActionScript 3.0»


—2—

Все об арифметических вычислениях


в ActionScript 3.0

Практическое руководство с примерами

ОГЛАВЛЕНИЕ
Математические операторы....................................................................................... 3

Сложение и вычитание ( + и - ).................................................................................. 3

Сложение и конкатенация ( + ) .................................................................................... 4

Умножение и деление ( * и / ) .................................................................................. 6

Modulo, оператор для вычисления остатка от деления ( % ) ..................................... 6

Переменные и комбинированные операторы присваивания ........................ 7

Переменные ( var ) .................................................................................................... 8

Комбинированные операторы присваивания ( += -= *= /= %= ) ................. 9

Операторы инкрементального увеличения и уменьшения ( ++ и -- ) ........ 10

Порядок математических операций ...................................................................... 11

Использование скобок для управления порядком вычислений ................................ 13

Итоги ................................................................................................................................ 14

uroki-flash-as3.ru | «Все об арифметических вычислениях в ActionScript 3.0»


—3—

В ActionScript 3.0 существует много математических операторов, которые встроены


непосредственно в него. Их задача помочь нам в вычислении самых разных
математических уравнений. Это не значит, что нужно прямо сейчас выбросить ваш
любимый ручной калькулятор. Ведь AS 3 был создан не для повседневных нужд, а
для разработки компьютерных и веб-приложений.

В дополнение к этим математическим операторам существует набор функций,


которые помогают в программировании решать часто встречающиеся задачи, такие
как, например, округление чисел.

В этом руководстве вы узнаете обо всех базовых математических операторах,


которыми будете пользоваться при разработке собственных приложений на
ActionScript 3.0. Кроме того, вы познакомитесь с полезными сокращениями, которые
сделают вашу работу с кодом легче и удобнее.

Математические операторы
В AS 3 вы можете использовать простые математические операторы для
выполнения арифметических вычислений с числами и переменными. По сути,
математические функции, которые являются частью AS 3, в основном идентичны
базовым математическим функциям, изучаемым в программе средней школы.
Некоторые символы и имена отличаются, но принципы те же.

Сложение и вычитание
Давайте начнем со сложения и вычитания чисел.

1. Создайте новый проект ActionScript 3.0 во Flash CS3 (CS6) и поместите


следующий код на шкалу времени:

// Математические операторы: сложение и вычитание

trace ( 2 + 3 );

trace ( 3 - 2 );

2. Запустите Flash Player (Ctrl+Enter) и посмотрите на панель Output; вы должны


увидеть следующее:

uroki-flash-as3.ru | «Все об арифметических вычислениях в ActionScript 3.0»


—4—

Надеюсь, что вы не сильно удивились, поскольку числа просто складывались и


вычитались. Итак, операторы + и - предназначены для сложения и вычитания.
Все просто. Но, одну вещь хотелось бы здесь упомянуть особо. Вы, наверняка
заметили, что перед числами и операторами, а так же после них поставлены
пробелы. Так вот, это сделано только для улучшения визуального восприятия кода и
никак не влияет на результаты вычислений. Если хотите, то удалите пробелы,
например:

trace ( 2 + 3 );

trace(2+3);

Результат, после обработки обеих строк будет одинаков.

Сложение и конкатенация
В предыдущем разделе вы использовали знак +, но, как ни странно, это не
математический оператор в чистом виде. Вы можете его использовать для того
чтобы делать две вещи. Когда вы работаете со строками, то оператор + называется
оператором конкатенации. Он берет две строки и соединяет их в одну —
«приклеивает» конец одной к началу другой. Когда же вы работаете с числами, то
оператор + становится оператором сложения — складывает значения двух или
нескольких чисел, генерируя сумму.

Рассмотрим следующий пример:

1. Удалите существующий код и наберите следующий:

// Сложение и конкатенация

trace ( 2 + 2 ); // сложение

trace ( "два" + "два" ); // конкатенация

trace ( "2" + "2" ); // конкатенация

2. Запустите Flash Player (Ctrl+Enter) и вы увидите следующий результат в панели


Output:

двадва

22

uroki-flash-as3.ru | «Все об арифметических вычислениях в ActionScript 3.0»


—5—

C первой строчкой все понятно; вы сложили два числа 2 и 2, используя оператор


сложения +, и в результате получили 4.

Вторая строчка кода состоит из двух «строк», два и два (обе были заключены в
кавычки до вывода в панели Output, т.к. принадлежат к типу данных String (строка)).
Теперь они соединились (но, не суммировались) в одно целое. Здесь сработал
оператор конкатенации и результат этой работы двадва.

Последняя строчка кода использует число 2 с обеих сторон оператора +. Заметьте,


что числа заключены в кавычки. Это означает, что их значения больше не являются
числовыми, а стали строковыми — символ 2, а не число 2. После того, как вы
конвертируете (преобразуете) значение числа 2 в строку с помощью кавычек,
оператор + соединяет строки, «склеивая» их вместе. В результате мы получаем
строку 22.

К сожалению, панель Output не может отличать строки от чисел, поэтому трудно


понять, 22 — это строка или число? Существует способ определения типа значения
с последующим выводом его на экран: оператор typeof.

3. Для того чтобы увидеть как работает оператор typeof, обновите предыдущий
пример следующим образом:

// Сложение и конкатенация

trace ( typeof(2 + 2) ); // сложение

trace ( typeof("два" + "два") ); // конкатенация

trace ( typeof("2" + "2") ); // конкатенация

4. Запустите Flash Player; вы увидите результат в панели Output:

number

string

string

После того, как была произведена операция сложения или конкатенации, в игру
вступает оператор typeof, который определяет тип результирующего значения и
посылает его с помощью метода trace на вывод в панель Output.

Но существует еще один «смешанный» вариант. Давайте сведем вместе число


(Number) и строку (String) и посмотрим, что из этого выйдет.

5. Замените существующий код следующей строчкой:

uroki-flash-as3.ru | «Все об арифметических вычислениях в ActionScript 3.0»


—6—

trace ( 2 + "2" );

Как видите, справа от оператора + находится число, а слева строка. Интересно, кто
победит?

6. Запустите Flash Player.

В итоге побеждает строка с результатом 22. В этом примере, оператор конвертирует


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

Умножение и деление
Теперь давайте разберемся с операторами * и /, которые символизируют
умножение и деление.

1. Замените код на шкале времени следующим:

// Математические операторы: умножение и деление

trace ( 2 * 3 );

trace ( 5 / 2 );

В первой строке (директиве) используется оператор умножения, который


обозначается звездочкой *. Оператор деления обозначается черточкой,
наклоненной вперед / . Порядок деления следующий: берется значение слева и
делится на значение справа.

2. Запустите Flash Player; в панели Output вы должны увидеть следующее:

2.5

Это довольно простой для понимания материал, но, возможно, следующее будет в
новинку для вас.

Modulo, оператор для вычисления остатка от


деления
Оператор modulo вычисляет остаток после операции деления. Он бывает полезен во
многих ситуациях, например, при определении четности числа. Давайте посмотрим,
как он работает:

uroki-flash-as3.ru | «Все об арифметических вычислениях в ActionScript 3.0»


—7—

1. Замените уже имеющийся код на приведенный ниже и взгляните на панель


Output:

// Математический операторы: Modulo

trace ( 5 % 2 );

2. Запустите Flash Player; в панели Output вы увидите следующее:

Символ % вызывает оператор modulo, который вычисляет остаток после деления


числа слева от него на число справа. В этом примере 5 делится на 2 с результатом
2 и остатком 1.

В каких же случаях использовать оператор modulo?

Хороший вопрос. Давайте рассмотрим два примера.

1. Представьте, что нужно узнать: можно ли разделить одно число на другое без
остатка.

myNumber % 3;

Если результат равен 0, то это означает, что остатка нет.

2. Вот еще один часто используемый случай применения оператора modulo. Если
нужно узнать является ли число четным или нечетным, то сделать это можно так:

myNumber % 2;

Если результат равен 0, то число делится на 2 без остатка и поэтому является


четным. Если результат отличен от 0, то число нечетное.

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

uroki-flash-as3.ru | «Все об арифметических вычислениях в ActionScript 3.0»


—8—

1. Создайте новый проект ActionScript 3.0 и введите следующий код:

// Операторы присваивания

var myNumber:Number = 2;

myNumber = myNumber + 2;

trace(myNumber);

var mySecondNumber:Number = 2;

mySecondNumber += 2;

trace(mySecondNumber);

2. Запустите Flash Player. В панели Output будет выведено следующее:

Давайте подробно разберем этот код и посмотрим на то, как мы получили такой
результат и какую роль в нем играют переменные и комбинированные операторы
присваивания.

Переменные
Если вы еще не очень хорошо знакомы с переменными, то самое время поговорить
о них несколько подробнее. Во-первых, переменные служат своеобразными
контейнерами для хранения различной информации: чисел, строк, объектов и т.д.

Как правильно декларировать переменную:

1. записываем ключевое слово var;

2. после пробела пишем имя переменной (например, myNumber);

3. ставим двоеточие : и сразу после него указываем тип данных, к которому


переменная принадлежит (например, Number);

4. далее ставим знак равно = ;

5. присваиваем значение, которое будет храниться в переменной (например, 2);

6. ставим точку с запятой ;.

var myNumber:Number = 2;

uroki-flash-as3.ru | «Все об арифметических вычислениях в ActionScript 3.0»


—9—

Для того чтобы увидеть, что содержится в переменной используем метод trace.

trace(myNumber);

Теперь давайте проанализируем следующие 2 строчки:

myNumber = myNumber + 2;

trace(myNumber);

На первой строчке кода вы обращаетесь к переменной myNumber, а затем


присваиваете ей новое значение. Заметьте, ключевое слово var здесь не
используется, т.к. оно применяется единственный раз при декларации переменной.
Вам не нужно использовать его повторно, поскольку вы обращаетесь к переменной,
которая уже существует. Прежде чем присвоить новое значение переменной вы
должны сначала записать оператор присваивания = и только после этого ввести
новое значение справа от него. В примере выше, мы берем уже существующее
значение переменной myNumber, 2 и прибавляем к нему еще 2. Результирующее
значение снова присваивается переменной myNumber. Во второй строчке кода мы
посылаем это значение для вывода в панели Output, используя метод trace.
Конечный результат равен 4.

На этом мы завершаем анализ первой части кода.

Комбинированные операторы присваивания


Теперь давайте посмотрим на вторую половину нашего блока кода. По сути, она
работает идентично первой, правда, с двумя исключениями. В ней мы декларируем
новую переменную с именем mySecondNumber:

var mySecondNumber:Number = 2;

mySecondNumber += 2;

trace(mySecondNumber );

В первой строчке вы вынуждены использовать ключевое слово var для декларации


переменной, поскольку такая переменная еще не создавалась. Затем присваивается
этой переменной значение 2.

Во второй строчке вы впервые сталкиваетесь с комбинированным оператором


присваивания += . Он комбинирует операции сложения и присваивания. В этом
примере он берет уже существующее значение переменной mySecondNumber,
прибавляет к нему 2 и автоматически присваивает результат обратно переменной
mySecondNumber. Всегда ставьте арифметический оператор перед оператором

uroki-flash-as3.ru | «Все об арифметических вычислениях в ActionScript 3.0»


— 10 —

присваивания! Вы можете использовать такую короткую запись с любыми


базовыми арифметическими операторами:

// Комбинированные операторы присваивания

var myNumber:Number = 200;

myNumber += 50; // 200 + 50 = 250

myNumber -= 125; // 250 - 125 = 125

myNumber *= 3; // 125 * 3 = 375

myNumber /= 5; // 375 / 5 = 75

myNumber %= 4; // 75 % 4 = 3

trace(myNumber);

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


экономя время на запись кода. Уверен, что вы тоже будете этим пользоваться!

Операторы инкрементального
увеличения и уменьшения
Когда вы начнете более интенсивно работать с AS 3, то вам очень часто придется
прибавлять 1 (один) или уменьшать на 1 значения переменных и свойств объектов.

Чтобы упростить этот процесс специально были созданы два оператора


инкрементального увеличения и уменьшения. Посмотрите на следующий код:

1. Создайте новый проект ActionScript 3.0 и введите следующий код:

// Увелечение и уменьшение на 1

var myNumber:Number = 6;

trace(myNumber);

myNumber++;

trace(myNumber);

myNumber--;

uroki-flash-as3.ru | «Все об арифметических вычислениях в ActionScript 3.0»


— 11 —

trace(myNumber);

2. Запустите Flash Player и в панели Output появится следующее:

Как видно из примера, сначала мы присвоили переменной myNumber значение 6.


Затем мы увеличили это значение на 1 и в результате получили 7.

Когда мы добавляем два минуса после переменной, то ее значение уменьшается на


1. Значение переменной myNumber во второй строке кода равно 7. В третьей
строке мы уменьшаем ее значение на 1 и в итоге снова получаем 6.

Когда вы добавляете два плюса ++ после имени переменной, то вы увеличиваете


ее значение на 1. Следующие три строчки кода производят одну и ту же операцию:

myNumber = myNumber + 1;

myNumber += 1;

myNumber++;

А эти три строчки, аналогично написанным выше, также производят одно и


действие:

myNumber = myNumber - 1;

myNumber -= 1;

myNumber--;

Порядок математических операций


По умолчанию, математические операции выполняются не слева на право, а в
другой последовательности. Возможно вы помните из уроков математики, что
определенные математические операции выполняются раньше других, независимо
от того порядка в котором они записаны.

1. Создайте новый проект ActionScript 3.0 и введите следующий код:

uroki-flash-as3.ru | «Все об арифметических вычислениях в ActionScript 3.0»


— 12 —

// Порядок математических операций

var result:Number = 2 + 3 * 2 / 4 - 1;

trace(result);

В этом примере нужно выполнить несколько арифметических операций, которые


записаны слева на право. Если не следовать определенному порядку выполнения
таких операций, то мы получим в итоге 1.5.

2. Запустите Flash Player и вы увидите, возможно, несколько неожиданный для себя


результат: 2.5. Почему? Потому, что некоторые математические операции
выполнялись раньше других. В действительности порядок следующий:

1. Умножение *, деление /, остаток % (modulo)

2. Сложение +, вычитание -

Все операции умножения, деления и вычисления остатка производятся слева на


право до конца уравнения. Затем вычисления возобновляются. На этот раз, слева
на право, производятся операции сложения и вычитания.

Когда Flash Player приступает к обработке AS 3, то он начинает это делать слева,


вычисляя следующее выражение:

он игнорирует 2 + 3, поскольку правила диктуют сначала производить умножение,


затем деление и в конце вычислять остаток.

3 * 2 = 6

6 / 4 = 1.5

Поскольку больше нет операций умножения, деления и вычисления остатка, то он


возвращается к началу и производит сложение и вычитание.

2 + 1.5 = 3.5

3.5 - 1 = 2.5

Поэтому-то окончательный результат равен 2.5, который затем посылается на


вывод в панель Output.

Вы можете менять порядок выполнения операций, используя скобки ( ). Это


заставит Flash производить вычисления в нужном для вас порядке.

uroki-flash-as3.ru | «Все об арифметических вычислениях в ActionScript 3.0»


— 13 —

Использование скобок для управления порядком


вычислений
Если мы снова возьмем пример из предыдущей главы и захотим все-таки получить в
результате 1.5, то нам нужно будет заключать определенные части уравнения в
скобки, чтобы заставить Flash производить вычисления в нужном для нас порядке.

Согласно установленному порядку вычислений в AS3, те части уравнения,


которые заключены в скобки будут вычисляться первыми!

Давайте несколько изменим наш пример, чтобы в итоге все-таки получить 1.5.

// Порядок математических операций

var result:Number = ( 2 + 3 ) * 2 / 4 - 1;

trace(result);

Теперь, вместо того чтобы пропустить первую в записи операцию сложения, Flash
будет вынужден произвести вычисление того, что находится в скобках и лишь затем
перейдет к умножению.

Приступая к обработке AS 3, Flash Player начинает это делать с первых скобок,


которые найдет:

2 + 3 = 5, единственное выражение, заключенное в скобки

Затем он возвращается в начало и по порядку производит умножение, деление и


вычисление остатка:

5 * 2 = 10

10 / 4 = 2.5

Теперь, когда с умножением, делением и вычислением остатка закончено, он


возвращается в начало и начинает производить сложение и вычитание:

2.5 - 1 = 1.5

В результате вы получаете 1.5, что и отправляется для вывода в панель Output.

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


скобки, которые уже открыли! Это одна из самых распространенных ошибок, с
которыми вы будете сталкиваться при написании своих скриптов — незакрытые
круглые ( ) и фигурные скобки { }.

uroki-flash-as3.ru | «Все об арифметических вычислениях в ActionScript 3.0»


— 14 —

Итак, нами рассмотрены все базовые математические операторы и работа с ними.


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

Математические операторы

Оператор Действие Пример

+ сложение 8 + 7 = 15

- вычитание 150 – 45 = 105

* умножение 22 * 4 = 88

/ деление 36 / 9 = 4

% вычисление остатка 25 % 3 = 1

+= сложение и присваивание если х=5, х += 3, итог х=8

-= вычитание и присваивание если х=5, х -= 3, итог х=2

*= умножение и присваивание если х=5, х *= 3, итог х=15

/= деление и присваивание если х=5, х /= 2, итог х=2.5

%= остаток и присваивание если х=5, х %= 2, итог х=1

++ увеличение на 1 если х=5, х++, итог х=6

-- уменьшение на 1 если х=5, х--, итог х=4

Итоги
В этом руководстве вы изучили основы работы с переменными, а также узнали, как
изменять числовые значения, используя арифметические операторы в AS 3.

uroki-flash-as3.ru | «Все об арифметических вычислениях в ActionScript 3.0»


— 15 —

Кроме того вы познакомились с очень полезными сокращениями, используемыми


при записи кода. Их применяют продвинутые программисты, чтобы сэкономить
время при работе с математическими операторами, включая комбинированные
операторы присваивания и операторы инкрементального увеличения и уменьшения.

Чтобы избежать ошибок в дальнейшей работе, помните о следующем:

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


ключевое слово var;

 при работе с оператором + следите за тем, чтобы случайно не «смешать»


числовые и строковые переменные, т.к. строки будут соединяться и при этом
игнорировать любые числовые значения;

 оператор modulo вычисляет остаток после того, как попытается разделить


число на целые части;

 если вы работаете с уравнением, в котором присутствует несколько


математических операций (умножение *, деление /, вычисление остатка %,
сложение +, вычитание -), то помните, что AS 3 будет вычислять его в строго
определенном порядке;

 для того чтобы быстро изменить существующее значение, например,


переменной, используйте комбинированный оператор присваивания для
сохранения времени;

 если вы добавляете 1 или уменьшаете на 1 значение переменной,


используйте операторы инкрементального увеличения и уменьшения ++ и --;

 для того чтобы заставить AS 3 производить вычисления в нужном для вас


порядке, используйте круглые скобки, группируя те куски кода, которые
должны быть посчитаны первыми.

Если Вам понравилось это руководство или у Вас есть какие-либо пожелания по его
улучшению, то Вы можете оставить свой комментарий на сайте uroki-flash-as3.ru.

Успехов в программировании на ActionScript 3.0 !

uroki-flash-as3.ru | «Все об арифметических вычислениях в ActionScript 3.0»

Вам также может понравиться