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

Этот интерактивный "преобразователь температур" будет манипулировать данными, переводя значения температуры по шкале Фаренгейта в значения по Цельсию.
На выполнение этого урока требуется примерно 30 минут.
Файлы-носители:
Нет
Стартовые файлы:
Lesson08/Assets/tempConverter1.fla Lesson08/Assets/madlibs1.fla
Законченные проекты:
tempConverter2.fla madlibs2.fla
Если вы выполнили все предыдущие уроки, то уже знакомы со всеми типами данных. Однако мы ни разу не рассматривали их все сразу, а потому давайте сделаем краткий обзор.
"hello", "собака" ).6 означает число шесть, а "6" (в кавычках) – текст, это строковое значение. Очень важно понимать разницу между этими двумя типами данных. особенно при использовании их в выражениях. Например, в выражении с оператором сложения ( +, подробнее см. в разделе "Операторы") "6"+"2" даст строку "62", а 6+2 (без кавычек) даст число 8.true (истинно) или false (ложно). Внутри true и false представлены как 1 и 0.В этом уроке мы сосредоточимся на манипулировании данными строкового и
Выражение – это определенный набор переменных, значений и операторов для вычисления некоторого итогового значения. Рассмотрим пример выражения:
oneDozen = 6 * 2;
Справа от знака равенства мы видим 6 * 2 – это и есть выражение. При выполнении этой строки
total = subTotal + tax;
Здесь значением и ; – это выражение.
discount = totalPrice * employeeDiscount[2];
Здесь значение discount получается как результат умножения переменной totalPrice на значение третьего элемента массива employeeDiscount ; totalPrice * employeeDiscount[2] есть выражение.
usDollars = 10; japaneseYen = convertToYen(usDollars);
Здесь japaneseYen получает значение, возвращенное функцией convertToYen() – вызов функции сам по себе является выражением.
Примечание Подробнее о функциях смотри Урок 5 – Применение функций.
Где применяются выражения:
Использование выражений позволяет избежать жестко закодированных значений, которые, будучи раз установлены, не изменяются ни при каких обстоятельствах. Манипулирование данными посредством выражений позволяет добавить скриптам динамичности, а проектам – интерактивных возможностей. Вероятно, вы уже поняли, что большинство скриптов построено на использовании выражений.
Операторы – это "знаки" внутри выражений, именно они управляют вычислениями, указывают, что следует делать с входящими в состав выражения значениями. Операторы бывают различных типов; какие использовать – зависит от того, как именно вы хотите манипулировать данными.
Примечание В этом разделе рассматриваются
Большинство
totalCost = productPrice + tax ; – результат получается сложением значений двух переменных.++myAge; – значение переменной myAge увеличивается на 1 (эквивалент выражения myAge = myAge + 1 ;).moneyInWallet = paycheck – moneySpent; – результат получается вычитанием moneySpent из paycheck.--bottlesOfBeer ; – бутылок пива станет на одну меньше.hoursPer-Week = 24 * 7 ; – количество часов в неделе получается в результате умножения 24 на 7.hourlyRate = paycheck / hoursBilled ; – итог получается делением значения paycheck на значение hoursBilled.4 % 2; – результатом будет 0, поскольку 4 делится на 2 без остатка. Пример: 7 % 3; – даст результат 1, так при делении 7 на 3 получается 2 и остаток 1.
Для операций со строками имеется лишь один оператор – оператор
burthDayMessage = "Мне исполнилось " + age + " лет." ;. Здесь операторы age имеет значение 26, то в результате получится строка "Мне исполнилось 26 лет.".Совет В отличие от некоторых других языков программирования, в PayCheck1 + PayCheck2 может посчитать два числа строками, и, вместо того, чтобы складывать, "склеит" их (45+65 даст результат "4565" вместо 110). При получении данных из внешних источников или полей, в которые информацию вводит пользователь вы можете, во избежание ошибок, использовать функцию Number() – например, Number(PayCheck1) + Number(PayCheck2) – в этом случае вы можете быть уверены, что значения будут рассматриваться именно как числовые.
Нередко выражения содержат не один оператор, а сразу несколько. В этом случае важно точно представлять себе порядок их выполнения, который определяется приоритетом операторов. Вы прекрасно знаете, что математические действия над числами выполняются поочередно (например, возьмем выражение myNumber = 20 * 5 - 3: понятно, что нельзя произвести оба действия – умножение и вычитание – одновременно). Порядок вычислений в выражениях
Давайте рассмотрим несколько примеров.
myVariable = 5 + 7 - 3;
Поскольку сложение и вычитание имеют равный приоритет, в этом выражении операторы выполняются просто слева направо, переменной myVariable в результате будет присвоено значение 9.
myVariable = 5 + 7 * 3;
Поскольку умножение имеет приоритет перед сложением, сначала 7 умножается на 3, а затем к результату прибавляется 5. В итоге переменная myVariable получает значение 26.
myVariable = (5 + 7) * 3;
Поскольку вычисления в скобках имеют приоритет, сначала 5 прибавляется к 7, затем результат умножается на 3. В итоге переменная myVariable получает значение 36.
myVariable = ((2 + 8) * (4 – 2)) / 5;
Снова приоритет скобок: сначала складываются числа 2 и 8, затем из 4 вычитается 2. Эти два результата перемножаются, итог делится на 5. Переменной myVariable присваивается значение 4.
Математические операторы, С которыми мы познакомили вас в этом уроке, позволяют строить выражения с использованием простых арифметических действий. Для более сложных манипуляций с числами во Flash имеется объект Math с его методами. Здесь мы познакомим вас лишь с некоторыми, наиболее часто используемыми методами объекта Math; в других уроках этой книги вам встретятся и многие другие методы.
Наиболее часто применяемые методы объекта Math:
distance = Math.abs (here – there) ; – если результатом вычитания there из here будет отрицательное число (например, -375), метод Math.abs преобразует его в абсолютное значение – положительное (375).cupsOfCoffee = Math.round (3.7); – поскольку после запятой стоит 7 (больше 5), число округляется в большую сторону, результатом будет 4.Math.round (), но в этом случае округление всегда производится в меньшую сторону.Math.round (), но округление всегда производится в большую сторону.answer = Math.sqrt(9); – здесь answer получит значение 3.В этом упражнении мы, используя операторы, выражения и методы объекта Math, напишем несложный алгоритм преобразования значений температуры по шкале Фаренгейта в значения по шкале Цельсия. Заодно запрограммируем изображение термометра с соответствующим уровнем ртути.
Все символы и текстовые поля уже созданы и размещены на сцене, нам остается сосредоточиться на
Слой Background содержит основное фоновое изображение. В слое . Сюда будут вводиться значения температур для преобразования. Кроме этого поля, в данном слое имеется еще два: fahrenheit и celsius – в них будут отображаться соответствующие значения температур. В этом же слое находится кнопка с надписью "mercury, он будет иллюстрировать уровень ртути в термометре. Мы же сейчас займемся слоем Actions.

