Программа элективного курса и дидактическое пособие для учителя и ученика Титоров Даниил Юрьевич учитель информатики и информационных технологий


Скачать 331.52 Kb.
НазваниеПрограмма элективного курса и дидактическое пособие для учителя и ученика Титоров Даниил Юрьевич учитель информатики и информационных технологий
страница5/7
ТипПрограмма
1   2   3   4   5   6   7

5. Циклы «с параметром» и циклы «пока»


Для выполнения повторяющихся действий в языках программирования используются специальные конструкции, которые называются операторами цикла. Таких циклических конструкций несколько, мы рассмотрим две наиболее часто встречающиеся цикл «с параметром» и цикл «пока». Рассмотрим, как они реализованы в языке Action Script.

Цикл «с параметром» применяется в том случае, когда заранее известно сколько раз нужно выполнить определенное действие. Можно провести следующую аналогию - для приготовления супа необходимо почистить шесть картофелин. Если записать действия в виде линейного алгоритма, то можно заметить что шесть раз будут повторяться команды «взять картофель», «очистить кожуру», «вымыть». Для большей компактности алгоритма, а также для того, чтобы в дальнейшем его можно было легко изменять, логичней записать это в виде цикла:

Повторить (6 раз) {

«взять картофель»;

«очистить кожуру»;

«вымыть»;

}

Здесь цифра шесть – это параметр цикла, количество повторений. То, что взято в фигурные скобки – это повторяемые команды. Они будут выполнены ровно шесть раз.



Рисунок 9

Для создания цикла «с параметром» в Flash, вам необходимо в окне Действия кадра выбрать команду Операции – Для. В результате в правой части экрана появится конструкция цикла (Error: Reference source not found).



Рисунок 10

Для данной конструкции нужно настроить три поля. Начальное – здесь нужно написать начальное значение некоторой переменной, ее еще называют счетчик. Например, i=1. Условие – до каких пор переменная i будет изменяться. Например, i<=10. Следующий – с каким шагом изменяется переменная i. Если вы хотите, чтобы переменная каждый раз увеличивалась на единицу, то можно записать i++. В результате появляется конструкция:

for (i=1; i<=10; i++) {

}

Ее смысл в следующем – переменная i будет принимать значения от одного до десяти и десять раз будут выполняться команды, взятые в фигурные скобки. Саму переменную i можно использовать в теле цикла, также там можно использовать другие алгоритмические конструкции, условные операторы и т.д.

Давайте рассмотрим, как реализуется данная конструкция в следующей задаче. «Создать программу, вычисляющую a в степени n (n – целочисленное значение). Значение a и n вводятся в соответствующие поля. Внешний вид программы представлен на Error: Reference source not found.

Создайте два поля ввода данных и назовите их соответственно a и n.

Создайте одно динамическое поле и назовите его an.

Создайте необходимое кол-во статичных подписей «а=», «n=» и т.д.

Создайте две кнопки «вычислить» и «очистить».

Для кнопки «вычислить» добавьте следующий код:

on (release) {

an = a;

if (n<>0) {

‘ Задача имеет смысл, только если n > 0, это проверяет условный оператор

for (i=2; i<=n; i++) {

an = an *a;

‘ Так как в первой строке переменная an уже приняла значение равное а, поэтому начальное значение счетчика равно двум.

}

}

}

Для кнопки «очистить» добавьте следующий код:

on (release) {

a = "";

n = "";

an = "";

}

Комментарии мне кажутся излишними.

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

Пока (есть картошка?) делать {

}

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



Рисунок 11

Для создания цикла «пока» в Flash, вам необходимо в окне действия кадра выбрать команду Операции – While. В результате в правой части экрана появится конструкция цикла (Error: Reference source not found).

Для данной конструкции нужно настроить только одно поле. Условие – при каком условие цикл выполняется. Например, y<10.

Обратите внимание, что если при первом обращении к циклу условие не выполняется, то цикл не выполняется ни разу. Также, очень важно, чтобы переменная y изменялась в ходе выполнения цикла, иначе произойдет зацикливание и зависание программы5. Также хочется обратить ваше внимание на особенность выполнения программного кода во Flash. Если вы циклически изменяете какое-либо свойство объекта или значение динамического поля, то при запуске вы не увидите быстрое изменение этого свойства или значения. Flash вначале полностью выполнит весь скрипт, и лишь после окончания цикла изменит перерисует экран и изменит данное свойство или значение. Понимание данной особенности нам будет особенно важно в девятом уроке при изучении программной анимации.



Рисунок 12

