Примеры решения задач

Задача

Задача. Выведите столбец чисел от 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

Решите эти задачи сначала через цикл 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);