Microsoft Word - UP_Lekcija04_2014.docx

Podobni dokumenti
MATLAB programiranje MATLAB... programski jezik in programersko okolje Zakaj Matlab? tipičen proceduralni jezik enostaven za uporabo hitro učenje prir

Strojna oprema

DN5(Kor).dvi

Diapozitiv 1

RAM stroj Nataša Naglič 4. junij RAM RAM - random access machine Bralno pisalni, eno akumulatorski računalnik. Sestavljajo ga bralni in pisalni

Diapozitiv 1

Microsoft Word - M docx

Poglavje 3 Reševanje nelinearnih enačb Na iskanje rešitve enačbe oblike f(x) = 0 (3.1) zelo pogosto naletimo pri reševanju tehničnih problemov. Pri te

Iskanje ničel funkcij z metodo bisekcije Imejmo podano funkcijo f(x), ki ji želimo poiskati ničle, to je presečišča z x-osjo, kjer je vrednost f(x)=0.

Microsoft PowerPoint - Java_spremenljivke

RAČUNALNIŠKI PRAKTIKUM d o c. d r. A N D R E J T A R A N E N K O Kdo bo z vami? Predavatelj: dr. Andrej Taranenko

Microsoft Word - M _mod..docx

11. Navadne diferencialne enačbe Začetni problem prvega reda Iščemo funkcijo y(x), ki zadošča diferencialni enačbi y = f(x, y) in začetnemu pogo

Osnove matematicne analize 2018/19

GHOSTBUSTERS navodila za učitelje O PROJEKTU S tem projektom se učenci sami naučijo izdelati igro. Ustvariti morajo več ikon (duhcov ali kaj drugega)

Mladi za napredek Maribora srečanje DOLŽINA»SPIRALE«Matematika Raziskovalna naloga Februar 2015

glava.dvi

Microsoft Word - Seštevamo stotice.doc

C:/Users/Matevž Èrepnjak/Dropbox/FKKT/TESTI-IZPITI-REZULTATI/ /Izpiti/FKKT-avgust-17.dvi

DOMACA NALOGA - LABORATORIJSKE VAJE NALOGA 1 Dani sta kompleksni stevili z in z Kompleksno stevilo je definirano kot : z = a + b, a p

2. izbirni test za MMO 2017 Ljubljana, 17. februar Naj bosta k 1 in k 2 dve krožnici s središčema O 1 in O 2, ki se sekata v dveh točkah, ter

Microsoft PowerPoint _12_15-11_predavanje(1_00)-IR-pdf

Microsoft Word - vaje2_ora.doc

BYOB Žogica v vesolju Besedilo naloge Glavna ideja igre je paziti, da žoga ne pade na tla igralne površine, pri tem pa zbrati čim več točk. Podobno ig

Ime in priimek: Vpisna št: FAKULTETA ZA MATEMATIKO IN FIZIKO Oddelek za matematiko Statistika Pisni izpit 6. julij 2018 Navodila Pazljivo preberite be

Vaje: Matrike 1. Ugani rezultat, nato pa dokaži z indukcijo: (a) (b) [ ] n 1 1 ; n N 0 1 n ; n N Pokaži, da je množica x 0 y 0 x

Slide 1

Osnove statistike v fizični geografiji 2

ŠTEVCI PROMETA IN NJIHOVA UPORABA ZA NAMENE STATISTIK ČRT GRAHONJA

Datum in kraj

PowerPoint Presentation

Vrste

STAVKI _5_

Microsoft Word - ELEKTROTEHNIKA2_ junij 2013_pola1 in 2

ARS1

Turingov stroj in programiranje Barbara Strniša Opis in definicija Definirajmo nekaj oznak: Σ abeceda... končna neprazna množica simbolo

C:/Users/Matevž Èrepnjak/Dropbox/FKKT/testi in izpiti/ /IZPITI/FKKT-februar-14.dvi

PREDMETNI KURIKULUM ZA RAZVOJ METEMATIČNIH KOMPETENC

FAKULTETA ZA STROJNIŠTVO Matematika 2 Pisni izpit 9. junij 2005 Ime in priimek: Vpisna št: Zaporedna številka izpita: Navodila Pazljivo preberite bese

ZveznostFunkcij11.dvi

Delavnica Načrtovanje digitalnih vezij

Kazalo 1 DVOMESTNE RELACIJE Operacije z dvomestnimi relacijami Predstavitev relacij

