Skip to content

Commit

Permalink
update content
Browse files Browse the repository at this point in the history
  • Loading branch information
mokevnin committed Nov 26, 2019
1 parent bb92524 commit 9cd7026
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 42 deletions.
20 changes: 18 additions & 2 deletions modules/10-basics/10-hello-world/description.ru.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,27 @@ name: Привет, Мир!
theory: |
По традиции начнём с написания программы "Hello, World!". Эта программа будет выводить на экран текст:
```
<pre class='hexlet-basics-output'>
Hello, World!
</pre>
Вывод на экран выполняется с помощью специальной команды `echo`, после которой, в одиночных кавычках, указывается строка для вывода. В конце обязательно поставить точку с запятой.
```php
<?php
echo 'Hello, World!';
```
Есть и другой способ вывести строку на экран. Для этого используется функция (с этим понятием мы познакомимся позже) `print_r`. В этом случае, строка указывается в фигурных скобках сразу после имени функции. В конце также нужно ставить _;_.
```php
<?php
print_r('Hello, World!');
```
Чтобы вывести что-то на экран, нужно дать компьютеру специальную команду. В языке PHP такая команда — `print_r`.
В простых ситуациях между этими конструкциями нет никакой разницы. Можно использовать как один способ вывода, так и другой. В более сложных, там где на экран нужно выводить не просто числа или строки, а например массивы (о них на Хекслете), то `echo` не сможет этого сделать, а `print_r` все выведет.
instructions: |
Наберите в редакторе код из задания символ в символ и нажмите «Проверить».
Expand Down
71 changes: 31 additions & 40 deletions modules/50-loops/50-mutators/description.ru.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,74 +3,65 @@
name: Инкремент и декремент
theory: |
#### Вкратце
Из языка Си в PHP перекочевали две операции: **инкремент** `++` и **декремент** `--`, которые очень часто встречаются вместе с циклами. Эти унарные операции увеличивают и уменьшают на единицу число, записанное в переменную. В отличии от всех остальных арифметических операций, которые не имеют побочных эффектов и просто возвращают новое значение, инкремент и декремент не только возвращают значение, но и **изменяют** значение переменной.
- `$i++` возвращает `i` и увеличивает его на 1
- `$i--` возвращает `i` и уменьшает его на 1
- `++$i` увеличивает `i` на 1 и возвращает новое значение
- `--$i` уменьшает `i` на 1 и возвращает новое значение
---
Из языка Си в PHP перекочевали две операции: **инкремент** `++` и **декремент** `--`, которые очень часто встречаются вместе с циклами. Эти унарные операции увеличивают и уменьшают на единицу число, записанное в переменную:
При использовании постфиксной нотации — сначала происходит возврат текущего значения переменной, а затем изменение переменной:
```php
<?php
$i = 0;
$i++; // 0
$i++; // 1
$i--; // 2
$i--; // 1
echo $i++; // => 0
echo $i; // => 1
echo $i++; // => 1
echo $i; // => 2
echo $i--; // => 2
echo $i; // => 1
echo $i--; // => 1
echo $i; // => 0
```
Кроме постфиксной формы, у них есть и префиксная:
При использовании префиксной наоборот: сначала изменение переменной, а затем возврат нового значения:
```php
<?php
$i = 0;
++$i; // 1
++$i; // 2
--$i; // 1
--$i; // 0
echo ++$i; // => 1
echo $i; // => 1
echo ++$i; // => 2
echo $i; // => 2
echo --$i; // => 1
echo $i; // => 1
echo --$i; // => 0
echo $i; // => 0
```
Кажется, что нет никакой разницы между постфиксной и префиксной формами. Но тут начинаются сложности.
В отличие от всех остальных операций, которые не имеют побочных эффектов и просто возвращают новое значение, инкремент и декремент не только возвращают значение, но и **изменяют** значение переменной.
При использовании префиксной нотации сначала происходит изменение переменной, а потом возврат.
При использовании постфиксной нотации — наоборот: сначала возврат, а потом изменение переменной.
Правило работает одинаково для инкремента и декремента. Для простоты рассмотрим только инкремент:
Разберем подробнее:
```php
<?php
$x = 5;
print_r(++$x); // => 6
print_r($x); // => 6
echo ++$x; // => 6
echo $x; // => 6
print_r($x++); // => 6
print_r($x); // => 7
echo $x++; // => 6
echo $x; // => 7
```
Что происходит?
1. Вывели на экран `++$x`. Это префиксный инкремент, поэтому сначала значение переменной увеличилось на 1, потом результат вернулся и вывелся на экран.
2. Так как значение изменилось, `print_r($x)` вывел 6.
2. Так как значение изменилось, `echo $x` вывел 6.
3. Теперь выводим на экран `$x++`. Это постфиксный инкремент, поэтому сначала значение вернулось и вывелось на экран, а потом переменная увеличилась на 1.
4. Так как значение изменилось, `print_r($x)` вывел 7.
---
4. Так как значение изменилось, `echo $x` вывел 7.
Особенно страшным все становится тогда, когда инкремент вставляют внутрь других операций: `$x = $i++ - 7 + --$h`. Понять такой код невозможно, и его написание должно рассматриваться как тяжкое преступление.
Инкремент и декремент способны сделать код очень сложным. Особенно страшным все становится тогда, когда инкремент вставляют внутрь других операций: `$x = $i++ - 7 + --$h`. Понять такой код невозможно, и его написание должно рассматриваться как тяжкое преступление.
Например, в языке JavaScript линтер (программа, проверяющая код) сразу начинает ругаться, когда видит использование инкремента и декремента.
Expand All @@ -92,8 +83,8 @@ instructions: |
<?php
$str = 'If I look back I am lost';
filterString($str, 'I'); // 'f look back am lost'
filterString($str, 'o'); // 'If I lk back I am lst'
echo filterString($str, 'I'); // => 'f look back am lost'
echo filterString($str, 'o'); // => 'If I lk back I am lst'
```
tips: []

0 comments on commit 9cd7026

Please sign in to comment.