# Домашнее задание. Функции ## Анализ Проанализируйте свои предыдущии ДЗ на предмет повторяющихся действий и придумайте названия, параметры и возвращаемое значение для функций в этих случаях ## a Напишите функцию `a`, которая просто является коротким именем для alert. Смотрите пример с `d()`, которая является коротким именем для `debugger` из материала лекции ```javascript a("Привет!") // вызывает alert("Привет!") ``` ## Cube Напишите функцию `cube`, которая возвращает число в третьей степени: ```javascript cube(1) // возвращает 1 cube(2) // возвращает 8 cube(3) // возвращает 27 ``` ## avg2 Напишите функцию `avg2`, которая рассчитывает среднюю для двух чисел: ```javascript avg2(1,2) // возвращает 1.5 avg2(10,5) // возвращает 7.5 ``` формула для подсчета среднего: (a + b) / 2 ## Sum3 Напишите функцию `sum3` для суммирования 3 чисел: ```javascript sum3(1,2,3) // => 6 sum3(5,10,100500) // => 100515 ``` ## intRandom Напишите функцию `intRandom`, которая принимает два параметра: нижнюю и верхнюю границу, и возвращает **целое** случайное число из этого диапазона включительно: ```javascript intRandom(2,15) // возвращает целое случайное число от 2 до 15 (включительно) intRandom(-1,-1) // вернет -1 intRandom(0,1) // вернет 0 или 1 ``` Используйте умножение для расширения значения встроенной функции `Math.random` c диапозона 1, сложения для смещения результата на первый параметр, и `Math.round` для округления результата ## greetAll Сделайтей функцию, которая приветствует всех, кто передан в качестве параметров ```javascript greetAll("Superman"); // выводит alert "Hello Superman" greetAll("Superman", "SpiderMan"); // выводит alert "Hello Superman, SpiderMan" greetAll("Superman", "SpiderMan", "Captain Obvious"); // выводит alert "Hello Superman, SpiderMan, Captain Obvious" ``` Используйте `arguments` и `for`. ## Sum Напишите функцию `sum`, которая сумирует любое количество параметров: ```javascript sum(1) // => 1 sum(2) // => 2 sum(10,20,40,100) // => 170 ``` Используйте псевдомассив `arguments` для получения всех параметров, и `for` для итерирования по нему ## avg Сделайте функцию `avg`, которая рассчитывает среднее значение любого количества параметров ```javascript sum(1) // => 1 sum(2) // => 2 sum(10,20,40,100) // => 42.5 ``` ## Объединение Всё предыдущие функии и примеры с ними объедините в функции, которые вызывайте в `switch` по номеру задания: ```javascript function aSample(){ a("Привет!") // вызывает alert("Привет!") } function cubeSample(){ cube(5) // => 125 } var sample = prompt("Введите номер задания") switch (sample){ case "1": aSample(); break case "2": cubeSample(); break } ``` ## Синий пояс: inputPerson Сделайте функцию inputPerson, которая будет спрашивать у пользователя фамилию, имя, отчество, и возвращать ассоциативный массив с новой персоной: ```javascript inputPerson() // => {"name": "то, что ввел пользователь", "surname": ..., } var persons = [inputPerson(), inputPerson(), inputPerson()] // => вводим трех персон ``` ## Черный пояс: inputAnything Сделайте функцию inputAnything, которая в качестве параметра принимает следующую структуру: ```javascript var inputStructure = [ {prompt: "Введите Фамилию", default_: "", field: "surname" }, {prompt: "Введите Имя", default_: "", field: "name" }, {prompt: "Введите Отчество", default_: "", field: "fatherName" }, {prompt: "Введите возраст", default_: "0", field: "age" }, ] ``` Функция с таким параметром будет выводить 4 раза `prompt`, с текстом из полей `prompt` структуры ("Введите Фамилию" и так далее), и формировать внутренний объект `result` с полями `field` (`surname`, `name` и так далее), и значениями, который введет пользователь (вернет функция `prompt`). `default_` в структуре передается в `prompt` как значение по умолчанию. ```javascript inputAnything([{prompt: "Введите число", default_: "0", field: "number" }]) // => {number: "число, которое ввел пользователь"} inputAnything(inputStructure) // => {surname: "...", name: "...", fatherName: "...", age: "..."} ```