generated from hexlet-basics/exercises-template
-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Maksim Litvinov
committed
Dec 27, 2023
1 parent
bc82ee7
commit 9146d06
Showing
216 changed files
with
4,405 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
Наберите в редакторе код из задания символ в символ и нажмите «Проверить». | ||
|
||
```javascript | ||
console.log('Hello, World!'); | ||
``` | ||
|
||
Внимание: если вы напишете `heLLo, woRld!` вместо `Hello, World!`, то это будет считаться другим текстом, потому что заглавные и строчные буквы — это разные символы. Размер буквы называют *регистром*, и говорят: *регистр — важен!* Это касается почти всего в коде, поэтому привыкайте всегда обращать внимание на регистр. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
Изучение нового языка программирования традиционно начинается с 'Hello, World!'. Это простая программа, которая выводит приветствие на экран и заодно знакомит с новым языком — его синтаксисом и структурой программы. Этой традиции уже больше сорока лет, поэтому и мы не будем ее нарушать — в первом же уроке напишем программу `Hello, World!`. | ||
|
||
Эта программа будет выводить на экран текст: | ||
|
||
<pre class='hexlet-basics-output'> | ||
Hello, World! | ||
</pre> | ||
|
||
Чтобы вывести что-то на экран, нужно дать компьютеру специальную команду. В языке JavaScript такая команда — `console.log()`. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
name: Привет, Мир! | ||
tips: | ||
- > | ||
[Немного о 'Hello, | ||
World!'](https://ru.hexlet.io/blog/posts/moy-chelovek-menya-ponimaet-istoriya-frazy-hello-world-i-ee-analogov) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
Создайте однострочный комментарий с текстом: `You know nothing, Jon Snow!`. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
|
||
Кроме кода, в файлах с исходным кодом могут находиться комментарии. Это текст, который не является частью программы и нужен программистам для пометок. С их помощью добавляют пояснения, как работает код, какие здесь ошибки нужно поправить или не забыть что-то добавить позже. | ||
|
||
```javascript | ||
// Удалить строку ниже после реализации задачи по регистрации | ||
console.log(10); | ||
``` | ||
|
||
Комментарии в JavaScript бывают двух видов: | ||
|
||
## Однострочные комментарии | ||
|
||
*Однострочные комментарии* начинаются с `//`. После этих двух символов может следовать любой текст, вся строчка не будет анализироваться и исполняться. | ||
|
||
Комментарий может занимать всю строчку. Если одной строчки мало, то создаются несколько комментариев: | ||
|
||
```javascript | ||
// For Winterfell! | ||
// For Lanisters! | ||
``` | ||
|
||
Комментарий может находиться на строчке после какого-нибудь кода: | ||
|
||
```javascript | ||
console.log('I am the King'); // For Lannisters! | ||
``` | ||
|
||
## Многострочные комментарии | ||
|
||
*Многострочные комментарии* начинаются с `/*` и заканчиваются на `*/`. | ||
|
||
```javascript | ||
/* | ||
The night is dark and | ||
full of terrors. | ||
*/ | ||
console.log('I am the King'); | ||
``` | ||
|
||
https://replit.com/@hexlet/helloworld | ||
|
||
Такие комментарии, обычно, используют для документирования кода, например, функций. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
name: Комментарии | ||
tips: | ||
- | | ||
[Подробнее о комментариях](https://www.w3schools.com/js/js_comments.asp) | ||
definitions: | ||
- name: Комментарий | ||
description: > | ||
текст в коде программы, который не влияет на функциональность и | ||
добавляется программистами для себя и своих коллег. | ||
`// однострочный комментарий` | ||
``` | ||
/* | ||
многострочный комментарий | ||
многострочный комментарий | ||
*/ | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
Выведите на экран друг за другом три имени: *Robert*, *Stannis*, *Renly*. В результате на экране должно отобразиться: | ||
|
||
<pre class='hexlet-basics-output'> | ||
Robert | ||
Stannis | ||
Renly | ||
</pre> | ||
|
||
Для каждого имени используйте свой собственный вызов `console.log()`. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
Инструкция — это команда для компьютера выполнить что-то. Код на JavaScript — это набор инструкций, которые, как правило, отделяются друг от друга символом `;`. | ||
|
||
Вот пример кода с двумя инструкциями. | ||
|
||
```javascript | ||
console.log('Mother of Dragons.'); | ||
console.log('Dracarys!'); | ||
``` | ||
|
||
https://replit.com/@hexlet/js-basics-instructions | ||
|
||
При запуске этого кода, на экран последовательно выводятся два предложения: | ||
|
||
<pre class='hexlet-basics-output'> | ||
Mother of Dragons. | ||
Dracarys! | ||
</pre> | ||
|
||
Теоретически, инструкции можно написать друг за другом без переноса на новую строчку: | ||
|
||
```javascript | ||
console.log('Mother of Dragons.'); console.log('Drakarys!'); | ||
``` | ||
|
||
Результат на экране будет таким же, но такой код неудобен для чтения, поэтому инструкции располагают друг под другом. | ||
|
||
Почему это важно знать? Инструкция — это единица исполнения. Интерпретатор, программа которая запускает код на JavaScript, выполняет инструкции строго по очереди. И мы, как разработчики, должны понимать этот порядок и уметь мысленно разделять программу на независимые части, удобные для анализа. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
name: Инструкции (Statements) | ||
tips: | ||
- | | ||
[Немного об интерпретаторах](https://ru.wikipedia.org/wiki/Интерпретатор) | ||
- > | ||
[Инструкции и объявления по | ||
категориям](https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Statements) | ||
definitions: | ||
- name: Интерпретатор | ||
description: | | ||
программа, выполняющая код на JavaScript. | ||
- name: Инструкция (statement) | ||
description: > | ||
команда для компьютера, написанная на языке программирования. Код на | ||
JavaScript — это набор инструкций, разделенных (чаще всего) символом `;`. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
Просто тренировка. Выведите на экран число 9780262531962. | ||
|
||
<pre class='hexlet-basics-output'> | ||
9780262531962 | ||
</pre> | ||
|
||
Поэкспериментируйте с выводом. Передайте туда другое число или строку. Посмотрите на ответ системы, попробуйте его перевести и понять. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
|
||
Сайт автоматически проверяет ваши решения. Как это работает? | ||
|
||
В самом простом случае, система просто запускает ваш код и смотрит на то, что вывелось на экран. А потом сверяет с тем, что мы «ожидали» по заданию. | ||
|
||
В следующих, более сложных уроках, вы будете писать функции — некие мини-программы, принимающие информацию из внешнего мира и производящие какие-то операции. Проверка ваших решений в таких случаях выглядит немного сложнее: система запускает ваше решение и передаёт какую-то информацию. Система также знает — «ожидает» — какой именно ответ должна дать правильная функция при таких входных данных. | ||
|
||
Например, если ваша задача — написать функцию сложения двух чисел, то проверочная система будет передавать ей разные комбинации чисел и сверять ответ вашей функции с реальными суммами. Если во всех случаях ответы совпадут, то решение считается верным. | ||
|
||
Такой подход называется тестированием, и он используется в реальной повседневной разработке. Обычно программист сначала пишет тест — проверочную программу, а потом уже ту программу, которую хотел написать. В процессе он постоянно запускает тесты и смотрит, приблизился ли он к решению. | ||
|
||
Именно поэтому наш сайт говорит «Тесты пройдены», когда вы правильно решили задачу. | ||
|
||
Вот простой пример: в одном из будущих уроков вам нужно будет написать функцию, которая производит вычисления и выдаёт ответ. Предположим, вы допустили небольшую ошибку, и функция выдала неправильное число. Система ответит примерно так: | ||
|
||
<pre class='hexlet-basics-output'> | ||
● test | ||
|
||
expect(received).toBe(expected) // Object.is equality | ||
|
||
Expected value to be: | ||
"Hello, World!" | ||
Received: | ||
"ello, World!" | ||
</pre> | ||
|
||
Expected – ожидаемое значение, а Received, то которое выдал ваш код. | ||
|
||
Кроме наших тестов, будет крайне полезно экспериментировать с кодом в консоли [браузера](https://developer.mozilla.org/en-US/docs/Tools/Browser_Console). В любой ситуации, когда вы недопоняли, или хотите попробовать разные варианты использования, смело открывайте консоль и вводите туда код. Идеально, если вы выполните самостоятельно весь код, который присутствует в уроках. Кроме консоли, полезно использовать сервис [repl.it](https://repl.it/languages/javascript). | ||
|
||
--- | ||
|
||
Иногда в процессе решения будет казаться, что вы сделали все правильно, но система "капризничает" и не принимает решение. Подобное поведение практически исключено. Нерабочие тесты просто не могут попасть на сайт, они автоматически запускаются после каждого изменения. В подавляющем большинстве таких случаев, (а все наши проекты в сумме провели миллионы проверок за много лет), ошибка содержится в коде решения. Она может быть очень незаметной, вместо английской буквы случайно ввели русскую, вместо верхнего регистра использовали нижний или забыли вывести запятую. Другие случаи сложнее. Возможно ваше решение работает для одного набора входных данных, но не работает для другого. Поэтому всегда внимательно читайте условие задачи и вывод тестов. Там почти наверняка есть указание на ошибку. | ||
|
||
Однако, если вы уверены в ошибке или нашли какую-то неточность, то вы всегда можете указать на нее. В конце каждой теории есть ссылка на содержимое урока на гитхабе (этот проект полностью открытый!). Перейдя туда, вы можете написать issue, посмотреть содержимое тестов (там видно, как вызывается ваш код) и даже отправить pullrequest. Если для вас это пока темный лес, то подключитесь в наше сообщество [Telegram] (https://t.me/hexletcommunity), там в канале *Обратная связь* мы всегда поможем. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
name: Как мы проверяем ваши решения | ||
definitions: | ||
- name: Тесты | ||
description: > | ||
специальный код, проверяющий программы на корректность, сверяя правильный | ||
результат с реальным. | ||
tips: | ||
- | | ||
[TDD](https://ru.wikipedia.org/wiki/Разработка_через_тестирование) | ||
- | | ||
[Сообщество Хекслета в Telegram](https://t.me/hexletcommunity) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
|
||
Это задание не связано с уроком напрямую. Но будет полезным потренироваться с выводом на экран. | ||
|
||
Выведите на экран *What Is Dead May Never Die* |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
|
||
Если программа на JavaScript написана синтаксически некорректно, то интерпретатор выводит на экран соответствующее сообщение, а также указание на файл и строчку в нём, где, по его мнению, произошла ошибка. *Синтаксическая ошибка* возникает в том случае, когда код был записан с нарушением грамматических правил. В человеческих языках грамматика важна, но текст с ошибками чаще всего можно понять и прочитать. В программировании всё строго. Любое мельчайшее нарушение, и программа даже не запустится. Примером может быть забытая `;`, неправильно расставленные скобки и другие детали. | ||
|
||
Вот пример кода с синтаксической ошибкой: | ||
|
||
```javascript | ||
console.log('Hodor' | ||
``` | ||
Если запустить код выше, то мы увидим следующее сообщение: `SyntaxError: missing ) after argument list`, а также указание на строку и файл, где возникла эта ошибка. Подобные синтаксические ошибки в JavaScript относятся к разряду SyntaxError. | ||
*По техническим причинам, такой код, запущенный на https://code-basics.com не укажет на строку и файл. Проверить этот вывод можно на https://repl.it* | ||
https://replit.com/@hexlet/js-basics-syntax-errors | ||
С одной стороны, ошибки SyntaxError — самые простые, потому что они связаны исключительно с грамматическими правилами написания кода, а не с самим смыслом кода. Их легко исправить: нужно лишь найти нарушение в записи. | ||
С другой стороны, интерпретатор не всегда может чётко указать на это нарушение. Поэтому бывает, что забытую скобку нужно поставить не туда, куда указывает сообщение об ошибке. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
name: Синтаксические ошибки | ||
tips: | ||
- | | ||
[Ошибки в JavaScript](https://habr.com/ru/post/249525/) | ||
definitions: | ||
- name: Синтаксическая ошибка | ||
description: нарушение грамматических правил языка программирования. | ||
- name: SyntaxError (ошибка парсинга) | ||
description: >- | ||
тип ошибок в JavaScript, возникающих при наличии синтаксических ошибок в | ||
коде. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
|
||
Выведите на экран результат деления числа `81` на `9`. |
Oops, something went wrong.