Урок 5. Организация ветвлений.

Теория Скрипт Результат Разбор скрипта Задание

Содержание

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

Теория

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

if В {S1} else {S2}

где в — выражение логического типа; S1 и S2 — операторы. Выполнение условного оператора осуществляется следующим образом. Вычисляется значение выражения B. Если оно истинно, то выполняются операторы S1, если ложно — операторы S2. Если последовательность операторов S1 или S2 состоит лишь из одного оператора, то фигурные скобки можно опустить. Возможна сокращенная форма условного оператора:

if В {S}

где B — выражение логического типа; S — последовательность операторов. Выполнение краткого условного оператора осуществляется так: вычисляется значение выражения B, если оно истинно, то выполняются операторы S.

Вот и вся теория; теперь приведем пример скрипта и попытаемся его разобрать.

Текст скрипта

<HTML>
<HEAD>
<SCRIPT LANGUAGE="JavaScript">
function rand() {
   now=new Date()
   num=(now.getSeconds())%10
   num=num+1
}
function guessnum(){
   guess=prompt("
Угадай
, какое?")
   if (eval(guess) == num){
      alert("
ПРАВИЛЬНО
!!!")
      rand()
   }
   else
      alert("
Нет
. Попробуй еще раз.")
  
}
</SCRIPT>
<BODY onLoad="rand()">

<h3>
Я
загадал число от 1 до 10<h3>

<FORM NAME="myform">

<INPUT TYPE="button" VALUE="
Угадай
"
NAME="b1" onClick="guessnum()">

</FORM>
</BODY>
</HTML>

Результат

Я загадал число от 1 до 10

Разбор Скрипта

Начнем со строки BODY:

<body bgcolor="хххххх" onLoad="rand()">

На этот раз функция запускается не кнопкой через onClick, а командой onLoad, чтобы к тому времени, когда пользователь нажмет на кнопку, число уже было выбрано. Если сделать это, как в прошлом уроке, то каждый раз, нажимая на кнопку, вы будете получать новое число. А оно должно оставаться одним и тем же, пока вы гадаете.

Первая функция:

function rand() {
   now=new Date()
   num=(now.getSeconds())%10
   num=num+1
}

Функция выбирает наугад число от 0 до 9 и привязывает его к num. Потом прибавляет к num единицу, чтобы выбор осуществлялся между 1 и 10.

Вторая функция:

function guessnum(){
   guess=prompt("
Угадай
, какое?")
   if (eval(guess) == num) {
      alert("
ПРАВИЛЬНО
!!!")
      rand()
   }
   else
      alert("
Нет
. Попробуй еще раз.")
}

В памяти компьютера уже есть число, полученное через первую функцию. Вторая дает вам возможность угадать его. Смотрите, что происходит:
С помощью запроса создается переменная guess (догадка).
Функция eval() вычисляет или выполняет строку в скобках (выражение, команду или последовательность команд) и подставлает полученное значение вместо себя. Она не является методом какого-либо объекта, но может использовать свойства уже существующего. В данном случае переводит текст, полученный с помощью запроса, в нашу функцию для последующей обработки
Переходим к if/else. Если (if) guess (догадка)равна загаданному числу num, тогда запускается команда alert("ПРАВИЛЬНО").
Если это не так, а иначе (else), тогда запускается другая команда alert.
Это вам уже знакомо:

<form name="myform">
<input type="button" value="
Угадай
" name="b1" onClick="guessnum()">
</form>

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

Задание

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

Ответ вы можете найти здесь