Dosad ste učeći Python programski jezik prilikom programiranja koristili grafičko razvojno okruženje (engl. integrated development environment, IDE).
U ovoj dokumentaciji opisano je kako da koristite Jupyter interaktivnu radnu svesku (engl. Jupyter Notebook).
Kao što možete da vidite na slikama, to su dva potpuno različita sveta. Sada ćemo napraviti istorijski pregled, objasniti šta su to Jupyter radne sveske i kako su nastale.
Literalno programiranje je paradigma programiranja koju je uveo Donald Knut 1984. godine. Njegova ideja je bila da se računarski program posmatra kao literalno delo u cilju njegove bolje dokumentovanosti. Smatrao je da ne treba da mislimo da nam je glavni cilj da dajemo instrukcije računaru šta da radi, nego da radije treba da se skoncentrišemo na to da objasnimo ljudima šta želimo računar da uradi. Tako dolazimo do toga da se programski kod nalazi unutar opisnog teksta, što je potpuno suprotno od onoga sa čime ste se do sada susretali (tekst unutar koda).
Idejni tvorac programa Mathematica za simbolička matematička izračunavanja je Stiven Volfram, britanski fizičar, matematičar, programer, autor i biznismen, poznat po brojnim radovima iz područja fizike elementarnih čestica, matematike, kosmologije, teorije složenosti, kao i po sajtu Volfram alfa. Wolfram Mathematica se sastoji iz dva dela, iz jezgra i prednjeg kraja. Jezgro interpretira kod pisan u Volfram jeziku i vraća rezultat a prednji kraj poseduje grafičko radno okruženje koje je u obliku interaktivne radne sveske. Dizajnirao ga je Theodore Gray i ono je ujedno prvi istorijski primer radnih sveski. Radne sveske se sastoje od niza ćelija koje sadrže programski kod sa automatskom bojom za isticanje sintakse, formatirani tekst zajedno sa izlaznim rezultatima, uključujući matematičke izraze, grafiku, grafičke komponente, tabele i zvuk. Svi sadržaji i formatiranje su generisani automatski ili menjani interaktivno. Takođe su podržane standardne mogućnosti obrade reči. Radne sveske sa njihovim sadržajima se mogu prezentovati kao izrazi koji mogu biti kreirani, menjani ili analizirani u programu Matematika ili konvertovani u druge formate. Dokumenti se takođe mogli prikazati kao „slideshow“ za prezentacije.
Prva verzija programe Maple za simbolična i brojčana izračunavanja sa grafičkim korisničkim okruženjem je izašla 1989. godine (prva verzija Maple-a izašla 7 godina ranije) dok je prva verzija sa interaktivnom radnom sveskom izašla 1992. godine. I ovde se takođe kombinuju kod, tekst i izlazni rezultati izvršenog koda. Podržana je i grafika. Dok se u programu Matematika (kao i u ostalim programima sa radnim okruženjem oblika radne sveske koje ćemo nabrojati, pa i u samoj Jupyter radnoj svesci) kod izvršava kombinacijom tastera \< Shift > i \< Enter >, u programu Maple se izvršava pritiskom na taster \< Enter >.
Pojavom softvera otvorenog koda (1998), dovode do razvoja mnogih besplatnih programa otvorenog koda kao i do rasta popularnosti Python naučnih alata otvorenog koda.
Python je u devedesetim godinama prošlog veka proširen tako da mu je dodan tip nizova za numerička izračunavanja pod nazivom Numeric. U 2001. godini Travis Olifant, Peru Piterson i Erik DŽons su zajedničkim naporima napravili standardnu Python biblioteku numeričkih operacija na vrhu Numeric strukture niza podataka i nazvali dobijenu biblioteku SciPy. SciPy koriste naučnici, analitičari i inženjeri za razna naučna i tehnička izračunavanja. Inače, Travis Olifant je čovek koji je 2006. godine napisao biblioteku NumPy kao mešavinu modula Numeric i Numarray. NumPy je Python biblioteka sa velikim kolekcijom matematičkih funkcija koja podržava rad sa velikim, višedimenzionalnim nizovima i matricama.
Ubrzo nakon toga, Fernando Perez objavio je IPython (interaktivni Python), okruženje komandne linije za interaktivna izračunavanja u Python-u, sa podrškom za vizualizaciju podataka te paralelno i distribuirano izračunavanje. Na taj način je sebi napravio mini-Mathematica Python program nad tipovima Numeric i Gnuplot sa nekih 250+ linija koda.
John Hunter je 2003. godine objavio prvu verziju Matplotlib-a, 2D Python biblioteke za crtanje grafikona. Ono što je zanimljivo je to da je Matplotlib nastao kao zakrpa za IPython, koju Fernando Perez nije imao vremena da pregleda i odobri zbog rada na doktoratu.
Sage je besplatan program otvorenog koda za simbolična računarska izračunavanja koji je nastao 2005. godine kao alternativa za programe Magma, Maple, Mathematica i MATLAB. Velika prednost mu je ta što je besplatan, za razliku od ova četiri nabrojana programa. Baziran je na gore nabrojanim Python tipovima i bibliotekama kao i još mnogim drugim, a napisan je u programskim jezicima Python i Cython. Sage je interaktivna radna sveska a korisnikovo radno okruženje je internet pregledač.
IPython je postao interaktivna radna sveska 2011. godine. Korisnikovo radno okruženje je takođe internet pregledač. Fernando Pérez i Robert Kern su radili na interaktivnoj radnoj radnoj svesci istovremeno dok je razvijana Sejdž radna sveska. Fernando Pérez i William Stein bili su u kontaktu od 2005. godine pa nadalje i zajedno su sarađivali s obzirom da je IPython korišćen u Sage okruženju komandne linije.
Projekat Jupyter je nastao 2014. godine. Projekat održava rad u nauci o podacima (engl. data science) kao i naučna izračunavanja u više programskih jezika te razvoj programa otvorenog koda. Baziran je na IPython-u koji čini zadnji kraj tj. jezgro Jupyter interaktivne radne sveske. Kao zadnji kraj Jupyter radne sveske podržana su jezgra za pedesetak programskih jezika. Naziv Jupyter potiče od tri osnovna programska jezika koja su bila podržana u projektu: *Julia, **Python i R**. Naziv je takođe dat u čast Galilejovih radnih svesaka u kojima je opisao otkrića Jupiterovih meseca. O prednjem kraju tj. interaktivnoj IPython radnoj svesci smo već pričali. IPython radno okruženje je preimenovano u Jupyter notebook* 2015. godine (IPython 4.0 – Jupyter 1.0). Vrlo brzo je Jupyter radna sveska po popularnosti prestigla Matematika radnu svesku.
Koristićemo Anaconda-u, besplatnu vodeću platformu za naučna izračunavanja (nauku o podacima, prakticiranje mašinskog učenja...), distribuciju visokih perfomansi za Python i R u koju je uključen skup alata koji nam omogućava rad sa hiljadama paketa i biblioteka otvorenog koda. Mi ćemo koristiti trenutno dostupnu verziju platforme Anaconda Individual Edition u koju su uključeni Anaconda Navigator 1.9.2, Python 3.8 i Jupyter Notebook 3.0.6. Smatram da je instalacija distribucije Anaconda najlakši način da se instalira i pokrene Jupyter Notebook. Platforma je odlična za učenje i lakši pristup programiranju u Python-u. Na sledećem linku imate uputstvo za instalaciju i pokretanje Jupyter Notebook-a:
Jupyter Notebook takođe možemo instalirati preko alata pip3 i pokrenuti ga preko komandne linije:
pip3 install --upgrade pip
pip3 install jupyter
jupyter notebook
Najjednostavniji način da otvorite sveske unutar Jupytera je da odete na sledeći link https://mybinder.org/v2/gh/tiki-paunovic/vpts-vi/HEAD. Ovaj servis (Binder) vam neće trajno sačuvati ono što radite, ali vam daje mogućnost da brzo bacite pogled kako sveske izgledaju otvorene u Jupyteru.
Idite u podmeni User Interface Tour menija Help i strelicama vršite navigaciju kako bi ste se upoznali za radnim okruženjem. Takođe možete pogledati sledeće digitalne puškice sa pregledom najvažnijih komandi.
from IPython.display import IFrame
IFrame('https://www.edureka.co/blog/wp-content/uploads/2018/10/Jupyter_Notebook_CheatSheet_Edureka.pdf', width=800, height=500)
Svaka ćelija Jupiter radne sveske može da sadrži tekst, matematički izraz ili niz Python naredbi. Ova ćelija sadrži tekst dok naredne ćelije sadrže matematičke izraze ili nizove Python naredbi.
Ćeliju možemo uređivati nakon što pritisnemo taster \< Enter > (videćete zeleni okvir oko ćelije).
Ćeliju možemo izvršavati nakon što pritisnemo taster \< Esc > (videćete plavi okvir oko ćelije). Ćelije izvršavamo pritiskom na tastere \< Shift > i \< Enter > istovremeno.
2+2
(1/2+0.75+(-0.25))*4
7//2
7%2
3**4
print('Hello World!')
x=2
y=2
print(x+y)
from math import pi
r = float(input("Unesi duzinu poluprecnika kruga: "))
obim = 2 * r * pi
print("Obim kruga je:", obim)
from math import sqrt
def hipotenuza(a, b):
c = sqrt(a**2 + b**2)
return c;
a = float(input("Unesi duzinu katete a pravouglog trougla: "))
b = float(input("Unesi duzinu b, druge katete pravouglog trougla: "))
print("Duzina hipotenuze c je:", hipotenuza(a,b))
from math import sqrt
print(sqrt(2))
for n in range(1,11):
print(n**2)
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline
# Data for plotting
t = np.arange(0.0, 2.0, 0.01)
s = 1 + np.sin(2 * np.pi * t)
fig, ax = plt.subplots()
ax.plot(t, s)
ax.set(xlabel='vreme (s)', ylabel='napon (mV)',
title='Grafik')
ax.grid()
fig.savefig("test.png")
plt.show()
from IPython.display import HTML
import warnings
warnings.filterwarnings('ignore')
HTML('<iframe width="834" height="467" src="https://www.youtube.com/embed/8dONC6im9-c" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>')
from IPython.display import YouTubeVideo
YouTubeVideo('8dONC6im9-c', width=800, height=400)
Markdown je jednostavan jezik za označavanje koji nam pomaže da običan tekst formatiramo tako da izgleda mnogo bolje. Markdown su kreirali John Gruber i Aaron Swartz 2004. godine.
Kada pišemo tekst u ćeliju koji formatiramo sa Markdown sintaksom, mi dodajemo atribute na reči, a izgled teksta vidimo tek nakon izvršavanja ćelije. Da bismo pripremili ćeliju za pisanje teksta sa Markdown sintaksom, treba da pritisnemo kombinaciju tastera \< Esc > i \< M >. Ako želimo da ćelija ponovo bude spremna za pisanje i izvršavanje koda, treba da pritisnemo kombinaciju tastera \< Esc > i \< Y >.
Markdown ćelije mogu da sadrže:
Sada ćemo navesti neke primere markdown formatiranja teksta. Moći ćete uporedo da pratite markdown sintaksu i izgled formatiranog teksta.
# Naslov 1
## Naslov 2
### Naslov 3
#### Naslov 4
##### Naslov 5
###### Naslov 6
**Ovo je podebljani tekst**
__Ovo je podebljani tekst__
Ovo je podebljani tekst
Ovo je podebljani tekst
*Ovo je ukošeni tekst*
_Ovo je ukošeni tekst_
Ovo je ukošeni tekst
Ovo je ukošeni tekst
\# Ovo nije naslov
# Ovo nije naslov
Ovo je prvi pasus.
Ovo je drugi pasus.
Pasuse razdvajamo tako da pritisnemo dva ili više puta taster enter.
Ovo je prvi red.
Ovo je drugi red.
U novi red prelazimo tako što na kraju prvog reta pritisnemo dva puta razmaknicu teksta i na kraju taster enter.
>Ovo je citat
Ovo je citat
>Ovo su
>>ugnježdeni
>>>citati
Ovo su
ugnježdenicitati
---
___
***
- Cheese
- Carrot
- Coconut
Slike koje se nalaze na računaru možemo ubacivati prevlačenjem mišem ili otvaranjem podmenija Insert Image menija Edit.
Takođe možemo ubacivati slike putem linka na sledeći način:


