mag Rado Wechtersbach Obdelava podatkov Programiranje Programiranje Priporoena
mag. Rado Wechtersbach Obdelava podatkov Programiranje
Programiranje • Priporočena izpeljava ▪ ▪ 2/35 IV. letnik 35 ur
Programiranje • Cilji ▪ Razviti algoritmični način reševanja problemov ▪ Opredelitev problema, izdelava algoritma, diagram poteka; ▪ Spoznati postopek izdelave računalniškega programa ▪ Izdelati program v izbranem jeziku 3/35
Programiranje • Vsebine ▪ Algoritmično reševanje problemov ▪ Opredelitev problema, algoritem, diagram poteka; ▪ Programski jeziki ▪ Vrste in namen, prevajanje ▪ Postopki programiranju ▪ Strukturirano, objektno in postopkovno ▪ 4/35 Pyton
Zakaj Python • Sodoben skriptni jezik ▪ Osnovo določil Guido van Rossum leta 1991 • Objektno usmerjen ▪ Vsak element jezika je objekt ▪ Objekt ima lastnosti in metode • Prosto dostopen ▪ Odprta programska oprema • Razmeroma enostaven za učenje in uporabo ▪ 5/35 Čista koda
Kaj potrebujemo? • Računalnik ▪ OS ni pomemben • Tolmač za programski jezik ▪ ▪ www. python. org/download www. zrss. si/default. asp? link=predmet&tip=6&p. ID=24& r. ID=300 • Uporabniški vmesnik ▪ 6/35 Active Python
Uporaba tolmača • Zagon programa ▪ Program za uporabniški vmesnik ▪ Python. Win IDE 7/35
Uporaba tolmača • Interaktivna uporaba ▪ ▪ 8/35 V aktivno vrstico >>> odtipkamo vhodni podatek Program izpiše rezultat in novo aktivno vrstico
Tipi podatkov • Števila ▪ Cela (Integer) ▪ 3 236411 -345698 ▪ Realna (Real) ▪ 3, 14 ▪ -3456. 12 3 e 3 Kompleksna ▪ -5+2 j, 1. 7 -5. 4 j, 0. 5 j • Bool ▪ Logične vrednosti ▪ True (1), False (0) • Niz (String) ▪ Niz znakov v narekovaju ▪ “Pozdravljeni” • ‘ 1 + 1’ Seznam (List) ▪ Urejeni seznam objektov ▪ [5, ”Rado” , “sin” , 2345] 9/35
Izrazi • Številski izrazi + seštevanje 2+3=5 - Odštevanje 5 -2=3 * množenje 2*3 =6 2+5*4=22 / deljenje 5/2=2 5. 0/2=2, 5 % ostanek pri celostnem deljenju 6%4=2 ** potenciranje 2**3=8 += doda stari vrednosti () spreminjanje vrstnega reda računanja (2+5)*4=28 10/35
Izrazi • Izrazi z nizi + * [a] [a: b] len(a) > in join 11/35 združevanje “Janez”+”Novak”=“Janez. Novak” ponavljanje “Janez”*3 = “Janez” indeksiranje “Janez”[1] = “a” “Janez”[-2] = “e” odrezovanje “Janez[2: 4]=“ne” štetje znakov len(“Janez”) = 5 primerjanje “A” < “B” = True iskanje “ane” in “Janez” = True povezovanje “ in ”. join([“Miha”, ”Janez”, ”Peter”]) = “Miha in Janez in Peter”
Izrazi • Logični izrazi > < == != >= <= and or not 12/35 večji kot 5 > 3 => True manjši kot A < B => True je enak “Janez” == “Miha” => False različen 300 != 3 e 2 => False večji ali enak len(“Janez”) => 5 manjši ali enak “A” < “B” => True logični in True and False => False logični ali True or False => True logični ne not True => False
Spremenljivke • Med izvajanjem programa spremenljivka spreminja svojo vrednost >>> A=5 >>> A=6 >>> A 6 >>>A=A+1 >>>A 7 13/35
Spremenljivke • • Med izvajanjem programa spremenljivka spreminja svojo vrednost Ime spremenljivke je poljubno ▪ ▪ Prvi znak mora biti črka Ne sme vsebovati presledka, šumnikov, matematičnih znakov. . . >>> Ime = “Janez” >>> A = 5 >>>a, b=6, 7 >>> A 5 14/35 >>> a, b, A+a (6, 7, 11) >>>C = [1, 2, 3, 4] >>> C[1] 2
Spremenljivke • • • 15/35 Med izvajanjem programa spremenljivka spreminja svojo vrednost Ime spremenljivke je poljubno Spremenljivko opredelimo tako, da ji priredimo vrednost >>> A = 5 >>> B = 3, 14 >>> C = True >>> D= A + B >>> E = [1, 2, 3, 4] >>> F = E + [Iva”, “Miha”] [1, 2, 3, 4, ‘Iva’, ‘Miha’] >>>E += “bob” [1, 2, 3, 4, ’b’, ’o, ’b’] >>>E += [“bob”]
Spremenljivke • • Med izvajanjem programa spremenljivka spreminja svojo vrednost Ime spremenljivke je poljubno Spremenljivko opredelimo tako, da ji priredimo vrednost Med izvajanjem programa spremenljivka lahko spremeni svoj tip >>> A = 5 >>> A = 3, 14 >>> A = [1, 2, 3, 4] 16/35
Spremenljivka je objekt >>> a = range(5) >>> a. append(5) >>> a. pop() 5 >>> a. insert(0, 42) >>> a. pop(0) 42 >>> a. reverse() >>> a. sort() >>> a. append([22, 33]) >>> a. extend([10, 20]) 17/35 # [0, 1, 2, 3, 4] # [0, 1, 2, 3, 4, 5] # [0, 1, 2, 3, 4] # [42, 0, 1, 2, 3, 4] # [4, 3, 2, 1, 0] # [0, 1, 2, 3, 4, [22, 33]] # [0, 1, 2, 3, 4, [22, 33], 10, 20]
Program Izdelaj program, ki prebere dve števili in izpiše njun produkt ▪ ▪ ▪ 18/35 Program najprej napišemo File>New a=input() b=input() print a*b Shranimo File>Save Poženemo File>Run
Linearni program Izdelaj program, ki prebere dve števili in izpiše njun produkt a=input("Prvo število: ") b=input("Drugo število: ") print a*b 19/35
Linearni program Izdelaj program, ki prebere vrednost števila A in izpiše njegovo obratno vrednost največ na dve decimalni mesti natančno. a=input(“Vpiši število: ”) b=100/a print (b/100. 0) 20/35
Linearni program Izdelaj program, ki s pomočjo funkcije sum(seznam), funkcija izračuna vsoto elementov seznama v oklepaju, izpiše vsoto naravnih števil do prebranega števila. a=input("Vnesi zadnje število: ") print sum(range(1, a+1)) 21/35
Zanka – stavek for Kaj izpiše program? a=input("Vpiši število: ") for n in range(2, a): for x in range(2, n): if n % x == 0: print n, “je”, x, ”x”, n/x break else: print n, ”je praštevilo” 22/35
Vejišče – stavek if Izdelaj program, ki prebere število, in izpiše, ali je vpisano število pozitivno ali negativno (manjše od 0). • a=input("vnesi število: ") • if a<0: • print("Število je negativno. ") • else: • print ("Število je pozitivno") 23/35
Vejišče – stavek if Izdelaj program, ki prebere dve števili in izpiše, katero število je večje oziroma, če sta enaki, da sta enaki. a=input(‘vnesi prvo število: ') b=input(‘vnesi drugo število: ') if a>b: print('1. je večje. ') elif b>a: print('2. je večje. ') else: print (‘števili sta enaki') 24/35
Vejišče – stavek if Izdelaj program, ki prebere nek znak in izpiše, ali je prebrani znak velika črka, mala črka ali pa ni črka angleške abecede. 25/35 c=input(“Vpiši nek znak: ”) if “a“ <= c <= “z“: print c+” je mala črka” elif “A“ <= c <= “Z“: print c+“ je velika črka“ else: print c+ “ ni črka“
Zanka – stavek for Dan je seznam ["Janez", "Božidar", "Andrej"]. Izdelaj program, ki izpiše elemente seznama po abecedi in število znakov v posameznem elementu. a=["Janez", "Božidar", "Andrej"] a. sort() for x in a: print x, len(x) 26/35
Zanka – stavek for Izdelaj program, ki prebere število in izpiše vse kvadrate naravnih števil do prebranega števila. a = input("Vpiši število: ") for x in range(1, a+1): print x*x 27/35
Moduli • • Modul je podprogram, ki ga vključimo v glavni program. Lahko ga izdelamo sami ali pa uporabimo standardne module math – matematične funkcije datetime – datumske funkcije winsound – delo z zvoki in glasbo Tkinter - risanje 28/35
Uporaba modulov Izdelaj program, ki prebere število in izpiše njegov kvadratni koren. from math import sqrt a = input("Vpiši število: ") print sqrt(a) from math import * a = input("Vpiši število: ") print math. sqrt(a) 29/35
Risanje • 30/35 Risbo izdelamo v Pythonu takole: ▪ uvozimo Tkinter modul ▪ določimo glavni gradnik (okno) ▪ določimo risalno površino (canvas) ▪ z metodo pack uvrstimo risalno površino v glavni gradnik ▪ narišemo risbo ▪ postavimo risalno površino na vrh glavnega gradnika ▪ z metodo mainloop() narišemo glavni gradnik na zaslonu
Risanje from Tkinter import * root = Tk() root. title(“Prazno okno") # naredimo 500 x 400 pixlov veliko risalno površino can = Canvas (root, width = 500, height = 400, background = "white") # uvrstimo jo na vrh can. pack(side = TOP) # narišemo na zaslon root. mainloop() 31/35
Risanje Narišimo črto ▪ from Tkinter import * ▪ root = Tk() ▪ root. title(“Linija") ▪ can = Canvas(root, width = 500, height = 400, background = "white") ▪ can. create_line(200, 100, 300, 200, width = 5, fill = "green") ▪ can. pack(side = TOP) ▪ root. mainloop() 32/35
Risanje Narišimo več črt 33/35 from Tkinter import * root = Tk() root. title(“Linije") can = Canvas(root, width = 500, height = 400, background = "white") for a in range(200, 300): can. create_line(a, 100, 300, 200, width = 5, fill = "green") can. create_line(200, 100, 300, a, width = 5, fill = "red") can. create_line(400 -a, 200, 500, a, width = 5, fill = "blue") can. pack(side = TOP) root. mainloop()
Risanje lok create_arc(100, 250, 350, start = 0, extent = 180, fill = “red“, style=“arc”, width=3) poligon create_polygon (100, 250, 300, 250, width=3, fill = “red") 34/35
Kaj izpiše program. a=input("a= ") b=input("b= ") while a != 0: a, b = b%a, a print b 35/35
- Slides: 35