Любой алгоритм, который можно записать с помощью цикла «с параметром» можно записать и с помощью цикла «пока». А вот обратное не верно. Существуют задачи которые другими способами как использовать конструкцию «While» не решить. Рассмотрим такую задачу. «Известно, что ряд чисел 1, 1/2, 1/3 … 1/n является расходящимся, это значит сумма таких чисел сможет превысить любое наперед заданное число A. Найдите такое n, при котором сумма ряда 1 + 1/2 + 1/3 + … + 1/n станет больше заданного числа А. Внешний вид программы представлен на Error: Reference source not found.»

Создайте одно поле ввода данных и назовите его a.

Создайте два динамических поля и назовите их соответственно n и s.

Создайте необходимое кол-во статичных подписей «а=», «n=» и т.д.

Создайте две кнопки «вычислить» и «очистить».

Для кнопки «вычислить» добавьте следующий код:

on (release) {

s = 1;

n = 1;

‘ Так как в цикле необходимо проверять условие s
while (s
n = n+1;

s = s + 1/n;

}

}

Для кнопки «очистить» код аналогичен коду из предыдущей задачи.

Не смотря на то, что теоретически для любого A найдется значение n но в действительности даже для A=10, n=12367. Для больших значений A вычисление данной задачи может затянуться на минуты и часы…

Вопросы для повторения:

В чем отличие цикла "с параметром" и "пока"?

Какой цикл является более универсальным?

Что такое "счетчик" в цикле "с параметром" и что означает команда i++?

Как написать программу, выполняющую возведене в степень с помощью цикла "пока"?

Почему при выполнении цикла "пока" возможно зависание программы? Как этого избежать?

6. Проект «Flash-калькулятор»

Для того, чтобы посмотреть язык Action Script в действии давайте сделаем что-то действительно стоящее. Давайте сделаем калькулятор, внешний вид представлен на Рисунок 13.



Рисунок 13

Цель проекта: Создать стандартный калькулятор для Internet с возможностью производить стандартные арифметические действия. Для ввода значений использовать как мышь, так и стандартные клавиши клавиатуры.

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

Нас ожидают три проблемы:

П


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

Когда мы будем вводить первое число, например 245, мы последовательно нажимаем кнопки 2, 4 и 5. Но как калькулятор узнает, что когда мы нажали на кнопку 2 – это двести, а не двадцать или две тысячи? Иными словами, как узнать какое число запоминать в первой переменной?

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


Значение переменная принимает после выбора первой цифры

Это значение переменная stek должна иметь еще до начала первого ввода числа


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

Все это означает, что нам не обойтись одним ключевым кадром. Желательно на новом слое создайте ключевой кадр и в нем задайте значение переменной stek равное единице. Во втором ключевом6 кадре добавьте всего одну команду Базовые действия – Остановить. Содержимое слоя калькулятор, в котором находятся все кнопки передвиньте во второй кадр (Рисунок 14). Теперь при запуске программы переменная stek принимает нужное значение, ролик переходит во второй кадр и останавливается. Все дальнейшие действия будут проходить именно там.



Рисунок 14

Для решения второй проблемы вводимое значение должно быть текстовым! При нажатии на цифру, например 1, будет происходить добавление к текстовой строке, состоящей из цифр еще одного символа

text = text+1;

Ну а условный оператор и переменная stek помогут довести дело до конца. Ниже

представлен код, присвоенный клавише 1. Для всех остальных кнопок код аналогичен.

on (release, keyPress "1") {

‘ помимо обычного on (release) добавлена возможность использовать клавиатуру. keyPress "1" означает, что следующий код будет исполняться не только при нажатие на экранную кнопку, но и при нажатие на клавишу на клавиатуре. Как этого добиться смотри Error: Reference source not found.

if (stek==1) {

text = "1";

stek = 2;

‘ Если переменная stek равна единице, то переменная text, связанная с динамическим полем вывода примет значение равное единице, а переменная stek станет равна двум.

} else if (stek==2) {

text = text+1;

‘ Если переменная stek равна двум, то единица не первая цифра в числе, поэтому она присоединяется к переменной text справа

} else if (stek==3) {

text = "1";

stek = 2;

‘ Если переменная stek равна трем, то единица первая цифра во втором числе

}

}



Рисунок 15

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

on (release, keyPress "+") {

a = text;

stek = 3;

o = "p";

}

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

