01

JS: синтаксис

JavaScript: синтаксис

Цель: познакомиться с базовым синтаксисом языка программирования JavaScript. Приобрести навыки написания кода и работы с инструментами разработчика и консолью браузера. Познакомиться с концепцией ветвей в git и работе с ними. Изучить функции, массивы, объекты, отладку кода в IDE.

Порядок выполнения лабораторной работы:

  1. Изучить:
    • изучение основ языка программирования JavaScript:
      • Основные типы данных
      • Операторы
      • Динамическая типизация и приведение типов данных.
      • Объявление переменных и присваивание значений.
      • Допустимые имена переменных.
    • конструкции:
      • условные:
        • if…else
        • switch
      • циклические:
        • for
        • while
        • do-while
    • синтаксис создания функций (объявление функции, функциональное выражение, стрелочные функции), параметры/аргументы, возврат значения;
    • массивы (методы pop/push, shift/unshift, перебор for .. of, метод forEach);
    • объекты (ключ: значение, перебор for .. in, методы delete, keys, values, entries);
    • объект Math, его свойства и методы.
  2. Для выполнения работы необходимо:
    • Принять задание на Github Classroom
    • Склонировать созданный репозиторий, создать и переключиться на ветку lab1 и работать в ней.
    • Создать документ html с H1 заголовком «ФИО - Лабораторная работа №1».
    • Решить предложенные задачи используя JS.
    • Подключить решения к созданной странице.
  3. Зафиксировать результаты работы с помощью системы контроля версий git и отправить ветку lab1 в репозиторий на github.
  4. Загрузите проект на Render через смену ветки в настройках.

Требования к JS:

  • Все задачи имеют решение и требуемый в них вывод.
  • Отсутствуют ошибки в консоли браузера при работе с веб-страницей.

Результаты выполнения лабораторной работы:

Результаты работы проверены наставником.

Статическая веб-страница на хостинге, со структурой и оформлением, которая соответствует требованиям и сохранена в системе контроля версий.

Источники

Задачи

Функция конвертации температуры

Напишите функцию 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.

Вопросы для защиты

  1. Что значит “JS слабо типизированный язык”?
  2. Что значит “JS язык с динамической типизацией”?
  3. Типы значений в JS. Оператор определения типа.
  4. Чем отличаются строки в "", '' и ``?
  5. Операнд и оператор.
  6. Примеры унарных, бинарных и тернарного оператора в JS.
  7. Истинные и ложные значения в JS.
  8. Циклическое исполнение кода в JS.
  9. Создание функций в JS. Сигнатура функции.
  10. Параметры функции и аргументы.
  11. Концепт «раннего возврата» из функции.
  12. Как можно перебирать элементы массива?
  13. Методы массива filter, map, reduce.
  14. Объекты. Создание, ключи, значения, свойства.
  15. Как получить значение из свойства объекта?