СДЕЛАЙТЕ СВОИ УРОКИ ЕЩЁ ЭФФЕКТИВНЕЕ, А ЖИЗНЬ СВОБОДНЕЕ

Благодаря готовым учебным материалам для работы в классе и дистанционно

Скидки до 50 % на комплекты
только до

Готовые ключевые этапы урока всегда будут у вас под рукой

Организационный момент

Проверка знаний

Объяснение материала

Закрепление изученного

Итоги урока

Разработка кода ИС Практическая работа №32

Категория: Информатика

Нажмите, чтобы узнать подробности

Просмотр содержимого документа
«Разработка кода ИС Практическая работа №32»

Практическое занятие № 32

Тема: «Работа с конструкциями ветвления и повторения.»

Цель работы: приобретение навыков использования конструкций ветвления и повторения в JS.

Краткие теоретические основания выполнения задания Конструкция if‐else

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

То есть нам нужно иметь возможность спросить у JavaScript 'Если'.

Например так: если эта переменная меньше нуля, то вывести 'отрицательно', иначе (то есть если она больше нуля) вывести 'положительно'.

В JavaScript для таких вопросов предназначена конструкция if, которая позволяет выполнять

определенный код при выполнении какого‐либо условия:

if (логическое выражение) {

Этот код выполниться,

если логическое выражение верно (то есть равно true)

} else {

Этот код выполнится,

если логическое выражение неверно (то есть равно false)

}

Обратите внимание на то, что блок else не обязателен.

Логическое выражение представляет собой тот самый вопрос, который мы хотим задать JavaScript.

Например, чтобы спросить 'переменная a больше нуля' мы напишем так: a 0.

Примеры работы:

var a = 3;


/*

Если переменная a больше нуля, то выведи 'верно',

иначе (если меньше или равна нулю) выведи 'неверно'

*/

if (a 0) {alert('Верно!');} else {alert('Неверно!');} //выведет 'Верно!' var a = -3;


/*

Если переменная a больше или равна нулю, то выведи 'верно',

иначе (если меньше нуля) выведи 'неверно'

*/

if (a = 0) {alert('Верно!');} else {alert('Неверно!');} //выведет 'Неверно!'

Сокращенный синтаксис

В случае, если в фигурных скобках if или else будет только одно выражение, можно эти фигурные скобки не писать:

//Полный вариант:

if (a == 0) {alert('Верно!');} else {alert('Неверно!');}

//Уберем скобки после if:

if (a == 0) alert('Верно!'); else {alert('Неверно!');}


//Уберем скобки после else:

if (a == 0) {alert('Верно!');} else alert('Неверно!');


/*

Уберем скобки и после if, и после else

(обратите внимание на точку с запятой - она осталась):

*/

if (a == 0) alert('Верно!'); else alert('Неверно!');

Равенство по значению и типу

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

Почему так? Потому что одиночное равно зарезервировано за присваиванием. Смотрите пример:

var a = 0;


/*

Если переменная a равна нулю, то выведи 'верно',

иначе (если не равна нулю) выведи 'неверно'

*/

if (a == 0) alert('Верно!'); else alert('Неверно!'); //выведет 'Верно!'

А следующий пример работать будет не так, как мы думаем: var a = 0;


/*

Мы думаем оно работает так:

если переменная a равна нулю, то выведи 'верно',

иначе (если не равна нулю) выведи 'неверно'.


На самом деле оно работает так: переменной a присвоить 1,

если удалось присвоить - то выведи 'верно',

иначе (если не удалось присвоить) выведи 'неверно'.

*/


if (a = 1) alert('Верно!'); else alert('Неверно!'); //всегда будет выводить 'Верно!'

Кроме оператора == существует еще и оператор ===. Их различие в том, что

=== сравнивает не только по значению, но и по типу, а == сравнивает только по значению.

Чтобы полностью разобраться в этом внимательно изучите примеры:

var a = '0'; //переменная a представляет собой строку, а не число 0 if (a == 0) alert('Верно!'); else alert('Неверно!');


/*

Выведет 'Верно!', так как проверяется только значение, но не тип. Поэтому '0' равен 0.

*/

var a = '0'; //переменная a представляет собой строку, а не число 0 if (a === 0) alert('Верно!'); else alert('Неверно!');


