Продолжить 1с цикл: Циклы в 1С 8.3 на примерах

Содержание

Программирование BAS: Урок — Циклы

Встречаем новую трудовую неделю очередным выпуском обучающего урока.

Сегодня мы рассмотрим, что собой представляют

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

Циклы бывают нескольких видов.

Пока<Какое-то условие>Цикл

//Ваш исполняемый код

КонецЦикла;

Это самая простая конструкция. Условием может быть либо равенство, либо значение булево и т.д.

Например:

Запишем переменную перед началом цикла «Перем1» — она у нас будет выступать в роли ограничителя цикла.

Затем укажем в цикле условие «Перем1 <> 5», т.е. цикл будет выполняться пока наша переменная не примет значение число пять.

После этого (уже в цикле), сообщим значение нашей переменной и увеличим значение переменной на плюс один, перезаписывая переменную.

 

У циклов есть несколько основных операторов.

Прервать – прерывает полностью цикл. В указанной строке.

Продолжить – после попадания на эту строчку, платформа вернется в начало цикла. А все что после этой строки не будет выполнено.

 

Для каждого<имя переменной>ИЗ<Имя объекта для перебора>Цикл

//Ваш исполняемый код

КонецЦикла;

Такой цикл хорошо подходит для перебора строк таблицы значений и прочих универсальных коллекций, таких как массив или список значений. Давайте сделаем пример. Создадим таблицу значений, заполним ее несколькими строками и колонками и сообщим результат.

При таком цикле, переменная «Стр» записала в себя значение «СтрокаТаблицыЗначений». В этой переменной, через точку, можно обратиться к колонкам и их значениям.

Похож на предыдущий цикл. Имеет такую конструкцию:

Для <имя переменной> = <Выражение 1>

ПО<Выражение 2>Цикл

//Ваш исполняемый код

КонецЦикла;

Такой цикл менее распространён и служит для выполнения цикла по определенному количеству подходов, указанных в<Выражение 2>. Сделаем пример.

Нюанс этого цикла заключается в переменной «Перем1», которую мы определяем и задаем ей значение в первой части конструкции цикла. «Перем1» в начале цикла равна единице, но с каждой итерацией (прохождение полного цикла) эта переменная будет расти на плюс один автоматически. Если вернутся, к примеру цикла «Пока», то там мы самостоятельно записывали переменную, тут же цикл делает это автоматически.

Более подробно с циклами можно ознакомиться на наших курсах программирования BAS и онлайн программирования BAS

Так же, наша компания проводит обучение по курсам:

  • Авторские курсы BAS
  • Онлайн курсы BAS

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

Если у вас остались вопросы, Вы всегда можете обратиться к нашим аналитикам по телефонам:
(093) 090-70-20
(095) 090-70-20
(068) 090-70-20

Переводим синтаксис 1С на английский язык / Хабр

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

Опытный программист сразу увидит определенные знакомые конструкции (условия, циклы, вызовы функций), но многие моменты в коде все равно будут непонятными и непривычными. А уж если код был написан программистом с даром красивого именования переменных и функций, то процесс первого знакомства с 1С обещает быть еще более ярким. Впрочем, последнее справедливо не только для 1С.

Пример кода от любителя красивого синтаксиса

Сейчас процесс перевода 1С на английский язык идет полным ходом. К существующим ранее решениям (таким как 1C:Drive) недавно добавился 1С:ERP World Edition, а разработка на английском языке (более привычном и понятном для многих начинающих или не связанных с 1С программистов) стала еще более актуальной.

Как же человеку, уже прикипевшему к русскому языку в коде и / или со знаниями английского на уровне «London is the capital of Great Britain… Microsoft…Coca-Cola…Ok» быстро перестроиться на кодирование на английском языке?

Есть несколько способов:

1.      Первое и самое банальное – подтянуть знания английского языка. Даже если удастся запомнить, как писать все нужные конструкции, названия объектов и переменных все равно желательно давать понятными англоговорящему кодеру. И чтобы не сидеть все время в обнимку с гугл-переводчиком, лучше потратить некоторое время на освоение нового языка, благо ресурсов сейчас для этого предостаточно.

