24 сентября 2019 г.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
// Старый способ обзывалки.

// let body = ['жопа', 'башка', 'рожа', 'нога', 'мозга'];  // Создаём обзывалки для частей тела.
// let adjective = ['потная', 'тупая', 'жирная', 'блевотная', 'обоссаная'];  // Создаём обзывалки для прилагательных.
// let troll = ['залупа', 'харя', 'портянка', 'волосянка', 'бздюха', 'мразь'];  // Создаём обзывалки из грязных существительных.

// let body2 = body[Math.floor(Math.random() * 5)];  // Создаём переменную со случайной выборкой из body.
// let adjective2 = adjective[Math.floor(Math.random() * 5)];  // Создаём переменную со случайной выборкой из adjective.
// let troll2 = troll[Math.floor(Math.random() * 6)];  // Создаём переменную со случайной выборкой из troll.

// let goat = 'У тебя ' + body2 + ' как ' + adjective2 + ' ' + troll2 + '!';  // Создаём случайную обзывалку.

// console.log(goat);



// Новый способ обзывалки.

// let body = ['жопа', 'башка', 'рожа', 'нога', 'мозга'];  // Создаём обзывалки для частей тела.
// let adjective = ['потная', 'тупая', 'жирная', 'блевотная', 'обоссаная'];  // Создаём обзывалки для прилагательных.
// let troll = ['залупа', 'харя', 'портянка', 'волосянка', 'бздюха', 'мразь'];  // Создаём обзывалки из грязных существительных.

// Создаём функцию для обзывалки.
// let chooseRandomWords = function (words) {
//   return words[Math.floor(Math.random() * words.length)];
// };

// Создаём случайную обзывалку.
// let goat = 'У тебя ' + chooseRandomWords(body) +
// ' как ' + chooseRandomWords(adjective) +
// ' ' + chooseRandomWords(troll) + '!';

// console.log(goat);



// Делаем троля функцией.

let chooseRandomWords = function (words) {
  return words[Math.floor(Math.random() * words.length)];
};

let goat = function () {
  // Придумываем обзывалки.
  let body = ['жопа', 'башка', 'рожа', 'нога', 'мозга'];  // Создаём обзывалки для частей тела.
  let adjective = ['потная', 'тупая', 'жирная', 'блевотная', 'обоссаная'];  // Создаём обзывалки для прилагательных.
  let troll = ['залупа', 'харя', 'портянка', 'волосянка', 'бздюха', 'мразь'];  // Создаём обзывалки из грязных существительных.

  // Генерируем обзывалку из случайных слов.
  let random = 'У тебя ' + chooseRandomWords(body) +
  ' как ' + chooseRandomWords(adjective) +
  ' ' + chooseRandomWords(troll) + '!';
  return random;
};

// console.log(goat());  // Выводим функцию обзывалки.
// Старый способ обзывалки.

// let body = ['жопа', 'башка', 'рожа', 'нога', 'мозга'];  // Создаём обзывалки для частей тела.
// let adjective = ['потная', 'тупая', 'жирная', 'блевотная', 'обоссаная'];  // Создаём обзывалки для прилагательных.
// let troll = ['залупа', 'харя', 'портянка', 'волосянка', 'бздюха', 'мразь'];  // Создаём обзывалки из грязных существительных.

// let body2 = body[Math.floor(Math.random() * 5)];  // Создаём переменную со случайной выборкой из body.
// let adjective2 = adjective[Math.floor(Math.random() * 5)];  // Создаём переменную со случайной выборкой из adjective.
// let troll2 = troll[Math.floor(Math.random() * 6)];  // Создаём переменную со случайной выборкой из troll.

// let goat = 'У тебя ' + body2 + ' как ' + adjective2 + ' ' + troll2 + '!';  // Создаём случайную обзывалку.

// console.log(goat);



// Новый способ обзывалки.

// let body = ['жопа', 'башка', 'рожа', 'нога', 'мозга'];  // Создаём обзывалки для частей тела.
// let adjective = ['потная', 'тупая', 'жирная', 'блевотная', 'обоссаная'];  // Создаём обзывалки для прилагательных.
// let troll = ['залупа', 'харя', 'портянка', 'волосянка', 'бздюха', 'мразь'];  // Создаём обзывалки из грязных существительных.

// Создаём функцию для обзывалки.
// let chooseRandomWords = function (words) {
//   return words[Math.floor(Math.random() * words.length)];
// };

// Создаём случайную обзывалку.
// let goat = 'У тебя ' + chooseRandomWords(body) +
// ' как ' + chooseRandomWords(adjective) +
// ' ' + chooseRandomWords(troll) + '!';

// console.log(goat);



// Делаем троля функцией.

let chooseRandomWords = function (words) {
  return words[Math.floor(Math.random() * words.length)];
};

let goat = function () {
  // Придумываем обзывалки.
  let body = ['жопа', 'башка', 'рожа', 'нога', 'мозга'];  // Создаём обзывалки для частей тела.
  let adjective = ['потная', 'тупая', 'жирная', 'блевотная', 'обоссаная'];  // Создаём обзывалки для прилагательных.
  let troll = ['залупа', 'харя', 'портянка', 'волосянка', 'бздюха', 'мразь'];  // Создаём обзывалки из грязных существительных.

  // Генерируем обзывалку из случайных слов.
  let random = 'У тебя ' + chooseRandomWords(body) +
  ' как ' + chooseRandomWords(adjective) +
  ' ' + chooseRandomWords(troll) + '!';
  return random;
};

// console.log(goat());  // Выводим функцию обзывалки.

3 ноября 2016 г.

День 8

Лень, капец. Минут десять посидел в CodeCombat.
Итого 310 минут программирования.

1 ноября 2016 г.

