Роботландский Университет © А.А.Дуванов

ЗНАКОМСТВО С ЯЗЫКОМ

урок 4: повторения

На предыдущих уроках рассматривались команды:

команда присваивания result = x*y;
условная команда if (x) z++;
блок (составная команда) { c = x; x = y; y = c; }

Продолжим знакомство с командами JavaScript.

команды цикла

цикл while

общий вид   пример  
while(условие) команда  
var i   = 1;
var sum = 0;
while(i <= 100)
{
  sum += i;
  i++;
}
alert("Сумма 1+2+...+100 = " + sum);
        

Цикл работает так. Сначала проверяется условие. Если оно истинно, выполняется команда (тело цикла). И эти действия повторяются.

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

Цикл for

общий вид   пример  
for(начало;условие;приращение)
  команда
 
var i;
var sum = 0;
for(i=1; i<=100; i++) sum += i;
alert("Сумма 1+2+...+100="+sum);
        

Сначала выполняется команда присваивания, помещаемая в раздел начало. В примере это команда i = 1;

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

Как и в команде while, тело цикла может не выполниться ни разу, если условие ложно с самого начала. Не выполнится при этом и команда из раздела приращение. А вот команда из раздела начало выполняется всегда, независимо от условия и выполняется ровно один раз.

Замечание

В заголовке цикла for любая из трех конструкций начало, условие, приращение может быть опущена, при этом соответствующую точку с запятой опускать нельзя. Когда опущено условие, считается, что оно имеет значение true. Таким образом, цикл превращается в бесконечный:

for(;;) команда;
        
Этот цикл -- бесконечный; выполнение команды не остановится, если только она не будет содержать внутри себя команду break.

Команды break и continue

Эти команды используют в теле цикла для изменения последовательного хода выполнения команд.

Команда continue заставляет браузер пропустить выполнение всех команд после нее и до конца тела цикла. Но цикл продолжается!

Команда break еще радикальнее -- она заставляет браузер немедленно прекратить выполнение цикла.

пример 1 (continue)

Найти сумму 5 четных чисел, случайным образом взятых из диапазона [1,20].

var len     = 5;  // количество чисел
var a       = 1;  // левая граница интервала
var b       = 20; // правая граница интервала
var sum     = 0;  // сумматор
var counter = 0;  // счетчик чисел
var number;       // случайное число
var str = "";     // строка для вывода
while (counter < len)
{
  number = Math.round(a + (b-a)*Math.random());
  if (number%2) continue;
  sum += number;
  str += number;
  if (counter < len-1) str += " + ";
  else                 str += " = ";
  counter++;
}
str += sum;
alert(str);
        
замечание
Стандартная функция Math.random() генерирует случайное число из отрезка [0,1].
Стандартная функция Math.round(num) округляет число num до ближайшего целого числа.
пример 2 (break)

Целые числа случайным образом генерируются из диапазона [1,20]. Суммировать эти числа до тех пор, пока очередное случайное число не станет равным 10.

var a   = 1;  // левая граница интервала
var b   = 20; // правая граница интервала
var c   = 10; // критическое значение случайного числа
var sum = 0;  // сумматор
var number;   // случайное число
var str = ""; // строка для вывода
for (;;)
{
  number = Math.round(a + (b-a)*Math.random());
  sum += number;
  str += number;
  if (number == c) break;
  str += " + ";
}
str += " = " + sum;
alert(str);
        
замечание
Конструкция for(;;){...} используется для задания бесконечного цикла.

 

     Испытатель while

     Испытатель for

 

Угадайка

Программа Угадайки

задания

  1. Создайте приложение для обучения малышей устному счету. Программа должна автоматически генерировать примеры типа "число1 + число2 =", проверять ответы, реагировать на ошибки, выставлять оценку в конце работы.
 

содержание урок 3 урок 5 письмо автору об авторах