Вы когда-нибудь хотели научиться программировать, но терялись в скучных уроках? Как насчет того, чтобы вместо этого сделать что-нибудь интересное?

Вы собираетесь изучить основные строительные блоки программирования с помощью:

Создание алгоритма сжатия!

Следуя этому руководству, вы узнаете:

Переменные. Функции. Массивы. Петли. Методы и параметры.

Алгоритмы сжатия окружают нас повсюду: Spotify, Youtube, Netflix, Twitch и все, что между ними.
Это то, что делает возможным все самое интересное, что нам нравится!

Мы собираемся закодировать следующее:

1: Мы создадим некоторые данные с помощью алгоритма создания данных!

2: Затем мы сожмем эти данные с помощью алгоритма сжатия!

3: Затем мы рассчитаем достигнутый процент сжатия и отобразим его, используя алгоритм расчета!

Хотите следовать вместе?

Вы можете перейти прямо в среду кодирования, используя REPL — бесплатную веб-среду кодирования (IDE), используя ссылку ниже. Создайте новый «REPL», нажав на ссылку ниже.



1: Зарегистрируйтесь. (Это бесплатно)

2: Нажмите создать новый, выберите Node.js и начните печатать!

Шаг 1: Алгоритм генерации данных

Если вы хотите испечь яблочный пирог с нуля, вы должны сначала изобрести вселенную», — Карл Саган.

Нам нужно что-то сжимать!

Давайте создадим алгоритм, который создает представление изображения JPG. Это создаст что-то вроде этого: «aaabbbuiuuddddd».

💿 Это будут «Данные», которые мы позже сожмем.

Чтобы все заработало, я собираюсь создать функцию.

😉 Не волнуйтесь, вы поймете, что такое функция и что она делает позже.

Я назову его imgBuilder.

💁🏽‍♂️ А пока назовите все переменные и функции и т. д. теми же именами, что и я.

Функция imgBuilder в своей окончательной форме создаст строку.

🧐 STRING — это тип данных. Это просто буквы, заключенные в кавычки

строка = «Я строка»

🚨 Мы должны заключать его в кавычки, если хотим, чтобы это была строка.

Эта STRING, которую наша функция imgBuilder создаст и выведет, будет данными изображения, которые мы сожмем в следующей функции!

imgBuilder делает это, формируя строку, используя случайную букву алфавита, повторяющуюся случайное количество раз. Например: «aaabbbuiuuddddd»

В строке 2 мы объявляем функцию.

Формат функции следующий:

функция nameOfFunction (параметры, перейти, войти, здесь) {

Код, который будет выполняться при «вызове» этой функции, находится внутри этих фигурных скобок.

};

🧐 «Вызов» функции просто означает ее запуск.

Видите эту точку с запятой в конце? Вы часто встретите их в Javascript (язык программирования, на котором мы пишем это руководство). Точки с запятой просто означают, что это конец команды, функции, переменной и т. д.

🧐 Обратите внимание, что imgBuilder не принимает параметров, потому что () пусты. Мы увидим некоторые параметры и то, как они работают позже.

Вы только что написали свою первую функцию! Это... Ничего. Но мы это исправим.

Давайте объявим ПЕРЕМЕННУЮ

И назовите его алфавитом.

Предположим, что алфавит должен быть равен значению справа от знака равенства.

вар алфавит = [];

В данном случае это структура данных, называемая МАССИВ, видите квадратные скобки?

[ ]

Это означает, что это МАССИВ.

В этом МАССИВЕ, который мы назвали алфавитом, есть набор элементов, в данном случае это буквы… Алфавита! Видите, как каждая буква заключена в кавычки? Это означает, что каждая буква представляет собой STRING. Прохладный! Каждая строка отделяется запятой.

var алфавит = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l », «м», «н», «о», «р», «ц», «р», «с», «т», «у», «в», «ш», «х», «у», «з»,];

🚨 Через некоторое время мы будем случайным образом выбирать буквы из этого массива!

ПЕРЕМЕННЫЕ могут быть названы и хранить ЧТО-НИБУДЬ

Некоторые примеры:

Строки:

var name = «Эммануэль»;

Числа…

var age = 13;

МАССИВЫ с STRINGS внутри них:

var алфавит = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l », «м», «н», «о», «р», «ц», «р», «с», «т», «у», «в», «ш», «х», «у», «з»,];

