Ввод-вывод, оператор присваивания, арифметические операции
Оператор присваивания. Арифметические выражения. Типы данных
Оператор присваивания
Первый оператор, с которым мы познакомимся,- оператор присваивания.
Оператор присваивания — основной оператор любого языка программирования. Общая форма записи оператора:
имя величины := выражение
Например, V:=A; или V:=A+1;
При помощи оператора присваивания переменной могут присваиваться константы и выражения, значения переменных любого типа.
Как только в программе встречается переменная, для неё в памяти отводится место. Оператор присваивания помещает значение выражения в место, отведённое переменной.
Если в процессе выполнения программы встречается переприсваивание (т.е. та же самая переменная принимает другое значение), то старое значение переменной стирается, на свободное место записывается новое значение. Команда присваивания позволяет лучше понять смысл слова переменная (т.е. меняющая своё значение по ходу программы).
Выражение может быть арифметическим, логическим или литерным. Важно, чтобы тип величины был согласован с видом выражения.
Арифметические выражения
Арифметические выражения должны быть записаны в так называемой линейной записи согласно следующим правилам:
-
выражение должно быть записано в виде линейной цепочки символов;
Порядок выполнения операций при вычислении арифметических выражений можно регулировать при помощи скобок по обычным правилам. Там, где скобки отсутствуют, ЭВМ выполняет операции в следующем порядке:
-
вычисляет значение всех алгоритмов-функций и стандартных функций;
В нашем случае(*) сначала переменной number1 присваивается значение равное 3 и переменной number2 присваивается значение равное 4, затем вычисляется значение выражения (number1 + number2) и оно присваивается переменной result.
Сумма чисел посчитана.
Теперь надо вывести ее значение на экран. Для этого используют оператор Write — записать (вывести) на экран значение переменной, записанной в скобках. В нашем случае значение переменной number1, затем символ + , далее значение переменной number2, символ = и, наконец, значение результата result.
И, наконец, в конце раздела операторов стоит служебное слово End, после которого стоит точка.
Задание. Наберите текст программы на компьютере и выполните ее (для запуска программы воспользуйтесь комбинацией клавиш Ctrl и F9).
Внимание! Не забывайте о порядке на дискете и в файле:
-
имя программы должно соответствовать ее содержанию,
Задание. Измените программу так, чтобы она подсчитывала сумму четырех чисел.
Сохраните файл на дискете, для этого из меню F10-File выберите команду Save и в предложенной строке наберите путь a:\Vvod\Summa (каталог Vvod должен быть уже организован для файлов, содержащих программы данной темы).
Основные определения
Познакомимся с основными понятиями языка.
Алгоритм — четкая последовательность действий, необходимая для решения задачи.
Программа — алгоритм, записанный на языке программирования.
Алфавит языка — набор элементарных символов, используемый для составления программ. Алфавит содержит:
-
52 буквы латинского алфавита (строчные и заглавные);
Идентификатор (имя) – имя какого-либо элемента программы, которое должно удовлетворять следующим требованиям:
-
длина имени не должна превышать 63 символов;
Правильно выбранные идентификаторы значительно облегчают чтение и понимание программы, а также уменьшают вероятность появления ошибок при модификации программ. Например, значение даты удобнее обозначить идентификатором Date, чем просто буквой D или любым другим символом.
Зарезервированные (служебные) слова — это слова, использующиеся только по своему прямому назначению. Их нельзя использовать в качестве имен переменных, так как они выполняют определенную смысловую нагрузку.
Примеры зарезервированных слов: AND, GOTO, PROGRAM, ELSE, IF, RECORD, NOT, ARRAY, REPEAT, UNTIL, BEGIN, IN, SET, END, CASE, CONST, USES, INTERFACE, STRING, LABEL, THEN, OF, DIV, TO, VAR, DO, TYPE, WHILE, DOWNTO, FILE, FUNCTION, PROCEDURE и другие.
Переменные (Var) — вид данных, который может изменять свое значение в ходе программы, описывают переменные после зарезервированного слова Var.
Константы (Const) — вид данных, который является постоянным на всем протяжении выполнения программы, описывают константы после зарезервированного слова Const.
Комментарии — некоторая запись, служащая для пояснения программы, которая записывается в фигурных скобках.
Типы данных
Для временного хранения информации в операторах памяти машины в языке Паскаль используются константы и переменные. Они могут быть различных типов:
-
целых чисел (см. ниже);
| Название | Длина в байтах | Диапазон значений |
| Byte | 1 | 0 . 255 |
| ShortInt | 1 | -128 . 127 |
| Word | 2 | 0 . 65535 |
| Integer | 2 | -32768 . 32767 |
| LongInt | 4 | -2147483648 . 2147483647 |
Над целыми типами определены такие операции:
- «+» — сложение;
- » * » — умножение;
- » — » вычитание;
- div — целочисленное деление;
- mod — получение остатка от целочисленного деления.
Вещественные типы:
Вещественные типы представляются с некоторой точностью, которая зависит от компьютера. Вам необходимо знать, что вещественный тип разделяется на несколько типов, но использовать мы будем вещественные данные только типа Real, которые занимают 6 байт, имеют диапазон возможных значений модуля от 2.9Е-39 до 1.7Е+38 и точность представления данных — 11. 12 значащих цифр.
Примечание. Несмотря на то, что в Turbo Pascal имеется широкий выбор вещественных типов, доступ к некоторым из них (single, double, extended) возможен при особых режимах компиляции. Особое положение в Turbo Pascal занимает тип comp, трактующийся как вещественное число без экспоненциальной и дробной частей. Он сохраняет 19 — 20 значащих цифр и знак числа. В то же время comp полностью совместим с любыми другими вещественными типами.
В языке Паскаль числа могут быть представлены в двух видах: с фиксированной точкой и плавающей точкой.
Числа с фиксированной точкой изображаются десятичным числом с дробной частью, которая может быть и нулевой. Например, 27.9, 5.00
Такие большие числа, как 137.000.000, можно записать в формате с десятичным порядком: 1.37 · 10 8 . В Turbo Pascal для подобных чисел принята форма записи mEp, где m — мантисса; E — признак записи числа с десятичным порядком; p — показатель степени числа 10. Такое представление чисел и называется форматом с плавающей точкой. Число 1.37 · 10 8 в этом формате запишется так: 1.37Е+8. Рассмотрим еще несколько примеров:
| Математическая запись | Запись на Паскале |
| 4·10 -4 | 4E -4 |
| 0,62·10 5 | 0.62E+5 |
| -10,88·10 12 | -10.88E12 |
По умолчанию, действительные числа выводятся в виде чисел с плавающей точкой. Такое представление чисел не очень нравится пользователям. Поэтому мы будем “заставлять” компьютер выдавать действительные числа в более привычном варианте следующим образом:
R:m:n, где R – действительное число, m – общее количество позиций, отводимых числа, n – количество позиций, отводимых для дробной части.
Например, если мы хотим вывести на экран число Chislo с фиксированной точкой, причем знаем, что для вывода этого числа достаточно 7 мест, а вывод дробной части ограничим сотыми, то мы запишем вывод так:
| Write (Chislo:7:2) |
Символьный тип (char):
Значением величины данного типа является символ из множество всех символов компьютера: русская или латинская большая или маленькая буква, цифра, знак препинания, специальный знак (например, «+», «-«, «*», «/», «», «=» и др.) или пробел » «. Каждый из символов имеет уникальный номер от 0 до 255, т. е. внутренний код, который возвращает функция ORD. Символьная константа – любой символ языка, заключённый в одинарные кавычки. Например,
| Var Simvol : char; |
Строковый тип (string):
Значением строковой величины является строка переменной длины (быть может, пустая). Строковая константа представляет собой произвольную последовательность символов, заключенную в одинарные кавычки. Например,
| Var Stroka : string; |
Логический тип (boolean):
Логический тип данных часто называют булевым по имени английского математика Д. Буля, создателя математической логики. В языке Паскаль имеются две логические константы TRUE и FALSE. Логическая переменная принимает одно из этих значений и имеет тип Boolean. Для сравнения данных предусмотрены следующие операции отношения: , >, >= Результат операции отношения имеет логический тип, т.е. результат операции может быть истинным или ложным, например, 3>5 – ложь.
Над величинами этого типа можно выполнять специфические логические операции OR — или; AND — и; NOT — не.
Более подробно этот тип данных мы рассмотрим при изучении условного оператора.
Сложные типы:
К сложным или структурированным типам относятся массивы, записи, множества, которые требуют специального изучения и здесь рассматриваться не будут.
Задание. Откройте новый файл. Создадим программу, в которой опишем несколько переменных разного типа, введем в них значения и выведем на экран.
| Program TipDann; Uses Crt Var Chislo1 : Integer; Chislo2 : Real; Simvol : Char; Stroka : String; Logika : Boolean; Begin ClrScr; Chislo1:=12; Chislo2:=Chislo1*2; Chislo2:=Chislo2/5; Simvol:=’d’; Stroka:=’Строчка’; Logika:= Chislo1> Chislo2; WriteLn (‘Вывод значений:’); WriteLn (‘Значение переменной Chislo1 : ‘,Chislo1); WriteLn (‘Значение переменной Chislo2 : ‘,Chislo2:5:2); WriteLn (‘Значение переменной Simvol : ‘,Simvol); WriteLn (‘Значение переменной Stroka : ‘,Stroka); WriteLn (‘Значение переменной Logika : ‘,Logika); End. |
Внимательно рассмотрите каждую строчку программы. Обратите особое внимание на описание переменных: Chislo1 — переменная целого типа, Chislo2 — действительного, Simvol — символьного, Stroka — строкового, Logika — логического. Далее в основной программе идет присвоение переменной Chislo1 целого числа 12, переменной Chislo2 — целого числа 24. Обратим внимание, что переменной действительного типа Chislo2 присвоено целое число; никакой ошибки нет, т. к. множество целых чисел является подмножеством множества действительных чисел. Следующая строчка еще более интересная: переменной Chislo2 присваивается значение той же переменной, только деленной на 5.
Такое присваивание используют в программах, если предыдущее значение этой переменной уже не понадобится и для более рационального использования описанных переменных. Для того чтобы переменной символьного типа присвоить какой-либо символ (например, d), надо этот символ записать в одинарных кавычках (знак «’»). Аналогично поступают с переменными строкового типа (смотри следующую строку программы). А про переменные логического типа мы знаем, что им можно присваивать только два значения: True и False. В этой программе мы присвоим значение результата сравнения двух переменных, здесь оно будет равно True. А теперь выведем присвоенные значения на экран.
Задание. Измените значения переменных и проанализируйте результаты выполнения программы. Сохраните программу на дискете под правильным именем в соответствующем каталоге. Распечатайте программу.
Вопрос № 1 Линейный алгоритм — это. алгоритм.
В котором есть повторение одной или более команд.
В котором команды выполняются последовательно.
В котором выполнение команд зависит от условия или нескольких условий.
Вопрос № 2
Свойство алгоритма, показывающее то, что команды алгоритма входят в систему команд исполнителя, называется.
Понятность алгоритма.
Конечность алгоритма.
Дискретность алгоритма.
Однозначность алгоритма.
Вопрос № 3
Существуют три основных типа величин в программировании. Их точное название — это.
Буквенный, цифровой, логический.
Звуковой, графический, буквенный.
Большой, маленький, средний.
Числовой, символьный, логический.
Вопрос № 4
Переменная в программировании — это.
Величина, имеющая имя и возможность принимать разные значения в программе.
Величина, имеющая имя и только одно значение.
Величина, не имеющая ни имени, ни значения.
Вопрос № 5
Раздел описания переменных в программе начинается со слова.
Const
Var
Type
Set
Вопрос № 6
Раздел описания переменных в программе находится.
В теле программы после begin
Перед словом Uses
Может находиться в любом месте программы
После Uses Crt и перед begin
Вопрос № 7
В программе используется целочисленная переменная x. Выберите ПРАВИЛЬНОЕ описание этой переменной:
Var x:Real;
Var x:String;
Var x:integer
Var x:integer;
Вопрос № 8
Дана строчка:
Var i,j:Real;
Какую функцию она выполняет?
Описывает две переменные целого типа.
Описывает две константы целого типа.
Описывает две переменные вещественного типа (не целые числа).
Описывает две константы вещественного типа.
Вопрос № 9
Оператор присваивания в программе на Pascal:
:=
=
-=
🙂
Вопрос № 10
Дана команда:
writeln(`Это моя программа`);
Что она выполняет?
Запрашивает ввод слов «Это моя программа».
Выводит на экран строчку «Это моя программа».
Выводит на экран значение переменной.
Производит вычисления.
Вопрос № 11
Дан фрагмент программы:
a:=8;
b:=16;
c:=b/a;
Writeln(c);
Что происходит при его выполнении?
Программа запрашивает ввод с клавиатуры значения переменной c.
На экран выводится буква «с».
Ничего не происходит, т.к. в написании команд есть ошибка.
На экран выводится число 2.
Вопрос № 12
Команда:
Readln(b);
Выводит на экран значение переменной b.
Приостанавливает программу и запрашивает ввод значения b с клавиатуры.
Выводит на экран букву b.
Вопрос № 13
Дана программа:
Uses Crt;
var a:integer;
b:real;
begin
b:=1.5;
a:=b;
end.
В какой строчке ошибка?
В первой.
Во второй.
В третьей.
В четвертой.
В пятой.
В шестой.
В седьмой.
Вопрос № 14
Переменная k описана как целочисленная. Допустима ли в программе команда:
k:=6/4;
Да
Нет
Вопрос № 15
Выберите ВЕРНОЕ утверждение (их может быть одно или несколько):
Если в программе используется переменная, она должна быть описана в разделе Var.
Переменной целого типа можно присвоить значение вещественного типа.
После begin необходима точка с запятой.
Оператор вывода информации (текста или значения переменной) — Write или Writeln.
Вопрос № 16
Выберите ВЕРНОЕ утверждение (их может быть одно или несколько):
Если в программе нет констант, то использование слова Const не обязательно.
Если в программе нет условий и циклов, то команды выполняются одна за другой.
Использование в заголовке строчки Program не обязательно.
Программа заканчивается строчкой end;
Вопрос № 17
Дано несколько команд языка Pascal, осуществляющие вывод на экран.
1) Writeln(a);
2) Writeln(`x равно:`,x);
3) Writeln(`Результат равен , Res);
4) Writeln(`Привет!`);
Отметьте правильно написанные команды:
Первая.
Вторая.
Третья.
Четвертая.
Вопрос № 18
В разделе описания программы описаны две переменных:
В самой программе переменной m присваивается значение квадратного корня из 16.
Выберите ПРАВИЛЬНО написанные варианты команд(их может быть один или несколько):
n:=0;m:=sort(16);
n:=16; m:=sqrt(n);
n:=sqrt(256); m:=sqrt(n);
n:=20-5; m:=sqrt(n);
Вопрос № 19
Какое число выводит на экран фрагмент программы?
a:=32;
b:=16;
c:=(a+b)/2;
d:=a+b-c/4;
writeln(d);
Введите ответ:
Вопрос № 20
Какое значение примет переменная z после выполнения фрагмента программы:
x:=144;
y:=sqrt(x)/(x-140);
z:=(x+y)/(200-53);
Введение в программирование. Язык Pascal
Внимание! Все тесты в этом разделе разработаны пользователями сайта для собственного использования. Администрация сайта не проверяет возможные ошибки, которые могут встретиться в тестах.
Тест предназначен для проверки знаний обучающихся 9 классов по начальным понятиям темы «Алгоритмизация и программирование. Язык программирования Pascal»
Система оценки: 5* балльная
Список вопросов теста
Вопрос 1
Линейный алгоритм — это алгоритм.
Варианты ответов
- В котором есть повторение одной или более команд.
- В котором команды выполняются последовательно.
- В котором выполнение команд зависит от условия или нескольких условий.
Вопрос 2
Свойство алгоритма, показывающее то, что команды алгоритма входят в систему команд исполнителя, называется.
Варианты ответов
- Понятность алгоритма.
- Конечность алгоритма.
- Дискретность алгоритма.
- Однозначность алгоритма.
Вопрос 3
Существуют три основных типа величин в программировании. Их точное название — это.
Варианты ответов
- Буквенный, цифровой, логический.
- Звуковой, графический, буквенный.
- Большой, маленький, средний.
- Числовой, символьный, логический.
Вопрос 4
Переменная в программировании — это.
Варианты ответов
- Величина, имеющая имя и возможность принимать разные значения в программе.
- Величина, имеющая имя и только одно значение.
- Величина, не имеющая ни имени, ни значения.
Вопрос 5
Раздел описания переменных в программе начинается со слова.
Варианты ответов
Вопрос 6
В программе используется целочисленная переменная x. Выберите ПРАВИЛЬНОЕ описание этой переменной:
Варианты ответов
- Var x:Real;
- Var x:String;
- Var x:integer
- Var x:integer;
Вопрос 7
Дана строчка:
Var i,j:Real;
Какую функцию она выполняет?
Варианты ответов
- Описывает две переменные целого типа.
- Описывает две константы целого типа.
- Описывает две переменные вещественного типа (не целые числа).
- Описывает две константы вещественного типа.
Вопрос 8
Оператор присваивания в программе на Pascal:
Варианты ответов
Вопрос 9
Дана команда:
writeln(‘Это моя программа’);
Что она выполняет?
Варианты ответов
- Запрашивает ввод слов «Это моя программа».
- Выводит на экран строчку «Это моя программа».
- Выводит на экран значение переменной.
- Производит вычисления.
Вопрос 10
Дан фрагмент программы:
a:=8;
b:=16;
c:=b/a;
Writeln(c);
Что происходит при его выполнении?
Варианты ответов
- Программа запрашивает ввод с клавиатуры значения переменной c.
- На экран выводится буква «с».
- Ничего не происходит, т.к. в написании команд есть ошибка.
- На экран выводится число 2.
Вопрос 11
Варианты ответов
- Выводит на экран значение переменной b.
- Приостанавливает программу и запрашивает ввод значения b с клавиатуры.
- Выводит на экран букву b.
Вопрос 12
Дана программа:
Uses Crt;
var a:integer;
b:real;
begin
b:=1.5;
a:=b;
end.
В какой строчке ошибка?
Варианты ответов
- В первой.
- Во второй.
- В третьей
- В четвертой.
- В пятой
- В шестой.
- В седьмой.
Вопрос 13
Переменная k описана как целочисленная. Допустима ли в программе команда:
k:=6/4;
Варианты ответов
Вопрос 14
Выберите ВЕРНОЕ утверждение (их может быть одно или несколько):
Варианты ответов
- Если в программе используется переменная, она должна быть описана в разделе Var.
- Переменной целого типа можно присвоить значение вещественного типа.
- После begin необходима точка с запятой.
- Оператор вывода информации (текста или значения переменной) — Write или Writeln.
Вопрос 15
Дано несколько команд языка Pascal, осуществляющие вывод на экран.
1) Writeln(a);
2) Writeln(‘x равно:’,x);
3) Writeln(‘Результат равен , Res);
4) Writeln(‘Привет!’);
Отметьте правильно написанные команды:
Варианты ответов
- Первая.
- Вторая.
- Третья.
- Четвертая.
Вопрос 16
В разделе описания программы описаны две переменных:
В самой программе переменной m присваивается значение квадратного корня из 16.
Выберите ПРАВИЛЬНО написанные варианты команд(их может быть один или несколько):
Варианты ответов
- n:=0;m:=sort(16);
- n:=16; m:=sqrt(n);
- n:=sqrt(256); m:=sqrt(n);
- n:=20-5; m:=sqrt(n);
Принятие решений в вашем коде — условные конструкции
Во многих языках программирования код должен иметь возможность принимать решения на основе введённых пользователем данных. Например, в игре, если у пользователя осталось 0 жизней, то игра завершается. В приложении о погоде утром отображается восход солнца, а вечером звезды и луна. В этой статье мы рассмотрим как в JavaScript работают так называемые «условия».
| Необходимое условие: | Базовая компьютерная грамотность, базовое понимание HTML и CSS, JavaScript first steps. |
|---|---|
| Цель: | Понять принципы использования операторов условий в JavaScript. |
Выбор одного условия!
Люди (и животные) принимают какие-либо решения всю жизнь, от малозначимых («стоит ли мне съесть одну печеньку или две?») до жизнеопределяющих («стоит ли мне остаться дома и работать на ферме отца или переехать в другую страну и изучать астрофизику?»)
Операторы условия в JavaScript позволяют нам указать разного рода действия в зависимости от выбранного пользователем или системой ответа (например одна печенька или две) и связать его с действием (результатом), например, результатом «съесть одну печеньку» будет «все ещё буду чувствовать себя голодным», а результатом «съесть две печеньки» будет «буду чувствовать себя сытым, но мама меня поругает за то, что я съел все сладости».

Оператор if . else
Давайте глянем на наиболее распространённый тип условного оператора, который вы будете использовать в JavaScript — if . else оператор.
Базовый if . else синтаксис
Базовый if. else синтаксис выглядит как pseudocode:
if (condition) < code to run if condition is true >else
- Ключевое слово if расположено перед круглыми скобками.
- Условие для проверки (condition), расположено внутри круглых скобок (например «это значение больше другого значения?», или «это значение существует?»). Это условие использует операторы сравнения (comparison operators), которые мы изучим позже, и возвратит нам true или false .
- Внутри скобок < >расположен код, который будет выполняться только в том случае, если условие (condition) верно ( true) .
- Ключевое слово else (иначе) .
- Ещё скобки < >, код внутри которых выполнится, только если условие не верно (не true) .
Этот код довольно читабелен — он говорит «if (если) condition (условие) возвращает true (истина) , запусти код A, else (иначе) запусти B»
Стоит заметить, что else и второй блок скобок < >не обязателен — следующий код так же будет работать:
if (condition) < код, который должен выполнить, если условие истина >какой-то другой код
Тем не менее, следует быть осторожным — в случае, если код внутри вторых скобок < >не контролируется условием, то этот код будет выполняться всегда. Это не плохо, просто вы должны помнить об этом, чаще вы хотите запустить один кусок кода или другой, но не оба.
И, наконец, иногда вы можете встретить код if. else без фигурных скобок в сокращённой форме:
if (condition) code to run if condition is true else run some other code instead
Это абсолютно рабочий код, но он менее читаем, лучше использовать фигурные скобки, новые строки и отступы.
Реальный пример
Чтобы лучше понять синтаксис, давайте рассмотрим реальный пример. Представьте, что мать или отец попросили помочь с работой по дому своего ребёнка. Родитель может сказать: «Если ты поможешь мне с покупками, то я дам тебе дополнительные деньги на карманные расходы, которые ты сможешь потратить на игрушку, какую захочешь». В JavaScript, мы можем представить это так:
var shoppingDone = false; if (shoppingDone === true) var childsAllowance = 10; > else var childsAllowance = 5; >
В этом коде, как показано, всегда будет shoppingDone равный false , что означает разочарование для нашего бедного ребёнка. Мы должны предоставить механизм для родителя, чтобы установить для переменной shoppingDone значение true , если ребёнок помог с покупками.
Примечание: вы можете увидеть больше в полной версии этого примера на GitHub (также посмотреть как он работает вживую.)
else if
В предыдущем примере предоставлено два выбора, или результата — но что, если мы хотим больше, чем два?
Существует способ привязать дополнительные варианты/результаты к вашему if. else — использовать else if . Для каждого дополнительного выбора требуется дополнительный блок, который нужно расположить между if() < . >и else < . >— проверьте следующий более сложный пример, который может быть частью простого приложения прогноза погоды:
label for="weather">Выберите тип погоды сегодня: label> select id="weather"> option value="">--Сделайте выбор--option> option value="sunny">Солнечноoption> option value="rainy">Дождливоoption> option value="snowing">Снежноoption> option value="overcast">Облачноoption> select> p>p>
var select = document.querySelector("select"); var para = document.querySelector("p"); select.addEventListener("change", setWeather); function setWeather() var choice = select.value; if (choice === "sunny") para.textContent = "Сегодня хорошо и солнечно. Носите шорты! Идите на пляж, или в парк, и купите мороженое."; > else if (choice === "rainy") para.textContent = "Дождь падает за окном; возьмите плащ и зонт, и не находитесь слишком долго на улице."; > else if (choice === "snowing") para.textContent = "Снег падает - морозно! Лучше всего посидеть с чашкой горячего шоколада или слепить снеговика."; > else if (choice === "overcast") para.textContent = "Дождя нет, но небо серое и мрачное; он все может измениться в любую минуту, поэтому на всякий случай возьмите дождевик."; > else para.textContent = ""; > >
- Здесь у нас есть элемент HTML который позволяет нам выбирать разные варианты погоды и простой абзац.
- В JavaScript мы создаём ссылки на элементы и и добавляем обработчик события элемента , чтобы при его изменении значения запускалась функция setWeather() .
- Когда функция будет запущена, первоначально мы определим значение переменной choice , которая равна выбранному значению в элементе . Затем мы используем условный оператор для отображения текста внутри абзаца в зависимости от того, какое значение у переменной choice . Обратите внимание, как все условия проверяются в else if() блоках, за исключением первого, который использует if() блок.
- Последний выбор, внутри else блока, в основном является «последним средством» — код внутри него будет запущен, если ни одно из условий не будет true . В этом случае он служит для удаления текста из абзаца, если ничего не выбрано, например, если пользователь решает повторно выбрать опцию «—Сделайте выбор—» которая указана в начале.
Примечание об операторах сравнения
Операторы сравнения используют для проверки условий внутри наших условных операторов. Сначала мы посмотрели на операторы сравнения в нашей статье Базовая математика в JavaScript — цифры и операторы . Наш выбор это:
- === и !== — проверяет одно значение идентично или не идентично другому.
- < и >— проверяет одно значение меньше или больше, чем другое.
- = — проверяет одно значение меньше или равно, либо больше или равно другому.
Примечание: Просмотрите материал по предыдущей ссылке, если вы хотите освежить свою память.
Мы хотели бы особо обратить внимание на проверку булевых значений ( true / false ), и общий шаблон, который вы будете встречать снова и снова. Любое значение, которое не есть false , undefined , null , 0 , NaN , или пустая строка ( » ) фактически возвращает true при тестировании как условного оператора. Поэтому вы можете просто использовать имя собственной переменной, чтобы проверить, равна ли она true , или существует (т. е. переменная не равна undefined). Например:
var cheese = "Cheddar"; if (cheese) console.log("Ура! Есть сыр для приготовления бутерброда."); > else console.log("Сегодня нет сыра для бутерброда."); >
И, возвращаясь к нашему предыдущему примеру о ребёнке, выполняющем поручение своего родителя, вы можете это записать так:
var shoppingDone = false; if (shoppingDone) // не нужно явно указывать '=== true' var childsAllowance = 10; > else var childsAllowance = 5; >
Вложенность if . else
Вполне нормально использовать один условный оператор if. else внутри другого — вложить их. Например, мы могли бы обновить наше приложение прогноза погоды, чтобы показать ещё один набор вариантов в зависимости от температуры:
if (choice === "sunny") if (temperature 86) para.textContent = "Сейчас " + temperature + " градусов по фаренгейту — хорошо и солнечно. Идите на пляж, или в парк, и купите мороженое."; > else if (temperature >= 86) para.textContent = "Сейчас " + temperature + " градусов по фаренгейту — Жара! Если вы хотите выйти на улицу, обязательно используйте солнцезащитный крем."; > >
Несмотря на то, что весь код работает вместе, каждый условный оператор if. else работает полностью отдельно от другого.
Логические операторы: И, ИЛИ и НЕ
Если вы хотите проверить несколько условий без записи вложенных if. else условий, логические операторы (en-US) помогут вам. При использовании в условиях, первые два оператора делают следующее:
- && — И; позволяет объединить два или более выражения так, что каждое из них отдельно должно иметь значение true , чтобы в итоге общее выражение имело значение true .
- || — ИЛИ; позволяет объединить два или более выражения так, что одно или несколько из них должно иметь значение true , чтобы в итоге общее выражение имело значение true .
Чтобы дать вам пример оператора И, предыдущий фрагмент кода можно переписать так:
if (choice === "sunny" && temperature 86) para.textContent = "Сейчас " + temperature + " градусов по фаренгейту — хорошо и солнечно. Идите на пляж, или в парк, и купите мороженое."; > else if (choice === "sunny" && temperature >= 86) para.textContent = "Сейчас " + temperature + " градусов по фаренгейту — Жара! Если вы хотите выйти на улицу, обязательно используйте солнцезащитный крем."; >
Так, для примера, первый блок кода выполнится только в том случае, если choice === ‘sunny’ и temperature < 86 вернут значение true .
Давайте посмотрим на быстрый пример оператора ИЛИ:
if (iceCreamVanOutside || houseStatus === "в огне") //если подъехал фургон с мороженым или дом горит console.log("Вы должны быстро покинуть дом."); > else console.log("Вероятно, можно в нем оставаться."); >
Последний тип логического оператора НЕ, выраженный ! оператором, можно использовать для отрицания выражения. Давайте объединим его с ИЛИ в приведённом выше примере:
if (!(iceCreamVanOutside || houseStatus === "on fire")) console.log("Вероятно, можно в нем оставаться."); > else console.log("Вы должны быстро покинуть дом."); >
В этом фрагменте, если условие ИЛИ возвращает true , оператор НЕ будет отрицать это и выражение вернёт false .
Можно сочетать любое количество логических операторов, в любой последовательности и в любой комбинации. В следующем примере код в блоке будет выполняться только в том случае, если оба условия с ИЛИ возвращают true, а следовательно, и оператор И возвращает true:
if ((x === 5 || y > 3 || z 10) && (loggedIn || userName === "Steve")) // код выполняется >
Распространённой ошибкой при использовании логического оператора ИЛИ в условном выражении является указание переменной, значение которой нужно проверить со списком возможных значений этой переменной, разделённых операторами || (ИЛИ). Например.
if (x === 5 || 7 || 10 || 20) // выполнить код >
В данном примере условие в if(. ) всегда будет оцениваться как true, поскольку 7 (или любое другое ненулевое значение) всегда будет оцениваться как true. Фактически, это условие гласит «если х равен 5, или 7 является true». Но нам требуется совсем не это. Чтобы достичь нужной цели, придётся выполнять полноценную проверку после каждого оператора ИЛИ:
if (x === 5 || x === 7 || x === 10 || x === 20) // выполнить код >
Оператор switch
Выражения if. else отлично справляются с добавлением условного кода, однако они не лишены недостатков. Они хорошо подходят для ситуации, когда имеется всего пара вариантов развития событий, каждый из которых имеет блок с приемлемым количеством кода, а также в случаях, когда условие является довольно сложным и включает несколько логических операторов. Если же нам требуется всего лишь задать переменную для определённого выбранного значения или напечатать конкретную фразу при определённом условии, изученный нами синтаксис может оказаться довольно громоздким, особенно если имеется большое количество вариантов выбора.
В этом случае нам поможет оператор switch – он принимает одно единственное выражение или значение, а затем просматривает ряд вариантов, пока не найдут вариант, соответствующий этому значению, после чего выполняет код, назначенный этому варианту. Вот пример использования этого оператора:
switch (выражение) < case choice1: выполнить этот код break; case choice2: выполнить этот код, а не предыдущий break; // вариантов может быть любое количество default: а вообще-то, выполнить только этот код >
- Ключевое слово switch , за которым следует пара круглых скобок.
- В скобках приводится выражение или значение.
- Ключевое слово case , за которым следует вариант выбора (именно он проверяется на соответствие выражению или значению) и двоеточие.
- Код, который будет выполняться, если вариант совпадает с выражением.
- Оператор break , за которым следует точка с запятой. Если вариант совпал с выражением или значением, браузер закончит выполнять блок кода, дойдя до оператора break , и перейдёт к выполнению кода, расположенного после оператора switch.
- Вариантов выбора (пункты 3–5) может быть любое количество.
- Ключевое слово default используется точно также, как любой другой вариант выбора (пункты 3–5) за тем исключением, что после default нет других вариантов выбора, поэтому инструкция break не требуется, никакого кода дальше нет. Это вариант выбора по умолчанию, выбираемый, если ни один из других вариантов не совпал с выражением.
Примечание: Вариант выбора default может быть пропущен, если выражение гарантированно совпадёт с одним из вариантов выбора. В противном случае вариант default необходим.
Пример оператора switch
Давайте рассмотрим реальный пример — перепишем наше приложение прогноза погоды с использованием оператора switch:
label for="weather">Выберите тип погоды сегодня: label> select id="weather"> option value="">--Сделайте выбор--option> option value="sunny">Солнечноoption> option value="rainy">Дождливоoption> option value="snowing">Снежноoption> option value="overcast">Облачноoption> select> p>p>
var select = document.querySelector("select"); var para = document.querySelector("p"); select.addEventListener("change", setWeather); function setWeather() var choice = select.value; switch (choice) case "sunny": para.textContent = "Сегодня хорошо и солнечно. Наденьте шорты! Идите на пляж или в парк, и купите мороженое."; break; case "rainy": para.textContent = "На улице дождь. Возьмите плащ и зонт, и не гуляйте слишком долго"; break; case "snowing": para.textContent = "Идёт снег - морозно! Лучше всего посидеть с чашкой горячего шоколада или слепить снеговика."; break; case "overcast": para.textContent = "Дождя нет, но небо серое и мрачное; он все может измениться в любую минуту, поэтому на всякий случай возьмите дождевик."; break; default: para.textContent = ""; > >
Примечание: вы можете найти этот пример на GitHub (также увидеть как он работает.)
Тернарный оператор
Это последний теоретический раздел данной статьи и мы перейдём к практическим упражнениям. Тернарный или условный оператор имеет простой синтаксис: он проверяет условие и возвращает одно значение или выражение, если условие является true , и другое значение/выражение, если условие является false . Часто это очень удобная альтернатива блоку if. else , позволяющая затрачивать меньшие усилия на написание кода, когда имеется всего лишь два варианта, выбираемых на основе условия true / false . Общая схема оператора:
( условие) ? выполнить этот код : выполнить этот код вместо первого
Приведём простой пример:
var greeting = isBirthday ? "С днём рождения, г-н Кузнецов! Хорошо вам повеселиться!" : "Доброе утро, г-н Кузнецов.";
У нас есть переменная isBirthday , если она true , мы отправляем посетителю поздравление с днём рождения; если нет – выдаём стандартное приветствие.
Пример тернарного оператора
При использовании тернарного оператора не обязательно ограничиваться лишь значениями переменной, можно выполнять функции или строки кода; все, что угодно. В следующем примере показано простое средство выбора темы, задающее внешний вид веб-сайта с помощью тернарного оператора.
label for="theme">Выберите тему: label> select id="theme"> option value="white">Белаяoption> option value="black">Чёрнаяoption> select> h1>Это мой веб-сайтh1>
var select = document.querySelector("select"); var html = document.querySelector("html"); document.body.style.padding = "10px"; function update(bgColor, textColor) html.style.backgroundColor = bgColor; html.style.color = textColor; > select.onchange = function () select.value === "black" ? update("black", "white") : update("white", "black"); >;
Мы используем элемент для выбора темы (чёрная или белая), а также простой (en-US) для отображения заголовка веб-сайта. Кроме того, у нас есть функция update() , принимающая в качестве параметров (входных данных) два цвета. В качестве фона используется первый переданный цвет, а в качестве цвета текста – второй переданный цвет.
Наконец, у нас есть обработчик событий onchange , использующийся для запуска функции, содержащей тернарный оператор. Сначала она проверяет условие — select.value === ‘black’ . Если возвращается true , мы запускаем функцию update() с параметрами чёрного и белого, в результате чего получаем чёрный цвет фона и белый цвет текста. Если возвращается false , мы запускаем функцию update() с параметрами белого и чёрного, в результате чего цвета веб-сайта меняются на противоположные.
Примечание: вы можете найти этот пример на GitHub (также увидеть как он работает.)
Практическое упражнение: простой календарь
В данном примере вы поможете нам закончить простое приложение календаря. Код включает:
- Элемент , позволяющий пользователю выбирать разные месяцы.
- Обработчик событий onchange для обнаружения изменения значения, выбранного в меню .
- Функция createCalendar() , рисующая календарь и отображающая правильный месяц в элементе (en-US).
Вы должны написать условную конструкцию в функции обработчика onchange , сразу после комментария // ДОБАВЬТЕ СЮДА УСЛОВНОЕ ВЫРАЖЕНИЕ . Конструкция должна:
- Проверить выбранный месяц (хранящийся в переменной choice . Это будет значение элемента после изменения значения, например, «Январь».)
- Задать переменную, скажем, days , равную количеству дней в выбранном месяце. Для этого нужно будет проверить количество дней в каждом месяце. Високосный год можно не учитывать.
- Советуем использовать логический оператор OR для группировки нескольких месяцев в рамках одного условия; многие месяцы имеют одинаковое количество дней.
- Подумайте, какое количество дней в месяце встречается чаще всего и используйте его в качестве варианта по умолчанию.
Если допустили ошибку, используйте кнопку «Сброс», чтобы вернуться к исходному виду примера. Если у вас совсем ничего не получается, нажмите «Показать решение».
Примечание: В HTML коде внутри названия месяцев value=»» введены на русском языке. Соответственно ссылки на них из вашего скрипта так же на русском. Не забываем про синтаксис. (прим. — ConstantineZz)
h2>Live outputh2> div class="output" style="height: 500px;overflow: auto;"> label for="month">Выберите месяц: label> select id="month"> option value="Январь">Январьoption> option value="Февраль">Февральoption> option value="Март">Мартoption> option value="Апрель">Апрельoption> option value="Май">Майoption> option value="Июнь">Июньoption> option value="Июль">Июльoption> option value="Август">Августoption> option value="Сентябрь">Сентябрьoption> option value="Октябрь">Октябрьoption> option value="Ноябрь">Ноябрьoption> option value="Декабрь">Декабрьoption> select> h1>h1> ul>ul> div> h2>Editable codeh2> p class="a11y-label"> Press Esc to move focus away from the code area (Tab inserts a tab character). p> textarea id="code" class="playable-code" style="height: 400px;width: 95%"> var select = document.querySelector('select'); var list = document.querySelector('ul'); var h1 = document.querySelector('h1'); select.onchange = function() < var choice = select.value; // ДОБАВЬТЕ СЮДА УСЛОВНОЕ ВЫРАЖЕНИЕ createCalendar(days, choice); >function createCalendar(days, choice) < list.innerHTML = ''; h1.textContent = choice; for (var i = 1; i > createCalendar(31,'Январь'); textarea> div class="playable-buttons"> input id="reset" type="button" value="Сброс" /> input id="solution" type="button" value="Показать решение" /> div>
.output * box-sizing: border-box; > .output ul padding-left: 0; > .output li display: block; float: left; width: 25%; border: 2px solid white; padding: 5px; height: 40px; background-color: #4a2db6; color: white; > html font-family: sans-serif; > h2 font-size: 16px; > .a11y-label margin: 0; text-align: right; font-size: 0.7rem; width: 98%; > body margin: 10px; background: #f5f9fa; >
var textarea = document.getElementById("code"); var reset = document.getElementById("reset"); var solution = document.getElementById("solution"); var code = textarea.value; var userEntry = textarea.value; function updateCode() eval(textarea.value); > reset.addEventListener("click", function () textarea.value = code; userEntry = textarea.value; solutionEntry = jsSolution; solution.value = "Показать решение"; updateCode(); >); solution.addEventListener("click", function () if (solution.value === "Показать решение") textarea.value = solutionEntry; solution.value = "Скрыть решение"; > else textarea.value = userEntry; solution.value = "Показать решение"; > updateCode(); >); var jsSolution = "var select = document.querySelector('select');\nvar list = document.querySelector('ul');\nvar h1 = document.querySelector('h1');\n\nselect.onchange = function() else if(choice === 'Апрель' || choice === 'Июнь' || choice === 'Сентябрь'|| choice === 'Ноябрь') \n\n createCalendar(days, choice);\n>\n\nfunction createCalendar(days, choice) \n >\n\ncreateCalendar(31,'Январь');"; var solutionEntry = jsSolution; textarea.addEventListener("input", updateCode); window.addEventListener("load", updateCode); // stop tab key tabbing out of textarea and // make it write a tab at the caret position instead textarea.onkeydown = function (e) if (e.keyCode === 9) e.preventDefault(); insertAtCaret("\t"); > if (e.keyCode === 27) textarea.blur(); > >; function insertAtCaret(text) var scrollPos = textarea.scrollTop; var caretPos = textarea.selectionStart; var front = textarea.value.substring(0, caretPos); var back = textarea.value.substring( textarea.selectionEnd, textarea.value.length, ); textarea.value = front + text + back; caretPos = caretPos + text.length; textarea.selectionStart = caretPos; textarea.selectionEnd = caretPos; textarea.focus(); textarea.scrollTop = scrollPos; > // Update the saved userCode every time the user updates the text area code textarea.onkeyup = function () // We only want to save the state when the user code is being shown, // not the solution, so that solution is not saved over the user code if (solution.value === "Показать решение") userEntry = textarea.value; > else solutionEntry = textarea.value; > updateCode(); >;
Практическое упражнение: расширяем выбор цветов
В данном примере вы будете использовать пример тернарного оператора, который мы рассматривали ранее, и превратите тернарный оператор в инструкцию switch, что позволит увеличить количество вариантов выбора для простого веб-сайта. Посмотрите на — на этот раз он включает не два, а целых пять вариантов тем. Нужно добавить инструкцию switch сразу под комментарием // ДОБАВЬТЕ ИНСТРУКЦИЮ SWITCH :
- Она должна принимать переменную choice в качестве входного выражения.
- Каждый элемент case должен содержать вариант выбора, соответствующий одному из доступных для выбора значений: белая, чёрная, лиловая, жёлтая или психоделическая тема.
- В блоке каждого элемента case необходимо вызывать функцию update() , которой передаётся два цвета: первый – это цвет фона, а второй – цвет текста. Помните, что значения цветов – это строковые значения, поэтому их нужно заключать в кавычки.
Если допустили ошибку, используйте кнопку «Сброс», чтобы вернуться к исходному виду примера. Если у вас совсем ничего не получается, нажмите «Показать решение».
div class="output" style="height: 300px;"> label for="theme">Выберите тему: label> select id="theme"> option value="white">Белаяoption> option value="black">Чёрнаяoption> option value="purple">Лиловаяoption> option value="yellow">Жёлтаяoption> option value="psychedelic">Психоделическаяoption> select> h1>Это мой веб-сайтh1> div> hr /> textarea id="code" class="playable-code" style="height: 450px;"> var select = document.querySelector('select'); var html = document.querySelector('.output'); select.onchange = function() < var choice = select.value; // ДОБАВЬТЕ ИНСТРУКЦИЮ SWITCH >function update(bgColor, textColor) < html.style.backgroundColor = bgColor; html.style.color = textColor; >textarea > div class="playable-buttons"> input id="reset" type="button" value="Сброс" /> input id="solution" type="button" value="Показать решение" /> div>
var textarea = document.getElementById("code"); var reset = document.getElementById("reset"); var solution = document.getElementById("solution"); var code = textarea.value; function updateCode() eval(textarea.value); > reset.addEventListener("click", function () textarea.value = code; userEntry = textarea.value; solutionEntry = jsSolution; solution.value = "Показать решение"; updateCode(); >); solution.addEventListener("click", function () if (solution.value === "Показать решение") textarea.value = solutionEntry; solution.value = "Скрыть решение"; > else textarea.value = userEntry; solution.value = "Показать решение"; > updateCode(); >); var jsSolution = "var select = document.querySelector('select');\nvar html = document.querySelector('.output');\n\nselect.onchange = function() \n>\n\nfunction update(bgColor, textColor) "; var solutionEntry = jsSolution; textarea.addEventListener("input", updateCode); window.addEventListener("load", updateCode); // stop tab key tabbing out of textarea and // make it write a tab at the caret position instead textarea.onkeydown = function (e) if (e.keyCode === 9) e.preventDefault(); insertAtCaret("\t"); > if (e.keyCode === 27) textarea.blur(); > >; function insertAtCaret(text) var scrollPos = textarea.scrollTop; var caretPos = textarea.selectionStart; var front = textarea.value.substring(0, caretPos); var back = textarea.value.substring( textarea.selectionEnd, textarea.value.length, ); textarea.value = front + text + back; caretPos = caretPos + text.length; textarea.selectionStart = caretPos; textarea.selectionEnd = caretPos; textarea.focus(); textarea.scrollTop = scrollPos; > // Update the saved userCode every time the user updates the text area code textarea.onkeyup = function () // We only want to save the state when the user code is being shown, // not the solution, so that solution is not saved over the user code if (solution.value === "Показать решение") userEntry = textarea.value; > else solutionEntry = textarea.value; > updateCode(); >;
Заключение
Это все, что вам нужно знать на данный момент об условных логических структурах! Уверены, вы хорошо разобрались в теоретическом материале и с лёгкостью справились с предложенными упражнениями. Если же что-то осталось для вас непонятным, перечитайте статью ещё раз или свяжитесь с нами.
Смотрите также
- Comparison operators
- Conditional statements in detail
- if. else reference
- Conditional (ternary) operator reference
- Обзор: Building blocks
- Далее
Found a content problem with this page?
- Edit the page on GitHub.
- Report the content issue.
- View the source on GitHub.