.. _introduction: ==== Увод ==== Претходно поглавље било је усредсређено на рачунске процесе и на улогу функција у пројектовању програма. Приказано је коришћење примитивних података (бројева) и примитивних операција (аритметика), како образовати сложене функције кроз комбиновање и управљање и како направити функционалне апстракције давањем имена поступцима. Такође је показано и како функције вишег реда повећавају снагу језика омогућавајући манипулацију, а самим тим и расуђивање и промишљање у погледу општих метода израчунавања. Ово је у многоме срж и суштина програмирања. У жижи овог поглавља су подаци. Технике које ће бити истражене на овом месту дозволиће представљање и руковање информацијама из многих различитих домена. Услед експлозивног раста интернета, огромна количина структурираних података је слободно доступна свима и израчунавања могу бити примењена на широк спектар најразличитијих проблема. Ефикасна употреба уграђених и кориснички дефинисаних типова података је од фундаменталног значаја за обраду података уопште. .. _nativeDataTypes: Изворни типови података ----------------------- Свака вредност у Пајтону има *класу* која одређује ког типа је та вредност. Вредности које имају заједничку класу, такође имају заједничко понашање. На пример, цели бројеви ``-1`` и ``2`` су оба примерци, односно инстанце ``int`` класе. С овим двема вредностима може се поступати на сличан начин. На пример, обе се могу негирати или додавати другим целим бројевима. Уграђена функција ``type`` омогућава прегледање класе ма које вредности. >>> type(2) Вредности које су до сада биле коришћене су инстанце малог броја *изворних* типова података који су уграђени у Пајтон програмски језик. Изворни типови имају следећа својства: #. Постоје изрази који се вреднују у вредности изворних типова и називају се *литерали*. #. Постоје уграђене функције и оператори за манипулисање вредностима изворних типова. Класа ``int`` је изворни тип податка коришћен за представу целих бројева. Целобројни литерали (низови упоредних цифара) се вреднују у ``int`` вредности, а математички оператори рукују овим вредностима. >>> 12 + 3000000000000000000000000 3000000000000000000000012 Пајтон укључује три изворна нумеричка типа: цели бројеви (``int``), реални бројеви (``float``) и комплексни бројеви (``complex``). >>> type(1.5) >>> type(1+1j) .. _floats: Реални бројеви ^^^^^^^^^^^^^^ Назив ``float`` потиче од начина на који су реални бројеви представљени у Пајтону и многим другим програмским језицима: "floating point" представа или представа са "покретним зарезом". И док појединости о томе како су бројеви представљени није тема овог текста, неке разлике на високом нивоу између ``int`` и ``float`` објеката су важне да се знају. Нарочито, ``int`` објекти представљају целе бројеве егзактно, односно без икакве апроксимације или ограничења на њихову величину. С друге стране ``float`` објекти могу представљати широк опсег разломљених бројева (разломака), али не могу сви бројеви бити представљени егзактно, а постоји минимална и максимална вредност која се може представити. Стога, ``float`` вредности треба третирати као апроксимације реалних вредности. Ове апроксимације имају коначну прецизност. Комбинација ``float`` вредности може водити ка грешкама апроксимације. Наиме, оба наредна израза би се вредновала као 7 ако не би било апроксимације. >>> 7 / 3 * 3 7.0 >>> 1 / 3 * 7 * 3 6.999999999999999 Премда су целобројне ``int`` вредности комбиноване, дељење једне ``int`` вредности другом даје ``float`` вредност: скраћену коначну апроксимацију стварног односа два подељена цела броја. >>> type(1/3) >>> 1/3 0.3333333333333333 Проблеми са апроксимативним вредностима почињу да се појављују приликом провере једнакости. >>> 1/3 == 0.333333333333333312345 # Пажња: float апроксимација True Ове суптилне разлике међу класама ``int`` и ``float`` имају далекосежне последице на писање програма па су то појединости које програмери морају запамтити. Срећом, постоји свега неколико изворних типова података те је количина ствари које се мора упамтити, да би се савладао одређени програмски језик, ипак ограничена. Штавише, ове појединости су применљиве на више програмских језика и подстакнуте су заједничким смерницама као што је `IEEE 754 `_ стандард за аритметику у покретном зарезу. .. _nonNumericTypes: Ненумерички типови ^^^^^^^^^^^^^^^^^^ Вредностима се могу приказати многи други типови података, као што су звуци, слике, положаји, адресе, мрежне везе, итд. Свега неколико их је представљено изворним типовима података као што је ``bool`` класа са вредностима ``True`` (тачно) и ``False`` (нетачно) за логички тип податка. За већину вредности тип мора бити дефинисан од стране програмера користећи начине комбинације и апстракције који ће бити представљени и развијени у овом поглављу. Наредни одељци уводе још Пајтонових изворних типова података фокусирајући се на улогу коју играју у стварању корисних апстракција података. За оне који су заинтересовани за појединости, поглавље о изворним типовима података у интернет књизи `Dive Into Python 3 `_ даје прагматичан преглед свих Пајтонових изворних типова података и основним операцијама над њима укључујући и бројне примере коришћења и практичне савете.