ЭЛЕКТРОННАЯ ШКОЛА MACROMEDIA FLASH MX
III курс: Основы программирования в Macromedia Flash MX
Модуль V: Организация циклов, Решение математических задач Язык ActionScript
Экспресс-план модуля:
- Организация циклических процессов
- 1 способ. Цикл с предусловием. Команда while
- 2 способ. Цикл с постусловием. Команда do … while
- 3 способ. Циклическая конструкция с предварительным вычислением выражения. Команда for
Организация циклических процессов
В этой лекции представлены основные способы организации циклических процессов в Macromedia Flash MX. В циклических вычислительных процессах неоднократно повторяются одни и те же предписания. Для практического исследования организации циклов возьмём три математические задачи — «каждому способу по задаче». Эти задачи принадлежат к категории так называемых классических математических задач использующихся при изучении информатики, они очень наглядно и доступно демонстрируют работу циклической структуры. Эти задачи ранее были использованы мной в процессе преподавания курсов QBasic v4.5 и Turbo Pascal v7.1, а сейчас верой и правдой служат при изучении языков Action Scripts (Macromedia Flash MX) и Delphi 7.0.
1 способ. Цикл с предусловием. Команда while
Общий формат команды:
while (condition) {
statement(s);
}
Как работает эта конструкция?
condition — условие, логическое высказывание, которое может быть истинным (true) или ложным (false). Условие проверяется каждый раз при выполнении команды while. В этом случае если условие истинно (true), исполняется тело цикла, заключённое в фигурные скобки — statement(s). В том случае если условие окажется ложным (false), тело цикла не выполнится ни разу!!!
Используем этот способ организации циклической структуры для решения задачи.
Условие задачи:
Рассчитаем произведение натуральных чисел от 1 до … (170).
Факториал, произведение натуральных чисел от единицы до какого-либо данного натурального числа n, т. е. 1·2·3·... n; обозначается n!. Например, 5! = 1·2·3·4·5 = 120.
В нашем ролике будет работать один кадр, на котором будут расположены текстовые блоки Static Text (комментарии), а также использован один текстовой блок Input Text, Var: t1, и один блок Dynamic Text, Var: pr. Ограничим число символов вводимых в поле ввода: Maximum Characters: 5.
На сцене будет расположена кнопочка расчётов, которой мы пропишем скрипт:
on (release, keyPress "") {
if (t1 == "" || Number(t1)!=t1) {
pr = " Нет данных!";
} else if (t1<=1) {
pr = "Абсурд!";
} else if (t1>170) {
pr = "Не могу!";
} else {
pr = 1;
i = t1;
while (i>1) {
pr = pr*i;
i––;
}
}
}
Обратите внимание, что в скрипте работает ещё одна переменная i, «переменная-дублёр» для t1, которая добросовестно отвечает за работу цикла и не вносит ненужную сумятицу в работу поля ввода.
170! — это очень большое число: 170! = 7.257415615308e+306. Перед нами экспоненциальная форма записи числа. Эта форма удобна при записи чисел с очень большой или, напротив, маленькой абсолютной величиной.
<Мантисса>e<Десятичный порядок>
Например,
5e–12 = 5 · 10–12 = 0,000000000005
7.257415615308e+306 = 7.257415615308 · 10306
2 способ. Цикл с постусловием. Команда do … while
Общий формат команды:
do {
statement(s);
} while (condition);
Как работает эта конструкция?
В фигурных скобках за do заключено тело цикла — statement(s). После выполнения тела цикла проверяется условие прекращения повторений. Тело цикла выполняется до тех пор, пока условие (condition) истинно (true). Тело цикла с постусловием в любом случае выполнится хотя бы раз!!!
Используем этот способ организации циклической структуры для решения задачи.
Условие задачи:
Проанализировать, является ли натуральное число, введённое пользователем простым.
Простое число, натуральное число, большее, чем единица, и не имеющее других делителей, кроме самого себя и единицы: 2, 3, 5, 7, 11, 13... Число простых чисел бесконечно.
В нашем ролике будет работать один кадр, на котором будут расположены текстовые блоки Static text (комментарии), использован один блок Input Text, Var: t1 и один блок Dynamic Text, Var: an. Ограничим число символов вводимых в поле ввода: Maximum Characters: 10.
На сцене будет расположена кнопочка анализа, которой мы пропишем скрипт:
on (release, keyPress "") {
if (t1 == "" || Number(t1) != t1) {
an = "Нет данных!";
} else if (t1<1) {
an = "Число не натуральное!";
} else if (t1 == 1) {
an = "Это наименьшее натуральное число!";
} else {
d = 1;
do {
d++;
r = Number(t1)/d;
prr = Number(t1)–Math.floor(r)*d;
} while (prr != 0);
if (d == t1) {
an = "Простое число!";
} else {
an = "Не простое число!";
}
}
}
Обратите внимание, что в срипте работают три дополнительные переменные:
d — На что будем делить?
Сначала на 2, потом на 3… в цикле это определено строкой d++;
r = Number(t1)/d; — В этой строке мы производим деление.
prr = Number(t1) - Math.floor(r)*d; — Как прошла операция деления? Рассчитаем остаток при делении. Остаток — величина, получаемая при вычитании из делимого произведения делителя на целое частное.
while (prr!=0); — До тех пор, пока не будет произведено деление без остатка, мы будем делить, делить, делить…
Когда работа цикла будет завершена, нам останется только проанализировать полученный результат.
3 способ. Циклическая конструкция с предварительным вычислением выражения. Команда for
Общий формат команды:
for (init; condition; next); {
statement(s);
}
Как работает эта конструкция?
Разберёмся с компонентами, записанными в круглых скобках:
init (initialize) — выражение, которое надо вычислить перед началом цикла, обычно это присваивание.
condition — условие, логическое высказывание, которое может быть истинным (true) или ложным (false). Истинность условия проверяют перед каждой итерацией (повторением цикла). Если условие окажется ложным (false), то работа цикла будет закончена.
next — выражение, которое надо вычислять при каждой итерации в цикле (шаг цикла). Обычно представляет собой оператор инкремента ++ (increment добавляет единицу) или декремента –– (decrement вычитает единицу).
В фигурные скобки заключено тело цикла — statement(s).
Используем этот способ организации циклической структуры для решения задачи.
Условие задачи:
Рассчитаем сумму натуральных чисел от 1 до … (99999).
В нашем ролике будет работать один кадр, на котором будут расположены текстовые блоки Static text (комментарии), использован один блок Input Text, Var: t1 и один блок Dynamic Text, Var: sum.
На сцене будет расположена кнопочка расчётов, которой мы пропишем скрипт:
on (release, keyPress "") {
if (t1 == "" or Number(t1) != t1) {
sum = "Нет данных!";
} else if (t1<=1) {
sum = "Абсурд!";
} else if (t1>99999) {
sum = "Не могу!";
} else {
sum = 0;
for (i=1; i<=Number(t1); i++) {
sum = sum+i;
}
}
}
Обратите внимание, что в скрипте работает дополнительная переменная i, она организовывает работу цикла и постоянно сопоставляет своё содержимое с содержимым поля ввода t1.
Домашнее задание: Основы программирования в Macromedia Flash MX
Горек корень учения, зато сладки плоды его.
Михайло Васильевич Ломоносов
Продублируйте ролики, представленные в этой лекции.
Выполненное задание представьте в виде файлов в формате fla (если суммарный размер файлов превысит 150 Кб, пожалуйста, упакуйте файлы в архив) и вышлите учителю.
Желаю Вам успехов в самостоятельном изучении Macromedia Flash MX!
Предыдущий модуль:
Модуль IV: Команда with, Программа «Правилка»
Следующий модуль:
Модуль VI: Подчиняемся курсору мыши пользователя, Игра «Весёлая кухня»
Распространение материалов сайта приветствуется.
Ссылка на материалы весьма желательна, но не строго обязательна ;-)
«Знание должно служить творческим целям человека. Мало накоплять знания;
нужно распространять их возможно шире и применять в жизни». Рубакин Н.А.
|