/*

Выведет 'Неверно!', так как строка '0'

не равна числу 0 при сравнении по типу.

*/

Не равно

Для того, чтобы спросить 'не равно', существует операторы != и !==. Первый игнорирует различие в типах, а второй ‐ нет.

var a = 0;


/*

Если переменная a НЕ равна нулю, то выведи 'верно',

иначе (если равна нулю) выведи 'неверно'

*/

if (a != 0) alert('Верно!'); else alert('Неверно!'); //выведет 'Неверно!',

так как a равна 0 a = 1;


/*

Если переменная a НЕ равна нулю, то выведи 'верно',

иначе (если равна нулю) выведи 'неверно'

*/

if (a != 0) alert('Верно!'); else alert('Неверно!'); //выведет 'Верно!',

так как a равна 1 var a = '0';


/*

Если переменная a НЕ равна нулю, то выведи 'верно',

иначе (если равна нулю) выведи 'неверно'

*/

if (a != 0) alert('Верно!'); else alert('Неверно!');


/*

Выведет 'Неверно!', так как a равно '0',

а различие в типах игнорируется.

*/

var a = '0';


/*

Если переменная a НЕ равна нулю, то выведи 'верно',

иначе (если равна нулю) выведи 'неверно'

*/

if (a !== 0) alert('Верно!'); else alert('Неверно!');


/*

Выведет 'Верно!', так как a равно '0',

а это не равно 0 при сравнении по типу.

*/

Все операции сравнения

Возможные операции сравнения, которые можно использовать внутри if: a == b a равно b

a === b a равно b и они одинаковы по типу


a != b a не равно b

a !== b a не равно b или a равно b, но ни разные по типу


a b a меньше b


a b a больше b


a b a меньше или равно b


a = b a больше или равно b


Несколько условий сразу

Иногда может быть нужно составить какое‐то сложное условие, например, пользователь вводит месяц своего рождения и вам нужно проверить, что введенное число больше или равно 1 и меньше либо равно 12 (так как в году 12 месяцев).

Для этого существуют операторы && (логическое И) и || (логическое ИЛИ).

var a = 3; var b = -3;

//Если a больше нуля и b одновременно меньше нуля то...

if (a 0 && b 'Верно!'


var a = 3;

//Если a больше или равно 1 и меньше или равно 12 то...

if (a = 1 && a Верно!'); else alert('Неверно!'); //выведет 'Верно!'


var a = -3; var b = -3;

/*

Если a больше нуля ИЛИ b меньше нуля ‐ хотя бы один из них, то... выведет 'Верно!', так как хотя a и не больше нуля,

но одно из условий - b 0 - выполнится!

*/

if (a 0 || b 0) alert('Верно!'); else alert('Неверно!');

Работа с логическими переменными

Многие функции JavaScript в результате своей работы возвращают либо true (истина), либо false (ложь). Эти значения довольно удобны при своей работе, но новичкам бывает довольно сложно понять их.

Представим себе, что переменная a равна true. В таком случае конструкцию if можно записать так:

var a = true;


//Если a равно true, то...

if (a == true) alert('Верно!'); else alert('Неверно!');


/*

Выведет 'Верно!', так как a равно true.

*/

Так как такие сравнения довольно распространены в JavaScript, то существует специальный прием, облегчающий работу (но не понимание, к сожалению).

Прием такой: конструкцию a == true можно заменить на более простую: вместо if (a == true) написать

if (a) и она будет работать аналогично.

Следует пользоваться второй конструкцией, так как она проще.

/*

Заменим a == true на более простую: вместо if (a == true) напишем if (a):

*/


var a = true;

//Если a равно true, то...

if (a) alert('Верно!'); else alert('Неверно!'); //выведет 'Верно!', так как a равно true


var a = true;

//Если a НЕ true (то есть false!), то...

if (!a) alert('Верно!'); else alert('Неверно!'); //выведет 'Неверно!', так как a равно true

Также обратите внимание на следующие примеры:

//Данное выражение всегда будет выводить 'Верно' if (true) alert('Верно!'); else alert('Неверно!');


//Данное выражение всегда будет выводить 'Неверно' if (false) alert('Верно!'); else alert('Неверно!');


//Данное выражение всегда будет выводить 'Неверно' if (!true) alert('Верно!'); else alert('Неверно!');


//Данное выражение всегда будет выводить 'Верно'

if (!false) alert('Верно!'); else alert('Неверно!');

Вложенные if

Предположим, нам необходимо спросить у JavaScript такую вещь: если переменная a не определена, то вывести 'Введите a', если определена, то проверить ‐ больше нуля a или нет. Если больше нуля

то вывести 'Больше нуля!', если меньше вывести 'Меньше нуля'.

Одной конструкцией if здесь не обойтись, нужно использовать две таким образом, чтобы одна была внутри другой:

if (a === undefined) { //если переменная a не определена

alert('Введите a!');

} else { //если переменная a НЕ пуста

if (a 0) { //спрашиваем, больше ли нуля переменная a alert('Больше нуля!');

} else {

alert('Меньше нуля!');

}

}

Конструкция else if

Недостатком конструкции предыдущего примера является большое количество фигурных скобок.

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

//Решение предыдущей задачи через конструкцию else if: if (a === undefined) {

alert('Введите a!');

} else if (a 0) {

alert('Больше нуля!');

} else {

alert('Меньше нуля!');

}

Можно использовать несколько else if, но злоупотреблять этим не стоит (лучше будет воспользоваться конструкцией switch‐case, о которой ниже).

Несколько if

Пусть у нас есть такая задача: сайт поддерживает 3 языка ‐ русский, английский, немецкий. Переменная lang может принимать 3 значения ‐ 'ru', 'en' и 'de'. В зависимости от значения переменной lang следует вывести фразу на одном из языков.

Решение: можно было бы воспользоваться вложенными ифами или else if. Выглядело бы это примерно так:

//Решение задачи через else if – не самое удачное: if (lang == 'ru') { //фраза на русском

alert('Русский текст');

} else if (lang == 'en') { //фраза на английском

alert('Английский текст');

} else if (lang == 'de') { //фраза на немецком

alert('Немецкий текст');

}

