$$ \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.

1. час: Увод у Џупајтер (Jupyter)

На овом часу ћеш научити:

  1. шта је Џупајтер (Jupyter), како се крећеш кроз Џупајтер радну свеску (Jupyter Notebook) и како се Џупајтер радна свеска користи за рачунање израза;
  2. како се у Џупајтеру користе променљиве и како се радна свеска користи покретање мањих Пајтон (Python) програма; и
  3. шта су библиотеке функција и како се позивају функције из стандардних библиотека.

1.1. Џупајтер (Jupyter) уме да рачуна

Џупајтер (Jupyter) је интерактивна радна свеска у коју можеш да уносиш текст (као текст ког управо читаш), да рачунаш, да покрећеш једноставније Пајтон програме, да обрађујеш податке, да приказујеш податке у виду табеле и дијаграма, и још много тога.

Свака Џупајтер радна свеска се састоји из низа ћелија, а свака ћелија може да садржи текст, математички израз или низ Пајтон наредби. За сада нећемо објашњавати како се у Џупајтер ћелију уноси текст, већ ћемо пажњу усмерити на рачунање израза и извршавање Пајтон наредби.

Када се у Џупајтер ћелију унесе неки израз или Пајтон наредба садржај ћелије се може израчунати тако што се кликне на дугме Run при врху стране:

Дугме за извршавање ћелије

Ево примера:

In [1]:
3 * 19
Out[1]:
57

Ево још неколико примера:

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

1.2. Џупајтер уме да користи променљиве и да извршава Пајтон команде

Понекад је згодно именовати вредности, поготово ако се ради о компликованим бројевима, тако да касније можемо да их користимо тако што наведемо само име. На пример, према попису из 2011. године у Србији живи 7.186.862 становника. Наредба

StSrb_2011 = 7186862

ће у систем увести нову променљиву StSrb_2011 којој ће бити додељена вредност 7186862. Да се подсетимо: имена променљивих у Пајтону морају да почну словом и могу да садрже слова, цифре и специјални знак _ (доња црта).

In [4]:
StSrb_2011 = 7186862

Након извршавања ове ћелије систем неће вратити никакав одговор. Просто је запамтио да променљива StSrb_2011 има вредност 7.186.862.

Деца узраста 0-14 година чине 14,27% укупног броја становника. Број деце према попису из 2011. године можемо да израчунамо овако:

In [5]:
StSrb_2011 * 14.27 / 100
Out[5]:
1025565.2074

Приметимо да се приликом записивања децималних бројева у Пајтону користи децимална тачка, а не децимални зарез, како је то прописано нашим правописом!

Хајде, сада, да решимо један задатак за 4. разред основне школе.

Ана, Бојан и Влада су купили чоколадице. Ана је купила 3 чоколадице, Бојан за две више од Ане, а Влада два пута више од Ане и Бојана заједно. Колико чоколадица су заједно купили Ана, Бојан и Влада?

Ево како се овај задатак може записати као низ Пајтон наредби:

In [6]:
Ana = 3
Bojan = Ana + 2
Vlada = (Ana + Bojan) * 2
Ana + Bojan + Vlada
Out[6]:
24

Прве три наредбе су наредбе доделе: неким променљивим додељујемо неке вредности. Последња наредба садржи само математички израз. Пошто радимо у интерактивном окружењу (што значи да Џупајтер одмах даје одговоре на питања која му поставимо), ако је последња наредба у ћелији само израз систем ће вратити вредност тог израза као резултат извршавања ћелије.

Претходни програм смо могли да напишемо и овако:

In [7]:
Ana = 3
Bojan = Ana + 2
Vlada = (Ana + Bojan) * 2
print(Ana + Bojan + Vlada)
24

Овај пут наредба print исписује вредност израза, а систем ништа не враћа као резултат извршавања ћелије (примети да након извршавања ћелије систем није вратио одговор у облику Out[ ]:).

При раду са интерактивним окружењима згодно је усвојити следећи манир: наредбу print користимо само у ситуацијама у којима треба да прикажемо вредности неколико израза, или ако желимо да испис мало улепшамо. На пример овако:

In [8]:
Ana = 3
Bojan = Ana + 2
Vlada = (Ana + Bojan) * 2
print("Ана, Бојан и Влада заједно имају", Ana + Bojan + Vlada, "чоколадице.")
Ана, Бојан и Влада заједно имају 24 чоколадице.

Ако једна чоколадица кошта 5 динара, колико новца је потрошила Ана, колико Бојан, а колико Влада?

