В теме 1 сообщение

Sleash
Завсегдатый

Всем привет!

Я хотел бы рассказать о такой незаменимой вещи как цикл for. мне кажется что тут ему уделили сало места, просто закинули в тему операторов и уделили ему +-5 строчек.

Поскольку циклы - непростая вещь я хотел бы посветить этому небольшой урок.

Итак, давайте рассмотрим пример самого цикла:

for(new i; i < MAX_VALUES; i++)
{
    // code ...
}

Теперь разберём каждое действие:

1. new i;

    Тут думаю всё понятно, создаётся переменная, так же можно её сразу прировнять к чему-то: for(new i = 10; ...)

2. i < MAX_VALUES

    Тут уже стоит условие выполнения, и пока оно будет верно - цикл будет выполняться, по сути каждый раз цикл проверяет данное условие

    Так же можно поставить другие операторы, но в основном используются < ИЛИ >

3. i++

    Тут уже выполняется действие каждый раз, когда условие верное.

Кстати говоря как только условие перестанет выполняться окончательно (условие перестанет быть верным), то дальше пойдёт ниже написанный код.

ВАЖНО: return закроет цикл досрочно

То есть:

for(new i = 0; i < 8; i++)
{
    print("%d",i));
}
// В этом случае нам выведет числа от 0-я до 8-и

for(new i = 0; i < 8; i++)
{
    print("%d",i));
    return true;
}
// А в этом выведет только 0, по-скольку return завершает цикл после первого его прохождения

Так же в цикле for можно заимствовать различные из языка C++:

continue - пропуск данного значения.

break - полный выход из цикло (почти идентично return)

Сейчас объясню:

for(new i = 0; i < 8; i++)
{
    if(i == 5) continue; // если i равна 5-и, то пропускаем
    printf("%d",i);
}
// Данный цикл выведет все числа от 0 до 8 КРОМЕ 5

for(new i = 0; i < 8; i++);
{
    if(i == 5) break; // если i равна 5-и, то завершеем
    printf("%d",i);
}
// А данный цикл выведет все числа от 0 до 4-х, так как на 5-и мы вышли из цикла

А теперь главное отличие break от return:

break - просто выкидывает из цикла.

return - выкидывает из цикла и возвращает значение.

К примеру вы пишите stock или public с циклом, который должен вернуть ДА или НЕТ, тот тут уже лучше использовать return true или false, в зависимости от условий и т.д.

И напоследок хочу сказать, что есть 2 вида использования цикла: инкремент и декремент.

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

Декремент же перебирает значения, последовательно их уменьшая, то есть при перечислении игроков проверка будет идти, допустим,  от 1000-го до 0-го ID. пример декремента:

for(new i = MAX_PLAYERS; i >= 0; --i)
{
    // code ...
}

На этом мне хотелось бы закончить свой урок, если кому помог - пожалуйста, но если же кому не понятно - я помогу подробнее разобраться.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!


Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.


Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Похожий контент

    • johny walters
      От johny walters
      Мы разрабатываем мобильный сервер и ищем ответственных специалистов на ключевые позиции:

      Разработчик Pawn (чистый или + Client) разработка и оптимизация систем, баз данных (MySQL), клиентская часть (Android/C++), а также обязательное умение работать с кастомными пакетами RakNet (RPC, кастомная синхронизация, перехват и отправка пакетов).
      Руководитель отдела тестирования - выстраивание процессов тестирования, организация работы команды тестеров, составление тест-кейсов, приоритезация баг-репортов и координация ЗБТ/ОБТ.
      Тестеры - активный поиск багов на клиенте и сервере, оформление репортов, проверка фиксов.
      Дизайнер (разработка и реализация общего дизайна проекта, в том числе внутриигровых интерфейсов) - нюансы обсудим, возьмем с любым опытом и направлением, скоординируем по ходу дела.

      От вас: понимание специфики мобильных проектов, ответственность и наличие свободного времени. Опыт на похожих проектах будет огромным плюсом.
      От нас: слаженная команда с хорошими senior разработчиками, четкие задачи, адекватный менеджмент, сильный старт и условия оплаты/бонусов по результатам работы.

      Писать в TG @hard1199 (ОБЯЗАТЕЛЬНО указать желаемую роль и описать свой опыт).
    • sinvays
      От sinvays
      Продаётся проект Criminal RolePlay с 8-летней историей.

      Проект заморожен и не используется длительное время.
      Потратил на него около 250.000 рублей, продаю за приемлимую цену.

      В комплекте:
      Полноценный игровой мод Мобильный лаунчер с Figma-дизайном Кэш клиентской части Все версии оформления проекта Все группы проекта Criminal RolePlay Шаблоны всех версий сайта, включая ранее не выпущенный шаблон Модуль автодоната YooMoney Помощь с установкой игрового мода на хостинг Цена:
      49 900₽ — за весь комплект.
      Возможен торг при адекватных предложениях.

      Важное:
      Проект продаётся в одни руки. Если в течение месяца не найдётся покупатель, будет рассмотрена продажа по частям.
      Связаться: https://vk.com/krnl0
    • Lemonoas
      От Lemonoas
      Хочу сделать свою работу по моду чтобы работа работала, хочу сделать своими руками
    • Dekmveka
      От Dekmveka
      Здравствуйте, уважаемые пользователи форума PAWNO-RUS.
       
      В этой теме хочу поделиться видеоуроками, ориентированных на новичков, которые сейчас начинают только изучать pawn. 
      Хочу сказать сразу, я не профессиональный блогер с крутым оборудованием, поэтому если что за какие то погрешности в съемке заранее извиняюсь.
      Хотелось бы попросить не писать, что типа pawn и samp уже умер, неактуален, уроков и так полно и так далее и тому подобное. Я лишь просто занимаюсь своим увлечением и решил делиться знаниями с новичками.
      Далее на канале после плейлиста с основами планируется выложить плейлист по MySQL и максимально подробно всё рассказать о MySQL, будет старая добрая рубрика "Мод с нуля" (но на основе плагинов, стандартов и др. актуальных в 2025-2026 году). 
       
      Также хочу сказать, что есть также телеграмм канал. 
      На данный момент там есть ветка для общения, ветка "Инструменты" (там лежат архивы со всем нужным + есть навигационный пост, я просто поделил всё на категории и просто вставил ссылки на архивы которые туда же выложил. Можете зайти посмотреть если интересно). Также в телеграмм канале потом будут исходные файлы с плейлиста "Мод с нуля" и других плейлистах, пока что говорить подробно не буду что буду ещё выкладывать. 
       
      В общем, я даю ссылки, кому интересно, можете смотреть.
      [Часть 1]: Архитектура ядра SAMP || Основы программирования PAWN/PAWNO  -  *кликабельно*
      [Часть 2]: База мода, переменные, format() || Основы программирования PAWN/PAWNO  -  *кликабельно*
      Telegram канал  -  *кликабельно*
       
      Желаю всем приятного просмотра, а также успехов в обучении