Далее давайте создадим еще одну переменную, которая будет пустым МАССИВОМ для хранения букв.

Мы можем называть это как угодно. Но я назову его так, чтобы он описывал любому, кто его читает, что это такое или что он делает. Это будет важно, когда мы начнем больше программировать!

Я назову его storageArray. это массив, предназначенный для хранения информации. Круто.

var storageArray = [];

Петли:

Наша следующая большая тема называется «Цикл For».

🧐 «Цикл по элементам» — это особый тип цикла.

Циклы делают именно это. Они зацикливаются и выполняют код внутри него снова и снова.

По крайней мере, они будут повторяться до тех пор, пока УСЛОВИЕ не запретит это делать. Мы можем сделать цикл 1 или 1 000 000 000 000 раз или сколько угодно раз.

Или он может не работать вообще в зависимости от УСЛОВИЯ.

Посмотрите ниже, где оно начинается с для, внутри круглых скобок ( ) находятся три выражения. Каждый элемент разделяется точкой с запятой;

for (vari = 0; i ‹= Alphabet.length; i++) {

Код, который будет запускать каждый цикл, находится внутри этих фигурных скобок.

};

В цикле for вызываются эти три выражения:

(ИНИЦИАЛИЗАЦИЯ; УСЛОВИЕ; ОКОНЧАТЕЛЬНОЕ ВЫРАЖЕНИЕ)

В выражении INITIALIZATION:

Я заявляю, что переменная с именем i будет = 0.

🚨 Мы будем использовать эту переменную i для управления циклом.

Поскольку мы видим точку с запятой после 0, это означает, что это конец первого выражения.

Теперь к нашему среднему выражению: УСЛОВИЕ.

Цикл будет выполнять код внутри { } только в том случае, если УСЛОВИЕ равно TRUE.

ЕслиУСЛОВИЕ равно ЛОЖЬ, оно не будет выполняться, цикл остановится и любой код, который находится внецикла и ниже, начнет выполняться.

Компьютер сводит все, что находится в CONDITION, к true или false.

🧐 Технический термин для «упрощения» называется Оценка.

Давайте Оценим это сами..

Это правда или ложь? :

я ‹= алфавит.длина;

Мы просто установили i = 0 в нашем операторе инициализации.

Итак, на данный момент мы знаем, что i = 0. КК.

‹= Означает меньше или равно.

alphabet.length = 26, потому что в нашем алфавитном массиве 26 букв.

🧐 Что случилось с частью .length? .length — это часть информации, которую массивы хранят за кулисами. Мы не можем видеть это открыто, мы должны просить об этом напрямую. Мы делаем это, набрав: theNameOfTheArrayHere.length

Фактически компьютер оценивает этот вопрос:

0 <= 26 ?

В основном условие выражение спрашивает, что 0 меньше или равно 26? Да это так! Итак, это среднее выражение ИСТИНА!

В этот момент цикл запускает код внутри скобок {}.

В конце концов это УСЛОВИЕ будет ЛОЖЬ. Подробнее об этом позже..

Последний: Окончательное выражение

ПОСЛЕ выполнения всего кода внутри цикла цикл проверяет последнее условие, называемое FINAL-EXPRESSION

for ( var i = 0; i ‹= Alphabet.length; i++ ) {

Код для запуска находится здесь

};

Это FINAL-EXPRESSION просто говорит

i++

В Javascript это означает увеличение i на 1. Что. Является. Все.

🤖 Помните: изначально i было равно 0…..

поэтому i теперь равно 1!

Поскольку мы только что завершили final-expression,циклвыполнил1 полный цикл!

Цикл начинается снова:

Цикл только что завершил первый цикл. В цикле выполняется только первое выражение: Инициализация один раз. В начале и больше никогда….. 😢

Поэтому в этот момент он переходит напрямую к УСЛОВИЮ и снова оценивает его.

i теперь равно 1. А длина нашего массива алфавитов по-прежнему равна 26, поэтому:

(i ‹= Alphabet.length) имеет значение TRUE.

Поэтому он снова запускает код внутри цикла.

Цикл продолжается до тех пор, пока УСЛОВИЕ не перестанет быть истинным в этом случае, когда

i > 26

Это все на данный момент люди! Еще не все!