Swift #3: Operacje arytmetyczne, czyli jak kupić iPhone Xs Max

Nauka programownia

Opublikowany: Sep 17, 2018

Czytasz właśnie trzecią część kursu języka Swift, wprowadzającego od zupełnych podstaw kompletną wiedzę, której potrzebuje programista. Jeśli czytałeś poprzednie dwie części, poznałeś już pierwsze elementy języka Swift: zmienne i stałe oraz podstawowe typy danych. Pamiętaj, że ten kurs przeznaczony jest dla osób, które chcą rozpocząć karierę programisty właśnie od nauki języka Swift.

TERAZ PRZYSZEDŁ CZAS NA PRAKTYCZNE ZASTOSOWANIE ZDOBYTEJ WIEDZY.

Przypuśćmy, że wziąłeś kredyt na najnowszy model telefonu iPhone: Xs Max w wersji najbardziej rozrzutnej. Kosztuje on 7200 zł, więc kredyt jest jak najbardziej na miejscu. Chciałbyś się jednak dowiedzieć, jaką miesięczną ratę będziesz musiał spłacić oraz ile więcej sumarycznie będzie Cię kosztował zakup.

Oczywiście można to wszystko obliczyć z wykorzystaniem kartki papieru, ołówka i ewentualnie kalkulatora, ale przecież programista nie ucieknie się do tak przyziemnych rozwiązań.

ZACZNIJ WIĘC OD OKREŚLENIA TEGO CO WIESZ.

Cena urządzenia: 7200 zł Ilość rat: 10 Oprocentowanie w skali roku: 11.4% Wpłata własna: 1000 zł

Zadeklaruj kilka stałych. Stałych dlatego, że te wartości nie mogą się zmienić.

let devicePrice = 7_200.0
let numberOfMonths = 10
let percentage = 11.4
let initialPayment = 1000.0

Mając zadeklarowane i zainicjalizowane zmienne, możesz wykonać na nich serię operacji arytmetycznych (jak w kalkulatorze). Na zmiennych można wykonywać operacje właściwe dla przechowywanych w nich typów danych. Na zmiennych liczbowych można zatem wykonywać operacje arytmetyczne. Pamiętać przy tym należy o kolejności ich wykonywania: mnożenie (*) i dzielnie (/) mają wyższy priorytet niż dodawanie (+) i odejmowanie (-). Działania o tym samym priorytecie wykonywane są od lewej do prawej strony. W razie potrzeby należy stosować nawiasy okrągłe (mogą być zagnieżdżone). Pamiętając o tym pole trapezu o podstawach długości: 2.5 oraz 3.6 i wysokości 2.3 można obliczyć następująco:

var a = 2.5
var b = 3.6
var h = 2.3
var pole = (a+b)*h/2

Należy pamiętać że wynik dzielenia liczb całkowitych nie musi być liczbą całkowitą. Aby nie został on automatycznie zaokrąglony do liczby całkowitej, zarówno dzielna jak i dzielnik powinny być zadeklarowane jako liczby rzeczywiste albo być zapisane w formacie rzeczywistym, jak poniżej:

var a = 2.5 / 2.2
var b = 3.6
var h = 2.3
var p = b/h

WRÓĆMY DO PRZYKŁADU Z RATAMI.

Na początek należy obliczyć, jaka jest wysokość zaciągniętego kredytu. Skorzystasz tu z operatora – oraz instrukcji przypisania. Wiesz już, że po deklaracji zmiennej możesz zainicjalizować ją jakąś wartością. Nie musi to być wartość podawana za pomocą literału.

Literał to po prostu jawnie wpisana wartość. W poniższym przykładzie literałem jest 2.02

let x = 2.02

Możesz przypisać do zmiennej wynik jakiegoś obliczenia. I tak w naszym przypadku jest to wynik odejmowania od wartości stałej devicePrice wartości stałej initialPayment.

let creditAmount = devicePrice - initialPayment

Znając już wartość zaciągniętego kredytu, możesz wyznaczyć za pomocą mnożenia (*) kwotę odsetek, które w skali roku od takiego kredytu trzeba zapłacić.

let interestYearly = creditAmount * percentage / 100.0

Ponieważ kredyt jest zaciągnięty na 10 miesięcy, musisz wyznaczyć wartość odsetek spłacanych co miesiąc.

