На овом часу ћеш научити:
Џупајтер (Jupyter) је интерактивна радна свеска у коју можеш да уносиш текст (као текст ког управо читаш), да рачунаш, да покрећеш једноставније Пајтон програме, да обрађујеш податке, да приказујеш податке у виду табеле и дијаграма, и још много тога.
Свака Џупајтер радна свеска се састоји из низа ћелија, а свака ћелија може да садржи текст, математички израз или низ Пајтон наредби. За сада нећемо објашњавати како се у Џупајтер ћелију уноси текст, већ ћемо пажњу усмерити на рачунање израза и извршавање Пајтон наредби.
Када се у Џупајтер ћелију унесе неки израз или Пајтон наредба садржај ћелије се може израчунати тако што се кликне на дугме Run при врху стране:
Кликни на ћелију испод да се активира (активна ћелија има *зелени или плави* оквир, зависи где си кликнуо/ла), и онда кликни на дугме Run:
3 * 19
Треба да добијеш одговор система који изгледа овако:
Out[1]: 57
Џупајтер је израчунао вредност израза 3 * 19
, што је 57
.
Хајде, сада, у ћелију испод унеси (12 + 51) * 14
и онда кликни на дугме Run при врху стране:
(12 + 51) * 14
Треба да добијеш одговор 882.
Сада кликни поново на горњу ћелију, унеси у њу неки други израз и кликни на дугме Run при врху стране. Слободно се играј са разним изразима. Пробај, рецимо, да израчунаш $2^{5^3}$ тако што ћеш укуцати 2**(5**3)
Понекад је згодно именовати вредности, поготово ако се ради о компликованим бројевима, тако да касније можемо да их користимо тако што наведемо само име. На пример, према попису из 2011. године у Србији живи 7.186.862 становника. Наредба
StSrb_2011 = 7186862
ће у систем увести нову променљиву StSrb_2011
којој ће бити додељена вредност 7186862
. Да се подсетимо: имена променљивих у Пајтону морају да почну словом и могу да садрже слова, цифре и специјални знак _
(доња црта).
Да пробамо! Изврши садржај у следећој ћелији (клик на ћелију, па на дугме Run при врху стране):
StSrb_2011 = 7186862
Видимо да систем није вратио никакав одговор. Просто је запамтио да променљива StSrb_2011
има вредност 7.186.862.
Деца узраста 0-14 година чине 14,27% укупног броја становника. Хајде да израчунамо колико је, према попису из 2011. године, у Србији било деце наведеног узраста (клик на ћелију испод, па на дугме Run при врху стране):
StSrb_2011 * 14.27 / 100
Приметимо да се приликом записивања децималних бројева у Пајтону користи децимална тачка, а не децимални зарез, како је то прописано нашим правописом!
Хајде, сада, да решимо један задатак за 4. разред основне школе.
Ана, Бојан и Влада су купили чоколадице. Ана је купила 3 чоколадице, Бојан за две више од Ане, а Влада два пута више од Ане и Бојана заједно. Колико чоколадица су заједно купили Ана, Бојан и Влада?
Ево како се овај задатак може записати као низ Пајтон наредби (изврши наредну ћелију):
Ana = 3
Bojan = Ana + 2
Vlada = (Ana + Bojan) * 2
Ana + Bojan + Vlada
Прве три наредбе су наредбе доделе: неким променљивим додељујемо неке вредности. Последња наредба садржи само математички израз. Пошто радимо у интерактивном окружењу (што значи да Џупајтер одмах даје одговоре на питања која му поставимо), ако је последња наредба у ћелији само израз систем ће вратити вредност тог израза као резултат извршавања ћелије.
Претходни програм смо могли да напишемо и овако (изврши наредну ћелију):
Ana = 3
Bojan = Ana + 2
Vlada = (Ana + Bojan) * 2
print(Ana + Bojan + Vlada)
Овај пут наредба print
исписује вредност израза, а систем ништа не враћа као резултат извршавања ћелије (примети да након извршавања ћелије систем није вратио одговор у облику Out[ ]:
).
При раду са интерактивним окружењима згодно је усвојити следећи манир: наредбу print
користимо само у ситуацијама у којима треба да прикажемо вредности неколико израза, или ако желимо да испис мало улепшамо. На пример овако:
Ana = 3
Bojan = Ana + 2
Vlada = (Ana + Bojan) * 2
print("Ана, Бојан и Влада заједно имају", Ana + Bojan + Vlada, "чоколадице.")
Следећи задатак уради сам у ћелији испод.
Ако једна чоколадица кошта 5 динара, колико новца је потрошила Ана, колико Бојан, а колико Влада? (Немој рачунати у глави! У ћелији испод напиши мали Пајтон програм; употреби три print
наредбе.)
У модерним програмским језицима, а Пајтон је један од њих, могу да се ураде невероватне ствари зато што долазе са обиљем функција које су већ испрограмиране. Тако се кориснику система (или програмеру) умногоме олакшава живот: већина ствари које просечном кориснику требају су већ испрограмиране, само треба наћи одговарајућу функцију!
Да би се корисници лакше снашли у овом обиљу, све функције које долазе уз програмски језик (односно, одговарајуће окружење) су груписане у библиотеке функција.
Рецимо, библиотека математичких функција се зове math
. Она садржи функције као што су sqrt
(која рачуна квадратни корен), sin
(која рачуна синус угла) и cos
(која рачуна косинус угла), али и математичке константе као што је pi
(која представља добру апроксимацију броја $\pi$).
На пример, програм који рачуна обим круга датог полупречника изгледа овако (изврши ћелију да видиш како програм ради):
from math import pi
r = float(input("Unesi poluprecnik kruga: "))
obim = 2 * r * pi
print("Obim kruga je:", obim)
Први ред у овом програму је једина новина за тебе. Он показује како се из неке библиотеке може увести функција или константа која нам је потребна:
from math import pi
дословно значи: из библиотеке math
увези појам pi
. Тиме смо у програм увели име pi
и слободно можемо да га користимо.
Ево још једног примера. Написаћемо Пајтон програм који одређује хипотенузу $c$ правоуглог троугла ако знамо његове катете $a$ и $b$. (Да се подсетимо, према Питагориној теореми је $c = \sqrt{a^2 + b^2}$.)
За овај програм ће нам требати функција sqrt
која рачуна корен неког броја и која се такође налази у библиотеци math
.
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)
Претходна два примера представљају комплетне мале програме: податке смо учитали наредбом input
, обрадили смо их на одговарајући начин, и резултате смо исписали наредбом print
.
Рад са интерактивним окружењима нам омогућује да уместо целих програма пишемо "парчиће кода" које можемо да мењамо како нам одговара и да их извршавамо коликогод пута желимо. Тако се лакше експериментише са подацима (што је важан део модерног разумевања обраде података и о томе ћемо причати касније), и штеди време. Тада углавном не користимо наредбу input
већ директно у код унесемо вредности које нас интересују.
На пример, претходни проблем (рачунање хипотенузе правоуглог троугла) можемо у интерактивном окружењу да решимо и овако (изврши следећу ћелију):
from math import sqrt
a, b = 3, 4
sqrt(a**2 + b**2)
Наредба a, b = 3, 4
значи да ће а
добити вредност 3, а b
вредност 4. Резултат извршавања ћелије је вредност израза sqrt(a**2 + b**2)
.
Сада се врати, унеси неке друге вредности за a
и b
и поново изврши ћелију.
Задатак 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
унеси неки други пар целих бројева, изврши ћелију и експериментиши! (Такве тројке целих бројева се зову Питагорине тројке.)
from math import sqrt
a, b = 3, 4
sqrt(a**2 + b**2)