Array  break  case  catch  const  continue  default  Date  do Error  else  Function  false  finally  for

function  if  in  instanceof  Infinity  Math  NaN  Number  new  null  Object  Promise  prototype  RegExp

return  String  switch  this  then  throw  try  true  undefined  var  with  while
	
alert(s)
appendChild(tagName)
fillRect()
pow(base, n)
sin(radians)
cos(radians)
random()
isNaN()
test()
sqrt(n)
prompt(s)
parseInt(s) parseFloat(s)
floor(f) 
ceil(f)
charAt(n)
indexOf(substring, offset)
substring(start, end)
replace(pattern, replacement)
toLowerCase(s)
toUpperCase(s)
abs(n)
splice(start, length, newItem1, newItem2, ...)
split(pattern, limit)
toString()
createElement(tagName)

getElementById(id)

getContext(contextType)

removeChild(domElement)

strokeText(text, x, y)

fillText(text, x, y)

measureText(text)

setItem(key, value)

join(delimeter)

round(floatNumber)
	

Ветвление

Использование if ... else

Решая примеры ниже я использую вместе с оператором if выражения, в которых сравнивается переменная с константой, например в первом примере if(x >= -7). Такая запись очень удобна для восприятия человеком, мы можем прочитать буквально "Если икс больше или равен минус семи, то...".

Интерпретатор воспринимает if(x >= -7) примерно так: вычисляет выражение в скобках после if. Результатом такого вычисления будет одно из двух логических значений: true(истина) или false(ложь), в зависимости от значения переменной x. Значение true - выполняется следующий за условием код в фигурных скобках, значение false - упомянутый код не выполняется, но может выполнится код, который идет в блоке else сразу после блока if

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

Например я часто использовал результат, возвращаемый функцией isNaN. Она вернет true, если переданный ей аргумент равен NaN и false в противном случае.

Если надо проверить более сложное условие, используются операторы алгебры логики И (&&) и ИЛИ (||).

Например, надо проверить, входит ли переменная в пределы (2,5), то есть нам надо, чтобы она была больше двух и меньше пяти. Тогда можно записать: if (x > 2 && x < 5) ("Если x больше двух и меньше пяти..."). Если нас интересует интервал [2,5], запись будет if (x >= 2 && x <= 5). ИЛИ может использоваться, когда нас устраивают какие-то из списка значений переменной, например если x равно 1 или 4, нужно сделать что-то... Тогда пишем if (x == 1 || x == 4).

