Praktikum iz Programiranja 1 Specijalna Grupa 13 S

  • Slides: 18
Download presentation
Praktikum iz Programiranja 1 Specijalna Grupa 13 S 111 PP 1 Osnove jezika

Praktikum iz Programiranja 1 Specijalna Grupa 13 S 111 PP 1 Osnove jezika

Uvod – ciljevi kursa • Ciljevi • • • Upotreba jezika Python Tumačenje zahteva

Uvod – ciljevi kursa • Ciljevi • • • Upotreba jezika Python Tumačenje zahteva Organizacija programskog koda Dobre i loše prakse u programiranju Zašto Python? • • Bogata biblioteka, efikasno i produktivno programiranje Gde se koristi Python? • Google, Yahoo, CERN, NASA, naučne institucije

Uvod – Ukratko o jeziku • Python • razvoj počeo krajem 80 -tih (Guido

Uvod – Ukratko o jeziku • Python • razvoj počeo krajem 80 -tih (Guido Van Rossum) • Interpretirani programski jezik visokog nivoa • za razliku od jezika zasnovanih na kompajliranju • Mogućnosti popularnih neinterpreterskih jezika • OO programiranje, funkcionalno programiranje, aspekt-orijentisano programiranje • Kurs se ne bavi tim aspektima jezika • Garbage collector

Uvod – Verzije jezika i alati • Dve bitne grane: 2. x i 3.

Uvod – Verzije jezika i alati • Dve bitne grane: 2. x i 3. x • Postoje značajne razlike između 2. 7 i 3. 0 u samom jeziku!!! • Način upotrebe nekih operatora • … • Mi koristimo verziju 3. 5 • Alati • Py. Scripter • Py. Charm • Intelli. J Idea • . . .

Definicije • Podatak • entitet kome se programskim putem pristupa putem imena (identifikatora) •

Definicije • Podatak • entitet kome se programskim putem pristupa putem imena (identifikatora) • • Tip • • • ima lokaciju u memoriji računara (ne mora uvek) način tumačenja memorijskog sadržaja koji zauzima entitet precizira skup vrednosti i operacija nad podacima osnovni tipovi: int, bool, float, str • Promenljiva • podatak kome je moguće menjati vrednost

Rezervisane (ključne) reči and elif as else assert except break exec class finally continue

Rezervisane (ključne) reči and elif as else assert except break exec class finally continue for def from del global if import in is lambda not or pass print raise return try while with yield Crvenom označene ključne reči sa kojima ništa nećemo raditi, najverovatnije

Komentari u izvornom kodu • U jednom redu, iza simbola # • Ostatak reda

Komentari u izvornom kodu • U jednom redu, iza simbola # • Ostatak reda iza tog simbola je komentar • Unutar tzv. heredocs • tekst koji se nalazi između 2 para od po 3 uzastopna znaka navoda: """. . . """ # primer linijskog komentara. """ Primer višelinijskog komentara. Može da sadrži prelaz u novi red. Služi da se podrobnije opiše šta i kako deo koda radi, i zbog čega. Ima ovakvih komentara dosta u primerima. Komentarišite kod, i zbog sebe i zbog drugih!!! """

Celi brojevi – tip int • Vrednosti: celi brojevi minint …-4, -3, -2, -1,

Celi brojevi – tip int • Vrednosti: celi brojevi minint …-4, -3, -2, -1, 0, 1, 2, 3, 4, … maxint • Operacije: *, +, **, /, //, –, % • Rezultat operacije deljenja 2 cela broja: realan broj • 10/3 = 3. 33 • Rezultat operacije celobrojnog deljenja 2 cela broja: ceo broj • 10//3 = 3 • Literali • Ako počinju sa 0 b, onda su binarne vrednosti: 0 b 100 • Ako počinju sa 0 o, onda su oktalne vrednosti: 0 o 170 • Ako počinju sa 0 x, onda su heksadecimalne: 0 x 1 ac

Realni brojevi – tip float • Vrednosti: podskupa realnih brojeva 1. 4, 2. 333,

Realni brojevi – tip float • Vrednosti: podskupa realnih brojeva 1. 4, 2. 333, -. 04, -35 e-3 (-35· 10 -3), . . . • Operacije: *, +, **, /, //, –, % • Rezultat operacije deljenja 2 realna broja: realan broj 10. 0/3. 0 = 3. 333 • Ograničena tačnost, zaokruživanje

Pregled operatora nad numeričkim tipovima Operator Značenje Primenljiv na - Negacija, promena znaka 1

Pregled operatora nad numeričkim tipovima Operator Značenje Primenljiv na - Negacija, promena znaka 1 operand -2 -3. 5 - Oduzimanje 2 operanda 1 – 3 -2 2 – 5. 4 -3. 6 Primer 1 / 3 0. 3333333 1 / 3. 0 0. 33333331 5. 0 / 2 2. 5 4 / 2 2. 0 / Deljenje 2 operanda. Celobrojno ili realno deljenje, zavisi od operanada * Množenje 2 operanda 2*2 4 % Ostatak pri deljenju 2 operanda 5%2 1 10 % 3 1 11 % 3 2 ** Stepenovanje 2 operanda 2 ** 8 256 2. 0 ** 8 256. 0 // Deljenje sa zaokruživanjem “na niže” 2 operanda 9 // 2 4 9. 5 // 2 4. 0

Prioritet, konverzija i smer grupisanja operatora • Mnemonik: PEMDAS Parenthesis (), Exponentiation **, Multiplication

Prioritet, konverzija i smer grupisanja operatora • Mnemonik: PEMDAS Parenthesis (), Exponentiation **, Multiplication *, Division /, Addition +, Subtraction – • 3**2*4*(2+3*8**2**3/2**3%4)+7*5/3 • 100. 0/2/2 • operanda 100/2*2 !! nije 100/4, već (100/2)*2 Tip rezultata Operator Smer int op int float op int op float grupisanja ** ← float * / % → float + - →

Eksplicitna konverzija • Potrebna da bi programer eksplicitno naznačio sa kojim tipom podataka želi

Eksplicitna konverzija • Potrebna da bi programer eksplicitno naznačio sa kojim tipom podataka želi da radi • Sintaksa: tip(izraz) • Konvertuje tip izraza u navedeni tip • A ako imamo realan broj, a želimo ceo? • int(a) vraća celi deo

Znakovni nizovi (niske) – tip string • "Zdravo" ili 'Zdravo' • Moguće nadovezivanje, operator

Znakovni nizovi (niske) – tip string • "Zdravo" ili 'Zdravo' • Moguće nadovezivanje, operator + • • "Zdravo" + 'svete' Indeksiranje: moguće dohvatiti karakter na proizvoljnoj poziciji: >>> a="abrakadabra" >>> a[1] 'b' >>> a[0] 'a' • . . . ali ne može tako da se promeni (string-ovi su nepromenljivi) • više o tome kasnije

Logički podaci – tip bool • Moguće 2 vrednosti • True (logička istina) •

Logički podaci – tip bool • Moguće 2 vrednosti • True (logička istina) • False (logička neistina) • Logički operatori: • and , or, not • Relacioni operatori: • > <= = >= > != • Rezultat logičkih i relacionih operatora – bool

Promenljive (1) • • Promenljiva • podatak čija vrednost može da se promeni •

Promenljive (1) • • Promenljiva • podatak čija vrednost može da se promeni • zauzima prostor u memoriji • sadržaj memorije se tumači prema tipu primenljive • pristupa se putem imena (identifikatora) Ime promenljive (identifikator) • Može biti proizvoljne dužine, razlikuju se mala i VELIKA slova • Ne sme početi cifrom, preporučuje se da počne malim slovom • Znak “_” se koristi za odvajanje reči u nazivu sačinjenom od više reči, npr. cena_kafe. Može da počne ovim znakom, ali se ne preporučuje. • • Ne sme da bude rezervisana reč • Lokalna ili globalna Može se definisati. Prvi put kada se upotrebi ime promenljive (u dodeli vrednosti), tada se ta promenljiva definiše, i ostatak programa je može koristiti Može se promeniti vrednost promenljivoj Postoji i vrednost None – odsustvo vrednosti

Promenljive (2) cena_kafe = 99. 99 broj_kafa = 3 Definicija novog realnog podatka Definicija

Promenljive (2) cena_kafe = 99. 99 broj_kafa = 3 Definicija novog realnog podatka Definicija novog celobrojnog podatka cena_porudzbine = cena_kafe * broj_kafa #. . . neki kod, nebitno … cena_porudzbine = 1. 2 * cena_porudzbine Dodela vrednosti • Operator = pri definiciji i dodeli vrednosti • Pascal koristi operator : = • Jednom upotrebljeno ime cena_kafe može da promeni podatak na koji se odnosi a=5 # type(a) → int b = 5. 5 # type(b) → float a=b 99. 99 3 broj_kafa # type(a) → float cena_porudzbine 299. 97 353. 96

1. 0_intro. py Osnovni izlaz – funkcija print • Funkcija print “štampa” vrednosti koje

1. 0_intro. py Osnovni izlaz – funkcija print • Funkcija print “štampa” vrednosti koje joj se zadaju • Sve vrednosti razdvojene zarezma: print(2. 0, x, 7+2*3, "Nova Godina!") • Promenljive u tekstu ispisa print("Racun za {} kafa = {}". format(broj_soljica, cena_kafe)) print format • Vrednosti predate funkciji format se uzimaju redom i pojavljuju umesto vitičastih zagrada • Može se i eksplicitno navesti koja se po redu navedena vrednost ispisuje print("Cena jedne kafe = {1}. Ukupni iznos = {0} x {1} = {2}". format(broj_soljica, cena_kafe, (broj_soljica*cena_kafe)))

1. 1_input. py Osnovni ulaz – funkcija input • Funkcija input • pročita tekst

1. 1_input. py Osnovni ulaz – funkcija input • Funkcija input • pročita tekst i sačuva ga kao string • Text sa ulaza se može konvertovati u željeni tip: • • float(input()) int(input()) bool(input()) Moguća je greška prilikom konverzije tipova