ГОСТ Р 54712―2011
6
while ( condition ) {
data_element
. . .
}
Если «истина», то группа элементов данных появляется в потоке дан-
ных. Это повторяется, пока условие не «ложь».
do {
data_element
. . .
} while ( condition )
Элемент данных всегда появляется по крайней мере один раз.
Элемент данных повторяется, пока условие не «ложь».
if ( condition) {
data_element
. . .
Если условие является «истина», то первая группа элементов данных
появляется в потоке данных.
}
else {
data_element
. . .
}
Если условие «истина» не сохраняется, то вторая группа элементов
данных появляется в потоке данных.
for (expr1; expr2; expr3) {
data_element
. . .
}
Expr1 является инициализирующим выражением цикла. Обычно оно
определяет начальное состояние счетчика. Expr2 является услови-
ем, определяющим проверку перед каждой итерацией цикла. Цикл
завершается, когда условие не является «истиной». Expr3 является
выражением, которое выполняется в конце каждой итерации цикла,
обычно оно инкрементирует счетчик.
В этом синтаксисе используется принятое в языке C соглашение о том, что переменная или вы-
ражение, возвращающие ненулевое значение, эквивалентны результату «истина».
Следует обратить внимание на наиболее распространенные варианты использования этой кон-
струкции:
for ( i = 0; i < n; i++) {
data_element
. . .
}
Группа элементов данных появляется n раз. Условия в пределах группы
элементов данных могут зависеть от значения переменной управления
циклом i, которая обнуляется при первом появлении, увеличивается
на 1 при втором появлении и т. д.
Группа элементов данных может содержать вложенные условные конструкции. Для компактности
скобки {} могут быть опущены, когда следует только один элемент данных.
data_element [ ]
Является массивом данных.
Число элементов массива зависит от контекста.
Является (n+1)-м элементом массива данных.
data_element [n]
data_element [m] [n]
Является элементом (m+1)-й строки (n+1)-го столбца двухмерного мас-
сива данных.
data_element [l] [m] [n]
Является (l+1), (m+1), (n+1)-м элементом трехмерного массива дан-
ных.
data_element [m…n]
Содержит биты массива data_element с m по n включительно.
Знание самого синтаксиса потока битов в разделах 4.1.3 и 4.2.5 не следует считать достаточным
для декодирования. В частности, это лишь определяет корректный и свободный от ошибок входной
поток битов. Для правильного начала декодирования реальные декодеры должны иметь средства об-
наружения стартовых последовательностей.
bytealigned()
Возвращает 1, если текущая позиция находится на границе байта, так
что следующий бит потока будет первым битом нового байта. В против-
ном случае функция возвращает 0.
nextbits()
Реализует сравнение строки битов со строкой битов на входе декодера.