function changeTemp() {
}
Это – начало описания функции. Функция эта будет вызываться при нажатии кнопки
boilingPoint = 212; absoluteZero = -460;
Наш термометр работает в большом диапазоне температур – от абсолютного нуля (примерно -460 градусов Фаренгейта) до точки кипения воды (212 градусов Фаренгейта), это будут максимально и минимально возможные значения для нашего конвертера.
if (temperature.text > boilingPoint) {
temperature.text = boilingPoint;
} else if (temperature.text < absoluteZero) {
temperature.text = absoluteZero;
}
fahrenheit.text = temperature.text;

Эта часть функции – оператор if/else if – будет работать "фильтром" данных. Если значение, введенное пользователем ( ), больше, чем значение boilingPoint (которое равно 212), то вместо введенного пользователем будет автоматически установлено значение boilingPoint. В противном случае, если пользователь ввел значение, меньшее, чем absoluteZero (-460), вместо него автоматически устанавливается значение absoluteZero. После фильтрации значение отображается в экземпляре текстового поля fahrenheit.
Подобные фильтры часто используются в программировании – ведь далеко не всякая функция может принимать абсолютно любые значения параметров.
celsius.text = Math.round((5 / 9) * fahrenheit.text - 17.777);
Выражение справа от знака равенства переводит значение температуры из одной шкалы в другую. Результат выражения присваивается свойству text текстового поля celsius ; таким образом, данная строка отображает преобразованное значение в текстовом поле.
Обратите внимание на использование скобок в этом выражении. Выполняя эту строку кода, Flash начнет производить вычисления с самой внутренней пары скобок – в данном случае (5 / 9). Затем будет выполнено умножение, затем – вычитание. Метод Math. будет вызван только после того, как будет окончательно вычислено числовое значение аргумента. Это значение метод округлит до ближайшего целого числа.

scalePercent = (Math.abs(absoluteZero - fahrenheit.text) / Math.abs(absoluteZero - boilingPoint)) * 100; mercury._yScale = scalePercent;
В этих двух строках создается переменная, содержащая процентное значение для масштабирования экземпляра фильма-символа mercury, затем устанавливается такой масштаб.
Значение scalePercent вычисляется на основе отношения двух значений: превышения введенной температуры над абсолютным нулем и полного температурного диапазона. Чтобы вы лучше это поняли, давайте предположим, что пользователь ввел в текстовое поле fahrenheit значение 56. Мы знаем, что absoluteZero равняется -460, boilingPoint равняется 212. Вычисления будут происходить следующим образом:
(Math.abs(-460 - 56) / Math.abs(-460 - 212)) * 100;
далее
(Math.abs(-516) / Math.abs(-672)) * 100;
далее
((516) / (-672)) * 100;
далее
(.767) * 100;
далее
76.7
Примененный здесь метод объекта Math, вычисляющий абсолютное значение дает нам уверенность в том, что мы получим в итоге положительное процентное значение (отрицательное значение в контексте нашего скрипта не имело бы смысла).
Вторая строка скрипта устанавливает масштаб по вертикали для экземпляра фильма-символа mercury равным значению scalePercent. Так, если оно равно 76,7, то экземпляр mercury уменьшится до 76,7 процента от своего нормального размера (100 процентов).