Univerza v Mariboru Fakulteta za naravoslovje in matematiko Oddelek za matematiko in računalništvo Enopredmetna matematika IZPIT IZ VERJETNOSTI IN STA

Poslovilno predavanje

Microsoft Word - avd_vaje_ars1_1.doc

resitve.dvi

Ime in priimek

NAJRAJE SE DRUŽIM S SVIČNIKOM, SAJ LAHKO VADIM ČRTE IN KRIVULJE, PA VELIKE TISKANE ČRKE IN ŠTEVILKE DO 20. Preizkusite znanje vaših otrok in natisnite

Prekinitveni način delovanja PLK Glavni program (OB1; MAIN) se izvaja ciklično Prekinitev začasno ustavi izvajanje glavnega programa in zažene izvajan

(Microsoft Word - 3. Pogre\232ki in negotovost-c.doc)

(Microsoft PowerPoint - vorsic ET 9.2 OES matri\350ne metode 2011.ppt [Compatibility Mode])

Najprej si poglejmo učilnico. Za vse začetnike lahko tukaj najdete čudovito knjigo Python za programiranje. Poda odlično iztočnico za učenje. Priporoč

Microsoft PowerPoint - Java-rekurzija.ppt

FGG13

MAGIČNI KVADRATI DIMENZIJE 4n+2

NAVODILA AVTORJEM PRISPEVKOV

Srednja šola za oblikovanje

Urejevalna razdalja Avtorji: Nino Cajnkar, Gregor Kikelj Mentorica: Anja Petković 1 Motivacija Tajnica v posadki MARS - a je pridna delavka, ampak se

Navodila:

1 MMK - Spletne tehnologije Vaja 5: Spletni obrazci Vaja 5 : Spletni obrazci 1. Element form Spletni obrazci so namenjeni zbiranju uporabniških podatk

EKVITABILNE PARTICIJE IN TOEPLITZOVE MATRIKE Aleksandar Jurišić Politehnika Nova Gorica in IMFM Vipavska 13, p.p. 301, Nova Gorica Slovenija Štefko Mi

4.Racionalna števila Ulomek je zapis oblike. Sestavljen je iz števila a (a ), ki ga imenujemo števec, in iz števila b (b, b 0), ki ga imenujemo imenov

Univerza v Mariboru Fakulteta za naravoslovje in matematiko Oddelek za matematiko in ra unalni²tvo Izobraºevalna matematika Pisni izpit pri predmetu K

Učinkovita izvedba algoritma Goldberg-Tarjan Teja Peklaj 26. februar Definicije Definicija 1 Naj bo (G, u, s, t) omrežje, f : E(G) R, za katero v

POPOLNI KVADER

Delavnica Načrtovanje digitalnih vezij

Matematika II (UN) 1. kolokvij (13. april 2012) RE ITVE Naloga 1 (25 to k) Dana je linearna preslikava s predpisom τ( x) = A x A 1 x, kjer je A

Računalniški praktikum Projektna naloga - Izdelava spletne strani Avtor: Matej Tekavčič Skupina: Matej Tekavčič - koordinator Simon Vrhovnik Tine Kavč

PRIPRAVA NA 1. Š. N.: KVADRATNA FUNKCIJA IN KVADRATNA ENAČBA 1. Izračunaj presečišča parabole y=5 x x 8 s koordinatnima osema. R: 2 0, 8, 4,0,,0

Zavod sv. Stanislava Škofijska klasična gimnazija Programiranje v Pythonu Program za računanje Maturitetna seminarska naloga iz informatike Kandidat:

Space Invaders Opis igre: Originalna igra: Space Invaders je arkadna igra, ki so jo ustvarili leta Bila je ena izmed prvih streljaških iger, v k

1. izbirni test za MMO 2018 Ljubljana, 16. december Naj bo n naravno število. Na mizi imamo n 2 okraskov n različnih barv in ni nujno, da imam

Microsoft PowerPoint - IPPU-V2.ppt

6.1 Uvod 6 Igra Chomp Marko Repše, Chomp je nepristranska igra dveh igralcev s popolno informacijo na dvo (ali vec) dimenzionalnem prostoru

ACAD-BAU-Analiza-prostorov

COBISS3/Medknjižnična izposoja

Ime in priimek: Vpisna št: FAKULTETA ZA MATEMATIKO IN FIZIKO Oddelek za matematiko Verjetnost Pisni izpit 5. februar 2018 Navodila Pazljivo preberite