let interestMonthly = interestYearly/12.0

Podobnie, wyznaczasz wartość raty kapitałowej dzieląc kwotę zaciągniętego kredytu na ilość miesięcy. Tutaj pojawia się pewien zgrzyt. Swift definiuje operatory dodawania, odejmowania, dzielenia i mnożenia dla tych samych typów danych. Tzn możemy podzielić Int przez Int, lub pomnożyć Double przez Double. W przypadku gdy składniki działania są różnych typów, program nie skompiluje się [1]. Należy zatem przekształcić jawnie typ Int na typ Double, co można zrobić za pomocą pewnej konstrukcji[2], i dopiero wykonać takie działanie.

let capitalMonthly = creditAmount / Double(numberOfMonths)

Na tym etapie znasz już wartość kapitału spłacanego co miesiąc oraz wartość spłacanych miesięcznie odsetek. Proste sumowanie pozwoli poznać Ci miesięczną ratę, której wartość musisz przypisać do stałej flatMonthly.

let flatMonthly = capitalMonthly + interestMonthly

Suma rat, to wartość flatMonthly pomnożona przez ilość miesięcy (tu również musisz dokonać przekształcenia typów)

let flatSum = flatMonthly * Double(numberOfMonths)

Pełny koszt telefonu uzyskasz dodając do wpłaty początkowej sumę rat.

let overallCost = initialPayment + flatSum

Na koniec proste odejmowanie pozwoli nam uzyskać kwotę, którą nadpłacamy w stosunku do zakupu telefonu za gotówkę.

let overPayment = overallCost - devicePrice

Pozostaje wypisać na standardowe wyjście (czyli na konsolę Playground) uzyskane wartości (przypisane do zadeklarowanych stałych), korzystając nowej funkcji print.

print (flatMonthly)
print (overallCost)
print (overPayment)

Takie wypisanie jest niestety mało estetyczne. Otrzymujesz po prostu trzy zwykłe liczby. Dlatego wprowadzimy teraz bardzo szybko narzędzie, które pozwoli łączyć różnego rodzaju wyniki z napisami.[3].

print ("Monthly flat: \(flatMonthly)")
print ("Overall cost: \(overallCost)")
print ("Overpayment: \(overPayment)")

TO JAKIE OPERATORY ARYTMETYCZNE JUŻ ZNAMY?

W tym wpisie poznałeś więc kilka podstawowych operatorów arytmetycznych, czyli symboli reprezentujących pewne obliczenia.

+ operator dodawania
- operator odejmowania
* operator mnożenia
/ operator dzielenia

Nie są to jedyne operatory w Swift. Jest ich naprawdę dużo więcej. A przekonasz się o tym w kolejnych wpisach, w których będziemy je sukcesywnie i w miarę potrzeb wprowadzać.

PS. Gratulacje z okazji zakupu telefonu iPhone Xs Max!


  1. …bo nie ma tu automatycznego rzutowania typów, co z jednej strony komplikuje trochę kod w porównaniu do innych języków, a z drugiej strony zapobiega pewnym błędom, które przy obecności tej funkcji można łatwo popełnić
  2. …a w zasadzie konstruktora, ale o tym później
  3. Co się tu dzieje? O tym w kolejnych wpisach


Image
Felieton
Zarabianie Schrodingera
Sep 03, 2019
Image
Felieton
Rozliczanie aplikacji sprzedanych w AppStore
Jun 10, 2019
Image
Felieton
Cały internet na płycie CD
Apr 01, 2019
Image
Nauka programownia
Swift: O co chodzi z tymi kolejkami?
Feb 17, 2019
Image
Felieton
Tim Cook docenił wzrost sprzedaży w Polsce
Feb 04, 2019

Nasze szkolenia

Image
Image
Programowanie aplikacji iOS w Swift 5
Dwudniowe szkolenie od podstaw
Toruń - 2020-03-14
dr Błażej Zyglarski
Image
Image
Objective-C dla programistów Swift
Jednodniowe szkolenie dla programistów Swift
Warszawa - 2020-01-11
dr Błażej Zyglarski
Image
Image
Programowanie Gier 2D na iOS
Trzydniowe szkolenie ze SpriteKit i GameplayKit dla programistów Swift
Toruń - 2020-03-27
dr Błażej Zyglarski