Также в скобках после if вместо логических выражений или вызова функций, возвращающих логические значения могут быть арифметические выражения или просто переменные. Например if (x - 1){... В данном случае это эквивалентно if (x > 0) {...

Если значением переменной или результатом вычисления выражения в скобках после if является null, 0, пустая строка, NaN или undefined, то это значение приравнивается к false.

Вычислить

function example_2_1() {
	var x = parseInt( readln('Введите х') );
	if(isNaN(x) ) {//если x не число
		writeln('x должен быть числом!');
		return;
	}
	var result;
	if (x >= -7) {//Если x больше или равен -7 
		result = -1 * x*x;
	} else {//Иначе... 
		result = Math.pow(2, -1*x) / (x*x - 9) ;
	}
	writeln('Результат: ' + result);
}

Особенно объяснять тут мне кажется нечего. Больше или равно записывается как >=, меньше или равно как <=, не равно как !=. Надеюсь очевидно, что больше и меньше пишутся > и <. Проверка на равенство пишется как == или ===, про второй случай чуть подробнее написано в конце раздела Типы данных

Перейду к следующему заданию: Определить правильность даты, введенной с клавиатуры (число – от 1 до 31, месяц – от 1 до 12). Если введены некорректные данные, то сообщить об этом.

function example_2_2() {
	var day = parseInt( readln('Введите число месяца, от 1 до 31') );
	var month = parseInt( readln('Введите номер месяца от 1 до 12') );
	var daysInMonth = [0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];//дней в месяцах
	if(isNaN(day) || isNaN(month) || day < 1 || month < 1 || month > 12 || day > daysInMonth[month]) {
		writeln('Некорректные данные!');
		return;
	}
	writeln(day + ' / ' + month + ' - Хорошая дата ;-)');
}

Здесь я использую массив daysInMonth, чтобы контролировать, не выходит ли заданное пользователем значение дня месяца за пределы существующих в заданном им же месяце дней. Я создал массив из тринадцати элементов, в каждый из которых я поместил количество дней, соответствующее месяцу номер такой-то. Из тринадцати, а не из двенадцати, потому что элементы массивов нумеруются с нуля. Я мог бы использовать двенадцать элементов, а в условии if написать daysInMonth[month - 1] вместо daysInMonth[month]

В условии if этого примера я воспользовался тем, как работает оператор ||. У меня логическое выражение с шестью слагаемыми, два первых - это вызов isNaN с различными аргументами, остальные - проверки на вхождение заданных значений в нужные мне пределы. Пользователь может ввести в качестве номера месяца число более 12, ему ничего не мешает это сделать. Но тогда daysInMonth[month] будет равно undefined и условие day > daysInMonth[month] не будет иметь смысла, а во многих других языках программирования попытка получить несуществующий элемент массива привела бы к ошибке.

Но оператор || работает так, что как только выполняется одно из условий передаваемых в качестве слагаемых, дальнейшая проверка не выполняется. В самом деле, зачем это делать: логическое ИЛИ (||) истинно если истинно хотя бы одно из входящих в него значений. Таким образом, если пользователь вводит номер месяца не равный интервалу [1,12], интерпретатор JavaScript просто не дойдет до последней части условия! Таким образом, программа работает корректно.

В задании ничего не сказано о такой важной составляющей даты, как год. Поэтому я поместил в февраль 29 дней, так как год может быть високосным. Но так как тема этого упражнения - условные операторы, я немного усложню задачу и добавлю ввод года, так как определение, високосный ли данный год - это просто прекрасный пример использования условных операторов. Если год без остатка делится на 4, он високосный. Но, если он при этом делится без остатка на 100, но не делится на 400 - он не високосный. Добавлю соответствующую функцию определения високосности года и код, который перепишет значение количества дней в феврале в зависимости от этого.

function example_2_2() {
	var day = parseInt( readln('Введите число месяца, от 1 до 31') ),
	month = parseInt( readln('Введите номер месяца от 1 до 12') ),
	year  = parseInt( readln('Введите номер года') ),
	daysInMonth = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];//дней в месяцах
	
	function isLeapYear(year) {
		var y = Number(year);
		if (y % 4 == 0) {
			if (y % 100 == 0){
				if (y % 400 == 0) {
					return true;
				}
				return false;
			}			
			return true;
		}
		return false;
	}
	
	if(isLeapYear(year)) {
		daysInMonth[2] = 29;
	}
	
	if(isNaN(day) || isNaN(month) || isNaN(year) || day < 1 || month < 1 || month > 12 || day > daysInMonth[month]) {
		writeln('Некорректные данные!');
		return;
	}
	writeln(day + ' / ' + month + ' / ' + year + ' - Хорошая дата ;-)');
}

Тернарный оператор

Очередное задание выглядит так: Логической переменной b присвоить значение true, если числа а и b равны и false в противном случае.

Сделать это в JavaScript очень просто:

function example_2_3() {
	var x = parseInt( readln('Введите x') ),
		y = parseInt( readln('Введите y') ),
		b;
	b = (x == y);//В переменную b помещаем результат операции сравнения ==
	writeln('b = ' + b);
}

Но, что было бы, если бы нас просили поместить в переменную b значение 100 если a равно b и 500 в противном случае? Можно было бы использовать уже привычный нам подход:

function example_2_3_1() {
	var x = parseInt( readln('Введите x') ),
		y = parseInt( readln('Введите y') ),
		b;
	if (x == y) {
		b = 100;
	} else {
		b = 500;
	}

	writeln('b = ' + b);
}

А можно написать вот так:

function example_2_3_1() {
	var x = parseInt( readln('Введите x') ),
		y = parseInt( readln('Введите y') ),
		b;
	b = x == y ? 100 : 500; ////с тем же успехом
	writeln('b = ' + b);
}

Тернарный оператор Условие?Истинно:Ложно возвращает значение получающееся в результате вычисления выражения (или как у меня, готовое значение) между ? и : если условие перед ? выполняется. Если условие перед ? не выполняется, возвращается результат вычисления выражения (или как у меня, готовое значение) после :. Тернарным он называется, потому что принимает три операнда (условие и два выражения).

Использование switch

Когда надо выполнить определенные действия, если значение переменной равно какому-то из длинного перечня значений, удобно использовать операторы switch ... case ... default

function switchExample() {
	var surname =  readln('Введите известную фамилию');
	writeln(surname);
	switch (surname) {
		case 'Гагарин':
			writeln('Первый космонавт');
			break;//Если не ставить break и surname == "Гагарин" то alert про президента тоже будет выведен
		case 'Путин':
			writeln('Президент');
			break;//Если не ставить break и surname == "Путин" то alert "Не знаю, кто это." тоже будет выведен
		default:
			writeln('Не знаю, кто это.');//alert "Не знаю, кто это." будет выведен если surname не "Путин" и не "Гагарин"
	}
}
Тест на новые слова

  • Несохраненный_файл.js
Строка: 0, Символ: 0

  • {name}
  • У вас пока нет файлов
 

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

 

Правильно!

Не забывайте переодически проходить этот тест по мере чтения новых статей.

 

Ошибка!

 

Осталось: 0 сек.

Health:

Score:

 

Что значит:

 

 

 


Информация

Загрузите файл с исходным кодом программы на языке яваскрипт.

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

Например, файл называется task1.js, имя главной функции должно быть task1.

Все остальные функции должны быть определены внутри главной.

*

Информация

Сохраняемый код должен содержать одну главную функцию.

Например:

function myFirstProgram() {
	//Тут все остальное, включая вспомогательные функции
}
					




Простой пароль
Пароли не совпадают