День 7. Хекслет. Числа

В уроке рассказывалось про числа и как с ними работать в JavaScript. Какие рассматривались подтемы?

1. Числа с плавающей точкой.

При 0,3 – 0,2 получится 0,0999999 и т. д.

Почему так? Почему не 0,1? Говорят, что количество вещественных чисел бесконечно, а память компа ограниченна, а память программы еще меньше, поэтому физически невозможно вместить все числа вообще. Поэтому придумали такой компромисс, чтобы уместиться в размер памяти, выделяемой для программы. Суть компромисса — представлять как можно больше чисел в пределах отведенной памяти. Такая фигня распространяется на числа с плавающей точкой.

2. IEEE754.

Это стандарт, описывающий формат представления чисел с плавающей точкой. Почему он был придуман? Потому что, кажется, разные машины и программы работали с такими числами по-разному, ну и для исключения путаницы решили сделать стандарт.

Этот стандарт описывает:
— формат чисел (как они представляются);
— специальные значения (бесконечность, не числа, нули);
— операции (тут не понял; мож, потом узнаю);
— исключительные операции (деление на ноль и подобное прочее).

3. Бесконечность (Infinity)

Это первая особенность стандарта почему-то.

Тут просят обратить внимание на то, что бесконечность может быть как положительной, так и отрицательной.

1 / 0 — получается положительная бесконечность.
–1 / 0 = отрицательная бесконечность.

4. NaN (не число) — Not a Number

Зачем оно надо? Ой, трудно для моего понимания. Ща попробую. Для того, чтобы операции в определенных случаях, где невозможно получить число, возвращали какое-то вычисление.

0 / 0
3 % 0
0 * бесконечность
–бесконечность + бесконечность
3 / "строка" — тоже будет NaN

Еще раз попытка объяснить самому себе: не число при попытке взаимодействия с числом дает не число, то есть NaN.

5. +0 и –0.

В стандарте есть положительный и отрицательный нули.

В некоторых редких операциях это важно.

1 / (1 / бесконечность) = бесконечность
1 / (1 / –бесконечность) = –бесконечность

При чем тут бесконечности — я не понял.

6. Нормализованная форма или Экспоненциальная форма.

Буду встречаться числа вроде 1,23е5. Их пугаться не надо, читаются они просто. Это 123000.
Часть до буквы "е" называется мантиссой, после — степенью. Получается 1,23 * 10^5.
Может встречаться и так: 1,23е+5 — это то же самое, что и без плюса.

* * *

Ух. Все на сегодня. Итого минут 30. А это значит 275 + 30 = 305 минут программиста. Или 5 часов из 10000 до профессионала.

27 октября 2016 г.

День 6. Хекслет. Арифметика

В этом уроке разбирали арифметику, да.

1. Арифметические выражения.

Вся байда соответствует тому, что в школе учили на математике. Вся эта тема поддерживается многими языками программирования. Десятичные числа (тут их называют вещественными) пишутся через точку. Можно составлять всякие сложные выражения и применять скобки даже. У-у-у-у!

2. Структура.

Есть операнды и операции. Операнды — это числа. Операции — это умножение, деления и прочая подобная фигня типа сложений и так далее.

3. Операции.

Еще раз было про операции. И мы повторим. Это: сложение, вычитание, умножение, деление, остаток от деления.

4. Позиции.

Операции могут располагаться относительно операндов. Например, индексная операция находится между двумя операндами (пример: 3 * 7). Префиксная операция находится перед операндом (пример: –2). Постфиксная операция — за операндом (пока не заморачиваемся — так сказали).

5. Арность операций.

Операции могут быть унарными — когда один операнд. Типа –1.
Могут быть бинарными — когда два операнда. Вроде 5 + 3.
Большинство операций — бинарные.

6. Приоритет.

Умножение приоритетнее сложения. Это понятно. И так далее.
Скобки могут менять приоритеты. Это тоже понятно. Это всё школа.

7. Ассоциативность.

Бывает левая ассоциативность — это когда операции выполняются слева направо.
И правая ассоциативность — это когда вычисление справа налево.

***

Потом была задача.
Надо было, используя console.log, вывести произведение двух подвыражений, одно из которых это семь деленное на два, а второе это разность между остатком от деления ста на три и цифрой пять.

Написал так:
console.log((7 / 2) * ((100 % 3) - 5));

Оказалось, не наврал. За что и молодец.

***

Итого по времени: 245 минут + 30 минут = 275 минут, как программист.

22 октября 2016 г.

День 5. Хекслет. Онлайн-среда Хекслета

Прослушал 4-й урок по основам программирования на Хекслете. В этом уроке разбиралась внутреняя среда Хекслета, как там надо будет писать код для выполнение заданий, что делать, если появятся ошибки, куда бежать, если ничего не понятно и тому подобное.

Рассказали там про терминал в их среде — что-то вроде командной строки, в которой можно что-то выполнять.

Рассказали, что в кодовом окне есть комментарии begin и end, которые не надо удалять и между которыми и надо писать код для проверки.

Рассказали, как создать в этой среде новые файлы, если будет нужно. Рассказали, как сбросить код, если накосячишь.

В общем, минут 10 ушло на восприятие этой инфы.

Ща зарублюсь еще в CodeCombat.

Добавлено позже:

КодКомбатом тоже поигрался с полчаса на начальном уровне ГеймДэва.

Итого: 40 минут. Всего: 245 минут, как программист.

21 октября 2016 г.

CodeCombat

Подсел на codecombat.com, сижу играю с первого уровня уже часа два. Наверное, хватит на сегодня. Не понятно, это входит в обучение? Наверное, да, раз этот сайт предназначен для обучения программированию.

Так что зачислю себе в карму еще 120 минут. Итого: 205 минут, как я программист.