Такое решение не слишком красивое ‐ блок else здесь не нужен! Проще всего будет написать не один длинный if с несколькими else, а несколько if вообще без else:

//Решение задачи через несколько if – оно намного лучше: if (lang == 'ru') { //фраза на русском

alert('Русский текст');

}

if (lang == 'en') { //фраза на английском

alert('Английский текст');

}

if (lang == 'de') { //фраза на немецком

alert('Немецкий текст');

}


/*

В данном коде сработает только один из ифов,

так как переменная lang может иметь только одно из значений

*/

Однако это решение тоже не слишком удобно. Представьте, что у вас будет не три языка, а 10 ‐ вам придется написать 10 конструкций if.

Для таких случаев существует конструкция switch‐case.

Конструкция switch‐case

Данная конструкция представляет собой альтернативу if‐else, ее рекомендуется использовать в случае множественного выбора (например, 10 различных языков, как в нашей задаче).

Изучите ее синтаксис:

switch (переменная) { case 'значение1':

здесь код, который выполнится в случае, если переменная имеет

значение1;

break;

case 'значение2':

здесь код, который выполнится в случае, если переменная имеет

значение2;

break;

case 'значение3':

здесь код, который выполнится в случае, если переменная имеет

значение3;

break; default:

этот код выполнится в случае, если переменная не совпала ни с одним значением;

break;

}

Решим нашу задачу с тремя языками с помощью данной конструкции:

switch (lang) {

case 'ru':

alert('Русский текст'); break;

case 'en':

alert('Английский текст'); break;

case 'de':

alert('Немецкий текст'); break;

default:

alert('Данный язык не поддерживается'); break;

}

Работа с циклами for и while в JavaScript

Циклы используются для того, чтобы некоторый участок кода выполнился несколько раз подряд.

Зачем это нужно ‐ представьте, что вам нужно возвести в квадрат 100 элементов массива. Если обращаться к каждому элементу отдельно по его ключу ‐ это займет 100 строчек кода, и для того, чтобы написать этого код, нужно будет потратить довольно много времени.

Но это не нужно ‐ у нас есть возможность сделать так, чтобы JavaScript за нас выполнил некоторую операцию нужное количество раз. Например, возвел все элементы массива в квадрат.

Делается это с помощью циклов. Цикл while