Вот пример кода, как не нужно делать:

2.     Второй способ – открыть любую типовую конфигурацию и искать название на английском нужной конструкции с помощью синтаксис-помощника. Как правило, там это название будет приведено подобным образом:

Пример типовой конфигурации

3.     Ну и третий способ – воспользоваться материалом данной статьи, где я приведу примеры наиболее популярных конструкций в стандартном виде и их аналогов на английском языке.

Поехали!

Условный оператор:

Если … Тогда

ИначеЕсли … Тогда

Иначе

КонецЕсли;

If … Then

ElsIf … Then

Else

EndIf;

 

Циклы:

Для Счетчик = 1 По 10 Цикл

КонецЦикла;

For Counter = 1 To 10 Do

EndDo;

Для Каждого … Из … Цикл

КонецЦикла;

For Each … In … Do

EndDo;

Пока … Цикл

КонецЦикла;

While … Do

EndDo;

 

Инструкции препроцессора и директивы компиляции:

#Область
#КонецОбласти

#Region
#EndRegion

Клиент

Client

Сервер

Server

МобильноеПриложениеКлиент

MobileAppClient

МобильноеПриложениеСервер

MobileAppServer

ТолстыйКлиентОбычноеПриложение

ThickClientOrdinaryApplication

ТолстыйКлиентУправляемоеПриложение

ThickClientManagedApplication

ВнешнееСоединение

ExternalConnection

ТонкийКлиент

ThinClient

ВебКлиент

WebClient

&НаКлиенте

&НаСервере

&НаСервереБезКонтекста

&НаКлиентеНаСервереБезКонтекста

&AtClient

&AtServer

&AtServerNoContext

&AtClientAtServerNoContext

Логические и вспомогательные операторы:

И

Или

Не

And

Or

Not

Продолжить

Continue

Прервать

Break

Возврат

Return

Экспорт

Export

Знач

Val

Новый

New

Перем

Var

ВызватьИсключение

Raise

 

Попытка / исключение:

Попытка

Исключение

КонецПопытки;

Try

Except

EndTry;

  

Работа с транзакциями:

НачатьТранзакцию

BeginTransaction

ОтменитьТранзакцию

RollbackTransaction

ЗафиксироватьТранзакцию

CommitTransaction

ТранзакцияАктивна

TransactionActive

 

Функции / процедуры:

Функция

КонецФункции

Function

EndFunction

Процедура

КонецПроцедуры

Procedure

EndProcedure

 

Популярные конструкторы:

Массив

Array

Структура

Structure

Соответствие

Map

СписокЗначений

ValueList

ТаблицаЗначений

ValueTable

ДеревоЗначений (Строки, Колонки)

ValueTree (Rows, Columns)

Запрос

Query

МенеджерВременныхТаблиц

TempTablesManager

ТабличныйДокумент

SpreadsheetDocument

ТекстовыйДокумент

TextDocument

FTPСоединение

HTTPСоединение

FTPConnection

HTTPConnection

COMОбъект

COMObject

WSПрокси

WSProxy

БлокировкаДанных

DataLock

Граница

Boundary

ДвоичныеДанные

BinaryData

Диаграмма

Chart

ДиаграммаГанта

GanttChart

ДиалогВыбораФайла

FileDialog

ДокументDOM

ДокументHTML

DOMDocument

HTMLDocument

ЗаписьDOM, ЗаписьJSON, …

DOMWriter, JSONWriter, …

ЧтениеHTML, ЧтениеJSON, …

HTMLReader, JSONReader, …

ИнтернетПочтовоеСообщение

InternetMailMessage

Картинка

Picture

КвалификаторыДаты, КвалификаторыЧисла, …

DateQualifiers, NumberQualifiers, …

КоллекцияДвижений

RegisterRecordsCollection

КомпоновщикМакетаКомпоновкиДанных

DataCompositionTemplateComposer

КомпоновщикНастроекКомпоновкиДанных

DataCompositionSettingsComposer