on (release, keyPress "=") {

if (o=="p") {

text = parseFloat(a)+parseFloat( text);

} else if (o=="m") {

text = parseFloat(a)-parseFloat( text);

} else if (o=="u") {

text = parseFloat(a)*parseFloat( text);

} else if (o=="d") {

text = parseFloat(a)/parseFloat( text);

}

stek = 1;

}

В первом фрагменте должно быть все ясно. Если нажата клавиша «плюс» еще одна переменная o принимает значение p (plus), а значение переменной text запоминается во временной переменной a. И когда, наконец, нажимается клавиша равно, компьютер должен сложить значение хранящееся в переменной text и переменную a. Так как в переменных хранятся текстовые значения необходимо использовать функцию parseFloat(), которая преобразует текстовое выражение в число. Для ее вызова используется команда Функции – parseFloat.

Запускайте проект, тестируйте его. Нельзя сказать, полученный калькулятор идеален. В нем нет стандартных математических функций, для выполнения нескольких действий подряд всегда нужно нажимать равно. Но все усовершенствования вы можете сделать самостоятельно. Мы научились главному. Создавать несложные программные продукты с помощью Macromedia Flash.

Вопросы для повторения:

  1. С какими проблемами мы столкнулись создавая калькулятор?

  2. В чем назначение переменной stek?

  3. Почему нажимая на цифровую клавишу в переменной должно храниться текстовое выражение?

  4. Для чего служит функция parseFloat()?

  5. Предложите идею как выполняя несколько арифметических действий "подряд" не нажимать в промежутках клавишу "равно"?
1   2   3   4   5   6   7

Похожие:

Программа элективного курса и дидактическое пособие для учителя и ученика Титоров Даниил Юрьевич учитель информатики и информационных технологий iconПрограмма элективного курса по английскому языку
Его появление вызвано тем, что учителя нуждаются в специально отобранных материалах по литературе для филологического/гуманитарного...

Программа элективного курса и дидактическое пособие для учителя и ученика Титоров Даниил Юрьевич учитель информатики и информационных технологий iconРабочая программа элективного курса «Деловая кореспонденция»
«Деловая корреспонденция» для учащихся 11 «б» класса (социально-экономический профиль) учителя английского языка мбоу лицей №1 Козлович...

Программа элективного курса и дидактическое пособие для учителя и ученика Титоров Даниил Юрьевич учитель информатики и информационных технологий iconРабочая программа элективного курса «Содержание и языковой анализ текста»
Рабочая программа элективного курса «Содержание и языковой анализ текста» для 9 класса является авторской. Программа составлена на...

Программа элективного курса и дидактическое пособие для учителя и ученика Титоров Даниил Юрьевич учитель информатики и информационных технологий iconМетодическое пособие является разработкой элективного курса по предмету...
Данное методическое пособие является разработкой элективного курса по предмету информатика «Графический редактор CorelDraw», для...

Программа элективного курса и дидактическое пособие для учителя и ученика Титоров Даниил Юрьевич учитель информатики и информационных технологий iconПрограмма специального курса «Готовимся к егэ по русскому языку»
Программа элективного курса предназначена для учащихся 11-х классов любого профиля и рассчитана на 68 часов

Программа элективного курса и дидактическое пособие для учителя и ученика Титоров Даниил Юрьевич учитель информатики и информационных технологий iconПрограмма предметно-ориентированного элективного курса. Учителя истории и обществознания
...

Программа элективного курса и дидактическое пособие для учителя и ученика Титоров Даниил Юрьевич учитель информатики и информационных технологий iconРабочая программа учителя информатики и икт бикчантаева А. М. по...
Данная рабочая программа составлена на основании: Стандарта среднего (полного) общего образования по информатике и информационным...

Программа элективного курса и дидактическое пособие для учителя и ученика Титоров Даниил Юрьевич учитель информатики и информационных технологий iconКонкурс проводится по следующим номинациям: использование информационных...
«Новосибирскийнациональный исследовательский государственный университет», Высшим колледжем информатики Университета, Институтом...

Программа элективного курса и дидактическое пособие для учителя и ученика Титоров Даниил Юрьевич учитель информатики и информационных технологий iconЗадачи, стоящие перед учителем и учащимися в учебном процессе Проверочные...
Проверочные вопросы для определения установки учителя на поддержание коммуникативного поведения ученика

Программа элективного курса и дидактическое пособие для учителя и ученика Титоров Даниил Юрьевич учитель информатики и информационных технологий iconРабочая программа элективного курса для 9 класса «Старт в профессию»

Вы можете разместить ссылку на наш сайт:


Все бланки и формы на filling-form.ru




При копировании материала укажите ссылку © 2019
контакты
filling-form.ru

Поиск