Вы когда-нибудь хотели научиться программировать, но терялись в скучных уроках? Как насчет того, чтобы вместо этого сделать что-нибудь интересное?
Вы собираетесь изучить основные строительные блоки программирования с помощью:
Создание алгоритма сжатия!
Следуя этому руководству, вы узнаете:
Переменные. Функции. Массивы. Петли. Методы и параметры.
Алгоритмы сжатия окружают нас повсюду: 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
Это все на данный момент люди! Еще не все!