diff --git a/HW2_2/HW2.js b/HW2_2/HW2.js
new file mode 100644
index 0000000..f290fe8
--- /dev/null
+++ b/HW2_2/HW2.js
@@ -0,0 +1,151 @@
+'use strict';
+
+/*
+1. Дан код:
+var a = 1, b = 1, c, d;
+c = ++a; alert(c); // 2 Здесь инкремент увеличиавет переменную на 1. Префиксная форма.
+d = b++; alert(d); // 1 Здесь постфиксная форма, поэтому ззаписывается 1.
+c = (2+ ++a); alert(c); // 5 Здесь 2+ инкремент увеличивает ++2, т.е. 3
+d = (2+ b++); alert(d); // 4 Здесь опять постфиксная форма, т.е 2+ 2, но в перенменной будет 3
+alert(a); // 3 По итогу переменной префиксная форма дала 3
+alert(b); // 3 По итогу переменной постфиксаня форма тоже дала 3.
+Почему код даёт именно такие результаты?
+*/
+
+
+/*
+2. Чему будет равен x в примере ниже?
+var a = 2;
+var x = 1 + (a *= 2);
+x = 5 (1 + (2 * 2)
+*/
+
+
+
+/*
+3. Объявить две целочисленные переменные a и b и задать им произвольные начальные значения.
+Затем написать скрипт, который работает по следующему принципу:
+1. если a и b положительные, вывести их разность;*/
+
+let a = 4, b = 3;
+
+ if (a >= 0 && b >= 0){
+ console.log(a - b);
+ }
+
+/*
+2. если а и b отрицательные, вывести их произведение;*/
+
+let a = -4, b = -3;
+
+ if (a <= 0 && b <= 0){
+ console.log(a * b);
+ }
+
+/*
+3. если а и b разных знаков, вывести их сумму;
+ноль можно считать положительным числом. ### */
+
+let a = 4, b = -3;
+
+ if (a * b < 0){
+ console.log(a + b);
+ }
+
+/*
+4. Присвоить переменной а значение в промежутке [0..15].
+С помощью оператора switch организовать вывод чисел от a до 15. ### */
+
+let a = 5;
+ switch (a){
+ case 0:
+ document.write("0");
+ case 1:
+ document.write("1");
+ case 2:
+ document.write("2");
+ case 3:
+ document.write("3");
+ case 4:
+ document.write("4");
+ case 5:
+ document.write("5");
+ case 6:
+ document.write("6");
+ case 7:
+ document.write("7");
+ case 8:
+ document.write("8");
+ case 9:
+ document.write("9");
+ case 10:
+ document.write("10");
+ case 11:
+ document.write("11");
+ case 12:
+ document.write("12");
+ case 13:
+ document.write("13");
+ case 14:
+ document.write("14");
+ case 15:
+ document.write("15");
+
+ }
+/*
+5. Реализовать основные 4 арифметические операции в виде функций с двумя параметрами.
+Обязательно использовать оператор return. ###*/
+
+function sumnumber (a, b) {
+ return a + b;
+}
+
+function sumsub (a, b) {
+ return a - b;
+}
+
+function summulti (a, b) {
+ return a * b;
+}
+
+function sumdivision (a, b) {
+ return a / b;
+}
+
+/*
+6. Реализовать функцию с тремя параметрами: function mathOperation(arg1, arg2, operation),
+где arg1, arg2 – значения аргументов, operation – строка с названием операции.
+В зависимости от переданного значения операции выполнить одну из арифметических операций (использовать функции из пункта 3) и
+вернуть полученное значение (использовать switch). ### */
+
+function mathOperation(arg1, arg2, operation){
+ switch (operation){
+ case "+":
+ return sumnumber(arg1, arg2);
+ case "-":
+ return sumsub (arg1, arg2);
+ case "*":
+ return summulti(arg1, arg2);
+ case "/":
+ return sumdivision(arg1, arg2);
+ }
+}
+
+console.log(mathOperation(4,8,"+"));
+console.log(mathOperation(4,8,"-"));
+console.log(mathOperation(4,8,"*"));
+console.log(mathOperation(4,8,"/"));
+
+
+/*
+7. *Сравнить null и 0. Попробуйте объяснить результат. ###
+
+null - значение не известно
+0 - число
+null > 0 и null == 0 выдаст false.
+Если сравнить null >= 0 ты выдаст true.*/
+
+/*
+8. *С помощью рекурсии организовать функцию возведения числа в степень. Формат: function power(val, pow),
+где val – заданное число, pow – степень.*/
+
diff --git a/HW2_2/index.html b/HW2_2/index.html
new file mode 100644
index 0000000..7db6400
--- /dev/null
+++ b/HW2_2/index.html
@@ -0,0 +1,11 @@
+
+
+
+
+ Document
+
+
+
+
+
\ No newline at end of file
diff --git a/HW3/HW3.js b/HW3/HW3.js
new file mode 100644
index 0000000..7277cfc
--- /dev/null
+++ b/HW3/HW3.js
@@ -0,0 +1,128 @@
+'use strict';
+
+/*
+1.2 С помощью цикла for написать алгоритм для вывода чисел от 0 до 10 включительно, чтобы результат выглядел так:
+0 – это ноль
+1 – нечетное число
+2 – четное число
+3 – нечетное число
+…
+10 – четное число*/
+
+for (let a = 0; a <= 10; a++) {
+ if (a == 0) {
+ console.log(a + " - Это ноль");
+ } else if ( a % 2 == 0) {
+ console.log(a + " - это четное число")
+ } else {
+ console.log(a + " - это нечетное число")
+ }
+}
+
+
+2. /* Выведите в консоль значения, указанные рядом с комментариями: */
+
+const post = {
+ author: "John", //вывести этот текст
+ postId: 23,
+ comments: [
+ {
+ userId: 10,
+ userName: "Alex",
+ text: "lorem ipsum",
+ rating: {
+ likes: 10,
+ dislikes: 2 //вывести это число
+ }
+ },
+ {
+ userId: 5, //вывести это число
+ userName: "Jane",
+ text: "lorem ipsum 2", //вывести этот текст
+ rating: {
+ likes: 3,
+ dislikes: 1
+ }
+ },
+ ]
+}
+
+console.log(post.author);
+console.log(post.comments[0].rating.dislikes);
+console.log(post.comments[1].userId);
+console.log(post.comments[1].text);
+
+/*
+3. Перед вами находится массив с продуктами, сегодня распродажа и вам нужно на каждый товар применить скидку
+15%, можете использовать метод forEach*/
+
+const products = [
+ {
+ id: 3,
+ price: 200,
+ },
+ {
+ id: 4,
+ price: 900,
+ },
+ {
+ id: 1,
+ price: 1000,
+ },
+];
+
+products.forEach(item => {
+ item.price = item.price - item.price * 0.15
+});
+
+/*
+4. Перед вами находится массив с продуктами в интернет-магазине. Вам нужно:
+1 Получить все товары, у которых есть фотографии, можете использовать метод filter
+2 Отсортируйте товары по цене (от низкой цены к высокой), можете использовать метод sort*/
+
+const products = [
+ {
+ id: 3,
+ price: 127,
+ photos: [
+ "1.jpg",
+ "2.jpg",
+ ]
+ },
+ {
+ id: 5,
+ price: 499,
+ photos: []
+ },
+ {
+ id: 10,
+ price: 26,
+ photos: [
+ "3.jpg"
+ ]
+ },
+ {
+ id: 8,
+ price: 78,
+ },
+];
+
+/* Первое задание не сообразил как сделать*/
+/* Ниже по второму заданию*/
+
+const sort = products.sort(function(item1, item2){
+ return item1.price - item2.price;
+ })
+
+/*
+5. Нарисовать горку с помощью console.log (используя цикл for), как показано на рисунке,
+только у вашей горки должно быть 20 рядов, а не 5:
+x
+xx
+xxx
+xxxx
+xxxxx/*/
+
+for (let x = "x"; x.length <= 20; x += "x"){
+ console.log(x);
+}
diff --git a/HW3/index.html b/HW3/index.html
new file mode 100644
index 0000000..6ea5a15
--- /dev/null
+++ b/HW3/index.html
@@ -0,0 +1,11 @@
+
+
+
+
+ Document
+
+
+
+
+
\ No newline at end of file
diff --git a/HW4/HW4.js b/HW4/HW4.js
new file mode 100644
index 0000000..62496dd
--- /dev/null
+++ b/HW4/HW4.js
@@ -0,0 +1,80 @@
+'use strict';
+
+/*1
+Написать функцию, преобразующую число в объект. Передавая на вход число в диапазоне [0, 999],
+мы должны получить на выходе объект, в котором в соответствующих свойствах описаны разряды числа:
+- единицы (в свойстве units)
+- десятки (в свойстве tens)
+- сотни (в свойстве hundereds)
+Например, для числа 45 мы должны получить следующий объект:
+{
+units: 5, //это единицы
+tens: 4, //это десятки
+hundreds: 0, //это сотни
+}
+Если число было передано вне [0, 999] диапазона, не целое число или вообще не число,
+необходимо выдать соответствующее сообщение с помощью console.log и вернуть пустой объект.*/
+
+function NumberObject(num) {
+ if (!Number.isInteger(num) || num < 0 || num > 999){
+ console.log("Диапазон ЧИСЕЛ должен быть [0, 999].");
+ return {};
+ }
+ return {
+ units: num % 10,
+ hundreds: Math.floor(num / 100),
+ tens: Math.floor(num / 10) % 10,
+ }
+}
+
+console.log(NumberObject(444));
+
+
+/*1.1
+Сделайте в стиле es5, а затем в стиле es6 (по аналогии из урока), конструктор Product, который принимает
+параметры name и price, сохраните их как свойства объекта. Также объекты типа Product должны иметь метод
+make25PercentDiscount, который будет уменьшать цену в объекте на 25%.*/
+
+
+/*es5*/
+function Product(name, price) {
+ this.name = name;
+ this.price = price;
+}
+
+Product.prototype.make25PercentDiscount = function () {
+ this.price = this.price - (this.price * 25 / 100)
+ };
+
+const product1 = new Product("Продукт", 230)
+product1.make25PercentDiscount();
+
+console.log(product1);
+
+/*es6*/
+
+class Product {
+ constructor(name, price) {
+ this.name = name;
+ this.price = price;
+ }
+
+ make25PercentDiscount() {
+ this.price = this.price - (this.price * 25 / 100)
+ }
+}
+
+ const product1 = new Product("Продукт", 230)
+ product1.make25PercentDiscount();
+
+ console.log(product1);
+
+/*1.2
+Сделайте в стиле es5, а затем в стиле es6 (по аналогии из урока),
+а) конструктор Post, который принимает параметры author, text, date и сохраняет их как свойства объекта. Объекты
+типа Post должны иметь метод edit, который будет принимать текст и записывать его в свойство text объекта.
+б) конструктор AttachedPost, который принимает параметры author, text, date. Проинициализируйте эти свойства с
+помощью конструктора Post, чтобы не дублировать код. Также в конструкторе AttachedPost должно создаваться
+свойство highlighted со значением false. Унаследуйте в объектах типа AttachedPost методы из Post.
+Объекты типа AttachedPost должны иметь метод makeTextHighlighted, который будет назначать свойству
+highlighted значение true.*/
\ No newline at end of file
diff --git a/HW4/index.html b/HW4/index.html
new file mode 100644
index 0000000..b3ffd5e
--- /dev/null
+++ b/HW4/index.html
@@ -0,0 +1,11 @@
+
+
+
+
+ Document
+
+
+
+
+
\ No newline at end of file