При написании компьютерной программы, разработчик указывает компьютеру, что делать в различных сценариях. К примеру, приложение для калькулятора совершает одно действие при нажатии на кнопку «плюс», и совсем другое при нажатии на кнопку «минус».
В терминах компьютерного программирования данный концепт известен как порядок выполнения, или control flow. В следующих уроках вы узнаете, как принимать решения и повторять задачи в программах, используя синтаксис порядка выполнения. Вы также узнаете о булевых значениях, которые могут быть истинными (true) или ложными (false), и о том, как их можно использовать для сравнения данных.
Статьи для изучения:
Ключевые особенности порядка выполнения в Kotlin
- Для представления истинных и ложных значений используется булев тип данных
Boolean
; - Операторами сравнения, каждый из которых возвращает значение булева типа, являются:
123456Равно: `==`Не равно: `!=`Меньше, чем: `<`Больше, чем: `>`Меньше, чем, или равно: `<=`Больше, чем, или равно: `>=` - Для объединения условий сравнений можно использовать булеву логику вместе с операторами
&&
(И) и||
(ИЛИ); - Выражения
if
используются для принятия решений на основе условия и возвращения нужного значения; - Для увеличения вариативности процесса принятия решений, то есть использования более одного условия, внутри выражения
if
используютсяelse
иelse-if
; - Можно использовать выражение
if-else
в одну строчку, что сделает код более кратким и читабельным; - Замыкание гарантирует, что вычисляются только минимально необходимые части логического выражения;
- Переменные и константы относятся к определенной области видимости, за пределами которой их нельзя использовать. Область видимости наследует видимые переменные и константы от своего родителя;
- Циклы
while
позволяют выполнять определенную задачу несколько раз, пока не будет выполнено условие; - Оператор
break
используется для прерывания цикла.
Задания для проверки
1. Что не так со следующим кодом?
1 2 3 4 5 6 7 8 9 | val firstName = "Joe" if (firstName == "Howard") { val lastName = "Lucas" } else if (firstName == "Ray") { val lastName = "Wenderlich" } val fullName = firstName + " " + lastName |
2. Каким будет значение булевой константы answer
в каждом из следующих случаев?
1 2 3 4 | val answer1 = true && true val answer2 = false || false val answer3 = (true && 1 != 2) || (4 > 3 && 100 < 1) val answer4 = ((10 / 2) > 3) && ((10 % 2) == 0) |
3. Предположим, что клетки на шахматной доске пронумерованы слева направо, сверху вниз, где 0 — это верхний левый квадрат, а 63 — нижний правый квадрат. Строки пронумерованы сверху вниз от 0 до 7. Столбцы нумеруются слева направо от 0 до 7. Учитывая текущую позицию на шахматной доске, представленную в виде номера строки и столбца, вычислите следующую позицию, снова выраженную как номер строки и столбца. Порядок определяется нумерацией от 0 до 63. Позиция после 63 снова равна 0;
4. Даются коэффициенты a, b и c, вычислите решения квадратного уравнения с данными коэффициентами. Учитывайте разное количество решений (0, 1 или 2). Если вам нужно освежить в памяти математические формулы, вам поможет следующая статья в Википедии о квадратном уравнении: https://en.wikipedia.org/wiki/Quadratic_formula;
5. Дается месяц (представленный строкой String в нижнем регистре) и текущий год (представленный целым числом Int
), вычислите количество дней в месяце. Помните, что из-за високосного года в феврале 29 дней, когда год кратен 4, но не кратен 100. В феврале также 29 дней, когда год кратен 400;
6. Дается число типа Double
, определите, является ли это число степенью 2. Подсказка: вы можете использовать log2(number)
, чтобы найти логарифм number
по основанию 2. log2(number)
вернет целое число, если number
является степенью двойки. Вы также можете решить задачу, используя цикл без логарифма;
7. Выведите первые десять чисел во второй степени;
8. Дается число n
. Вычислите n-ое число Фибоначчи. Вспомним числа Фибоначчи 1, 1, 2, 3, 5, 8, 13 … Сначала складываются 1 и 1, потом их результат со следующим числом. Каждое следующее значение является суммой предыдущих двух. В данном случае следующем значением будет 8+3=21;
9. Дается число n
, посчитайте факториал n. Например: факториал числа 4 считается как 1*2*3*4;
10. Дается число между 2 и 12, рассчитайте шансы выпадения нечетного числа при броске двух шестигранных игральных костей. Вычислите его, полностью перебрав все комбинации и подсчитав долю результатов, которые дают это значение. Не используйте формулы.
Что дальше?
Приложения очень редко выполняются каждый раз одинаково. В зависимости от имеющихся данных или от пользовательского ввода, код должен будет выбрать правильный путь выполнения задачи. С помощью if
и else
можно заставить код принимать решения на основании данных условий.
В следующих уроках мы познакомимся с более сложными операторами порядка выполнения. Среди них будут дополнительные циклы наподобие while
, который мы уже изучили, и новая конструкция — выражение when
.