JavaScript: синтаксис
Цель: познакомиться с базовым синтаксисом языка программирования JavaScript. Приобрести навыки написания кода и работы с инструментами разработчика и консолью браузера. Познакомиться с концепцией ветвей в git и работе с ними. Изучить функции, массивы, объекты, отладку кода в IDE.
Порядок выполнения лабораторной работы:
- Изучить:
- изучение основ языка программирования JavaScript:
- Основные типы данных
- Операторы
- Динамическая типизация и приведение типов данных.
- Объявление переменных и присваивание значений.
- Допустимые имена переменных.
- конструкции:
- условные:
- if…else
- switch
- циклические:
- for
- while
- do-while
- условные:
- синтаксис создания функций (объявление функции, функциональное выражение, стрелочные функции), параметры/аргументы, возврат значения;
- массивы (методы pop/push, shift/unshift, перебор for .. of, метод forEach);
- объекты (ключ: значение, перебор for .. in, методы delete, keys, values, entries);
- объект Math, его свойства и методы.
- изучение основ языка программирования JavaScript:
- Для выполнения работы необходимо:
- Принять задание на Github Classroom
- Склонировать созданный репозиторий, создать и переключиться на ветку lab1 и работать в ней.
- Создать документ html с H1 заголовком «ФИО - Лабораторная работа №1».
- Решить предложенные задачи используя JS.
- Подключить решения к созданной странице.
- Зафиксировать результаты работы с помощью системы контроля версий git и отправить ветку lab1 в репозиторий на github.
- Загрузите проект на Render через смену ветки в настройках.
Требования к JS:
- Все задачи имеют решение и требуемый в них вывод.
- Отсутствуют ошибки в консоли браузера при работе с веб-страницей.
Результаты выполнения лабораторной работы:
Результаты работы проверены наставником.
Статическая веб-страница на хостинге, со структурой и оформлением, которая соответствует требованиям и сохранена в системе контроля версий.
Источники
- «Современный учебник JavaScript»
- doka.guide
- Руководство по JavaScript на русском
- Марейн Хавербек «Выразительный Javascript»
Задачи
Функция конвертации температуры
Напишите функцию convertTemperature, которая принимает два параметра: значение температуры и направление преобразования. Функция возвращает в виде строки температуру в других единицах измерения.
Пример работы:
convertTemperature(32, 'toC') -> '0 C'
convertTemperature(10, 'toF') -> '50 F'
Треугольник
По трем сторонам треугольника проверить возможность его существования, если такой треугольник возможен, то рассчитать его периметр, площадь и отношение периметра к площади. Для решения задачи вам нужна формула Герона и метод Math.sqrt()
, который возвращает квадратный корень числа.
В консоль требуется вывести существует ли треугольник и результаты расчетов с их обозначением
Примеры вывода:
> треугольник существует
> периметр = __
> Площадь = __
> Соотношение = __
> треугольника не существует
Fizz-Buzz
Создайте переменную с целым числом и напишите цикл, который проходит от 0 до указанного в переменной значения и если текущее значение четно, то в консоль выводится buzz, если нечетно fizz, если число делится на 5 - fizz buzz.
Пример вывода:
> "0 buzz"
> "1 fizz"
> "2 buzz"
> "3 fizz"
> "4 buzz"
> "5 fizz buzz"
...
Елка
Напишите программу, которая создает одну строку, представляющую елку, используя для разделения строк символы новой строки. В слоях елки чередуются ”*” и ”#” и на каждой строке символов больше на один, а в последнем ствол из символов ||
.
Пример вывода:
>
*
##
***
####
*****
######
*******
########
*********
##########
***********
############
||
Деление
Напишите код, который проверяет, делится ли нацело число n
на два числа x
И y
. Все входные данные - положительные ненулевые числа и хранятся в переменных.
Пример вывода:
> n = 3, x = 1, y = 3 => true
> n = 12, x = 2, y = 6 => true
> n = 100, x = 5, y = 3 => false
> n = 12, x = 7, y = 5 => false
Сэндвичи с сыром
Для сэндвича требуется два ломтика хлеба и один ломтик сыра. Напишите функцию, которая посчитает максимально возможное количество сэндвичей. Информация о количестве ингридиентов храниться в объекте.
Пример работы:
countSandwiches({bread: 5, cheese: 6}) -> 2
Абсолютное значение
Напишите функцию absValue без Math.abs(x), которая в качестве параметра принимает число и возвращает его абсолютное значение (по модулю).
Пример работы:
absValue(-2) -> 2
absValue(100) -> 100
absValue(0) -> 0
Случайные числа
Используя методы объекта Math создать функцию, которая возвращает целое случайно сгенерированное число в диапазоне от min до max.
Пример работы:
randomNumber(0, 10) -> 3
randomNumber(-10, 10) -> -4
Значения из массива
Используя функцию из прошлой задачи, реализовать функцию, которая возвращает случайные значения из массива в заданном количестве в виде нового массива.
Пример работы:
sampleArray([1,2,3,4], 2) -> [3, 4]
randomNumber([1,2,3,4], 3) -> [2, 2, 1]
Фильтрация массива
Напишите функцию, которая является аналогом метода filter у массива. Функция в качестве параметров принимает сам массив и функцию-фильтр, а возвращает новый массив с элементами прошедшими отбор. Элемент прошел отбор, если функция-фильтр вернула истину для него.
Передаваемая функция-фильтр должна работать с одним параметром и возвращать истину или ложь.
В качестве функции-фильтра можете проверять минимальную/минимальную длину строки или деление без остатка.
Пример работы:
function isFirstV(name) {
return name.startsWith('V')
}
myFilterArray(['Short', 'VeryLong'], isFirstV) -> ['VeryLong']
Равенство чисел с плавающей запятой
Напишите функцию toBeCloseTo, которая принимает два числа (num1 и num2) в качестве аргументов и возвращает true, если они приблизительно равны, и false в противном случае. Может понадобиться Number.EPSILON.
Вопросы для защиты
- Что значит “JS слабо типизированный язык”?
- Что значит “JS язык с динамической типизацией”?
- Типы значений в JS. Оператор определения типа.
- Чем отличаются строки в
""
,''
и``
? - Операнд и оператор.
- Примеры унарных, бинарных и тернарного оператора в JS.
- Истинные и ложные значения в JS.
- Циклическое исполнение кода в JS.
- Создание функций в JS. Сигнатура функции.
- Параметры функции и аргументы.
- Концепт «раннего возврата» из функции.
- Как можно перебирать элементы массива?
- Методы массива filter, map, reduce.
- Объекты. Создание, ключи, значения, свойства.
- Как получить значение из свойства объекта?