Цикл while будет выполняться до тех пор, пока верно (истинно) выражение, переданное ему параметром. Смотрите синтаксис:

while ( пока выражение истинно ) {

выполняем этот код циклически;

в начале каждого цикла проверяем выражение в круглых скобках

}

/*

Цикл закончится, когда выражение перестанет быть истинным. Если оно было ложным изначально - то он не выполнится ни разу!

*/

В принципе, цикл while может выполняться бесконечно (но это приведет к зависанию скрипта!), достаточно передать ему выражение, которое никогда не станет ложным. Например, так:

var test = true;

while (test === true) {

/*

Написанный здесь код будет выполняться 'вечно' (пока скрипт не будет остановлен принудительно).

Не стоит это повторять - это приведет к зависанию сервера!

*/

}

Давайте последовательно выведем с помощью цикла while числа от одного до пяти:

var i = 0; //счетчик цикла

while (i 5) {

/*

С помощью оператора ++ увеличиваем i на единицу при каждом проходе цикла.

*/ i++;

alert(i);

}

Обратите внимание на переменную i – она является так называемым счетчиком цикла. Счетчики используются для того, чтобы подсчитывать, сколько раз выполнился цикл. Кроме того, они выполняют вспомогательную роль ‐ в нашей задаче мы использовали счетчик, чтобы вывести цифры от 1 до 5.

Для счетчиков принято использовать буквы i, j и k.

Цикл for

Цикл for является альтернативой while. Он более сложен для понимания, но чаще всего его любят больше, чем while за то, что он занимает меньше строчек.

for ( начальные команды; условие окончания цикла; команды после прохода цикла ) {

тело цикла

}

Начальные команды ‐ это то, что выполнится перед стартом цикла. Они выполнятся только один раз. Обычно там размещают начальные значения счетчиков, пример: i = 0.

Условие окончания цикла ‐ пока оно истинное, цикл будет работать, пример: i .

Команды после прохода цикла ‐ это команды, которые будут выполнятся каждый раз при окончании прохода цикла. Обычно там увеличивают счетчики, например: i++.

Давайте с помощью цикла for выведем последовательно числа от 0 до 9:

/*

В начале цикла i будет равно нулю, цикл будет выполнятся пока i 10,

после каждого прохода к i прибавляется единица:

*/

for (var i = 0; i выведет 0, 1, 2... 9

}

Цикл без тела

Фигурные скобки в циклах можно не указывать ‐ в этом случае цикл выполнит только одну строку под ним (не рекомендую так делать, часто приводит к ошибкам):

for (var i = 0; i 10; i++) // точки с запятой нет

alert(i); //выведет 0, 1, 2... 9

А вот если после ) поставить точку с запятой ‐ цикл закроется и следующая строка в него не попадет, получится так называемый цикл без тела, который в нашем случае просто прокрутится и в результате изменит значение переменной i:

for (var i = 0; i 10; i++); // точка с запятой есть

alert(i); //выведет 9

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

Несколько команд в цикле for

Если нам необходимо выполнить несколько команд в круглых скобках ‐ указываем их через запятую:

for (var i = 0, j = 2; i 10; i++, j++, i = i + j) {


}

Давайте разберем приведенный цикл: до прохода цикла выполнятся две команды: var i = 0, j = 2 (обратите внимание на то, что var тут пишется один раз), а после каждой итерации ‐ целых три: i++, j++, i = i + j.

Этот пример с точки зрения программирования никакой особой пользы не несет, просто схематически показывает, что так можно делать. Запомните его, в дальнейшем это вам пригодится.

Цикл for для массивов

С помощью цикла for можно последовательно перебрать элементы массива. Делается это следующим образом:

var arr = [1, 2, 3, 4, 5];

for (var i = 0; i

}

Ключевым моментом является то, что мы делаем перебор от нуля до длины массива минус 1 (так как номер последнего элемента массива на единицу меньше его длины).

Можно не отнимать единицу, а место сделать :

var arr = [1, 2, 3, 4, 5];

for (var i = 0; i выведет 1, 2, 3, 4, 5

}

Цикл for‐in

Для перебора объекта используется так называемый цикл for‐in. Давайте посмотрим, как он работает. Пусть у нас дан такой объект:

var obj = {Коля: 200, Вася: 300, Петя: 400};

