Урок 3. Операторы в Swift
Главная / Уроки / Страница блока Основы / Урок 3. Операторы в Swift
1 Ноября 2022
Давайте начнем с самых простых операторов, которые вам точно знакомы.
Арифметические операторы
1. +
2. –
3. *
4. /
5. %
В школе на уроке математики вы все с ними сталкивались, кроме последнего, но об этом чуть позже.
Как мы их можем применить в программировании?
Создадим пару переменных с целочисленными значениями:
var quantityOfGoods = 20
var unitPrice = 500
Представим что наше приложение должно рассчитывать общую сумму купленных нами товаров за неделю. У нас есть количество товаров quantityOfGoods и цена за единицу товара unitPrice.
Теперь нам нужно посчитать общую сумму. Мы можем написать следующим образом:
var quantityOfGoods = 20
var unitPrice = 500
quantityOfGoods * unitPrice
// Первая неделя
var quantityOfGoods = 20
var unitPrice = 500
quantityOfGoods * unitPrice
// Вторая неделя
quantityOfGoods = 22
unitPrice = 400
quantityOfGoods * unitPrice
// Третья неделя
quantityOfGoods = 33
unitPrice = 300
quantityOfGoods * unitPrice
// Четвертая неделя
quantityOfGoods = 10
unitPrice = 700
quantityOfGoods * unitPrice
Не забываем, что компилятор читает код сверху вниз. Мы переопределяем свойства quantityOfGoods и unitPrace, после чего умножаем их. Таким образом нам не нужно для каждой недели создавать свойства для цены и для количества товара.

//Первая неделя
var quantityOfGoods = 20
var unitPrice = 500
let totalForFirstWeek = quantityOfGoods * unitPrice
// Вторая неделя
quantityOfGoods = 22
unitPrice = 400
let totalForSecondWeek = quantityOfGoods * unitPrice
//Третья неделя
quantityOfGoods = 33
unitPrice = 300
let totalForThirdWeek = quantityOfGoods * unitPrice
// Четвертая неделя
quantityOfGoods = 10
unitPrice = 700
let totalForFourthWeek = quantityOfGoods * unitPrice
//Первая неделя
var quantityOfGoods = 20
var unitPrice = 500
let totalForFirstWeek = quantityOfGoods * unitPrice
// Вторая неделя
quantityOfGoods = 22
unitPrice = 400
let totalForSecondWeek = quantityOfGoods * unitPrice
// Третья неделя
quantityOfGoods = 33
unitPrice = 300
let totalForThirdWeek = quantityOfGoods * unitPrice
// Четвертая неделя
quantityOfGoods = 10
unitPrice = 700
let totalForFourthWeek = quantityOfGoods * unitPrice
// Общий результат за месяц
let total = totalForFirstWeek + totalForSecondWeek + totalForThirdWeek + totalForFourthWeek

Кроме этих стандартных операторов существует еще один интересный оператор, который не встречается в математике. Это оператор остатка от деления. Он выглядит как проценты %. Давайте рассмотрим, как он работает на примере следующего выражения:
Для начала определим сколько троек входит в цифру 7:
Всё что не влезет в это значение и будет остатком. Давайте теперь найдем остаток от деления восьми на 3, что бы окончательно понять суть:
Таким образом, если мы будем находит остаток от деления девяти на три, то мы получим 0, потому что в девятке помещается три тройки без остатка.
Обычно этот оператор используют для нахождения четности числа. Давайте проверим является ли наше свойство total четным:
let total = totalForFirstWeek + totalForSecondWeek
+ totalForThirdWeek + totalForFourthWeek
let remainder = total % 2
Значение нашего свойства total является четным, потому что оно делится на два без остатка. Так же можно проверить кратное ли оно любому другому числу.
В Swift оператор остатка от деления работает как с положительными, так и с отрицательными числами. В том случае если total будет отрицательное, то остаток так же будет отрицательным, а если будет отрицательная двойка, то результат будет положительным. То есть выражение total % 2 и total % – 2, всегда будут выдавать одинаковый результат