on (release, keyPress "<Enter>") {
changeTemp();
}
При нажатии этой кнопки или клавиши Enter будет вызвана функция changeTemp(), которую мы только что создали.
После нажатия кнопки вы увидите, что высота фильма-символа mercury соответствующим образом уменьшилась. Текстовые поля celsius и fahrenheit заполнились данными. Если вы попытаетесь ввести температуру, выходящую за установленные нами пределы, то сработает фильтр – оператор if/else if, и значение будет "обрезано" по верхней или
Итак, мы разобрались с
До сих пор в этом уроке мы имели дело главным образом с числами. Теперь пришло время получше узнать методы объекта String, с которым вы познакомились в Уроке 4. При помощи этих методов можно найти в строке определенный символ, изменить регистр символов, "перевернуть" строку задом наперед и много чего еще.
Вот несколько наиболее часто используемых методов объекта String:
numCharacters = userName .length; – здесь значением numCharacters станет число символов в строковой переменной userName . Если userName имеет значение "Jobe", результат будет 4.length не указан, то возвращается name.substr (1, 2) ; – если name имеет значение "Kelly", метод даст результат "el". Буква e имеет индекс 1, число 2 указывает, что message.toLowerCase(); – если message имеет значение "Hello", то результатом будет "hello".message.toUpperCase(); – если message имеет значение "Hello", то результатом будет "HELLO".Примечание Как упоминалось в Уроке 4, свойство text экземпляров текстовых полей тоже рассматривается как экземпляр объекта String, а значит, к нему применимы и все методы этого объекта. Например, myTextField.text.toUpperCase(); переведет текст в текстовом поле myTextField в верхний регистр.
В следующем упражнении мы создадим приложение, представляющее собой нечто вроде игры в слова. В нем нужно будет заполнить форму словами, из которых будет сформировано предложение.
В этом файле три слоя: Background, Text Fields и Actions. Слой Background содержит основное графическое оформление. В слое Text Fields находится пять текстовых полей для ввода, одно динамическое текстовое поле и кнопка Submit. А со слоем Actions мы сейчас поработаем.

Пять текстовых полей для ввода называются (сверху вниз) verb1, properNoun, verb2, adjective и noun. В них пользователь должен будет вводить слова (соответственно: первый глагол, имя собственное, второй глагол, прилагательное и существительное), из которых будет генерироваться предложение. Текстовое поле большего размера, расположенное в правой нижней части сцены, называется paragraph; в нем и будет отображаться составленное предложение.
function generate() {
}
Это – начало описания функции. Функция будет вызываться при нажатии кнопки Submit. В окончательном виде функция должна будет взять все введенные пользователем слова, изменить их при необходимости и составить с этими словами предложение.
verb1.text = verb1.text.toLowerCase(); verb2.text = verb2.text.toLowerCase(); adjective.text = adjective.text.toLowerCase(); noun.text=noun.text.toLowerCase();

Эти четыре действия переводят текст, введенный в четыре текстовых поля, в нижний регистр – главным образом по соображениям грамматики (ни одно из этих полей не будет содержать ни собственных имен, ни слов, стоящих в предложении на первом месте).
properNoun.text = properNoun.text.substr(0,1).toUpperCase() + properNoun.text.substr(1).toLowerCase();
В этом скрипте properNoun.text есть ссылка на текст в поле properNoun; это поле должно содержать чье-то имя. Поэтому в этой строке первая буква (символ с индексом 0) должна быть заглавной, а остальные – строчными. Чтобы обеспечить это наверняка, мы применяем метод . Как видите, он используется в нашем выражении дважды. Сначала properNoun.text. возвращает строку, состоящую из одной первой буквы значения properNoun.text, которая переводится в верхний регистр методом toUpperCase(). Во второй половине выражения также использован метод , но на сей раз ) не указана, в подстроку войдут все символы до конца строки. Полученное в результате строковое значение переводится в нижний регистр методом toLowerCase(). Наконец, обе полученные строки объединяются оператором

paragraph.text = "You " + verb1.text + " into love with " + properNoun.text +
" when you " + verb2.text + " "+ properNoun.text + " eating a " +
adjective.text + " " + noun.text + ".";
В этой строке несколько раз использован оператор
Совет Объединяя несколько строковых значений, будьте внимательны, не забывайте заключать каждое значение в кавычки. Стоит пропустить кавычки хотя бы в одном месте, и результат будет ошибочный. Явные ошибки панель Действия сможет обнаружить и показать вам строку, в которой присутствует синтаксическая ошибка.

on (release, keyPress "<Enter>") {
generate();
}
При нажатии этой кнопки или клавиши Enter будет вызвана написанная нами функция generate().
Введите текст в каждое из полей для ввода, затем нажмите кнопку Submit, и посмотрите, что за предложение получилось. Попробуйте сделать это еще раз, при вводе перемешивая заглавные и строчные буквы. Как видите, манипулировать строками в
Вы кое-что узнали о применении методов объекта String, а это важный аспект
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.