суббота, 25 июня 2011 г.

Урок 4. Условные операторы

    Условный оператор —это такой тип оператора, который исполняется только при выполнении определенного условия. Условные операторы позволяют программе выбирать один из нескольких возможных путей дальнейшего исполнения в зависимости от ее текущего состояния.
 
    В языке ActionScript существует два различных условных оператора: оператор if и оператор switch.

Оператор if  
    Оператор if напоминает развилку на дороге. Он содержит два блока кода и выражение (называемое условным выражением), которое определяет блок кода для  дальнейшего выполнения. Создания оператор if можно разными способами, и в зависимости от способа он будет выполняться по разному.


Способ 1:

if (условноеВыражение) { 
    блокКода
} 
Когда флешу встречается такой тип условного оператора if , то если в условное выражение возвращается true, то выполняется блокКода.
Например:
var test1:Number=15;
if (test1==15) {
    trace(test1);
} 
Нажимаем Ctrl+Enter, и в окне OUTPUT видим 15.
Если условное выражение возвращается false, то нечего не выполняется.
Например
var test1:Number=16;
if (test1==15) {
    trace(test1);
} 

Способ 2:
if ( условноеВыражение )
{
    блокКода1
}
else
{
    блокКода1
}
Как писал Колин Мук : "Оператор if напоминает развилку на дороге. Он содержит два блока кода и выражение (называемое условным выражением), которое определяет блок кода для дальнейшего выполнения. "
В данном примере, в отличии от предыдущего, в любом случае выполнится какой-либо блок кода, но одновременно может выполнится только один.
Например:
var test2:Number=15;
if (test2==15) {
    // этот блок выполнится
    trace(test2);
}else
{
     // а этот нет
    trace(test2+" "+"не равно 15!!!")
}
А теперь попробуйте сами сделать так, что бы выполнился второй блок, а не первый.

Способ 3:
if (число яблок >= 4) {  
    Поделюсь с друзьями
}   else if (1 < число яблок < 3) { 
    Поделюсь с 1 другом
    }
}   else if (число яблок < 2) { 
    Съем одна
}
Что это за странная штука " >= ", спросите вы?
Вот вам таблица, с её помощью все встанет на свои места:
Булева логика 
Ранее в этом уроке вы узнали, как принимаются логические решения с использованием условных выражений, которые возвращают логические значения. Решения принимались на основании одного фактора, например, «если значением переменной равняется 15, то выполнить блок кода». Но не вся программная логика настолько проста. В программах зачастую приходится рассматривать сразу несколько факторов в логике ветвлений (то есть принимать решение). Для объединения нескольких факторов в одном условном выражении применяются логические операторы: | | (логическое ИЛИ) и &&  (логическое И). (с)Колин Мук.

Логическое ИЛИ 
 Оператор "или" чаще всего применяют в случаях, когда для выполнения блокаКода должно выполниться по крайней мере одно из двух условий.
Обобщенный вид "или":
выражение1 || выражение2
Напомню, что для выполнения блокаКода достаточно, что бы, хотя бы одно из выражений было верным.
Для лучшего понимания:
верно || не верно // блокКода выполнится, поскольку первый операнд верен 
не верно || верно // блокКода выполнится, поскольку второй операнд верен
верно || верно // блокКода выполнится (достаточно,чтобы любой операнд был верен)
не верно || не верно // блокКода НЕ выполнится, поскольку оба операнда не верны! 
В следующем примере выполняется проверка, входит ли указанное число в заданный диапазон. Если число слишком маленькое, нет необходимости в выполнении второй проверки, которая определяет, является ли число слишком большим.
if (num > 0 || num < 100) { 
// Этот блок кода выполняется, если значение переменной 
// num находится в диапазоне от 1 до 100 включительно 
} 

