$$ \newcommand{\floor}[1]{\left\lfloor{#1}\right\rfloor} \newcommand{\ceil}[1]{\left\lceil{#1}\right\rceil} \renewcommand{\mod}{\,\mathrm{mod}\,} \renewcommand{\div}{\,\mathrm{div}\,} \newcommand{\metar}{\,\mathrm{m}} \newcommand{\cm}{\,\mathrm{cm}} \newcommand{\dm}{\,\mathrm{dm}} \newcommand{\litar}{\,\mathrm{l}} \newcommand{\km}{\,\mathrm{km}} \newcommand{\s}{\,\mathrm{s}} \newcommand{\h}{\,\mathrm{h}} \newcommand{\minut}{\,\mathrm{min}} \newcommand{\kmh}{\,\mathrm{\frac{km}{h}}} \newcommand{\ms}{\,\mathrm{\frac{m}{s}}} \newcommand{\mss}{\,\mathrm{\frac{m}{s^2}}} \newcommand{\mmin}{\,\mathrm{\frac{m}{min}}} \newcommand{\smin}{\,\mathrm{\frac{s}{min}}} $$

Prijavi problem


Obeleži sve kategorije koje odgovaraju problemu

Još detalja - opišite nam problem


Uspešno ste prijavili problem!
Status problema i sve dodatne informacije možete pratiti klikom na link.
Nažalost nismo trenutno u mogućnosti da obradimo vaš zahtev.
Molimo vas da pokušate kasnije.

LJ01

1. Uvod u Džupajter (Jupyter)

U ovoj lekciji ćeš naučiti:

  1. šta je Džupajter (Jupyter), kako se krećeš kroz Džupajter radnu svesku (Jupyter Notebook) i kako se Džupajter radna sveska koristi za računanje izraza;
  2. kako se u Džupajteru koriste promenljive i kako se radna sveska koristi pokretanje manjih Pajton (Python) programa; i
  3. šta su biblioteke funkcija i kako se pozivaju funkcije iz standardnih biblioteka.

1.1. Džupajter (Jupyter) ume da računa

Džupajter (Jupyter) je interaktivna radna sveska u koju možeš da unosiš tekst (kao tekst kog upravo čitaš), da računaš, da pokrećeš jednostavnije Pajton programe, da obrađuješ podatke, da prikazuješ podatke u vidu tabele i dijagrama, i još mnogo toga.

Svaka Džupajter radna sveska se sastoji iz niza ćelija, a svaka ćelija može da sadrži tekst, matematički izraz ili niz Pajton naredbi. Za sada nećemo objašnjavati kako se u Džupajter ćeliju unosi tekst, već ćemo pažnju usmeriti na računanje izraza i izvršavanje Pajton naredbi.

Kada se u Džupajter ćeliju unese neki izraz ili Pajton naredba sadržaj ćelije se može izračunati tako što se klikne na dugme Run pri vrhu strane:

Dugme za izvršavanje ćelije

ili se na tastaturi pritisne [CTRL]+[ENTER]

Evo primera:

In [1]:
3 * 19
Out[1]:
57
In [2]:
(12 + 51) * 14
Out[2]:
882
In [3]:
2**(5**3)
Out[3]:
42535295865117307932921825928971026432

Da se podsetimo, dve zvezdice u Pajtonu označavaju stepenovanje.

1.2. Džupajter ume da koristi promenljive i da izvršava Pajton komande

Ponekad je zgodno imenovati vrednosti, pogotovo ako se radi o komplikovanim brojevima kao što je to $\pi$ ili kada se radi o komplikovanim izrazima. Te vrednosti kasnije možemo da koristimo tako što navedemo ime koje smo im dali. Na primer, procenjuje se da je na dan 1.7.2019. na svetu bilo 7.714.576.923 ljudi. Naredba

BrLjudiNaSvetu_2019 = 7714576923

će u sistem uvesti novu promenljivu BrLjudiNaSvetu_2019 kojoj će biti dodeljena vrednost 7714576923. Da se podsetimo: imena promenljivih u Pajtonu moraju da počnu slovom i mogu da sadrže slova, cifre i specijalni znak _ (donja crta).

In [4]:
BrLjudiNaSvetu_2019 = 7714576923

Nakon izvršavanja ove ćelije sistem neće vratiti nikakav odgovor. Prosto je zapamtio da promenljiva BrLjudiNaSvetu_2019 ima vrednost 7.714.576.923. Procenjuje se da 27,8% stanovništva sveta živi u gradovima. To znači da u gradovima živi ovoliko ljudi:

In [5]:
BrLjudiNaSvetu_2019 * 27.8 / 100
Out[5]:
2144652384.5939999

Primetimo da se prilikom zapisivanja decimalnih brojeva u Pajtonu koristi decimalna tačka, a ne decimalni zarez, kako je to propisano našim pravopisom!

Da se podsetimo: reč procenat potiče od latinskog pro centum što znači "u stotini". Zato je $$ 47\% = \frac{47}{100} = \text{četrdeset sedam od sto}. $$

Na primer, u jednoj školi koja ima 856 učenika njih 25% su odlični. Koliko ima odličnih učenika u toj školi?

Odgovor. U toj školi ima 214 odličnih učenika jer je $$ 856 \cdot 25\% = 856 \cdot \frac{25}{100} = 214. $$

U istoj školi ima 326 učenika sa dobrim prosekom. Koji je to procent ukupnog broja učenika?

Odgovor. Neka je to $x\%$ učenika. Onda je $$ 856 \cdot x\% = 856 \cdot \frac{x}{100} = 326. $$ Odatle se lako dobija da je $$ x = \frac{326 \cdot 100}{856} \approx 38,08. $$ Dakle, približno $38,08\%$ učenika te škole ima dobar uspeh.

Hajde sada da rešimo još jedan zadatak.

Zadatak. Milica je želela da kupi pantalone koje su koštale 6.799,99 dinara, ali joj je mama rekla da su preskupe. Zato je Milica sačekala sezonu sniženja i kada je sledeći put obišla prodavnicu videla je da je cena pantalona snižena za 25%. Mama je pristala da joj kupi pantalone po sniženoj ceni. Kada su došle do kase prijatno su bile iznenađene činjenicom da su dobile popust od 3% na već sniženu cenu zato što je njena mama pantalone platila gotovinom. Koliko su na kraju koštale pantalone?

In [6]:
cena = 6799.99
popust1 = cena * 25 / 100
niza_cena = cena - popust1
popust2 = niza_cena * 3 / 100
niza_cena - popust2
Out[6]:
4946.992725

Prve četiri naredbe su naredbe dodele: nekim promenljivim dodeljujemo neke vrednosti. Poslednja naredba sadrži samo matematički izraz. Pošto radimo u interaktivnom okruženju (što znači da Džupajter odmah daje odgovore na pitanja koja mu postavimo), ako je poslednja naredba u ćeliji samo izraz sistem će vratiti vrednost tog izraza kao rezultat izvršavanja ćelije.

Prethodni program smo mogli da napišemo i ovako:

In [7]:
cena = 6799.99
popust1 = cena * 25 / 100
niza_cena = cena - popust1
popust2 = niza_cena * 3 / 100
print("Pantalone su na kraju kostale", niza_cena - popust2, "din")
Pantalone su na kraju kostale 4946.992725 din

Ovaj put naredba print ispisuje vrednost izraza, a sistem ništa ne vraća kao rezultat izvršavanja ćelije (primeti da nakon izvršavanja ćelije sistem nije vratio odgovor u obliku Out[ ]:).

Pri radu sa interaktivnim okruženjima zgodno je usvojiti sledeći manir: naredbu print koristimo samo u situacijama u kojima treba da prikažemo vrednosti nekoliko izraza, ili ako želimo da ispis malo ulepšamo, kao u prethodnom primeru.

1.3. Biblioteke funkcija

U modernim programskim jezicima, a Pajton je jedan od njih, mogu da se urade neverovatne stvari zato što dolaze sa obiljem funkcija koje su već isprogramirane. Tako se korisniku sistema (ili programeru) umnogome olakšava život: većina stvari koje prosečnom korisniku trebaju su već isprogramirane, samo treba naći odgovarajuću funkciju!

Da bi se korisnici lakše snašli u ovom obilju, sve funkcije koje dolaze uz programski jezik (odnosno, odgovarajuće okruženje) su grupisane u biblioteke funkcija.

Recimo, biblioteka matematičkih funkcija se zove math. Ona sadrži funkcije kao što su sqrt (koja računa kvadratni koren), sin (koja računa sinus ugla) i cos (koja računa kosinus ugla), ali i matematičke konstante kao što je pi (koja predstavlja dobru aproksimaciju broja $\pi$).

Na primer, program koji računa obim kruga datog poluprečnika izgleda ovako:

In [8]:
from math import pi
r = float(input("Unesi poluprecnik kruga: "))
obim = 2 * r * pi
print("Obim kruga je:", obim)
Unesi poluprecnik kruga: 6
Obim kruga je: 37.69911184307752

Prvi red u ovom programu pokazuje kako se iz neke biblioteke može uvesti funkcija ili konstanta koja nam je potrebna. Naredba

from math import pi

doslovno znači: iz biblioteke math uvezi pojam pi. Time smo u program uveli ime pi i slobodno možemo da ga koristimo.

Evo još jednog primera. Napisaćemo Pajton program koji određuje hipotenuzu $c$ pravouglog trougla ako znamo njegove katete $a$ i $b$. (Da se podsetimo, prema Pitagorinoj teoremi je $c = \sqrt{a^2 + b^2}$.)

Za ovaj program će nam trebati funkcija sqrt koja računa koren nekog broja i koja se takođe nalazi u biblioteci math.

In [9]:
from math import sqrt
a = float(input("Unesi katetu a: "))
b = float(input("Unesi katetu b: "))
c = sqrt(a**2 + b**2)
print("Hipotenuza c je:", c)
Unesi katetu a: 6
Unesi katetu b: 8
Hipotenuza c je: 10.0

Prethodna dva primera predstavljaju kompletne male programe: podatke smo učitali naredbom input, obradili smo ih na odgovarajući način, i rezultate smo ispisali naredbom print.

Rad sa interaktivnim okruženjima nam omogućuje da umesto celih programa pišemo "parčiće koda" koje možemo da menjamo kako nam odgovara i da ih izvršavamo kolikogod puta želimo. Tako se lakše eksperimentiše sa podacima (što je važan deo modernog razumevanja obrade podataka i o tome ćemo pričati kasnije), i štedi vreme. Tada uglavnom ne koristimo naredbu input već direktno u kod unesemo vrednosti koje nas interesuju.

Na primer, prethodni problem (računanje hipotenuze pravouglog trougla) možemo u interaktivnom okruženju da rešimo i ovako:

In [10]:
from math import sqrt
a, b = 3, 4
sqrt(a**2 + b**2)
Out[10]:
5.0

Naredba a, b = 3, 4 znači da će a dobiti vrednost 3, a b vrednost 4. Rezultat izvršavanja ćelije je vrednost izraza sqrt(a**2 + b**2).

1.4. Zadaci

Zadatke koji slede reši u Džupajteru.

Zadatak 1.

(a) Jedna knjiga je koštala 2460 dinara, a onda je knjižara snizila njenu cenu za 20%. Koliko sada košta knjiga?

(b) Druga knjiga u istoj knjižari nakon sniženja od 20% košta 1480 dinara. Koliko je koštala pre sniženja?

Zadatak 2. Procenjuje se da je Kina na dan 1.7.2019. imala 1.420.062.022 stanovnika. Broj stanovnika u Kini se svake godine poveća za 0,35%. Pod pretpostavkom da se godišnji rast broja stanovnika u Kini neće menjati, koliko stanovnika će Kina imati 2020. godine?

In [ ]:
 

Zadatak 3*. Procenjuje se da je Kina na dan 1.7.2019. imala 1.420.062.022 stanovnika, a Indija 1.368.737.513. Broj stanovnika u Kini se svake godine poveća za 0,35%, a u Indiji za 1,08%. Nakon koliko godina će Indija prestići Kinu po broju stanovnika, pod pretpostavkom da se godišnji rast broja stanovnika ni u jednoj od ove dve države neće menjati?

In [ ]:
 

Zadatak 4. Napiši Pajton program koji učitava poluprečnik kruga, a onda računa i štampa njegovu površinu. (Pomoć: pi se nalazi u biblioteci math.)

In [ ]:
 

Zadatak 5. Rastojanje dve tačke date u ravni svojim koordinatama $A(x_1, y_1)$ i $B(x_2, y_2)$ može se izračunati pomoću formule

$$d(A, B) = \sqrt{(x_1 - x_2)^2 + (y_1 - y_2)^2}$$

Napiši Pajton program koji učitava koordinate dve tačke u ravni i potom računa i štampa njihovo rastojanje. (Pomoć: sqrt se nalazi u biblioteci math; ako ti ova formula deluje zastrašujuće ne brini: to samo prerušena Pitagorina teorema!)

In [ ]:
 

Zadatak 6. Faktorijel broja $n$ je proizvod svih brojeva od 1 do $n$ i označava se ovako:

$$n! = 1 \cdot 2 \cdot 3 \cdot \dots \cdot n.$$

Izračunaj broj 200! i utvrdi sa koliko nula se završava. (Pomoć: biblioteka math ima funkciju factorial.)

In [ ]:
 

Zadatak 7*. Koristeći parče koda navedeno u ćeliji ispod nađi još jedan par celih brojeva $a$ i $b$ takav da je hipotenuza pravouglog trougla sa katetama $a$ i $b$ celobrojna. Umesto 3, 4 unesi neki drugi par celih brojeva, izvrši ćeliju i eksperimentiši! (Takve trojke celih brojeva se zovu Pitagorine trojke.)

In [ ]:
from math import sqrt
a, b = 3, 4
sqrt(a**2 + b**2)
© 2019 Petlja.org Creative Commons License