In [9]:
print("Ана је потрошила", Ana * 5, "динара")
print("Бојан је потрошио", Bojan * 5, "динара")
print("Милан је потрошио", Vlada * 5, "динара")
Ана је потрошила 15 динара
Бојан је потрошио 25 динара
Милан је потрошио 80 динара

1.3. Библиотеке функција

У модерним програмским језицима, а Пајтон је један од њих, могу да се ураде невероватне ствари зато што долазе са обиљем функција које су већ испрограмиране. Тако се кориснику система (или програмеру) умногоме олакшава живот: већина ствари које просечном кориснику требају су већ испрограмиране, само треба наћи одговарајућу функцију!

Да би се корисници лакше снашли у овом обиљу, све функције које долазе уз програмски језик (односно, одговарајуће окружење) су груписане у библиотеке функција.

Рецимо, библиотека математичких функција се зове math. Она садржи функције као што су sqrt (која рачуна квадратни корен), sin (која рачуна синус угла) и cos (која рачуна косинус угла), али и математичке константе као што је pi (која представља добру апроксимацију броја $\pi$).

На пример, програм који рачуна обим круга датог полупречника изгледа овако:

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

Први ред у овом програму је једина новина за тебе. Он показује како се из неке библиотеке може увести функција или константа која нам је потребна:

from math import pi

дословно значи: из библиотеке math увези појам pi. Тиме смо у програм увели име pi и слободно можемо да га користимо.

Ево још једног примера. Написаћемо Пајтон програм који одређује хипотенузу $c$ правоуглог троугла ако знамо његове катете $a$ и $b$. (Да се подсетимо, према Питагориној теореми је $c = \sqrt{a^2 + b^2}$.)

За овај програм ће нам требати функција sqrt која рачуна корен неког броја и која се такође налази у библиотеци math.

In [11]:
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: 4
Unesi katetu b: 6
Hipotenuza c je: 7.211102550927978

Претходна два примера представљају комплетне мале програме: податке смо учитали наредбом input, обрадили смо их на одговарајући начин, и резултате смо исписали наредбом print.

Рад са интерактивним окружењима нам омогућује да уместо целих програма пишемо "парчиће кода" које можемо да мењамо како нам одговара и да их извршавамо коликогод пута желимо. Тако се лакше експериментише са подацима (што је важан део модерног разумевања обраде података и о томе ћемо причати касније), и штеди време. Тада углавном не користимо наредбу input већ директно у код унесемо вредности које нас интересују.

На пример, претходни проблем (рачунање хипотенузе правоуглог троугла) можемо у интерактивном окружењу да решимо и овако:

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

Наредба a, b = 3, 4 значи да ће а добити вредност 3, а b вредност 4. Резултат извршавања ћелије је вредност израза sqrt(a**2 + b**2).

1.4. Задаци

Задатке који следе реши у Џупајтеру.

Задатак 1. Према попису из 2011. године Србија има 7.186.862 становника. Процењује се да сваке године наша земља изгуби око 35.000 становника (што због исељавања, што због негативног прираштаја -- више људи умре него што се роди деце). Колики је био процењени број становника Србије у 2014. години?

Задатак 2. Горан, Дејан и Ђорђе скупљају сличице фудбалера. Горан је скупио 746 сличица, Дејан има дупло мање од Горана, а Ђорђе два пута више од Горана и Дејана заједно. Колико сличица је скупио Дејан, а колико Ђорђе?

Задатак 3. Напиши Пајтон програм који учитава полупречник круга, а онда рачуна и штампа његову површину. (Помоћ: pi се налази у библиотеци math.)

Задатак 4. Растојање две тачке дате у равни својим координатама $A(x_1, y_1)$ и $B(x_2, y_2)$ може се израчунати помоћу формуле

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

Напиши Пајтон програм који учитава координате две тачке у равни и потом рачуна и штампа њихово растојање. (Помоћ: sqrt се налази у библиотеци math; ако ти ова формула делује застрашујуће не брини: то само прерушена Питагорина теорема!)

Задатак 5. Факторијел броја $n$ је производ свих бројева од 1 до $n$ и означава се овако:

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

Израчунај број 200! и утврди са колико нула се завршава. (Помоћ: библиотека math има функцију factorial.)

Задатак 6. Користећи парче кода наведено у ћелији испод нађи још један пар целих бројева $a$ и $b$ такав да је хипотенуза правоуглог троугла са катетама $a$ и $b$ целобројна. Уместо 3, 4 унеси неки други пар целих бројева, изврши ћелију и експериментиши! (Такве тројке целих бројева се зову Питагорине тројке.)

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