Практическая работа №2
Основные теоретические положения
Section titled “Основные теоретические положения”1. Операторы сравнения
Операторы сравнения используются для проверки отношений между значениями. Результатом сравнения является логическое значение true или false.
const age = 20;console.log(age > 18); // trueconsole.log(age < 18); // falseconsole.log(age >= 20); // trueconsole.log(age !== 18); // trueОсновные операторы:
| Оператор | Назначение |
|---|---|
> | больше |
< | меньше |
>= | больше или равно |
<= | меньше или равно |
=== | строгое равенство |
!== | строгое неравенство |
В JavaScript также существуют операторы == и !=, которые выполняют сравнение с преобразованием типов.
console.log(5 == "5"); // trueconsole.log(5 === "5"); // falseПри использовании == JavaScript может автоматически преобразовать типы сравниваемых значений.
Оператор === сравнивает одновременно значение и тип данных.
В большинстве программ рекомендуется использовать строгое сравнение === и !==.
2. Логические операторы
Для объединения нескольких условий используются логические операторы:
| Оператор | Значение |
|---|---|
&& | логическое И |
|| | логическое ИЛИ |
! | логическое НЕ |
Пример:
const age = 21;const hasTicket = true;if (age >= 18 && hasTicket) { console.log("Вход разрешён");}Оператор && требует выполнения обоих условий.
const role = "manager";if (role === "admin" || role === "manager") { console.log("Доступ разрешён");}Оператор || требует выполнения хотя бы одного условия.
Отрицание логического значения выполняется оператором !.
const isBlocked = false;if (!isBlocked) { console.log("Учётная запись доступна");}3. Условная конструкция if...else
Для выполнения различных действий в зависимости от условия используется конструкция if.
const temperature = 15;if (temperature > 20) { console.log("Тепло");} else { console.log("Прохладно");}Несколько вариантов можно проверить с помощью else if.
const score = 75;if (score >= 90) { console.log("Отлично");} else if (score >= 70) { console.log("Хорошо");} else if (score >= 50) { console.log("Удовлетворительно");} else { console.log("Неудовлетворительно");}Условия проверяются сверху вниз. После выполнения первой подходящей ветви остальные условия этой конструкции не проверяются.
При работе с диапазонами необходимо внимательно учитывать граничные значения.
4. Получение данных от пользователя
Для получения данных в браузере можно использовать функцию prompt().
const name = prompt("Введите имя:");alert(`Здравствуйте, ${name}!`);prompt() возвращает введённое пользователем значение как строку.
Например:
const value = prompt("Введите число:");console.log(typeof value); // stringЕсли введённое значение необходимо использовать как число, его нужно преобразовать:
const age = Number( prompt("Введите возраст:"));Для вопроса с двумя вариантами ответа можно использовать confirm():
const isRegistered = confirm( "Вы зарегистрированы?");confirm() возвращает:
true, если пользователь нажал ОК;false, если пользователь нажал Отмена.
Для вывода сообщения можно использовать alert():
alert("Операция выполнена");5. Тернарный оператор
Если необходимо выбрать одно из двух значений, можно использовать тернарный оператор:
условие ? значениеЕслиИстина : значениеЕслиЛожьПример:
const age = 20;const result = age >= 18 ? "Совершеннолетний" : "Несовершеннолетний";alert(result);Тернарный оператор удобен для коротких условий. Сложные ветвления лучше записывать через if...else.
6. Конструкция switch
Если необходимо сравнить одно значение с несколькими известными вариантами, можно использовать конструкцию switch.
const status = "processing";switch (status) { case "new": alert("Заказ создан"); break; case "processing": alert("Заказ обрабатывается"); break; case "completed": alert("Заказ выполнен"); break; default: alert("Неизвестный статус");}break завершает обработку текущего варианта.
default выполняется, если значение не совпало ни с одним case.
Задания для выполнения
Section titled “Задания для выполнения”Часть 1. Исследование условных конструкций
Выполните задание 1 полностью. Оно используется как общая тренировочная часть перед самостоятельным вариантом.
При выполнении заданий используйте prompt(), confirm(), alert() и console.log() там, где это указано или удобно для решения задачи.
Не забывайте, что результат prompt() является строкой.
Задание 1. Сравнение значений и логические выражения
До запуска программы определите результаты следующих выражений:
console.log(10 > 5);console.log(10 < 5);console.log(5 == "5");console.log(5 === "5");console.log(0 == false);console.log(0 === false);console.log(null == undefined);console.log(null === undefined);console.log("10" > 5);После этого запустите программу и сравните результаты со своими предположениями.
Затем разработайте интерактивную проверку доступа пользователя.
Возраст пользователя получите через prompt():
const age = Number( prompt("Введите возраст:"));Состояние регистрации и блокировки получите через confirm().
Например:
const isRegistered = confirm( "Пользователь зарегистрирован?");const isBlocked = confirm( "Учётная запись заблокирована?");Пользователь получает доступ, только если одновременно выполняются условия:
- возраст не менее 18 лет;
- пользователь зарегистрирован;
- учётная запись не заблокирована.
Результат сохраните в переменную hasAccess.
Выведите сообщение через alert():
Доступ разрешёнили:
Доступ запрещёнПроверьте программу для пользователя:
- младше 18 лет;
- ровно 18 лет;
- старше 18 лет, но без регистрации;
- зарегистрированного, но заблокированного;
- совершеннолетнего, зарегистрированного и не заблокированного.
Часть 2. Индивидуальное задание
Вариант 1. Интернет-магазин
Задание 1.1. Категория заказа
Пользователь вводит сумму заказа.
Определите категорию:
| Сумма | Категория |
|---|---|
| менее 1000 ₽ | Малый заказ |
| 1000–4999 ₽ | Обычный заказ |
| 5000–9999 ₽ | Крупный заказ |
| от 10000 ₽ | Премиальный заказ |
Проверьте значения: 999, 1000, 4999, 5000, 9999, 10000.
Задание 1.2. Возможность бесплатной доставки
Получите:
- сумму заказа;
- расстояние доставки;
- наличие подписки магазина через
confirm().
Бесплатная доставка предоставляется, если выполняется хотя бы одно условие:
- сумма заказа не менее
7000₽; - у клиента есть подписка и расстояние не превышает
15км.
Для остальных заказов доставка платная.
Задание 1.3. Способ оплаты
Получите способ оплаты:
cardsbpcashЧерез switch определите комиссию:
card— 1%;sbp— 0%;cash— 2%.
Рассчитайте комиссию и итоговую сумму к оплате. Для неизвестного способа оплаты дальнейший расчёт не выполнять.
Вариант 2. Учётная запись информационной системы
Задание 2.1. Категория пользователя по возрасту
Определите категорию:
- младше 14 лет —
Детская учётная запись; - 14–17 лет —
Подростковая учётная запись; - 18–64 года —
Стандартная учётная запись; - от 65 лет —
Учётная запись 65+.
Задание 2.2. Проверка доступа
Получите:
- роль пользователя;
- состояние учётной записи
isActive; - наличие двухфакторной аутентификации
has2FA.
Правила:
- неактивная запись не получает доступ;
adminполучает доступ только при включённой 2FA;managerполучает доступ при активной записи;userполучает обычный доступ;- неизвестная роль доступа не получает.
Задание 2.3. Уровень доступа
Через switch для ролей admin, manager, user, guest выведите соответственно:
Полный доступ;Расширенный доступ;Обычный доступ;Только просмотр.
Для неизвестной роли выведите сообщение об ошибке.
Вариант 3. Мобильный тариф
Задание 3.1. Категория потребления трафика
Пользователь вводит использованный трафик в ГБ.
Определите:
- до 10 ГБ включительно —
Низкое потребление; - 11–30 ГБ —
Среднее потребление; - 31–60 ГБ —
Высокое потребление; - более 60 ГБ —
Очень высокое потребление.
Задание 3.2. Скидка за автоплатёж
Получите абонентскую плату и состояние автоплатежа.
Если автоплатёж включён и абонентская плата не менее 500 ₽, предоставьте скидку 7%.
В остальных случаях скидка отсутствует.
Выведите размер скидки и итоговую плату.
Задание 3.3. Расчёт тарифа
Через switch обработайте тарифы:
| Тариф | Плата | Включено | Дополнительный ГБ |
|---|---|---|---|
basic | 300 ₽ | 10 ГБ | 60 ₽ |
standard | 500 ₽ | 20 ГБ | 50 ₽ |
premium | 800 ₽ | 40 ГБ | 35 ₽ |
Получите тариф и использованный трафик. Рассчитайте стоимость превышения и итоговую сумму.
Вариант 4. Служба доставки
Задание 4.1. Зона доставки
Пользователь вводит расстояние.
Определите:
- до 5 км включительно —
Ближняя зона; - 6–15 км —
Городская зона; - 16–30 км —
Дальняя зона; - более 30 км —
За пределами стандартной доставки.
Задание 4.2. Возможность экспресс-доставки
Получите:
- расстояние;
- массу заказа;
- признак экспресс-доставки.
Экспресс-доставка разрешена только если:
- расстояние не более
20км; - масса не превышает
10кг.
Если пользователь выбрал экспресс-доставку, но условия не выполнены, выведите сообщение о невозможности услуги.
Задание 4.3. Стоимость доставки
Через switch получите тип доставки:
courier— 350 ₽;pickup— 0 ₽;express— 650 ₽.
Если сумма заказа не менее 6000 ₽, для courier доставка становится бесплатной. На express правило бесплатной доставки не распространяется.
Вариант 5. Сервис такси
Задание 5.1. Категория поездки
По расстоянию определите:
- до 3 км —
Короткая; - 4–10 км —
Средняя; - 11–25 км —
Дальняя; - более 25 км —
Междугородняя.
Задание 5.2. Дополнительные условия
Получите:
- расстояние;
- ночное время через
confirm(); - необходимость детского кресла через
confirm().
Базовая стоимость равна 100 + distance * 25.
Ночная поездка увеличивает стоимость на 20%, детское кресло добавляет 150 ₽.
Задание 5.3. Тариф
Через switch определите коэффициент:
economy—1;comfort—1.35;business—1.8.
Рассчитайте итоговую стоимость поездки с учётом выбранного тарифа.
Вариант 6. Онлайн-кинотеатр
Задание 6.1. Возрастная категория
По возрасту определите:
- до 6 лет —
0+; - 6–11 лет —
6+; - 12–15 лет —
12+; - 16–17 лет —
16+; - от 18 лет —
18+.
Задание 6.2. Проверка доступа к фильму
Получите возраст пользователя и возрастное ограничение фильма: 0, 6, 12, 16 или 18.
Разрешите просмотр только если возраст пользователя не меньше ограничения.
Задание 6.3. Тип подписки
Через switch обработайте:
basic— 299 ₽;standard— 499 ₽;premium— 799 ₽.
Через confirm() определите оплату за год. При годовой оплате предоставьте скидку 10% на сумму за 12 месяцев.
Вариант 7. Образовательная система
Задание 7.1. Оценка по баллам
Определите оценку:
- 90–100 —
5; - 75–89 —
4; - 60–74 —
3; - менее 60 —
2.
Если число баллов меньше 0 или больше 100, выведите сообщение об ошибке.
Задание 7.2. Допуск к аттестации
Получите:
- процент посещаемости;
- наличие всех практических работ;
- наличие задолженности.
Допуск разрешён, если:
- посещаемость не менее
75%; - все практические сданы;
- задолженности нет.
Задание 7.3. Форма аттестации
Через switch обработайте значения:
test—Тестирование;exam—Экзамен;project—Защита проекта;credit—Зачёт.
Для неизвестного значения выведите ошибку.
Вариант 8. Банковская карта
Задание 8.1. Категория операции
По сумме операции определите:
- до 1000 ₽ —
Мелкая; - 1001–10000 ₽ —
Обычная; - 10001–50000 ₽ —
Крупная; - более 50000 ₽ —
Очень крупная.
Задание 8.2. Разрешение платежа
Получите:
- сумму платежа;
- остаток на счёте;
- состояние карты
isBlocked; - подтверждение операции
isConfirmed.
Платёж разрешён только если карта не заблокирована, средств достаточно и операция подтверждена.
Задание 8.3. Тип карты
Через switch определите cashback:
classic— 1%;gold— 2%;platinum— 3%.
Рассчитайте cashback для введённой суммы покупки.
Вариант 9. Облачное хранилище
Задание 9.1. Использование места
По проценту занятого пространства определите:
- до 50% —
Свободного места достаточно; - 51–80% —
Хранилище заполнено более чем наполовину; - 81–95% —
Мало свободного места; - более 95% —
Критическое заполнение.
Задание 9.2. Возможность загрузки файла
Получите:
- свободное место в ГБ;
- размер файла в ГБ;
- признак блокировки аккаунта.
Загрузка разрешена, если аккаунт не заблокирован и свободного пространства достаточно.
Задание 9.3. Тариф
Через switch обработайте:
free— 10 ГБ, 0 ₽;personal— 100 ГБ, 199 ₽;pro— 1000 ГБ, 699 ₽.
Выведите объём и стоимость выбранного тарифа.
Вариант 10. Система технической поддержки
Задание 10.1. Приоритет обращения
По уровню критичности 1–5 определите:
1— низкий;2— обычный;3— повышенный;4— высокий;5— критический.
Для значения вне диапазона выведите ошибку.
Задание 10.2. Необходимость эскалации
Получите:
- критичность;
- признак VIP-клиента;
- количество часов без решения.
Эскалация требуется, если:
- критичность не ниже
4; - либо клиент VIP и обращение не решено более
2часов; - либо любое обращение не решено более
24часов.
Задание 10.3. Статус заявки
Через switch обработайте:
new;in_progress;waiting;resolved;closed.
Для каждого значения выведите понятное русское название статуса.
Вариант 11. Система бронирования гостиницы
Задание 11.1. Продолжительность проживания
По количеству ночей определите:
- 1 ночь —
Краткое проживание; - 2–4 ночи —
Короткое проживание; - 5–10 ночей —
Среднее проживание; - более 10 ночей —
Длительное проживание.
Задание 11.2. Скидка гостю
Получите:
- стоимость проживания;
- наличие программы лояльности;
- количество ночей.
Скидка 10% предоставляется, если гость участвует в программе лояльности и проживает не менее 5 ночей.
Для проживания от 10 ночей скидка 15% независимо от программы лояльности.
Задание 11.3. Категория номера
Через switch задайте цену за ночь:
standard— 3500 ₽;comfort— 5000 ₽;suite— 8000 ₽.
Рассчитайте итоговую стоимость по введённому количеству ночей.
Вариант 12. Парковочная система
Задание 12.1. Категория стоянки
По длительности определите:
- до 1 часа —
Кратковременная; - 2–4 часа —
Обычная; - 5–8 часов —
Длительная; - более 8 часов —
Суточная.
Задание 12.2. Льгота
Получите:
- стоимость парковки;
- признак резидента;
- признак льготного пользователя.
Льготный пользователь не оплачивает парковку.
Резидент получает скидку 50%.
Остальные оплачивают полную стоимость.
Задание 12.3. Зона парковки
Через switch определите стоимость часа:
green— 50 ₽;yellow— 80 ₽;red— 120 ₽.
Рассчитайте стоимость по введённому количеству часов.
Вариант 13. Складская система
Задание 13.1. Уровень остатка
По количеству товара определите:
0—Нет в наличии;- 1–5 —
Критический остаток; - 6–20 —
Низкий остаток; - более 20 —
Достаточный остаток.
Задание 13.2. Необходимость пополнения
Получите:
- текущий остаток;
- минимальный допустимый остаток;
- наличие уже оформленного заказа поставщику.
Новый заказ требуется, если остаток меньше минимального и заказ поставщику ещё не оформлен.
Задание 13.3. Тип движения товара
Через switch обработайте:
income—Поступление;sale—Продажа;return—Возврат;writeoff—Списание.
Для неизвестного типа вывести ошибку.
Вариант 14. Регистрация на мероприятие
Задание 14.1. Возрастная категория участника
Определите:
- до 13 лет —
Детский участник; - 14–17 —
Юниор; - 18–59 —
Взрослый участник; - от 60 —
Участник 60+.
Задание 14.2. Проверка допуска
Получите:
- возраст;
- наличие билета;
- признак блокировки регистрации.
Допуск разрешён, если билет есть, регистрация не заблокирована и возраст не меньше 16 лет.
Задание 14.3. Тип билета
Через switch определите цену:
standard— 1500 ₽;student— 900 ₽;vip— 3500 ₽.
Через confirm() определите раннюю регистрацию. Для ранней регистрации предоставьте скидку 10%.
Вариант 15. Сервис подписки
Задание 15.1. Категория срока подписки
По количеству месяцев определите:
- 1 месяц —
Месячная; - 2–5 месяцев —
Краткосрочная; - 6–11 месяцев —
Полугодовая; - от 12 месяцев —
Долгосрочная.
Задание 15.2. Скидка
Получите:
- стоимость одного месяца;
- количество месяцев;
- наличие промокода.
Правила:
- при сроке от 6 месяцев скидка
5%; - при сроке от 12 месяцев скидка
10%; - промокод дополнительно даёт
3%.
Рассчитайте общий процент скидки и итоговую стоимость.
Задание 15.3. План подписки
Через switch определите стоимость месяца:
start— 250 ₽;standard— 450 ₽;pro— 750 ₽.
Получите план и количество месяцев. Рассчитайте стоимость без скидки. Затем примените правила из задания 15.2.
Требования к результату
Section titled “Требования к результату”В рамках практической работы необходимо:
- выполнить задание части 1;
- выполнить все три задания назначенного индивидуального варианта;
- использовать строгие сравнения
===и!==там, где это уместно; - корректно обрабатывать граничные значения;
- использовать
if...else, тернарный оператор илиswitchв соответствии с условием задачи; - проверить программу для указанных тестовых данных.
Контрольные вопросы
Section titled “Контрольные вопросы”- Какой тип данных возвращает операция сравнения?
- В чём различие между операторами
==и===? - Почему при написании программ рекомендуется использовать
===? - Какие значения возвращают
prompt()иconfirm()? - Почему результат
prompt()часто необходимо преобразовывать с помощьюNumber()? - Чем отличаются логические операторы
&&,||и!? - В каком порядке выполняются проверки в конструкции
if...else if...else? - Почему при работе с диапазонами важно проверять граничные значения?
- Когда удобно использовать тернарный оператор?
- Когда конструкция
switchудобнее несколькихif...else if? - Для чего используются
breakиdefaultвнутриswitch?
При защите будьте готовы объяснить отдельное условие программы, изменить одно из граничных значений или добавить небольшое условие по требованию преподавателя.
Рекомендуемая литература
Section titled “Рекомендуемая литература”- MDN Web Docs — Window: prompt()
- MDN Web Docs — Window: alert()
- MDN Web Docs — Window: confirm()
- MDN Web Docs — Expressions and operators
- MDN Web Docs — if…else
- MDN Web Docs — Conditional operator
- MDN Web Docs — switch
- JavaScript.info — Comparisons
- JavaScript.info — Conditional branching
- JavaScript.info — Logical operators
- JavaScript.info — The switch statement