МакетКомпоновкиДанных

DataCompositionTemplate

МоментВремени

PointInTime

ОписаниеОповещения

NotifyDescription

ОписаниеТипов

TypeDescription

ОтборКомпоновкиДанных

DataCompositionFilter

ПараметрКомпоновкиДанных

DataCompositionParameter

ПолеКомпоновкиДанных

DataCompositionField

ПараметрыЗаписиJSON

JSONWriterSettings

ПараметрыЗаписиXML

ПараметрыЧтенияXML

XMLWriterSettings

XMLReaderSettings

ПочтовоеСообщение

MailMessage

ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений

DataCompositionResultValueCollectionOutputProcessor

ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент

DataCompositionResultSpreadsheetDocumentOutputProcessor

ПроцессорКомпоновкиДанных

DataCompositionProcessor

РеквизитФормы

FormAttribute

СериализаторXDTO

XDTOSerializer

ФабрикаXDTO

XDTOFactory

СообщениеПользователю

UserMessage

СхемаКомпоновкиДанных

DataCompositionSchema

Файл

File

ХранилищеЗначения

ValueStorage

Цвет

Color

Шрифт

Font

УникальныйИдентификатор

UUID

 

Популярные методы объектов:

Выполнить

Execute

ВыполнитьПакет

ExecuteBatch

УстановитьПараметр

SetParameter

Выбрать

Select

СоздатьНаборЗаписей

CreateRecordSet

Прочитать

Read

Вставить

Insert

Выгрузить

Unload

Загрузить

Load

Добавить

Add

Записать

Write

Заполнить

Fill

Итог

Total

Количество

Count

Метаданные

MetaData

Очистить

Clear

Получить

Get

ПроверитьЗаполнение

CheckFilling

Удалить

Delete

Переместить

Move

Найти

Find

НайтиСтроки

FindRows

Сортировать

Sort

Скопировать

Copy

ПолучитьМакет

GetTemplate

ПолучитьОбласть

GetArea

СрезПервых, СрезПоследних

SliceFirst, SliceLast

НайтиПоНаименованию

FindByDescription

НайтиПоКоду

FindByCode

НайтиПоРеквизиту

FindByAttribute

 

Популярные функции и процедуры глобального контекста:

НачалоДня, НачалоМесяца, …

BegOfDay, BegOfMonth, …

КонецДня, КонецМесяца, …

EndOfDay, EndOfMonth, …

ОписаниеОшибки

ErrorDescription

ФоновыеЗадания

BackgroundJobs

ПолучитьИзВременногоХранилища

GetFromTempStorage

ТекущаяДата

CurrentDate

ТекущаяДатаСеанса

CurrentSessionDate

Дата

Date

ПоказатьВводДаты, ПоказатьВводСтроки, …

ShowInputDate, ShowInputString, …

ПоказатьВопрос

ShowQueryBox

ПоказатьЗначение

ShowValue

ТипЗнч

TypeOf

Тип

Type

Вычислить

Eval

Формат

Format

ЗаполнитьЗначенияСвойств

FillPropertyValues

ПолучитьОбщуюФорму

GetCommonForm

ПолучитьОбщийМакет

GetCommonTemplate

ПолучитьФорму

GetForm

ОткрытьФорму

OpenForm

РольДоступна

IsInRole

ПустаяСтрока

IsBlankString

Лев, Прав, Сред

Left, Right, Mid

Мин, Макс

Min, Max

Оповестить, ОповеститьОВыборе

Notify, NotifyChanged

ПредопределенноеЗначение

PredefinedValue

УстановитьПривилегированныйРежим

SetPrivilegedMode

ПрочитатьJSON, ПрочитатьXML

ReadJSON, ReadXML

Окр

Round

СтрДлина, СтрЗаменить, СтрНайти, …

StrLen, StrReplace, StrFind, …

ВРег, НРег

Upper, Lower

ЗначениеЗаполнено

ValueIsFilled

 

Популярные системные перечисления:

ВариантЗаписиДатыJSON

JSONDateWritingVariant

ВариантСтандартногоПериода