UNIVERZA V LJUBLJANI FAKULTETA ZA MATEMATIKO IN FIZIKO Katja Ciglar Analiza občutljivosti v Excel-u Seminarska naloga pri predmetu Optimizacija v fina

Ime in priimek: Vpisna št: FAKULTETA ZA MATEMATIKO IN FIZIKO Oddelek za matematiko Statistika Pisni izpit 31. avgust 2018 Navodila Pazljivo preberite

Navodila Trgovina iCenter

APS1

Microsoft Word - CNC obdelava kazalo vsebine.doc

Poročilo za 1. del seminarske naloge- igrica Kača Opis igrice Kača (Snake) je klasična igrica, pogosto prednaložena na malce starejših mobilnih telefo

Microsoft Word - Analiza rezultatov NPZ matematika 2018.docx

rm.dvi

KAKO VELIKA SO ŠTEVILA

SESTAVA VSEBINE MATEMATIKE V 6

PowerPointova predstavitev

FGG02

Naloge iz kolokvijev Analize 1 (z rešitvami) E-UNI, GING, TK-UNI FERI dr. Iztok Peterin Maribor 2009 V tej datoteki so zbrane naloge iz kolokvijev za

P182C10111

Matematika II (UN) 2. kolokvij (7. junij 2013) RE ITVE Naloga 1 (25 to k) ƒasovna funkcija f je denirana za t [0, 2] in podana s spodnjim grafom. f t

Posebne funkcije

FGG14

resitve.dvi

Microsoft Word - M docx

1 Diskretni naklju ni vektorji 1 1 Diskretni naklju ni vektorji 1. Dopolni tabelo tako, da bosta X in Y neodvisni. X Y x x x x x

10. Meritev šumnega števila ojačevalnika Vsako radijsko zvezo načrtujemo za zahtevano razmerje signal/šum. Šum ima vsaj dva izvora: naravni šum T A, k

Slide 1

Transkripcija:

4. Zanka while Zanke pri programiranju uporabljamo, kadar moramo stavek ali skupino stavkov izvršiti večkrat zaporedoma. Namesto, da iste (ali podobne) stavke pišemo n-krat, jih napišemo samo enkrat in postavimo v zanko, ki se izvrši n-krat. Včasih ne vemo vnaprej, kakšna je vrednost n-ja. Zato v splošnem izvajamo zanko dokler je izpolnjen pogoj ponavljanja. Ko pa ta pogoj ni več izpolnjen, se program nadaljuje pri prvem stavku po zanki. Zanko while v programu napišemo takole: while pogoj: stavek1 stavek2 stavek3 To preberemo takole: dokler je izpolnjen pogoj, ponavljaj stavke. Podobno kot pri pogojnem stavku tudi pri zanki while velja, da lahko en sam stavek v zanki zapišemo takoj za dvopičjem v prvi vrstici. Pogoj se preveri pred vsako ponovitvijo zanke. Če je izpolnjen, se izvedejo stavki v telesu zanke, sicer pa se izvajanje zanke prekine in se izvede naslednji stavek, ki sledi zanki. Pri sestavljanju zank moramo paziti, da ne sestavimo pogoja, ki bi bil vedno izpolnjen. Običajno je tako, da moramo v zanki spremeniti vrednost vsaj ene od spremenljivk, ki nastopajo v pogoju. V posebnih primerih imamo tudi zanke, kjer je pogoj vedno izpolnjen, a v takih primerih moramo poskrbeti za drugačen izhod iz zanke (o tem kasneje). Nalogo, da želimo zanko izvesti n-krat, lahko rešimo takole: n = 20 # število ponavljanj zanke. i = 0 # števec, ki ga pred zanko inicializiramo while i < n: #pogoj preverja, če se mora zanka še enkrat izvesti i += 1 # števec vsakih povečamo za eno... # izvajamo stavke v zanki (ki ne spreminjajo vrednosti i-ja).... # izvajamo stavke v zanki (ki ne spreminjajo vrednosti i-ja). # prvi stavek, ki se izvede po koncu zanke. 4.1. Zgled: Napišite del programa, ki tabelira kvadrate in kube prvih 20 naravih števil. n = 20 # izpisujemo n vrstic. i = 0 while i < n: i += 1 print(i,i**2,i**3) 4.2. Zgled: Računanje kvadratnega korena pozitivnega realnega števila a. Uporabimo iteracjo:

