Sveska u kojoj računamo kamatu

Za početak, u projektnom folderu otvaramo JupyterLab onako kako je to opisano u lekciji o instalaciji, a u drugom tabu istog brauzera otvaramo ChatGPT:

*JupyterLab* u prvom tabu
*ChatGPT* u drugom tabu

U JupyterLab-u kreiramo novu svesku i dajemo joj naziv kamatni-racun:

Kreiramo novu svesku

Dug sa kamatom

Uzećemo dug od 1000 dinara sa mesečnom kamatnom stopom od 1% kao primer. Kamata za prvi mesec će iznositi 10 dinara, što je 1% od 1000 dinara. Kamata za drugi mesec može da se računa na dva načina:

  1. Po prostom kamatnom računu: kao 1% u odnosu na početni dug od 1000 dinara, što je ponovo 10 dinara

  2. Po složenom kamatnom računu poznatom i kao „kamata na kamatu”: kao 1% u odnosu na ukupan dug od 1010 dinara, što je 10 dinara i 10 para

Za računanje kamate za veći broj meseci, obratićemo se ChatGPT-u za pomoć sa pitanjem:

Ako sam dužan 1000 dinara i primenjuje se zatezna kamata od 1% mesečno, koliko ću biti dužan posle 24 meseca? Objasni mi računicu i daj mi primer koda u Pythonu

Upotrebom termina „zatezna kamata”, precizirali smo da treba da se računa kamata na kamatu. Uopšteno govoreći, u porukama ChatGPT-u je poželjno biti što precizniji, te koristiti uobičajene termine koji imaju jasno značenje.

U prvom delu odgovora ChatGPT objašnjava matematičku formulu koja se koristi:

Deo odgovora *ChatGPT*-a sa matematičkom formulom

Suština je u tome da se nakon svakog meseca dug uvećava 1.01 puta.

U nastavku odgovora ChatGPT daje sledeći kod:

# Početni dug
P = 1000 # u dinarima
# Mesečna kamatna stopa
r = 0.01 # 1%
# Broj meseci
n = 24

# Izračunavanje duga sa zateznom kamatom
D = P * (1 + r) ** n

# Ispis rezultata
print(f"Ukupni dug nakon {n} meseci iznosi: {D :.2f} dinara")

Navedeni kod implementira formulu:

\[D=P\cdot (1+r)^n\]

U Python-u, ova formula je zapisana u sledećoj liniji koda:

D = P * (1 + r) ** n

Primetimo da se za stepenovanje u Python-u koristi dvostruka zvezdica.

Kopiraćemo kod koji je generisao ChatGPT u ćeliju Jupyter sveske, a zatim ćemo ga izvršiti:

Izvršavanje kode u *Jupyter* svesci

Primetimo da je nepravilno reći „24 meseci”, pravilno bi bilo „24 meseca” ili „20 meseci”. Problem leži u sledećoj liniji koda:

print(f"Ukupni dug nakon {n} meseci iznosi: {D :.2f} dinara")

Naime, reč „meseci” se u ovoj liniji ispisuje uvek na isti način, bez promene oblika prema broju.

U okviru Jupyter sveske možemo editovati kod koji smo kopirali kako bismo rešili ovu jezičku nedoslednost. Najjednostavniji način da to učinimo je da formulaciju izmenimo tako da otklonimo potrebu za promenom oblika imenica:

print(f"Broj meseci: {n}, ukupan dug: {D :.2f} dinara")

Izvršavanjem koda sada dobijamo sledeći rezultat:

Korigovan ispis

Objašnjenja u tekstualnim ćelijama

U prethodnoj lekciji smo već pomenuli da linije koda koje počinju karakterom # predstavljaju komentare koji ništa ne znače prilikom izvršavanja i koji samo pomažu lakšem razumevanju koda. U ovom primeru vidimo i da deo linije koda može biti komentar, konkretno:

P = 1000 # u dinarima

U Jupyter svesci postoji mogućnost promene tipa ćelije. Naime, možemo celu ćeliju da prebacimo u tekstualni tip i da u njoj samo dajemo dodatna objašnjenja u vezi sa izračunavanjem koje radimo. Da bismo to ilustrovali, razdvojićemo kod i komentare u zasebne ćelije. Razume se, u praksi ne moramo da razdvajamo kod od komentara, već možemo kombinovati tekstualne ćelije sa detaljnijim objašnjenjima i ćelije koje u kodu sadrže kratke komentare.

Nakon što u novu ćeliju prebacimo tekst komentara iz prve linije koda, potrebno je da promenimo tip nove ćelije u Markdown:

Tip ćelije

Ćelije koje sadrže tekst prebacujemo u tip Markdown, a ćelije koje sadrže programski kod ostavljamo u tipu Code.

U videu za ovu lekciju vam detaljno prikazujemo korake koje pravimo u interakciji sa JupyterLab-om, dok ovde nastojimo da vas vodimo kroz glavne korake.

U Markdown ćeliji možemo postići neka osnovna formatiranja, kao što su bold, italic, lista tačaka, ali i neka naprednija formatiranja, kao što su matematičke formule. Zasad se nećemo zadržavati na detaljima Markdown notacije. Važno je da iz ove lekcije naučimo da izvršavanjem Markdown ćelije (na primer, pomoću Ctrl + Enter) kao rezultat dobijamo formatiran prikaz.

Ako zaboravimo da ćeliju prebacimo u Markdown pre nego što je izvršimo, prijaviće nam se greška poput:

Propušteno prebacivanje u *Markdown*

Primećujemo da je selektovana ćelija sa prethodne slike ostala u tipu Code. Samim tim, komentar koji je u njoj napisan se prilikom izvršavanja tretirao kao Python kod. S obzirom na to da komentar u ćeliji ne predstavlja ispravan Python kod, prijavljena je greška u sintaksi. Kako bismo ovu grešku ispravili, dovoljno je da promenimo tip ćelije u Markdown:

Prebacujemo u *Markdown*

Po završetku razdvajanja teksta i koda u zasebne ćelije, dobijamo:

Sveska u kojoj su tekst i kod razdvojeni

Jupyter sveske obično sadrže kombinaciju teksta i koda. Obuhvatajući objašnjenja kako je računato, programski kod koji implementira izračunavanje, kao i same rezultate izračunavanja, Jupyter sveska može da predstavlja jedan zaokružen dokument o izračunavanju.

Izvršavanje više ćelija pomoću tastature

Da bismo videli kako radi ukupno izračunavanje, potrebno je da redom izvršimo sve ćelije. To postižemo tako što najpre selektujemo prvu ćeliju, a zatim više puta uzastopno pritisnemo Shift + Enter. Na kraju dobijamo:

Prebacujemo u *Markdown*

Za razliku od Ctrl + Enter koji koristimo kada želimo da ostanemo u istoj ćeliji, Shift + Enter koristimo kada nakon izvršavanja jedne, želimo da pređemo na sledeću ćeliju. U slučajevima kada nakon izvršavanja želimo da dodamo ćeliju ispod izvršene, možemo koristiti Alt + Enter.

Vežbajte korišćenje Ctrl + Enter, Shift + Enter i Alt + Enter uz zadavanje jednostavnih izraza.