Урок 3. Операторы в Swift
30 Октября 2022
Задача 3.1
У вас должно получится 4 свойства, первые три содержат все необходимые данные, а последнее необходимые расчеты.
Давайте разработаем приложение, которое будет считать сколько месяцев нам понадобится что бы накопить нужную сумму.
Создайте свойство, которое будет хранить сумму накопления равную 3500. Далее посчитайте сколько нужно полных месяцев что бы накопить эту сумму, если в день мы кладем в копилку по 50 рублей. Пусть среднее количество дней в месяце будет 30.
let totalSum = 3500
let daysPerMonth = 30
let incomePerDay = 50
let numberOfMonth = (totalSum / incomePerDay) / daysPerMonth
Все свойства этого задания должны быть константами.
Обязательно нужно было создать свойства которые хранят количество дней в месяце и свойство для ежедневного дохода, если вы сделали следующим образом то это будет не корректно:
let totalSum = 3500
let numberOfMonth = (totalSum / 50) / 30
Если убрать контекст, то будет сложно понять откуда взялись эти значения 50 и 30
Так же твою программу в дальнейшем тяжело будет надстраивать и как то изменять. Предположим через два месяца ты возвращаешься к своему проекту и хочешь что бы в день в копилку клали по 150 рублей. В таком случае тебе придется разбираться в своем коде, и искать то значение, которое ты определил в качестве дохода за день, времени прошло много, поэтому ты можешь и не вспомнить что у тебя за логика там прописана. Мягко говоря, это будет не легкая задача, особенно если у тебя этих магических цифр вагон и маленькая тележка. Поэтому лучше всегда объявить свойство, от которого будут зависеть расчеты. Меняется свойство – меняется и конечный результат.
Большая ошибка будет написать следующим образом:
let totalSum = 3500
let daysPerMonth = 30
let incomePerDay = 50
(totalSum / incomePerDay) / daysPerMonth
Значения должны храниться в свойствах, что бы их можно было в дальнейшем как то использовать. Здесь же результат получен, но ни где не сохранен.
Задача 3.2
Необходимо создать четыре свойства, каждое из которых будет хранить отметку за четверть. Что бы найти среднее арифметическое, необходимо сложить все отметки за год, и разделить их на количество этих отметок.
У вас есть отметки ученика за четыре квартала. Определите какую отметку ученик получит за год.
Используйте только пройденные концепции урока.
let firstQuarter = 5
let secondQuarter = 4
let thirdQuarter = 4
let fourthQuarter = 3
let yearlyEstimate = (firstQuarter + secondQuarter + thirdQuarter + fourthQuarter) / 4
let yearlyEstimate = (5 + 4 + 4 + 3) / 4
Здесь снова магические цифры, если убрать контекст, проследить логику будет практически не возможно. Разработчик не должен гадать, ему должно быть все понятно с первого взгляда на код.
Ну и так тяжелее развивать программу, мы посчитали конкретного ученика, а если предположить что твоим приложением будет пользоваться весь класс, тогда под каждого ученика нужно ручками свои расчеты производить?! Алгоритм должен быть универсальным, меняешь свойства – меняется и расчет!
Задача 3.3
умножьте свойство на 20 используя при этом составной оператор присвоения *=
Создайте свойство с плавающей точкой и увеличьте его в 20 раз
var someDouble = 34.2
someDouble *= 20
Свойство является переменной, потому что мы на следующей строке его пере определяем. Тип явно прописывать не нужно:
var someDouble: Double = 34.2
someDouble = someDouble * 20
В первой строке компилятор видит значение с плавающей точкой 34.2 и по умолчанию задает для него тип Double, поэтому не нужно писать лишний код.
Во второй строке такая форма записи выдает в тебе дилетанта, все разработчики используют только короткую форму записи.
Так же будет ошибкой следующее решение:
var someDouble = 34.2
let someNumber = someDouble * 20
По условию мы должны увеличивать само свойство someDouble, а не создавать новое.
Ну и последний вариант решения, который хотелось бы затронуть:
let someDouble = 34.2
someDouble * 20
Задача 3.4
Необходимо создать свойство, которое будет хранить баллы абитуриента. Создайте еще два свойства, первое будет хранить результат сравнения, для сравнения используйте операторы сравнения, а второе проходной бал.
Давайте представим, что мы разрабатываем приложение для университета. Наше приложение будет проверять проходит абитуриент по балам или нет.
Создайте свойство для балов одного из абитуриентов, и инициализируйте его любым значением от 1 до 100.
Проверьте проходит ли абитуриент по балам на свою специальность. Для этого сделайте сравнение вашего свойства с проходным балом, который равен 80. Если вернется true то ученик поступил.
Используйте только пройденные концепции урока, ни каких условных конструкций здесь использовать не нужно.
let score = 67
let status = score > 80
Все два свойства являются константами.
Логическое выражение следовало присвоить новому свойству, чтобы в дальнейшем использовать его результат, потому что предполагается что мы на основе этих данных будем определять дальнейшие действия.
Так же обратите внимание на синтаксис, логические операторы разделяются пробелами с двух сторон!
Следующая запись не лучшее решение:
let score = 67
score > 80
var score = 67
score>80
Здесь целый список ошибок:
1.Свойство должно быть константой, мы его не изменяем.
2. Для логического выражения следует определить свойство
3. Ну и не забываем разделять логические операторы пробелами
Есть еще одно не верное решение связанное именно с логическим выражением:
let score = 67
let passingScore = 80
let status = score == passingScore
При таком условии абитуриент пройдет только если у него баллы равны 80, но что в таком случае делать ученику с 83 баллами и выше?!
Для значения 80 нет смысла создавать дополнительное свойство, в условии и так понятно что мы сравниваем именно баллы. Конечно бывают разные случаи и иногда такое свойство обосновано, но не в нашем случае.
Поддержите наш проект, и помогите изменить подход к обучению!
Развивайся вместе с нами
Social Networks