StandardPeriodVariant

ВидГраницы

BoundaryType

ВидГруппыФормы

FormGroupType

ВидДвиженияБухгалтерии

AccountingRecordType

ВидДвиженияНакопления

AccumulationRecordType

ВидКнопкиФормы

FormButtonType

ВидПоляФормы

FormFieldType

ВидСравнения

ComparisonType

ВидСравненияКомпоновкиДанных

DataCompositionComparisonType

ДопустимаяДлина

AllowedLength

ДопустимыйЗнак

AllowedSign

ДоступКФайлу

FileAccess

КодВозвратаДиалога

DialogReturnCode

КодировкаИменФайловВZipФайле

FileNamesEncodingInZipFile

КодировкаТекста

TextEncoding

МетодСжатияZIP

ZIPCompressionMethod

МетодШифрованияZIP

ZIPEncryptionMethod

ОбходРезультатаЗапроса

QueryResultIteration

ПротоколИнтернетПочты

InternetMailProtocol

РежимБлокировкиДанных

DataLockMode

РежимДиалогаВопрос

QuestionDialogMode

РежимДиалогаВыбораФайла

FileDialogMode

РежимЗаписиДокумента

DocumentWriteMode

РежимПроведенияДокумента

DocumentPostingMode

РежимОкругления

RoundMode

РежимСохраненияПутейZIP

ZIPStorePathMode

РежимУправленияБлокировкойДанных

DataLockControlMode

Символы

Chars

СостояниеФоновогоЗадания

BackgroundJobState

СпособSMTPАутентификации

SMTPAuthenticationMode

СпособPOP3Аутентификации

POP3AuthenticationMode

ТипВнешнейКомпоненты

AddInType

ТипГруппыЭлементовОтбораКомпоновкиДанных

DataCompositionFilterItemsGroupType

ТипЗначенияJSON

JSONValueType

ТипТекстаПочтовогоСообщения

InternetMailTextType

ТипУзлаDOM

DOMNodeType

ТипУзлаXML

XMLNodeType

ТипФайлаТабличногоДокумента

SpreadsheetDocumentFileType

ТипФайлаФорматированногоДокумента

FormattedDocumentFileType

УровеньЖурналаРегистрации

EventLogLevel

ЧастиДаты

DateFractions

Популярные объекты метаданных, упоминаемые в коде:

Справочники

Catalogs

Документы

Documents

РегистрыСведений

InformationRegisters

РегистрыНакопления

AccumulationRegisters

РегистрыБухралтерии

AccountingRegisters

РегистрыРасчета

CalculationRegisters

ПланыВидовХарактеристик

ChartsOfCharacteristicTypes

ПланыСчетов

ChartsOfAccounts

ПланыВидовРасчета

ChartsOfCalculationTypes

Перечисления

Enums

Константы

Constants

(Внешние) Обработки

(External) DataProcessors

(Внешние) Отчеты

(External) Reports

РегламентныеЗадания

ScheduledJobs

ПланыОбмена

ExchangePlans

ПараметрыСеанса

SessionParameters

ВнешниеИсточникиДанных

ExternalDataSources

Популярные функции в языке запросов:

ДОБАВИТЬКДАТЕ

DATEADD

РАЗНОСТЬДАТ

DATEDIFF

НАЧАЛОПЕРИОДА, КОНЕЦПЕРИОДА

BEGINOFPERIOD, ENDOFPERIOD

КОЛИЧЕСТВО(РАЗЛИЧНЫЕ)

COUNT(DISTINC)

ЗНАЧЕНИЕ

VALUE

ТИП

TYPE

ЕСТЬNULL

ISNULL

ПРЕДСТАВЛЕНИЕ

PRESENTATION

ПРЕДСТАВЛЕНИЕССЫЛКИ

REFPRESENTATION

ТИПЗНАЧЕНИЯ

VALUETYPE

В (ИЕРАРХИИ)

IN (HIERARCHY)

ДАТАВРЕМЯ

DATETIME

ПОДОБНО

LIKE

МЕЖДУ … И …

BETWEEN … AND …

