From ca9606599e8f0a25840139c8f81bd3b37a396677 Mon Sep 17 00:00:00 2001 From: Konstantin Date: Thu, 4 Jun 2020 16:02:21 +0300 Subject: [PATCH 1/4] update --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 7415f74..6382685 100644 --- a/README.md +++ b/README.md @@ -1 +1,2 @@ -# swiftFirstLesson \ No newline at end of file +# swiftFirstLesson +add 6-l From 604ea6bfe295a98d90b780cd3604c87f05673015 Mon Sep 17 00:00:00 2001 From: Konstantin Date: Sun, 7 Jun 2020 15:24:30 +0300 Subject: [PATCH 2/4] Delete 5-lesson --- .../Contents.swift | 204 ------------------ .../contents.xcplayground | 4 - 2 files changed, 208 deletions(-) delete mode 100644 5l_ChukarkovKonstantin.playground/Contents.swift delete mode 100644 5l_ChukarkovKonstantin.playground/contents.xcplayground diff --git a/5l_ChukarkovKonstantin.playground/Contents.swift b/5l_ChukarkovKonstantin.playground/Contents.swift deleted file mode 100644 index f95aa9e..0000000 --- a/5l_ChukarkovKonstantin.playground/Contents.swift +++ /dev/null @@ -1,204 +0,0 @@ -import UIKit - -enum ChangeIgnition: String { - case start = "запущен" - case stop = "заглушен" -} - -enum ChangeWidows: String { - case open = "открыты" - case close = "закрыты" -} - - -protocol Car { - - - var model: String { get set } - var age: Int { get set } - var ignition: ChangeIgnition { get set } - var windows: ChangeWidows { get set } - - mutating func changeIgnition() - mutating func changeWidows() -} - - -extension Car { - - - - mutating func changeIgnition(properties: ChangeIgnition) { - switch properties { - case .start: self.ignition = .start - print("У \(self.model) двигатель \(self.ignition.rawValue)") - case .stop: self.ignition = .stop - print("У \(self.model) двигатель \(self.ignition.rawValue)") - } - } - - mutating func changeWidows(properties: ChangeWidows) { - switch properties { - case .open: self.windows = .open - print("У \(self.model) окна \(self.windows.rawValue)") - case .close: self.windows = .close - print("У \(self.model) окна \(self.windows.rawValue)") - } - } -} - -class TrunkCar: Car { - - func changeWidows() { - } - - func changeIgnition() { - } - - - var model: String = "" - var age: Int = 0 - var ignition: ChangeIgnition = .stop - var windows: ChangeWidows = .close - - enum TypeCar: String { - case sport = "Спортивной" - case truck = "Грузовой" - } - - - let type: TypeCar = .truck - - var bootVolume: Int - - - init(model: String, age: Int, bootVolume: Int) { - self.bootVolume = bootVolume - self.model = model - self.age = age - } - - var trunkVolume: Int = 0 - - enum ChangeTrunkStatus { - case load - case upload - } - - func changeTrunkVolume(act: ChangeTrunkStatus,trunkVolume: Int) { - switch act { - case .load: - self.trunkVolume += trunkVolume - if self.trunkVolume > self.bootVolume { - let unnecessary = self.trunkVolume - self.bootVolume - self.trunkVolume = self.bootVolume - print("Ошибка, слишком большой объем пытаетесь загрузить. Объем багажа \(self.model) заполнен на максимум: \(self.trunkVolume)/\(self.bootVolume) и осталось незагруженно: \(unnecessary)") - } - else { - print("Погрузка в \(self.model) прошла успешна, багажник заполнен на \(self.trunkVolume) из \(self.bootVolume)") - } - case .upload: - self.trunkVolume -= trunkVolume - if self.trunkVolume < 0 { - self.trunkVolume += trunkVolume - print("Ошибка, из \(self.model) невозможно выгрузить \(trunkVolume) литров, там всего \(self.trunkVolume) литров") - } - else { - print("Выгрузка из \(self.model) прошла успешна, багажник заполнен на \(self.trunkVolume) из \(self.bootVolume)") - } - } - } - -} - -extension TrunkCar: CustomStringConvertible { - var description: String { - return "Марка \(self.type.rawValue) машины: \(self.model), год выпуска: \(self.age), объем багажника: \(self.trunkVolume)/\(self.bootVolume) литров, двигатель \(self.ignition.rawValue), окна \(self.windows.rawValue)" - } -} - - -class SportCar: Car { - func changeWidows() { - } - - func changeIgnition() { - } - - enum TypeCar: String { - case sport = "Спортивной" - case truck = "Грузовой" - } - - var model: String = "" - var age: Int = 0 - var ignition: ChangeIgnition = .stop - var windows: ChangeWidows = .close - - let type: TypeCar = .sport - - var topNitro: Int - - var nitro: Int = 0 - - init(model: String, age: Int, topNitro: Int) { - self.topNitro = topNitro - self.nitro = topNitro - self.model = model - self.age = age - } - - - enum ChangeNitro { - case refill - case use - } - - func changeNitro(act: ChangeNitro, nitro: Int) { - switch act { - case .refill: - self.nitro += nitro - if self.nitro > self.topNitro { - let unnecessary = self.nitro - self.topNitro - self.nitro = self.topNitro - print("Ошибка, слишком большой объем пытаетесь загрузить. Бак нитро \(self.model) заполнен на максимум: \(self.nitro)/\(self.topNitro) литров, и осталось незагруженно: \(unnecessary)") - } - else { - print("Добавка нитро в \(self.model) прошла успешна, бак нитро заполнен на \(self.nitro) из \(self.topNitro)") - } - case .use: - self.nitro -= nitro - if self.nitro < 0 { - self.nitro += nitro - print("Ошибка, \(self.model) не может использовать \(nitro) литров, там всего \(self.nitro) литров") - } - else { - print("Использование \(self.model) нитро прошла успешна, бак нитро заполнен на \(self.nitro) из \(self.topNitro)") - } - } - } -} - -extension SportCar: CustomStringConvertible { -var description: String { - return "Марка \(self.type.rawValue) машины: \(self.model), год выпуска: \(self.age), бак нитро: \(self.nitro)/\(self.topNitro) литров, двигатель \(self.ignition.rawValue), окна \(self.windows.rawValue)" - } -} - -var ladaLargus = TrunkCar(model: "Lada Largus", age: 2014, bootVolume: 560) -var mazda = SportCar(model: "Mazda", age: 2009, topNitro: 5) -var largus = TrunkCar(model: "Lada", age: 2007, bootVolume: 350) -var mazda3 = SportCar(model: "Mazda 3", age: 2018, topNitro: 10) - -print(ladaLargus.description) -print(mazda3.description) -ladaLargus.changeTrunkVolume(act: .load, trunkVolume: 300) -print(ladaLargus.description) -mazda3.changeNitro(act: .use, nitro: 5) -mazda3.changeNitro(act: .refill, nitro: 7) -largus.changeWidows(properties: .open) -mazda.changeIgnition(properties: .start) -largus.changeTrunkVolume(act: .load, trunkVolume: 400) -mazda.changeNitro(act: .use, nitro: 3) -print(ladaLargus.description) -print(mazda.description) diff --git a/5l_ChukarkovKonstantin.playground/contents.xcplayground b/5l_ChukarkovKonstantin.playground/contents.xcplayground deleted file mode 100644 index 5da2641..0000000 --- a/5l_ChukarkovKonstantin.playground/contents.xcplayground +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file From 16797f9fd96dbd8b950cd1ef798d3f01441e82fc Mon Sep 17 00:00:00 2001 From: Konstantin Date: Sun, 7 Jun 2020 15:39:44 +0300 Subject: [PATCH 3/4] --- --- .DS_Store | Bin 6148 -> 6148 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/.DS_Store b/.DS_Store index 1e2f90ab9d97bf3eb13ab5842da9c8489aff4da3..401f94bbc1c2f3d7a0faf22ab620a6351a550797 100644 GIT binary patch delta 310 zcmZoMXfc=|#>B!ku~2NHo+2ar#DLw41(=u_*(dWb9%oi$Fq>S$=r6pIfq_BeKNtX6 z3=9x)hx&q&B%jjak|Lmx9YZifB||Yo2}3GFE`vTp7(+fo4nrxBoeC7yXK-Oi1j;1> zS)o9FDnk)iG#jWY53DN@NS82V0!ffske+NHKcArh$S-Cn2g;-Y`EEcOq_c#<2dIX> z7{~+}ppS49AJ9#HP&YxHIr##kDL)rO5Q8g&BhYMLAYC{40iy^Hqc~6>)L)w!nfMtu ivvcrs07C=F`OZ9B`mu~2NHo+2aj#DLw5%#(Roj!&M>X0-V)8yDkd1rBzWi47k&vvcrs f099@l Date: Sun, 7 Jun 2020 15:43:43 +0300 Subject: [PATCH 4/4] Delete 6 lesson, add 7 lesson --- .../Contents.swift | 45 ------------ .../Contents.swift | 73 +++++++++++++++++++ .../contents.xcplayground | 0 3 files changed, 73 insertions(+), 45 deletions(-) delete mode 100644 6l_ChukarkovKonstantin.playground/Contents.swift create mode 100644 7l_ChukarkovKonstantin.playground/Contents.swift rename {6l_ChukarkovKonstantin.playground => 7l_ChukarkovKonstantin.playground}/contents.xcplayground (100%) diff --git a/6l_ChukarkovKonstantin.playground/Contents.swift b/6l_ChukarkovKonstantin.playground/Contents.swift deleted file mode 100644 index d8b0348..0000000 --- a/6l_ChukarkovKonstantin.playground/Contents.swift +++ /dev/null @@ -1,45 +0,0 @@ - -struct Stack { - - var items = [Element]() - mutating func push(_ item: Element) { - items.append(item) - } - - mutating func pop() -> Element { - return items.removeLast() - } - - mutating func append(_ item: Element) { - self.push(item) - } - - - var count: Int { - return items.count - } - - subscript(i: Int) -> Element? { - if i < items.count { - return items[i] - } - return nil - } - -} - - -var stack = Stack() - -stack.push("кот") -stack.push("бегемот") -stack.push("жираф") -stack.push("крыса") - -stack.pop() - -print(stack.count) - - -print(stack[1]!) -print(stack[4] as Any) diff --git a/7l_ChukarkovKonstantin.playground/Contents.swift b/7l_ChukarkovKonstantin.playground/Contents.swift new file mode 100644 index 0000000..f291778 --- /dev/null +++ b/7l_ChukarkovKonstantin.playground/Contents.swift @@ -0,0 +1,73 @@ + +print("Проверка банковской карты.\n1) Заблокированна карта банком или нет.\n2) Хватает ли средств на балансе для покупки товара") + +enum CardError: Error { + case smallBalance + case blockedAccount +} + +struct product { + var price: Double +} + +enum CardStatus { + case isBlocked + case isNotBlocked +} + +class CardOpation { + var balance: Double = 0 + var cardStatus = CardStatus.isNotBlocked + + func buySomething(product: product) throws { + guard cardStatus == .isNotBlocked else { + throw CardError.blockedAccount + } + guard product.price < self.balance else { + throw CardError.smallBalance + } + balance = self.balance - product.price + } + + func plusBalance (someMoney: Double) { + balance = self.balance + someMoney + } + + func printBalance() { + print ("Баланс вашей карты \(balance) рублей") + } + + func changeCardStatus(status: CardStatus){ + switch status { + case .isBlocked: cardStatus = .isBlocked + case .isNotBlocked: cardStatus = .isNotBlocked + } + } + +} + +let operation = CardOpation() + + +operation.plusBalance(someMoney: 10000) +operation.printBalance() +operation.changeCardStatus(status: .isBlocked) + + +do { + try operation.buySomething(product: .init(price: 4500)) +} catch CardError.smallBalance { + print("Недостаточно средств на карте") +} catch CardError.blockedAccount { + print("Ваша карта заблокирована") +} + +operation.changeCardStatus(status: .isNotBlocked) + +do { + try operation.buySomething(product: .init(price: 45500)) +} catch CardError.smallBalance { + print("Недостаточно средств на карте") +} catch CardError.blockedAccount { + print("Ваша карта заблокирована") +} diff --git a/6l_ChukarkovKonstantin.playground/contents.xcplayground b/7l_ChukarkovKonstantin.playground/contents.xcplayground similarity index 100% rename from 6l_ChukarkovKonstantin.playground/contents.xcplayground rename to 7l_ChukarkovKonstantin.playground/contents.xcplayground