Логическое И 
Как и оператор ИЛИ, оператор логического И в основном используется для
условного исполнения блока кода — в данном случае, когда обязательно выполняются
оба условия. Оператор логического И имеет следующий обобщенный вид:
выражение1 && выражение2  
Напомню, что для выполнения блокаКода требуется, что бы оба выражения были верны.
Для лучшего понимания:
верно && не верно // блокКода не выполнится, поскольку результат второго выражения не верен
не верно && верно // блокКода не выполнится, поскольку результат первого выражения не верен
верно && верно // блокКода выполнится, поскольку результаты обоих выражений верны
не верно && не верно // блокКода не выполнится, поскольку результаты обоих выражений не верны
// (достаточно, чтобы результат одного из выражений был 
// не верен) 
Рассмотрим использование оператора логического И на примере кода, который выполняется только в том случае, когда значения обеих переменных больше 50:
var a:Number = 100; 
var b:Number = 51: 
if (a>50 && b>50) { 
// Этот блок кода выполняется только в том случае, 
// когда значения переменных х и у больше 50 
} 

Теперь давайте попробуем написать подобную программку: 1. Создайте новый AS3 документ. 2. Создайте текстовое поле, и дайте ему такие настройки:
 3. Создайте кнопку для входа, и дайте ей имя "okBtn".
Первый кадр готов. Теперь создайте новый кадр, и заполните его чем нибудь подобным:
4. Создайте кадр №3, он будет показан, в том случае, если пароль не верен. На третьем кадре создайте кнопку назад, и дайте ей имя "backBtn". Всё, флешка подготовлена, теперь приступаем к программированию. 5. Создайте новый слой "Action", и на первом кадре напишите код:
//Останавливаем флешку на первом кадре
stop();
// Создаём слушатель для кнопки входа
okBtn.addEventListener(MouseEvent.CLICK,okF);
//Функция входа
function okF(e:MouseEvent):void
{
 //Если пароль верен
 if (pass.text == "portofollo")
 {
  //перейти на кадр 2
  gotoAndStop(2);
 }
 //Иначе
 else
 {
  // На кадр 3
  gotoAndStop(3);
 }
}
Форма входа готова! 6. Теперь на слое "Action" преобразуйте третий кадр в ключевой. Для этого выделите его, и нажмите "F6". 7. Код на третьем кадре:
backBtn.addEventListener(MouseEvent.CLICK,backF);
function backF(e:MouseEvent):void
{
 gotoAndStop(1);
}
Все! Наша программка готова! Забегая на перёд напишу домашнее задание по условному оператору if:
  • Сделать такую программку (имя: Flash, пароль: portofollo):
Оператор switch
 
Оператор switch позволяет выполнять один из нескольких возможных блоков кода в зависимости от результата одного условного выражения. Оператор switch можно представить в следующем обобщенном виде:
switch (условноеВыражение)
{
 case выражение1 :
  блокКода1;
  break;
 case выражение2 :
  блокКода2;
  break;
 default :
  блокКодаЗ;
}
Если результат выражения условноеВыражение не совпадает ни с одним из значений выражений case, то выполняются все инструкции, расположенные за меткой default. Пример из жизни, для лучшего понимания:
switch(оценка) 
{ 
    case ‘двойка’: 
        Готовить попу
        break; 
    case ‘Тройка’: 
       Снова попу :)
        break; 
    case ’Четверка’: 
        Радовоться 
        break; 
    default: 
        Кричать от счастья
        break; 
}
Ну, вот пожалуй и всё на сегодня! :) Удачи с домашкой!)

6 комментариев:

  1. В switch(оценка) не учтены единица и пятерка, а default лучше оставить для не корректных значений

    ОтветитьУдалить
  2. if (num > 0 || num < 100) {
    // Этот блок кода выполняется, если значение переменной
    // num находится в диапазоне от 1 до 100 включительно
    }

    Вроде как под определение ((число больше 0) ИЛИ (число меньше ста)) подходят вообще все числа =)

    ОтветитьУдалить
    Ответы
    1. Логично) но мы берём одну переменную, одно число, которое проверяется в обоих блоках. Ну по крайней мере в этом случае.. если я не туплю

      Удалить
  3. классный урок, спасибо!)

    ОтветитьУдалить
  4. Я раньше и не думал, что ActionScript так похож на этот наш C++, хорошо, что я его учил когда-то.

    ОтветитьУдалить