Примеры решения задач
Задача
Задача. Выведите столбец чисел от 1 до 50.
Решение: воспользуемся циклом while (отделим числа тегом br друг от друга, чтобы получить столбец, а не строку):
var i = 1;
while (i <= 50) {
document.write(i + '<br>');
i++;
}
Можно также воспользоваться и циклом for:
for (var i = 1; i <= 50; i++) {
document.write(i + '<br>');
}
Задача
Задача. Дан массив с элементами [1, 2, 3, 4, 5]. С помощью цикла for выведите все эти элементы на экран.
Решение: будем повторять цикл for от 0 до номера последнего элемента массива. Этот номер на единицу меньше количества элементов в массиве, которое можно найти с помощью свойства length таким образом: arr.length.
Чтобы цикл прокрутился на единицу меньше длины массива, в условие окончания мы поставим <, а не <=.
К элементам массива будем обращаться так: arr[i]. При этом переменная i - это счетчик цикла, который будет меняться от нуля до arr.length (не включительно). Таким образом мы последовательно выведем все элементы массива на экран (отделив их тегом br друг от друга):
var arr = [1, 2, 3, 4, 5];
for (var i = 0; i < arr.length; i++) {
document.write(arr[i] + '<br>');
}
Задача
Задача. Дан массив с элементами [2, 3, 4, 5]. С помощью цикла for найдите произведение элементов этого массива.
Решение: для таких задач существует стандартное решение, которое заключается в том, что циклом for перебираются элементы массива и их произведение последовательно записывается в переменную result (в ней постепенно накапливается искомое произведение):
var result = 1;
var arr = [2, 3, 4, 5];
for (var i = 0; i < arr.length; i++) {
result = result * arr[i];
}
alert(result);
Как это работает: изначально переменная result имеет значение 1, затем при первом проходе цикла в нее записывается ее текущее содержимое (это 1), умноженное на первый элемент массива (это 2). Получится, что в result запишется 1*2 и теперь там будет лежать число 2.
При следующем проходе цикла в result запишется текущее значение result, умноженное на второй элемент массива (то есть 2*3=6). И так далее пока массив не закончится.
Можно переписать строчку result = result * arr[i] через *= для краткости:
var result = 1;
var arr = [2, 3, 4, 5];
for (var i = 0; i < arr.length; i++) {
result *= arr[i];
}
alert(result);
Задача . Цикл for-in
Задача. Дан объект obj с ключами 'Минск', 'Москва', 'Киев' с элементами 'Беларусь', 'Россия', 'Украина'. С помощью цикла for-in выведите на экран строки такого формата: 'Минск - это Беларусь.'.
Решение: задача не представляет сложности если уметь работать с циклом for-in. Давайте решать задачу поэтапно. Для начала выведем на экран все ключи объекта (это названия городов):
var obj = {
'Минск': 'Беларусь',
'Москва': 'Россия',
'Киев': 'Украина'
};
for (var key in obj) {
alert(key);
}
А теперь выведем все значения объекта (это страны):
var obj = {
'Минск': 'Беларусь',
'Москва': 'Россия',
'Киев': 'Украина'
};
for (var key in obj) {
alert(obj[key]);
}
Ну, а теперь сформируем строки нужного нам формата:
var obj = {
'Минск': 'Беларусь',
'Москва': 'Россия',
'Киев': 'Украина'
};
for (var key in obj) {
alert(key + ' - это ' + obj[key] + '.');
}
Задачи для решения
Циклы while и for
Выведите столбец чисел от 1 до 100.
Решение:
Через while:
var i = 1;
while (i <= 100) {
document.write(i+'<br>');
i += 1;
}
Через for:
for (var i = 1; i <= 100; i++) {
document.write(i+'<br>');
}
Выведите столбец чисел от 11 до 33.
Решение:
Через while:
var i = 11;
while (i <= 33) {
document.write(i+'<br>');
i += 1;
}
Через for:
for (var i = 11; i <= 33; i++) {
document.write(i+'<br>');
}
Выведите столбец четных чисел в промежутке от 0 до 100.
Решение:
Через while:
var i = 0;
while (i <= 100) {
document.write(i+'<br>');
i += 2;
}
Через for:
for (var i = 0; i <= 100; i += 2) {
document.write(i+'<br>');
}
С помощью цикла найдите сумму чисел от 1 до 100.
Решение:
Через while:
var i = 1;
var sum = 0;
while (i <= 100) {
sum += i;
i++;
}
alert(sum);
Через for:
var sum = 0;
for (var i = 0; i <= 100; i++) {
sum += i;
}
alert(sum);
Работа с for для массивов
Дан массив с элементами [1, 2, 3, 4, 5]. С помощью цикла for выведите все эти элементы на экран.
Решение:
var arr = [1, 2, 3, 4, 5];
for (var i = 0; i < arr.length; i++) {
alert(arr[i]);
}
Дан массив с элементами [1, 2, 3, 4, 5]. С помощью цикла for найдите сумму элементов этого массива. Запишите ее в переменную result.
Решение:
var arr = [1, 2, 3, 4, 5];
var result = 0;
for (var i = 0; i < arr.length; i++) {
result += arr[i];
}
alert(result);
Работа с for-in
Дан объект obj. С помощью цикла for-in выведите на экран ключи и элементы этого объекта.
var obj = {green: 'зеленый', red: 'красный', blue: 'голубой'}
Решение:
var obj = {green: 'зеленый', red: 'красный', blue: 'голубой'};
for (var key in obj) {
alert(key); //ключи
alert(obj[key]); //значения
}
Дан объект obj с ключами Коля, Вася, Петя с элементами '200', '300', '400'. С помощью цикла for-in выведите на экран строки такого формата: 'Коля - зарплата 200 долларов.'.
Решение:
var obj = {Коля: '200', Вася: '300', Петя: '400'};
for (var key in obj) {
document.write(key + ' - зарплата ' + obj[key] + ' долларов.<br>');
}
Задачи
Дан массив с элементами 2, 5, 9, 15, 0, 4. С помощью цикла for и оператора if выведите на экран столбец тех элементов массива, которые больше 3-х, но меньше 10.
Решение:
var arr = [2, 5, 9, 15, 0, 4];
for (var i = 0; i < arr.length; i++) {
if (arr[i] > 3 && arr[i] < 10) {
alert(arr[i]);
}
}
Дан массив с числами. Числа могут быть положительными и отрицательными. Найдите сумму положительных элементов массива.
Решение:
var sum = 0;
var arr = [2, -1, -3, 15, 0, 4];
for (var i = 0; i < arr.length; i++) {
if (arr[i] >= 0) {
sum += arr[i];
}
}
alert(sum);
Дан массив с элементами 1, 2, 5, 9, 4, 13, 4, 10. С помощью цикла for и оператора if проверьте есть ли в массиве элемент со значением, равным 4. Если есть - выведите на экран 'Есть!' и выйдите из цикла. Если нет - ничего делать не надо.
Решение:
var arr = [1, 2, 5, 9, 4, 13, 4, 10];
for (var i = 0; i < arr.length; i++) {
if (arr[i] == 4) {
alert('Есть!');
break;
}
}
Дан массив числами, например: [10, 20, 30, 50, 235, 3000]. Выведите на экран только те числа из массива, которые начинаются на цифру 1, 2 или 5.
Решение:
var arr = ['10', '20', '30', '50', '235', '3000'];
for (var i = 0; i < arr.length; i++) {
if (arr[i][0] == '1' || arr[i][0] == '2' || arr[i][0] == '5') {
alert(arr[i]);
}
}
Дан массив с элементами 1, 2, 3, 4, 5, 6, 7, 8, 9. С помощью цикла for создайте строку '-1-2-3-4-5-6-7-8-9-'.
Решение:
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
var str = '';
for (var i = 0; i < arr.length; i++) {
str += '-' + arr[i];
}
document.write(str + '-');
Составьте массив дней недели. С помощью цикла for выведите все дни недели, а выходные дни выведите жирным.
Решение:
var arr = ['Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб', 'Вс'];
for (var i = 0; i < arr.length; i++) {
if (i == 5 || i == 6) {
document.write('<b>' + arr[i] + '</b><br>');
} else {
document.write(arr[i] + '<br>');
}
}
Составьте массив дней недели. С помощью цикла for выведите все дни недели, а текущий день выведите курсивом. Текущий день должен храниться в переменной day.
Решение:
var arr = ['Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб', 'Вс'];
day = 3; //пусть сегодня четверг
for (var i = 0; i < arr.length; i++) {
if (i == day) {
document.write('<i>' + arr[i] + '</i><br>');
} else {
document.write(arr[i] + '<br>');
}
}
Дано число n=1000. Делите его на 2 столько раз, пока результат деления не станет меньше 50. Какое число получится? Посчитайте количество итераций, необходимых для этого (итерация - это проход цикла), и запишите его в переменную num.
Решение:
Через while:
var n = 1000;
var num = 0;
while (n > 50) {
num++;
n /= 2;
}
alert(n);
alert(num);
Через for (обратите внимание - тут у нас цикл без тела, вся магия внутри, изящно):
for (var n = 1000, num = 0; n > 50; n /= 2, num++);
alert(n);
alert(num);