Если делитель меньше делимого то вернется сам делитель:
В дальнейшем мы посмотрим как это можно использовать на практике.
Составные операторы присваивания
С оператором присваивания вы уже знакомы, и выглядит он как математический знак равно (=). Но не нужно его путать с математическим равно.
В отличии от математики, где этот оператор говорит о равенстве величин или выражает результат каких либо операций над величинами, в Swift этот оператор именно присваивает значение одного свойства другому.
Обратимся к примеру:
let numberOne = 4
var numberTwo = 6
numberTwo = numberOne
Это не значит, что numberTwo равно numberOne, это значит, что мы присваиваем значение numberOne для numberTwo. По факту мы переопределили, то есть изменили, значение у свойства numberTwo и оно теперь равно 4:
let numberOne = 4
var numberTwo = 6
numberTwo = numberOne
numberTwo = numberTwo + numberOne
Свойство numberTwo мы увеличиваем на значение numberOne, и такую запись можно сделать короче:
let numberOne = 4
var numberTwo = 6
numberTwo = numberOne
numberTwo += numberOne
numberTwo = numberOne
numberTwo += numberOne
numberTwo = numberTwo * numberOne
numberTwo *= numberOne
numberTwo = numberTwo / numberOne
numberTwo /= numberOne
numberTwo = numberTwo - numberOne
numberTwo -= numberOne
Свойство numberTwo в каждом вычислении принимает новое значение.
Лучше всегда отдавать предпочтение сокращенной версии записи, иначе запись a = a + b будет выдавать в вас дилетанта.

Операторы сравнения
Некоторые операторы вам так же знакомы из математики:
1. >
2. <
3. >=
4. <=
5. ==
6. !=
Операторы сравнения всегда возвращают true или false в зависимости от результата сравнения. Если результат сравнения верный, то возвращается значение true, иначе — false.
Давайте напишем следующий код:
numberOne
numberTwo
numberOne > numberTwo
numberOne < numberTwo
numberOne >= numberTwo
numberOne <= numberTwo
numberOne == numberTwo
numberOne != numberTwo
Первые две строчки, нам нужны что бы посмотреть результат после всех наших вычислений выше numberOne = 4 и numberTwo тоже 4.
Далее мы их сравниваем. И результатом этих сравнений будет либо true либо false, давайте запустим компилятор:
Думаю стоит остановится на последних двух выражениях. Двойное равно можно соотнести с математическим равно, то есть проверка на равенство, и в том случае если значения равны, то нам возвращается true. Что же касается знака !=, то это проверка на не равенство, и если значения не равны, то возвращается true, в нашем случае у нас две четверки, поэтому вернулось false.
Вы можете заметить что я сказала о возврате какого то значения, и действительно, все что мы видим справа это значения которые мы можем сохранить в памяти. соответсвенно, мы с вами можем результат наших выражений положить в свойства и потом где нибудь в коде использовать этот результат:
let firstProperty = numberOne > numberTwo
let secondProperty = numberOne < numberTwo
let thirdProperty = numberOne >= numberTwo
numberOne <= numberTwo
numberOne == numberTwo
numberOne != numberTwo
И так результат каждого выражения мы можем положить в какое либо свойство, в нашем случае мы положили в константу, потому что не планируем менять это значение.
Давайте посмотрим на тип данных этих свойств:
Логические операторы
Swift поддерживает три стандартных логических оператора:
1. ! – Логическое HE
2. && – Логическое И
3. || – Логическое ИЛИ
У нас есть свойство firstProperty, которое содержит в себе значение false, но бывают случаи, о которых мы будем разговаривать на следующих уроках, когда нам нужно изменить это значение на противоположное. Для этого нам достаточно поставить оператор НЕ перед данным свойством:
В таком случае наше свойство будет возвращать значение true, то есть мы как бы говорим НЕ false.

То что мы применили к свойству оператор ! не меняет его фактически:
Оно как было false так им и осталось.
Следующий оператор который мы рассмотрим это логическое И.
Оператор логического И (&&) записывается между двух операндов, грубо говоря между двух логических выражений:
!firstProperty
firstProperty && secondProperty
!firstProperty
firstProperty && secondProperty
numberOne <= numberTwo && numberOne == numberTwo
То есть слева и справа должно быть какое то логическое выражение. И выражение с использованием логического && возвращает true только в том случае если оба операнда возвращают true:
Проведем аналогию. Что бы получить права тебе нужно сдать и теорию И практику, без одного их этих условий не получится получить документы. То есть всегда должно выполнятся два условия, иначе вернется false.
Ну и последний оператор на сегодня логическое ИЛИ. Записывается так же как и логическое И между двух операндов и обозначается как две вертикальные черты: ||
!firstProperty
firstProperty && secondProperty
numberOne <= numberTwo && numberOne == numberTwo
secondProperty || thirdProperty
firstProperty || numberOne != numberTwo
Выражение с использованием логического || возвращает true в том случае если хотя бы один из операндов возвращает true:
Обратите внимание на синтаксис, перед оператором и после мы ставим пробел, строка вида numberOne+numberTwo будет считаться ошибкой.

Поддержите наш проект, и помогите изменить подход к обучению!


Развивайся вместе с нами
Поддержите наш проект, и помогите изменить подход к обучению!

Address List
Social Networks
Поддержите наш проект, и помогите изменить подход к обучению!

Social Networks