Изучил типы коллекций, действия с массивами и словарями. Циклы for-in, while и repeat-while. Выполнил ещё несколько домашних заданий, вот одно из них:
/*
Задание 1
1.1 Пользователь открывает вклад (deposit) в банке на 5 лет на сумму 500 тыс. рублей. Процентная ставка годовых (rate) составляет 11%. Необходимо просчитать сумму дохода (profit) по окончании срока действия (period) вклада. Для решения данной задачи используйет цикл for-in. Примечание: сумма вклада увеличивается с каждым годом и процент нужно считать уже от увелеченной суммы.
1.2 Выведите результат на консоль в таком виде: "Сумма вклада через <... > лет увеличится на <...> и составит <...>"
*/
// ниже решение от меня
var deposit = 500000 // первоначальный объем вклада
var rate = deposit / 100 * 11 // ожидаемый доход в 11% годовых
var period = 5 // продолжительность вклада пять лет
var profit = 0 // первоначальный профит равен нулю потому что ещё не прошел первый год
for index in 1...5 { //
profit += index + rate //
}
var summary = deposit + profit
print("Сумма вклада через \(period) лет увеличится на \(profit) и составит \(summary)")
// Задание 2
//2.1 Создайте целочисленные переменные base и power с любым значениями на ваше усмотрение.
//2.2 При помощи цикла for in возведите переменную base в степень power и присвойте результат переменной гesult
//2.3 Выведите результат на консоль в следующем виде: «<...> в <...> степени равно <...>»
var base = 2
var power = 4
var result = 1
for _ in 1...4 {
result *= base
}
print("\(base) в \(power) степени равно \(result)")
Чувствую что каждый раз мне требуется время на то, чтобы загрузить полученные знания в разум и заставить их шевелиться для принятия решений по преобразованию человеческих формулировок из заданий в структуру кода. Этот процесс красив по своей сути, но мне бывает тяжело его начать. Думаю что со временем я обрету этот скил
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3❤2💩2
Часть заданий что я выполнил дали неверный результат, другая часть выполнена правильно, но другим способом. Я знал что так будет, потому что в момент преобразования условий написанных человеческим языком в код, я как будто шагаю в пустоту где нет геометрии пространства и времени. Я буквально создаю у себя в голове конструкцию, которой раньше не существовало. Это очень странное ощущение. Самое сложное это преобразовать задачу в код.
Исходя из полученного опыта добавлю ещё один тезис: мои знания подобны шестерёнкам, отделённым от потенциально работающего где-то в будущем механизма. Они безвольно плавают в среде подёргиваясь вот-вот совершить полный поворот вокруг своей оси, но этого всё время не происходит. Таких шестерёнок несколько, я представляю как они работают по отдельности, но не могу из них построить работающий механизм.
Это и понятно, по мере изучения языка я получаю все больше и больше инструментов, затем начинаю понимать как располагаются новые объекты в пробелах между двумя ранее изученными шестерёнками. В итоге это наводит на мысль что только когда я полностью изучу Swift, ООП, UIkit, паттерны проектирования, менеджеры зависимостей, git, docker, solid, agile и SwiftUI вот тогда пазл сложится, вот тогда станет "всё понятно"
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤1💩1🍌1
Я не жалуюсь, но рефлексирую. На этапе функций и closure мне стало сложно. Я решил сделать паузу в пару дней с просмотром альтернативных лекций из этого же источника. Информация там подаётся примерно по такому же roadmap и отличается версией языка на -1.
Начал изучать вопрос о прохождении структурированного материала с практикой на реальных проектах и мощной менторской поддержкой от Яндекс практимума. Это стоит 15.500/мес * 10 мес. Смотрю отзывы, вебинары создателей и собираю информацию. По умолчанию двигаюсь по ранее сформированному пути
Обновил macOs до 13.6.9, а Xcode до 15.2, нашёл несколько дополнительных приложений расширяющих функционал среды разработки. В appstore есть плагин "GPT code creator for Xcode", и судя по превью в нём можно прямо из закомментированного участка в среде, вызвать этот плагин и он сверстает нужный код по промту
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3💩1
Мне сложно дались задания на функции и замыкания, но блогер которого я смотрю говорит что подглядывать решения если плохо получается - нормально. Так я и делаю
Если решение не приходит два дня, то смотрю начало следующей лекции где куратор говорит что почти ни у кого не получилось и показывает "как надо "
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤2💩1
Я неделю решал задания из пятой лекции и всё-таки решил. Вот один из примеров и ход моих мыслей от «решить хоть как-то с нарушением условий» до «ладно, решу так»
Задание: cоздайте функцию, которая генерирует возрастающий массив чисел в интервале от X до Y. Интервал должен определять пользователь при вызове функции
Первое решение без функции и со строго заданными параметрами:
var massiveToGo = [Int]()
var index = 0
for index in 1...3 {
massiveToGo.append(index)
print(massiveToGo)
}
Второе решение, где надо было доработать функцию с выводом вариативных параметров без использования внутреннего диапазона 1...3:
func makeGreatArray(numberOne: Int, numberTwo: Int) {
var massiveToGo = [Int]()
var index = 0
for index in 1...3 {
massiveToGo.append(index)
print(massiveToGo)
}
makeGreatArray(numberOne: 1, numberTwo: 3)Третий вариант где функция создаёт массив, но с каждой итерацией в консоли появляется новый массив и их количество равно переменной которая должна задавать верхнюю границу диапазона, а по заданию (наверно) должен создаваться один массив:
func makeGreatArray(numberOne: Int, numberTwo: Int) {
var massiveToGo = [Int]()
var index = 0
while index < numberTwo {
index += numberOne
massiveToGo.append(index)
print(massiveToGo)
}
}
makeGreatArray(numberOne: 1, numberTwo: 3)Ошибка которую я не заметил: тут решение зависит от введённой единицы в переменной numberOne = 1, если диапазон начать с другого числа: то массив создаётся с шагом в это число:
func makeTwentyArray(numberOne: Int, numberTwo: Int) {
var massiveToGo = [Int]()
var index = 0
while index < numberTwo {
index += numberOne
massiveToGo.append(index)
}
if index == numberTwo {
print(massiveToGo)
}
}
makeTwentyArray(numberOne: 1, numberTwo: 20) // вот тут ошибкаЧетвёртый вариант: верное решение выводит массив с шагом в 1 из диапазона заданного пользователем, но массив начинается с числа которое больше заданного на единицу:
func makeGreatArray(numberOne: Int, numberTwo: Int) {
var massiveToGo = [Int]()
var index = numberOne
while index < numberTwo {
if index >= numberOne {
index += 1
massiveToGo.append(index)
}
}
if index == numberTwo {
print(massiveToGo)
} else {
print("Чтото пошло не так")
}
}
makeGreatArray(numberOne: 4, numberTwo: 27)Когда я смотрю разбор решения от преподавателя, то там почти всегда код выглядит элегантно и в несколько строчек. Этому можно научиться, необходимо приложить усердие, время и дисциплину
Верное решение от преподавателя выглядит так:
func createArray(from start: Int, to end: Int) -> [Int] {
var array = [Int]()
for count in start...end {
array.append(count)
}
return array
}
createArray(from: 2, to: 9)Как выяснилось: всё решаемо, стоит только приложить к интеллектуальному труду должный объём времени и почти всё получается
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍1💩1
Посмотрел и законспектировал в playground лекцию "ООП в Swift". Сказать что она сложная значит быть искренним на 20%. Я понял за три дня что такое классы, инкапсуляция, наследование, полиморфизм и где это применимо. Лишь благодаря постоянным пересмотрам небольших участков видео по два три раза вся информация уложилась как надо
Повторяю код из видео и комментирую то что говорит преподаватель. Я понимаю о чём он рассказывает, даже несмотря на сбивчивое объяснение с постоянными возвратами на предыдущие тезисы из-за тупых и излишних вопросов в чате (это запись вебинара). Еще преподаватель просто копипастит ранее написанный в лекции код который иллюстрировал предыдущую тему и использует его уже для объяснения другой. Просто оставляет все имена свойств, классов и методов как они были в предыдущей теме. А то что было написано ранее просто оборачивает в комментарий
/* some Swift code */
и компилятор не ругается, а я матерюсь вслух..
Приходится всё переименовывать и структурировать урок самостоятельно
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍2🐳1
Пишу код, запускаю и он работает. Пишу другой, запускаю, компилятор выдаёт ошибки. Долго думал в чём дело и оказалось что я некорректно понял суть задачи по созданию класса и переопределяемых методов в нём
Надо было просто оставить свойства и методы класса пустыми не вписывая формулы расчёта фигур в родительском классе, а оставить их в наследуемых объектах
Сейчас споткнулся на этапе создания интерфейса, который должен выводить результаты расчёта через print. Консоль Xcode пишет не цифры, а (function). Пойду погуляю на stack overflow, уверен на эту проблему уже есть решение
Ниже пример который я решил легко. Здесь наработан опыт создания класса, его свойств и методов:
import Cocoa
class Orange {
let color: String
let taste: String
let radiusOrange: Double
var orangeVolume: Double
init() {
color = "Orange"
taste = "sweet"
radiusOrange = 95
orangeVolume = 0
}
func calculateOrangeVolume () {
orangeVolume = 4/3 * Double.pi * pow(radiusOrange,3)
}
}
let someOrange = Orange()
print("Orange has \(someOrange.color) color and \(someOrange.taste) taste")
let orangeVolume = 4/3 * Double.pi * pow(someOrange.radiusOrange,3)
let calculate = Orange()
calculate.calculateOrangeVolume()
Со вторым и третьим заданием я пока разбираюсь. Хочу пройти этот путь самостоятельно, через понимание процесса. В любом случае всегда смогу подсмотреть верное решение в начале следующей лекции, но по возможности делать этого не буду
Please open Telegram to view this post
VIEW IN TELEGRAM
12👍4💩1
Я подсмотрел решение задачи о которую споткнулся. Буду так делать и далее если на этапе обучения начнутся трудности решить которые становится неоправданно сложно. Преподаватель показал изящный код (второй скриншот) по сравнению с которым, моё решение (первый скриншот) выглядит громоздко и не выводит результат работы метода класса на консоль, пишет (function)
Здесь показывать не буду потому что код не помещается в публикацию. Кому интересно посмотрят скриншоты. Задача была рассчитать параметры геометрических фигур используя переопределяемые методы (тк формулы для разных фигур разные) через наследование классов от общего "Figure" до узкоспециализированных типа "Ellipse". Суть я понял, но на практике применил свои знания частично
Я не сдаюсь, а обучаюсь паттернами поведения. Увеличиваю насмотренность вариантов работы с кодом. Именно так действуют успешные разработчики. Они не проламывают стену незнания своей головой, но ищут опыт и находят его таким же способом как я действую сейчас Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
12❤3💩1
12/40
Лето прощай. Первого августа 2024 я начал менять свою жизнь изучением Swift. Моя цель: обязательно стать ios разработчиком
Сегодня проходим перечисления и структуры:
и способы их использования в методах:
С каждым разом я всё больше и больше понимаю где применяются фрагменты раннее полученных знаний. Например switch был создан под enum. Без этих операторов ветвление в Swift (через if-else) выглядело бы очень громоздким
😍
😍
Лето прощай. Первого августа 2024 я начал менять свою жизнь изучением Swift. Моя цель: обязательно стать ios разработчиком
Сегодня проходим перечисления и структуры:
enum Weekday {
case monday // первый вариант написания перечисления
case tuesday // все перечисленные свойстыв имеют тип "Weekday"
case wednesday
case thuesday
case friday
case suterday
case sunday
}
и способы их использования в методах:
func setupAlarmTwo() {
switch weekday { // компиляторр теперь значет что "case" будем сравнивать с "weekday"
case .monday:
print("Установить будильник на 8 утра")
case .tuesday:
print("Установить будильник на 8:30 утра")
case .wednesday:
print("Установить будильник на 8:30 утра")
case .thuesday:
print("Установить будильник на 7:30 утра")
case .friday:
print("Ура пятница")
case .suterday:
print("Будильник не установлен")
case .sunday:
print("Будильник не установлен")
}
}С каждым разом я всё больше и больше понимаю где применяются фрагменты раннее полученных знаний. Например switch был создан под enum. Без этих операторов ветвление в Swift (через if-else) выглядело бы очень громоздким
Please open Telegram to view this post
VIEW IN TELEGRAM
5❤2💩1
13/40Решаю домашнее задание на перечисление
enum{} и структуры struct{}. Первое готово, остальные три предстоит либо сделать самостоятельно, либо подсмотреть в начале уже следующей лекцииСчитаю это нормальным, когда чувствую что вот именно сейчас пора
Начинаю понимать разработчиков которые внезапно выходят из своего уютного опенспейса (или дома) на прогулку в парк. Отдохнуть от работы, снять напряжение и возможно, совсем чуть-чуть: поплакать
ps: 23 октября 2024 я купил свой первый 16" Macbook pro на процессоре M1pro с 16Gb оперативной и 512Gb ssd памятиPlease open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍1💩1
14/40
У меня возникает ощущение что я вот вот сдамся. Почти закончил первый из трёх курсов от swiftbook 2019 года. Информация там устаревшая и преподаватель очень часто сбивается с мысли при объяснении материала, а также в разборе домашних заданий своих студентов
Мне очень не хватает коммюнити учеников, качественного кодревью и вообще фитбека от действующих ios разработчиков. Ощущение что я тут один декомпозирую каменную кладку стены что стоит между моим настоящим и тем человеком, которым я хочу стать. Чтобы перебраться на сторону интересного занятия которое приносит пользу людям, предстоит перетащить не один десяток тяжёлых блоков задач и проблем
Сейчас склоняюсь к мысли что всё таки приобрету курс от Яндекс практикума на десять месяцев тк отказываться от своей цели не планирую. Хотя моушен дизайн мне тоже очень интересен, но у меня есть только одна жизнь и бюджет только на одно решение. Видимо ближе к новому году его надо принять
😍
😍
У меня возникает ощущение что я вот вот сдамся. Почти закончил первый из трёх курсов от swiftbook 2019 года. Информация там устаревшая и преподаватель очень часто сбивается с мысли при объяснении материала, а также в разборе домашних заданий своих студентов
Мне очень не хватает коммюнити учеников, качественного кодревью и вообще фитбека от действующих ios разработчиков. Ощущение что я тут один декомпозирую каменную кладку стены что стоит между моим настоящим и тем человеком, которым я хочу стать. Чтобы перебраться на сторону интересного занятия которое приносит пользу людям, предстоит перетащить не один десяток тяжёлых блоков задач и проблем
Сейчас склоняюсь к мысли что всё таки приобрету курс от Яндекс практикума на десять месяцев тк отказываться от своей цели не планирую. Хотя моушен дизайн мне тоже очень интересен, но у меня есть только одна жизнь и бюджет только на одно решение. Видимо ближе к новому году его надо принять
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
13🫡3❤1💩1🙏1
15-я неделя
С этого момента я перестал ставить дедлайн в 40 недель до окончания своего обучения. Успешно закончил первый из трёх курсов 2019 года по программированию от Swiftbook . Весь ноябрь буду повторять материтал и конспекты в playground. Почти всё понятно, но мне по прежнему нужна ещё большая насмотренность кода и вариантов его применения
Сейчас готовлю план по выходу на платные курсы с фитбеком по результату работы на базе моей занятости в найме в декабре
😍
😍
С этого момента я перестал ставить дедлайн в 40 недель до окончания своего обучения. Успешно закончил первый из трёх курсов 2019 года по программированию от Swiftbook . Весь ноябрь буду повторять материтал и конспекты в playground. Почти всё понятно, но мне по прежнему нужна ещё большая насмотренность кода и вариантов его применения
Сейчас готовлю план по выходу на платные курсы с фитбеком по результату работы на базе моей занятости в найме в декабре
Please open Telegram to view this post
VIEW IN TELEGRAM
2👎9😢7🤔6🤬5👏4😁3🤯2🔥1🤮1


