# 000105. Блочные конструкции. Циклы

Блочные конструкции. Циклы|Начинаем седьмой урок по скриптингу GTA 4. Циклы мы уже проходили с Вами в обучении Sanny Builder, поэтому кратко пробежимся по основным отличиям.|wmysterio|wmysterio||||Начнём с самого противного для новичков цикла - **while**. Суть цикла - многоразовое повторение кода внутри блока, кока выполняется условие. Единственным отличием от СанниБилдер в том, что количество условий может быть любое. Синтаксис написания следующий:

```
cs
int a = 0;

while (100 > a) {
 a++;
}
```

Второй вид цикла - **do...while**. Так называемый цикл с постусловием. Сначала делается код в блоке, а затем проверяется условие. Синтаксис написания таков:

<table><thead><tr><th>c#</th><th>Аналог в Sanny Builder</th></tr></thead><tbody><tr><td><p>```</p><p>cs int a = 0;</p><p>do { a++; } while (100 > a);</p><pre><code>&#x3C;/td>&#x3C;td>
</code></pre><p>0@ = 0</p><p>repeat 0@ += 1 wait 0 until 0@ > 99</p><pre><code>&#x3C;/td>&#x3C;/tr>
&#x3C;/tbody>&#x3C;/table>

Если для продолжения цикла **repeat** было нужно, что бы условие было ложным, то **do...while** наоборот - должно возвращать истину.

Рассмотрим ещё один вид циклов - **for**. Не знаю почему, но он является самый любимым циклом для начинающих программистов ( как показала статистика ). Синтаксис написания таков:

\<table class="table table-bordered">\<tbody>
\<tr>\<th>c#\</th>\<th>Аналог в Sanny Builder\</th>\</tr>
\<tr>\<td> </code></pre><p>cs int a, b = 0;</p><p>for (a = 0; a < 100; a++) { b += 2; }</p><pre><code>\</td>\<td> </code></pre><p>1@ = 0</p><p>for 0@ = 0 to 100 step 1 1@ += 2 end</p><pre><code>\</td>\</tr>
\</tbody>\</table>

Особых отличий нет, так что запомнить синтаксис не составит труда.

Есть так-же ещё один полезный цикл - **foreach**, аналога которого в SannyBuilder нет. Переводится как "для каждого". Этот цикл, как правило, используют для обхода элементов коллекций. О них я расскажу когда придёт время, там же и более детально изучим этот цикл.

Инструкции **break** и **continue** так же есть в c#. Как вы помните ( или тем, кто не помнит ), инструкция **break** немедленно прерывает цикл, а **continue** начинает цикл сначала. Простой пример:

\<table class="table table-bordered">\<tbody>
\<tr>\<th>c#\</th>\<th>Аналог в Sanny Builder\</th>\</tr>
\<tr>\<td> </code></pre><p>cs nt b = 0;</p><p>for (int a = 0; a < 100; a++) { b += 2;</p><p>if ( b > 17 ) { break; } else { continue; }</p><p>}</p><pre><code>\</td>\<td> </code></pre><p>1@ = 0</p><p>for 0@ = 0 to 100 step 1 1@ += 2 if 1@ > 17 then break else continue end end</p><pre><code>\</td>\</tr>
\</tbody>\</table>

На этом всё, тестируйте, экспериментируйте и задавайте вопросы!|554|1|0||blochnye\_konstrukcii\_cikly|1511983477 </code></pre></td><td></td></tr></tbody></table>