Давайте выведем его ключи. Для этого используем такую конструкцию: for (key in obj), где obj ‐ это объект, который мы перебираем, а key ‐ это переменная, в которую последовательно будут ложится ключи объекта (ее название может быть любым, какое придумаете ‐ такое и будет).

То есть в данном цикле не надо указывать условие окончания ‐ он будет перебирать ключи объекта, пока они не закончатся.

Итак, вот так мы выведем все ключи объекта (по очереди):

var obj = {Коля: 200, Вася: 300, Петя: 400}; for (key in obj) {

alert(key); //выведет 'Коля', 'Вася', 'Петя'

}

Если нам нужны не ключи, а значения, нужно обратиться к нашему объекту по ключу, вот так:

obj[key].

Как это работает: в переменной key сначала будет 'Коля', то есть obj[key] в данном случае все равно, что obj['Коля'], при следующем проходе цикла в переменной key будет 'Вася' и так далее.

Итак, выведем все элементы объекта:

var obj = {Коля: 200, Вася: 300, Петя: 400}; for (key in obj) {

alert(obj[key]); //выведет 200, 300, 400

}

Инструкция break

Иногда нам необходимо прервать выполнение цикла досрочно, в случае с циклом for это значит до того, как цикл переберет все элементы массива.

Зачем такое может понадобится? Например, перед нами стоит задача выводить элементы массива до тех пор, пока не встретится число 3. Как только встретится ‐ цикл должен завершить свою работу.

Такое можно сделать с помощью инструкции break ‐ если выполнение цикла дойдет до нее, цикл закончит свою работу.

Давайте решим приведенную выше задачу ‐ оборвем цикл, как только нам встретится число 3:

var arr = [1, 2, 3, 4, 5];

for (var i = 0; i

break; //выходим из цикла

} else {

alert(arr[i]);

}

}

Инструкция continue

Существует также инструкция continue, при достижении которой цикл начинает новую итерацию. Иногда может быть полезна для упрощения кода, хотя практически всегда задачу можно решить и без нее.

Оборудование, материалы

Персональный компьютер с установленной ОС. Текстовый редактор Notepad++ или аналогичный. Open Server.

Порядок выполнения задания Примеры решения задач

Задача 1. Если переменная a равна 10, то выведите 'Верно', иначе выведите 'Неверно'.

Решение:

var num = 10;

if (num == 10) {

alert('Верно');

} else {

alert('Неверно');

}

Задача 2. В переменной min лежит число от 0 до 59. Определите в какую четверть часа попадает это число (в первую, вторую, третью или четвертую).

Решение:

var min = 10;

if (min = 0 && min

}

if (min = 15 && min

}

if (min = 31 && min

}

if (min = 46 && min 59) { alert('В четвертую четверть.');

}

Задача 3. Переменная lang может принимать 2 значения: 'ru' 'en'. Если она имеет значение 'ru', то в переменную arr запишем массив дней недели на русском языке, а если имеет значение 'en' – то на английском. Решите задачу через 2 if, через switch‐case и через многомерный массив без ифов и switch.

Решение:

Решение через 2 if:

var lang = 'ru'; if (lang == 'ru') {

var arr = ['пн', 'вт', 'ср', 'чт', 'пт', 'сб', 'вс'];

}

if (lang == 'en') {

arr = ['mn', 'ts', 'wd', 'th', 'fr', 'st', 'sn'];

}

alert(arr);

Решение через switch‐case:

var lang = 'ru'; switch (lang) {

case 'ru':

var arr = ['пн', 'вт', 'ср', 'чт', 'пт', 'сб', 'вс']; break;

case 'en':

arr = ['mn', 'ts', 'wd', 'th', 'fr', 'st', 'sn']; break;

}

alert(arr);

Решение через многомерный массив:

var lang = 'ru'; var arr = {

'ru':['пн', 'вт', 'ср','чт', 'пт', 'сб', 'вс'],

'en':['mn', 'ts', 'wd', 'th', 'fr', 'st', 'sn'],

};

alert(arr[lang]);

Задача 4. Выведите столбец чисел от 1 до 50.

Решение: воспользуемся циклом while (отделим числа тегом br друг от друга, чтобы получить столбец, а не строку):

var i = 1;