Automatske linkove postavljamo tako da ih kopiramo i nalepimo u ćeliju.
[Ovde klikni](https://www.python.org/)
[Ovde klikni](https://www.python.org/ "Python")
U ovoj ćeliji ćemo postaviti naslov:
print("Zdravo svete!")
s = "Zdravo svete!"
print s
|Naziv kolone 1|Naziv kolone 2|Naziv kolone 3|
|------|------|------|
|A |B |V |
|1 |2 |3 |
| Naziv kolone 1 | Naziv kolone 2 | Naziv kolone 3 |
|---|---|---|
| A | B | V |
| 1 | 2 | 3 |
<span style="color:red">Ovo je tekst</span>
Ovo je tekst
<span style="font-family:Comic Sans MS">Ovo je tekst</span>
Ovo je tekst
<p style="background:black">
<code style="background:black;color:white">C:\Users\YOUR_USERNAME> pip3 install jupyter
</code>
</p>
C:\Users\YOUR_USERNAME> pip3 install jupyter
<div class="alert alert-block alert-success">
<b>Success:</b> Akcija je uspešno provedena.
</div>
$\sqrt{k}$
$\sqrt{k}$
◰
magic komande su napravljene sa ciljem da se reše razni problemi koji se javljaju prilikom analize podataka uz pomoć programskog jezika Python. Razlikujemo magic komande sa prefiksom % koje zauzimaju jedan red i magic komande sa prefiksom %% koje zauzimaju više redova.
U narednim redovima možete videti listu svih magic komandi, kao i link sa primerima i objašnjenjima.
%lsmagic
U Jupyter radnim sveskama možemo izvršavati i komande sa komandne linije (CMD u Windows-u; Bourne shell u Linux-u). Sada ćemo izvršiti komandu koja izlistava fajlove i foldere koji su vidljivi i nalaze se u tekućem folderu. Ako ste trenutno u Windows-u izvršite komandu 'dir', a ako ste u Linux-u izvršite komandu 'ls'. Na linkovima ispod možete pogledati dokumentaciju za komandnu liniju.
!ls