Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СЕССИЯ ОТВЕТЫ / iOS сессия ответы.docx
Скачиваний:
21
Добавлен:
25.12.2020
Размер:
14.45 Mб
Скачать

Оператор while

СИНТАКСИС

whileпроверяемое_выражение {

//тело оператора

}

  • проверяемое_выражение->Bool—выражение,приистинностикотороговы- полняется код из телаоператора.

Одновыполнениекодателаоператораназываетсяитерацией.Итерацииповторяются, покавыражениевозвращаетtrue.Егозначениепроверяетсяпередкаждойитерацией.

Рассмотрим пример использования оператора while.Произведем с его помощьюсложениевсехчиселот1до 10 (листинг13 .28) .

Листинг 13.28

// начальное значение var i = 1

// хранилище результата сложения varresultSum = 0

// цикл для подсчета суммы while i <= 10 {

resultSum += i i += 1

}

resultSum // 55

Переменная i является счетчиком в данном цикле.Основываясь на ее значении, оператором определяется необходимость выполнения кода в теле цикла.На каждой итерации и значение i увеличивается наединицу, и как только оно достигает 10, то условие, проверяемо еоператором, возвращает false, после чего происходит выход из цикла.

Оператор while— это цикл с предварительной проверкой условия, то есть вначале проверяется условие, а уже потом выполняется или не выполняется код тела оператора. Если условие вернет false уже при первой проверке, то код внутри оператора проигнорируется и не будет выполнен ни одного раза.

Оператор repeatwhile

Вот личие от while оператор repeatwhile является циклом спостпро- веркой условия. В таком цикле проверка значения выражения происходит в конце итерации.

СИНТАКСИС

repeat {

// тело оператора

} whileпроверяемое_выражение

  • проверяемое_выражение->Bool—выражение,приистинностикотороговы- полняется код из телаоператора.

Одно выполнение кода тела оператора называется итерацией. Итерации повторя- ются, пока выражение возвращает true. Его значение проверяется после каждой итерации, таким образом, тело оператора будет выполнено не менее одного раза.

Реализуемспомощьюданногооператорарассмотреннуюранеезадачу сложениячиселот1до10(листинг13 .29) .

Листинг 13.29

// начальное значение var y = 1

// хранилище результата сложения varresult = 0

// цикл для подсчета суммы repeat{

result += y y += 1

} while y <= 10 result // 55

Разница между операторами while и repeatwhile заключается в том, что код тела оператора repeatwhile выполняется не менее одного раза. То есть даже если условие при первой итерации и вернет false, код тела цикла к этому моменту уже будет выполнен.

  1. Оператор continue, break

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

Для оптимизации работы приложения, внутри которого происходит перебор с помощью цикла, можно использовать следующие приемы:

Выход из цикла

Из цикла  вы может выйти в любое время с помощью оператора break:

varfound = false

varcount = 0

foriteminarray {

ifitem == search {

found = true

count++

break }

}

Как только цикл найдет элемент item, который удовлетворяет условию поиска search, он изменит значение переменной found и увеличит значение счетчика count на 1. А после этого прекратит дальнейший перебор элементов массива array, использую оператор break. В итоге, если в массиве есть элемент, удовлетворяющий условиям поиска,  значениеcount будет равно 1, и более оно не изменится.  Вы нашли то, что вы искали и если  не имеет никакого смысла смотреть на другие объекты в этом массиве (которых могут быть сотни), вы используете break.

Существует также оператор continue, который работает отлично от break. Оператор не выходит из цикла, но сразу же переходит к следующей итерации (следующему шагу).

varfound = false

foriteminarray {

ifitem == search {

count++

continue

found = true

print("Found!")

}

}

В этом примере цикл переберет все элементы, и после его выполнения переменная count будет равна количеству элементов в массиве array, удовлетворяющих условию поиска search. Но переменная found никогда не примет значение true, и функция print() также не сработает. Как только исполнение программы дойдет до оператора continue, шаг цикла завершится, и начнется следующий шаг с новым элементом item.

Соседние файлы в папке СЕССИЯ ОТВЕТЫ