while (i 50) {

document.write(i + '
'); i++;

}

Можно также воспользоваться и циклом for: for (var i = 1; i

document.write(i + '
');

}

Задача 5. Дан массив с элементами [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 + '
');

}

Задача. Дан массив с элементами [2, 3, 4, 5]. С помощью цикла for найдите произведение элементов этого массива.

Решение: для таких задач существует стандартное решение, которое заключается в том, что циклом for перебираются элементы массива и их произведение последовательно записывается в переменную result (в ней постепенно накапливается искомое произведение):

var result = 1;

var arr = [2, 3, 4, 5];

for (var i = 0; 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

}

alert(result);

Задача 6. Цикл 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] + '.');

}


Задачи для решения

Работа с if‐else

  1. Если переменная a равна нулю, то выведите 'Верно', иначе выведите 'Неверно'. Проверьте работу скрипта при a, равном 1, 0, ‐3.

  2. Если переменная a больше нуля, то выведите 'Верно', иначе выведите 'Неверно'. Проверьте работу скрипта при a, равном 1, 0, ‐3.

  3. Если переменная a меньше нуля, то выведите 'Верно', иначе выведите 'Неверно'. Проверьте работу скрипта при a, равном 1, 0, ‐3.

  4. Если переменная a больше или равна нулю, то выведите 'Верно', иначе выведите 'Неверно'.

Проверьте работу скрипта при a, равном 1, 0, ‐3.

  1. Если переменная a меньше или равна нулю, то выведите 'Верно', иначе выведите 'Неверно'.

Проверьте работу скрипта при a, равном 1, 0, ‐3.

  1. Если переменная a не равна нулю, то выведите 'Верно', иначе выведите 'Неверно'. Проверьте работу скрипта при a, равном 1, 0, ‐3.

  2. Если переменная a равна 'test', то выведите 'Верно', иначе выведите 'Неверно'. Проверьте работу скрипта при a, равном 'test', 'тест', 3.

  3. Если переменная a равна '1' и по значению и по типу, то выведите 'Верно', иначе выведите

'Неверно'. Проверьте работу скрипта при a, равном '1', 1, 3.

Работа с логическими переменными
  1. Если переменная test равна true, то выведите 'Верно', иначе выведите 'Неверно'. Проверьте работу скрипта при test, равном true, false. Напишите два варианта скрипта ‐ с короткой записью и с длинной.

  2. Если переменная test не равна true, то выведите 'Верно', иначе выведите 'Неверно'. Проверьте работу скрипта при test, равном true, false. Напишите два варианта скрипта ‐ с короткой записью и с длинной.

Работа с && (и) и || (или)
  1. Если переменная a больше нуля и меньше 5‐ти, то выведите 'Верно', иначе выведите

'Неверно'. Проверьте работу скрипта при a, равном 5, 0, ‐3, 2.

  1. Если переменная a равна нулю или равна двум, то прибавьте к ней 7, иначе поделите ее на 10.

Выведите новое значение переменной на экран. Проверьте работу скрипта при a, равном 5, 0,

‐3, 2.

  1. Если переменная a равна или меньше 1, а переменная b больше или равна 3, то выведите сумму этих переменных, иначе выведите их разность (результат вычитания). Проверьте работу скрипта при a и b, равном 1 и 3, 0 и 6, 3 и 5.

  2. Если переменная a больше 2‐х и меньше 11‐ти, или переменная b больше или равна 6‐ти и меньше 14‐ти, то выведите 'Верно', в противном случае выведите 'Неверно'.

На switch‐case
  1. Переменная num может принимать 4 значения: 1, 2, 3 или 4. Если она имеет значение '1', то в переменную result запишем 'зима', если имеет значение '2' – 'весна' и так далее. Решите задачу через switch‐case.

