Все темы
Операторы и управление потоком
Арифметика и целочисленное деление, переполнение, сравнения и логика, диапазоны, `if`, `switch` и циклы — что вычисляет программа и какая строка выполняется следующей.
Сортировка:
9 вопросов
JuniorТеорияЧастоЧто выведет программа?
JuniorТеорияЧасто
Что выведет программа?
out in
Открыть задачу →Типичные ошибки
- ✗Ждать
in in: считать, что..<включает верхнюю границу. В1..<5числа от 1 до 4, поэтомуcontains(5)даётfalse, и вaоказываетсяout. - ✗Ждать
out out, как в языках, где диапазон никогда не включает конец: в Swift закрытый диапазон1...5включает 5.
Уточняющие вопросы
- →Сколько чисел в
0..<5и какие это числа? - →Когда
..<удобнее, чем...?
JuniorТеорияЧастоЧто произойдёт при компиляции и запуске программы?
JuniorТеорияЧасто
Что произойдёт при компиляции и запуске программы?
Не скомпилируется
Открыть задачу →Типичные ошибки
- ✗Ждать
new mail, считая ненулевое число истиной, как в C или JavaScript. В Swift условие обязано иметь типBool; пишитеunread != 0. - ✗Ждать, что программа остановится только на строке с
if. Компилятор проверяет тип условия до запуска, поэтому не выполняется ничего.
Уточняющие вопросы
- →Как переписать условие, чтобы программа напечатала
new mail? - →Какие выражения могут стоять в условии
ifв Swift?
JuniorТеорияЧастоЧто выведет программа?
JuniorТеорияЧасто
Что выведет программа?
3 -1
Открыть задачу →Типичные ошибки
- ✗Ждать
3 2, как в математике: в Swift остаток берёт знак делимого.-7 / 3— это-2, а-2 * 3 + (-1)даёт-7, поэтому-7 % 3— это-1. - ✗Ждать
3.5: делениеIntнаIntотбрасывает дробную часть, поэтому7 / 2— это3. Дробь получается из чиселDouble, например7.0 / 2.
Уточняющие вопросы
- →Что выведет
print(-7 / 2)и почему не-4? - →Как получить
3.5из двух константInt, в которых лежат7и2?
JuniorТеорияЧастоЧто выведет программа?
JuniorТеорияЧасто
Что выведет программа?
2
Открыть задачу →Типичные ошибки
- ✗Ждать
6: считать, чтоbreakвсегда завершает только внутренний цикл. С меткойbreak outerзавершает и внешний цикл, поэтому второго прохода нет. - ✗Ждать
3: считать, чтоbreakдаёт доделать текущий проход. Он срабатывает сразу, иcount += 1под ним приj, равной3, не выполняется.
Уточняющие вопросы
- →Что выведет программа, если заменить
break outerна обычныйbreak? - →Что сделал бы
continue outerна том же месте?
JuniorТеорияЧастоЧто произойдёт при компиляции и запуске программы?
JuniorТеорияЧасто
Что произойдёт при компиляции и запуске программы?
Программа аварийно завершится
Открыть задачу →Типичные ошибки
- ✗Ждать
-128: так через край переходит только&+. Обычный+проверяет результат и аварийно завершает программу, если тот не помещается в тип. - ✗Ждать
127: Swift не урезает результат до предела типа. Сумма, которая не помещается вInt8, останавливает программу.
Уточняющие вопросы
- →Что выведет
print(level &+ 1)? - →Какой тип выбрать для
level, чтобы прибавление единицы здесь не завершало программу аварийно?
JuniorТеорияЧастоЧто выведет программа?
JuniorТеорияЧасто
Что выведет программа?
1
Открыть задачу →Типичные ошибки
- ✗Ждать
0: путатьrepeat-whileсwhile.repeatсначала выполняет тело и только потом проверяет условие, поэтому тело выполняется хотя бы раз. - ✗Ждать
6: читать цикл как «повторяй, пока не станетcount > 5». Цикл повторяется, пока условие истинно, а здесь оно ложно уже после первого прохода.
Уточняющие вопросы
- →Что выведет программа, если переписать цикл как
while count > 5 { count += 1 }? - →В каких задачах
repeat-whileподходит лучше, чемwhile?
JuniorТеорияЧастоЧто выведет программа?
JuniorТеорияЧасто
Что выведет программа?
1 3 5
Открыть задачу →Типичные ошибки
- ✗Ждать
1 3 5 7: путатьto:сthrough:. Сto:конец никогда не входит в ряд, поэтому цикл останавливается на5. - ✗Считать, что ряд начинается с
3: будто шаг делается ещё до первого числа. Рядstrideначинается с самогоfrom.
Уточняющие вопросы
- →Что напечатает цикл, если заменить
to: 7наthrough: 7? - →Как с помощью
strideсделать обратный отсчёт от 5 до 1?
JuniorТеорияЧастоЧто произойдёт при компиляции и запуске программы?
JuniorТеорияЧасто
Что произойдёт при компиляции и запуске программы?
Не скомпилируется
Открыть задачу →Типичные ошибки
- ✗Ждать
low, раз для текущего значения5ветка есть. Компилятор проверяет все возможныеInt, поэтомуswitchпо числу требуетdefault. - ✗Ждать аварийного завершения, только когда ни одна ветка не подошла. Недостающую ветку находит компилятор до запуска, а не программа во время работы.
Уточняющие вопросы
- →Что напечатает программа, если добавить в конец
default: print("other")? - →Почему
switchпоStringтоже требуетdefault?
JuniorТеорияЧастоЧто выведет программа (строки через пробел)?
JuniorТеорияЧасто
Что выведет программа (строки через пробел)?
4
Открыть задачу →Типичные ошибки
- ✗Ждать
4 3 2, как в C, где выполнение проваливается в ветки ниже. Ветка в Swift заканчивается сама; в следующую переводит толькоfallthrough. - ✗Ждать, что после подходящей ветки выполнится ещё и
default. Он срабатывает, только если значение не подошло ни под одинcase.
Уточняющие вопросы
- →Что напечатает программа, если добавить
fallthroughпослеprint(4)? - →Как сделать, чтобы одна ветка обрабатывала и
"B", и"C"?