ВЫРАЗИТЬ

CAST

ВЫБОР

            КОГДА

                        ТОГДА

            ИНАЧЕ

КОНЕЦ

CASE

            WHEN

                        THEN

            ELSE

END

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

C++ Перерыв и продолжение

❮ Назад Далее ❯


C++ Break

Вы уже видели оператор break , используемый в предыдущей главе этого руководства. Он использовался для «выпрыгивания» из оператора switch .

Оператор break можно также использовать для выхода из петля .

Этот пример выходит из цикла, когда i равно 4:

Пример

for (int i = 0; i < 10; i++) {
  если (я == 4) {
ломать;
  }
  cout << i << "\n";
}

Попробуйте сами »


C++ Continue

Оператор continue прерывает одну итерацию (в цикле), если выполняется указанное условие, и продолжает следующую итерацию в цикле.

В этом примере пропускается значение 4:

Пример

for (int i = 0; i < 10; i++) {
  if (i == 4) {
Продолжать;
  }
  cout << i << "\n";
}

Попробуйте сами »



Прервать и продолжить в цикле While

Вы также можете использовать break и continue в циклах while:

4 Break Пример


в то время как (i < 10) {
  cout << i << "\n";
  я++;
  if (i == 4) {
    break;
}
}

Попробуйте сами »

Продолжить Пример

инт я = 0;
в то время как (i < 10) {
  if (i == 4) {
    i++;
    продолжить;
  }
  cout << i << "\n";
  я++;
}

Попробуйте сами »


Упражнения C++

Проверьте себя с помощью упражнений

Упражнение:

Остановить цикл, если i равно 5:

для (целое я = 0; я < 10; я ++) {
  если (я == 5) {
    ;
  }
  cout << i << "\n";
}
 

Начать упражнение

❮ Предыдущий Следующий ❯


ВЫБОР ЦВЕТА



Лучшие учебники
Учебник по HTML
Учебник по CSS
Учебник по JavaScript
Учебник How To
Учебник по SQL
Учебник по Python
Учебник по W3. CSS
Учебник по Bootstrap
Учебник по PHP
Учебник по Java
Учебник по C++
Учебник по jQuery

9003 900 Справочник по HTML
Справочник по CSS
Справочник по JavaScript
Справочник по SQL
Справочник по Python
Справочник по W3.CSS
Справочник по Bootstrap
Справочник по PHP
Цвета HTML
Справочник по Java
Справочник по Angular
Справочник по jQuery

Основные примеры
Примеры HTML
Примеры CSS
Примеры JavaScript
Примеры инструкций
Примеры SQL
Примеры Python
Примеры W3.CSS
Примеры Bootstrap
Примеры PHP
Примеры Java
Примеры XML
Примеры jQuery

3

О

W3Schools оптимизирован для обучения и обучения. Примеры могут быть упрощены для улучшения чтения и обучения. Учебники, ссылки и примеры постоянно пересматриваются, чтобы избежать ошибок, но мы не можем гарантировать полную правильность всего содержания. Используя W3Schools, вы соглашаетесь прочитать и принять наши условия использования, куки-файлы и политика конфиденциальности.

Copyright 1999-2022 Refsnes Data. Все права защищены.
W3Schools использует W3.CSS.

Проверка одного цикла. Посмотрите на этот классный алгоритм, который я запустил… | Мэри Рэйчел Коенке

Посмотрите на классный алгоритм, с которым я столкнулся на AlgoExpert. Мне нравится кажущаяся простота задачи, но в то же время необходимость ее тщательного продумывания со всеми ее пограничными случаями, чтобы иметь возможность успешно ее решить. Чтобы решить ее оптимально, вы должны мыслить нестандартно.

Вот задача:

Вам дан массив целых чисел, где каждое целое число представляет скачок своего значения в массиве. Например, целое число 2 представляет собой переход на два индекса вперед в массиве; целое число -3 представляет собой переход на три индекса назад в массиве.