Задачи
  1. В переменной day лежит какое‐то число из интервала от 1 до 31. Определите в какую декаду месяца попадает это число (в первую, вторую или третью).

  2. В переменной month лежит какое‐то число из интервала от 1 до 12. Определите в какую пору года попадает этот месяц (зима, лето, весна, осень).

  3. Дана строка, состоящая из символов, например, 'abcde'. Проверьте, что первым символом этой строки является буква 'a'. Если это так ‐ выведите 'да', в противном случае выведите 'нет'.

  4. Дана строка с цифрами, например, '12345'. Проверьте, что первым символом этой строки является цифра 1, 2 или 3. Если это так ‐ выведите 'да', в противном случае выведите 'нет'.

  5. Дана строка из 3‐х цифр. Найдите сумму этих цифр. То есть сложите как числа первый символ строки, второй и третий.

  6. Дана строка из 6‐ти цифр. Проверьте, что сумма первых трех цифр равняется сумме вторых трех цифр. Если это так ‐ выведите 'да', в противном случае выведите 'нет'.

Циклы while и for
  1. Решите эти задачи сначала через цикл while, а затем через цикл for.

  2. Выведите столбец чисел от 1 до 100.

  3. Выведите столбец чисел от 11 до 33.

  4. Выведите столбец четных чисел в промежутке от 0 до 100.

  5. С помощью цикла найдите сумму чисел от 1 до 100.


Работа с for для массивов


  1. Дан массив с элементами [1, 2, 3, 4, 5]. С помощью цикла for выведите все эти элементы на экран.

  2. Дан массив с элементами [1, 2, 3, 4, 5]. С помощью цикла for найдите сумму элементов этого массива. Запишите ее в переменную result.


Работа с for‐in


  1. Дан объект obj. С помощью цикла for‐in выведите на экран ключи и элементы этого объекта. var obj = {green: 'зеленый', red: 'красный', blue: 'голубой'}



  1. Дан объект obj с ключами Коля, Вася, Петя с элементами '200', '300', '400'. С помощью цикла

for‐in выведите на экран строки такого формата: 'Коля зарплата 200 долларов.'.


Задачи
  1. Дан массив с элементами 2, 5, 9, 15, 0, 4. С помощью цикла for и оператора if выведите на экран столбец тех элементов массива, которые больше 3‐х, но меньше 10.

  2. Дан массив с числами. Числа могут быть положительными и отрицательными. Найдите сумму положительных элементов массива.

  3. Дан массив с элементами 1, 2, 5, 9, 4, 13, 4, 10. С помощью цикла for и оператора if проверьте есть ли в массиве элемент со значением, равным 4. Если есть ‐ выведите на экран 'Есть!' и выйдите из цикла. Если нет ‐ ничего делать не надо.

  4. Дан массив числами, например: [10, 20, 30, 50, 235, 3000]. Выведите на экран только те числа из массива, которые начинаются на цифру 1, 2 или 5.

  5. Дан массив с элементами 1, 2, 3, 4, 5, 6, 7, 8, 9. С помощью цикла for создайте строку '‐1‐2‐3‐4‐ 5‐6‐7‐8‐9‐'.

  6. Составьте массив дней недели. С помощью цикла for выведите все дни недели, а выходные дни выведите жирным.

  7. Составьте массив дней недели. С помощью цикла for выведите все дни недели, а текущий

день выведите курсивом. Текущий день должен храниться в переменной day.

  1. Дано число n=1000. Делите его на 2 столько раз, пока результат деления не станет меньше 50. Какое число получится? Посчитайте количество итераций, необходимых для этого (итерация ‐ это проход цикла), и запишите его в переменную num.

Вопросы для повторения
  1. Каков синтаксис конструкции ветвления в JS?

  2. Чем равенство по значению отличается от равенства по типу?

  3. Какие операции сравнения определены в JS?

  4. Можно ли логическое выражение заменить на логическую переменную?

  5. Разрешено ли вкладывать конструкции ветвления друг в друга?

  6. В каких случаях применяется конструкция switch‐case?

  7. Опишите синтаксис циклической конструкции for.

  8. Опишите синтаксис циклической конструкции while.

  9. Какая циклическая конструкция может быть использована для перебора массивов?

Ресурсы и ссылки

http://code.mu/books/javascript/base/rabota‐s‐konstrukciyami‐if‐else‐switch‐case‐v‐javascript.html

http://code.mu/tasks/javascript/base/rabota‐s‐konstrukciyami‐if‐else‐switch‐case‐v‐javascript.html

http://code.mu/books/javascript/base/rabota‐s‐ciklami‐for‐i‐while‐v‐javascript.html

http://code.mu/tasks/javascript/base/rabota‐s‐ciklami‐for‐i‐while‐v‐javascript.html