x n+1 = (x n + a/x n )/2 Za začetni približek vzamemo: x 0 = a. Uporabimo tudi konstanto ε, ki označuje natančnost računanja. Rešitev: print("kvadratni koren iz a z natančnostjo eps. ") a = float(input("vtipkaj a: ") eps = float(input("vtipaj natančnost eps: ") x = 0 y = (x + a/x)/2 while abs(y-x) > eps: x = y y = (x + a/x)/2 print("sqrt( ",a,") =", y) Če bi poznali funkcije, bi bila rešitev lahko takale. def kvadratnikoren(a, eps=0.0000001): """kvadratnikoren(a) izracuna kvadratni koren stevil a.""" x = 0 y = (x + a/x)/2 while abs(y-x) > eps: x = y y = (x + a/x)/2 return y

4.3. Zgled. Število pi lahko izračunamo z naslednjo vrsto: Za računanje lahko uporabimo naslednji del programa: #!/usr/bin/python3 # računanje števila pi pi2 = 0 f = 1 n = 0 m = 1 while f >0.00000001: pi2 +=f print(2*pi2,n,m,f) n += 1 m += 2 f *= n/m print("pi = ",2*pi2) from math import pi print("pi = ",pi) print("razlika = ", 2*pi2-pi) 4.4. Naloge: 1. Primerjajte rezultat te funkcije z rezultatom, ki ga dobite z uporabo modula math iz standardne knjižnice. 2. Popravite program tako, da izpisuje v vrstico korak iteracije n in približek v n- ti iteraciji. 3. Spremenite vrednost parametra eps, tako da povečate natančnost rezultata na 200 decimalnih mest. 4. Izračunajte kvadratni koren prvih 10 naravnih števil. 5. Sestavite funkcijo izpisinaravnadon(n), ki izpiše vsa naravna števila od 1 do n. 6. Sestavite funkcijo vsotastevk(n), ki vrne vsoto števk celega števila n. 7. Sestavite funkcijo izpisifibonaccidon(n,a=1,b=1), ki izpiše prvih n členov posplošenega fibonaccijevega zaporedja (prvi in drugi člen dobi za parametra, vsak naslednji člen je enak vsoti prejšnjih dveh). 8. Sestavite funkcijo jeprastevilo(n), ki preveri, ali je naravno število n praštevilo. 9. Sestavite funkcijo multifakulteta(n, s), ki izračuna multifakulteto. 10. Sestavite funkcijo exp(x), ki izračuna z vrsto 1 + x + x 2 /2! + x 3 /3! +... vrednost funkcije e x. Nato izračunajte konstanto e na 6 decimalnih mest.

11. Izračunajte število pi na 6 decimalnih mest. Namig: lahko uporabite metodo, s katero je število pi računal veliki slovenski matematik Jurij Vega. 4.5. Stavki, continue, pass, povezani z zankami Delo z zankami si lahko včasih poenostavimo, če uporabljamo posebne stavke: continue pass - izhod iz najožje zanke continue - naslednji prehod zanke pass - ne naredi ničesar. Ti stavki niso nujno potrebni. Lahko programiramo tudi brez njih. Včasih pa so kar koristni. Predvsem stavek. 4.6. Stavek, Včasih si s stavkom pomagamo pri "neskončnih" zankah. Zanko, ki se izvaja v neskončnost, dosežemo npr. takole: x True? da ; ne (se nikoli ne zgodi) Stavka in se izvajata ad infinitum. Zanka se nikoli ne konča. Stavek se ne izvede nikoli.

Stavek lahko prekine tek neskončne zanke. Npr. takole if p: x True? da ne p? ne da Če imamo težave pri oblikovanju pogoja za izhod iz zanke, je najbolje uporabiti neskončno zanko (True) in pogoj p oblikovati v kombinaciji s stavkom takrat, ko ga potrebujemo, da bi zapustili zanko. 4.6. Zgled: Za dano število n ugotovite, ali je deljivo s kakšnim praštevilom oblike p = 6k + 1. n = 2012 p = 2 odg = False if n%p == 0 and p%6 == 1: odg = True while n%p == 0: n //= p if n == 1: p += 1 print(odg)

4.7. Stavek continue. S stavkom continue prekinemo trenutno delo in nadaljujemo z naslednjim prehodom zanke. if p: continue 4.8. Stavek pass. Stavek pass ne naredi nič. Uporabljamo ga predvsem kot mašilo, da zadostimo pravilom sintakse jezika. Najbolj običajno mesto zanj je takoj za if in pred else ali elif. if a > 0: pass a = - a 4.9. Razširjeni stavek while Stavek while, v katerem je mogoč izhod z ukazom lahko razširimo takole: while p: if q: D V zgornjem primeru se stavek D vedno izvede. Stavek pa se izvede po običajnem izhodu iz zanke, če ni izhod izsiljen s stavkom. 4.7. Naloga (*) : Poiščite problem, pri kateri uporaba razširjenega stavka while poenostavi programiranje. 4.8. Zgled: olatzovo zaporedje. Začetni člen je poljubno celo število: x 0 =. Uporabimo iteracjo: če je število x n sodo je x n+1 = x n /2 sicer pa je

x n+1 = 3x n + 1. Zapište program, ki izpisuje člene tega zaporedja, dokler ne naleti na vrednost 1. # olatz x = int(input("vpiši število : ")) while x > 1: print(x) if x%2 == 0: x //= 2 x = 3*x + 1 print(x) 4.9. Zgled: Iskanje maksimuma funkcije f(x) na zaprtem intervalu [a,b]. Naslednji del programa poišče lokalni maksimum funkcije f(x). V našem primeru je f(x) = x**2, zato je ekstrem globalen. def f(x): return -x**2 eps = 0.00001 a = float(input(" Levo krajišče intervala a: ")) b = float(input(" Desno krajišče intervala a: ")) c = (a+b)/2 if f(a) <= f(c) <= f(b): while abs(a-b) > eps and f(c) <= f(b): a = c c = (a+b)/2 elif f(a) >= f(c) >= f(b): while abs(a-b) > eps and f(a) >= f(c): b = c c = (a+b)/2 # pogoj je f(c) >= max(f(a), f(b)) while abs(a-b) > eps: d = (a+c)/2 e = (b+c)/2 if f(d) >= f(a) and f(d) >= f(c): b = c elif f(e) >= f(c) and f(e) >= f(b): a = c a = d b = e cc = int(c*100000)/100000 fcc = int(f(c)*100000)/100000 print(cc, fcc)

Ker vsebuje ta program skrito napako, smo ga še enkrat sprogramirali. def f(x): return -x**2 a = float(input("a = ")) b = float(input("b = ")) if b < a: print("the End") if f(a) >= f(c): while f(a) >= f(c) and abs(a-b) > 0.000001: b = c elif f(b) >= f(c): while f(b) >= f(c) and abs(a-b) > 0.000001: a = c while abs(a-b) > 0.000001: d = (a + c)/2 e = (c + b)/2 if f(d) >= f(c): b = c elif f(e) >= f(c): a = c a = d b = e fc = f(c) cc = int(c * 10**6)/10**6 fcc = int(fc*10**6)/10**6 print("maksimum je ", fcc," in ga dosežemo pri ",cc) Za vajo lahko poiščete napako v prvem programu, tako da ga primerjate z drugim programom. Poskusite odgovoriti na naslednja vprašanja: 1. Drugi program ima eno zanko več kot prvi. Čemu je namenjena in kako jo med tekom programa zapustimo? 2. Čemu smo vpeljali spremenljivki cc in fcc. Zakaj nismo izpisali kar vrednosti c in f(c)? 3. Poiščite vrednosti za a in b pri katreih programa dajeta različne odgovore. Pojasnite to razliko. 4. Napaka v prvem programu je latentna in je pri funkciji f(x) = - x**2 ne opazimo. Izberite drugačno funkcijo f(x) in taki krajišči intervalov a in b, da bo prvi program izračunal napačno vrednost lokalnega maksimuma funkcije f.

4.10. Univerzalna moč računanja. Z doslej spoznanimi programskimi konstrukti lahko zdaj zapišemo poljubno kompliciran program. Pri podatkih pa imamo sicer na voljo poljubno dolge nize, za praktično računanje pa bi potrebovali še sezname. Do njih bomo prišli prihodnjič. Python pa omogoča tudi nekatere konstrukte, nekatere bomo spoznali kasneje, ki niso popolnoma v skladu s paradigmo strukturiranega programiranja, vendar nam včasih poenostavijo tako razmišljanje, kakor tudi programiranje.