Если прыжок выходит за пределы массива, он переходит на другую сторону. Например, скачок на -1 по индексу 0 приводит нас к последнему индексу в массиве. Точно так же скачок на 1 по предыдущему индексу в массиве приводит к индексу 0.

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

На первый взгляд все не так уж и сложно. Оптимальная временная сложность — O(n), а оптимальное пространство — O(1). Этот факт немного усложняет задачу, но давайте посмотрим на проблемы по мере их возникновения.

Рассмотрим простой массив [2, 2, -1]. Проблема говорит, что мы можем начать с любого индекса, поэтому мы выберем 0. Значение в массиве [0] равно 2, поэтому мы переместимся на два пробела вперед, отмеченные синим цветом.

Мы посетили массив[0] и теперь массив[2], которые отмечены зеленым цветом.

Переходим на одну позицию назад и посещаем массив[1]. Осталось только вернуться к индексу, с которого мы начали. Так как array[1] имеет значение 2, мы перепрыгиваем на два пробела вперед. Поскольку это выходит за пределы массива, мы возвращаемся к началу и заканчиваем массив [0].

Поскольку мы начали и закончили в массиве [0] и посетили каждый элемент ровно один раз, это один цикл. Достаточно просто.

Давайте посмотрим на тот, который не является одним циклом.

В этом случае мы будем прыгать туда-сюда от массива [0] к массиву [1] и никогда не будем посещать массив [2]. Ни одного цикла. Есть смысл?

Мы могли бы создать массив для отслеживания количества посещений каждого элемента в качестве значения, и если есть ноль или любое число, отличное от 1, это не будет один цикл. Хотя это будет работать, это не будет в пространстве O (1) и, следовательно, не оптимально. Итак, что еще мы можем сделать?

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

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

Учитывая это, нам нужно отслеживать три условия.

  1. Нам нужно посетить n количество элементов, где n = array.length
  2. Если после того, как мы посетили каждый элемент, мы не вернулись в исходную точку, у нас проблема
  3. Если у нас есть посетили более одного элемента, и еще не посетили все остальные элементы ( 1 ), и мы снова оказываемся в исходной точке, у нас проблема

С помощью этого решения мы стремимся к O(n) временной сложности, потому что либо мы посещаем каждый элемент входного массива один раз, либо замыкаемся до этого, потому что данные не соответствуют критериям. Сложность пространства будет O(1), потому что мы не создаем никаких дополнительных массивов или структур, которые зависят от размера ввода, только некоторые переменные для отслеживания условий.

Работая в JavaScript, мы начинаем с написания алгоритма, объявляя переменные для отслеживания количества посещенных нами элементов и текущего индекса, который мы посещаем, и инициализируем их равными нулю.

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

Итак, что нам нужно сделать в цикле? По мере выполнения цикла нам нужно увеличивать количество посещенных элементов, выяснять, какой индекс нам нужно посетить следующим, и выяснять, закончим ли мы на индексе, с которого начали. Мы можем сделать большую часть этого легко, а затем абстрагировать поиск следующего индекса во вспомогательный метод и передать текущий индекс и массив в качестве аргументов.

Итак, найти следующий индекс — самая сложная часть. Мы должны найти, насколько далеко вперед или назад нам нужно двигаться, и обработать некоторые крайние случаи. Мы можем начать с объявления переменной, которая находит значение по текущему индексу, потому что это говорит нам, куда нам нужно двигаться дальше. Затем мы можем объявить другую переменную, которая добавляет «скачок» к текущему индексу, чтобы найти следующий индекс.

Отлично! … но подождите … нам нужно иметь возможность вернуться назад и начать с начала, чтобы продолжить, если мы достигнем конца массива, или вернуться к концу, если мы достигнем начала при переходе к следующему индексу. Итак, если мой array.length равно 5, и я на 4-м индексе, а значение равно 5, я бы вышел за пределы. Так что мы можем сделать?

Самый простой способ решить эту проблему — использовать оператор по модулю. Мы можем найти остаток от currentIndex + скачок , деленный на длину массива. Этот остаток всегда будет давать нам именно то, что нам нужно, даже если значение зацикливает нас на массиве миллион раз.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *