Branje podatkov Vnos podatkov s tipkovnico Fakulteta za
Branje podatkov Vnos podatkov s tipkovnico Fakulteta za matematiko in fiziko http: //up. fmf. uni-lj. si Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in Ministrstva za šolstvo in šport. 1
Iz 38 v 83 • Če smo želeli delati z drugim številom – popraviti program – ponovno prevajanje – izvedba programa • Uporabnik potrebuje izvorno kodo + znanje popravljanja kode in prevajanja • Podatek bi radi določili med izvajanjem programa • Vnos podatka s tipkovnico Fakulteta za matematiko in fiziko http: //up. fmf. uni-lj. si Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in Ministrstva za šolstvo in šport.
Branje • • • "Navadno" branje je v Javi "zoprno" Branje preko vnosnega okna Knjižnica javax. swing – import javax. swing. *; • • Razred JOption. Pane Metoda show. Input. Dialog – rezultat metode je niz – JOption. Pane. show. Input. Dialog("Sporočilo") – bla = JOption. Pane. show. Input. Dialog("vnos"); – Tisto, kar vnesemo, shranimo v spremenljivko bla (tipa String) • Pretvoriti iz niza v celo število, decimalno število, … – Integer. parse. Int – Double. parse. Double Fakulteta za matematiko in fiziko http: //up. fmf. uni-lj. si Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in Ministrstva za šolstvo in šport.
Iz niza v število • • "123" → 123 Metoda Integer. parse. Int – stevilo = Integer. parse. Int(niz); – V nizu mora biti pravilno zapisano celo število! – bla = "125"; x = Integer. parse. Int(bla); • Bo to v redu? – bla = "125"; blo = "23"; x = Integer. parse. Int(bla + blo); Fakulteta za matematiko in fiziko http: //up. fmf. uni-lj. si Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in Ministrstva za šolstvo in šport.
Prejšnji program public class Stevilo. P { // Dvomestnemu stevilu zamenjamo vrstni red stevk public static void main(String[] args) { int stevilo, enice, desetice, novo. Stevilo; stevilo = 38; enice = stevilo % 10; desetice = stevilo / 10; novo. Stevilo = enice * 10 + desetice; System. out. println("Iz " + stevilo + " smo naredili " + novo. Stevilo); } } Fakulteta za matematiko in fiziko http: //up. fmf. uni-lj. si Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in Ministrstva za šolstvo in šport.
Prejšnji program import javax. swing. *; public class Stevilo. PBranje { // Dvomestnemu stevilu zamenjamo vrstni red stevk public static void main(String[] args) { int stevilo, enice, desetice, novo. Stevilo; String podatek = JOption. Pane. show. Input. Dialog(“Dvomestno stevilo: “); stevilo = Integer. parse. Int(podatek); enice = stevilo % 10; desetice = stevilo / 10; novo. Stevilo = enice * 10 + desetice; System. out. println("Iz " + stevilo + " smo naredili " + novo. Stevilo); } } Fakulteta za matematiko in fiziko http: //up. fmf. uni-lj. si Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in Ministrstva za šolstvo in šport.
Pretvarjanje tipov • Iz int v String – int + "" dobimo String – 12 + "" …. . "12" • Iz double v String – double + "" dobimo String – 12. 5 + "" …. . "12. 5" Fakulteta za matematiko in fiziko http: //up. fmf. uni-lj. si Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in Ministrstva za šolstvo in šport.
Pretvarjanje tipov • Iz String v int – Integer. parse. Int("124") Ø 124 – Integer. parse. Int("aaa") Ø poglejmo v dr. Javo Ø java. lang. Number. Format. Exception: For input string: "aaa" – Integer. parse. Int("12. 5") Ø poglejmo v dr. Javo Ø java. lang. Number. Format. Exception: … Fakulteta za matematiko in fiziko http: //up. fmf. uni-lj. si Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in Ministrstva za šolstvo in šport.
Pretvarjanje tipov • Iz String v double – Double. parse. Double("12. 4") Ø 12. 4 – Double. parse. Double("aaa") Ø poglejmo v dr. Javo Ø java. lang. Number. Format. Exception: For input string: "aaa" – Double. parse. Double("12") Ø poglejmo v dr. Javo Ø 12. 0 Fakulteta za matematiko in fiziko http: //up. fmf. uni-lj. si Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in Ministrstva za šolstvo in šport.
Tip double v int • Kako iz števila tipa double narediti število tipa int? • Metode round, floor in ceil iz razreda Math • Če želimo odrezati decimalke – 12. 465 v 12 – 349. 998 v 349 – pred izrazom uporabimo (int) • (int)349. 998 je 349 • (int)(4. 3*8) je 34 • (int)Math. PI je 3 • Kaj pomeni izraz x – (int)x ? Fakulteta za matematiko in fiziko http: //up. fmf. uni-lj. si Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in Ministrstva za šolstvo in šport.
Zgodba • Bil je turoben, deževen dan. Pri tebi je bil-a na obisku najboljši -a prijatelj-ica, za katerega-o bi naredil-a vse. • "Imam željo! Malo nenavadno. . . Ne vem, če boš zato. . . " reče. • "Seveda bom. Karkoli si želiš. . . " • Želim si. . . Fakulteta za matematiko in fiziko http: //up. fmf. uni-lj. si Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in Ministrstva za šolstvo in šport.
Zgodba – 2. del • Želim si: • Igrati se Človek ne jezi se! Fakulteta za matematiko in fiziko http: //up. fmf. uni-lj. si Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in Ministrstva za šolstvo in šport.
Zgodba - epilog • In seveda, nikjer ne najdeta kocke! Plošča, možički, vse je tu, le kocke ni nikjer. • Na srečo pa je tu tvoj zanesljivi (v zgodbah je možno tudi to) računalnik in na njem prevajalnik za javo. • Samo hipec. . . • In pod tvojimi prsti že nastane program za simulacijo meta kocke. Fakulteta za matematiko in fiziko http: //up. fmf. uni-lj. si Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in Ministrstva za šolstvo in šport.
Naključna števila • Math. random() • Ni argumenta • Dobimo število tipa double z intervala [0. 0, 1. 0) • 6 * Math. random() – dobimo dec. število z intervala [0, 6) • (int) (6 * Math. random()) dobimo {0, 1, 2, 3, 4, 5} Fakulteta za matematiko in fiziko http: //up. fmf. uni-lj. si Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in Ministrstva za šolstvo in šport.
Izpis rezultatov v oknu • V razredu JOption. Pane je metoda show. Message. Dialog • V različnih oblikah – JOption. Pane. show. Message. Dialog(null, "Niz"); – JOption. Pane. show. Message. Dialog(null, "Niz", naslov, tip); Ø Naslov: naslov okna Ø Tip: tip ikone – – – JOption. Pane. INFORMATION_MESSAGE JOption. Pane. WARNING_MESSAGE JOption. Pane. QUESTION_MESSAGE JOption. Pane. ERROR_MESSAGE JOption. Pane. PLAIN_MESSAGE • Preizkus v dr. Javi Fakulteta za matematiko in fiziko http: //up. fmf. uni-lj. si Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in Ministrstva za šolstvo in šport.
Zgled - loto • Ali je res verjetnost, da bo na lotu (kjer se izžreba 7 števil med 1 in 39) verjetnost, da bodo izžrebana števila 15, 19, 23 in 24 enaka 0. 0004? Napiši program, ki izračuna verjetnost. Fakulteta za matematiko in fiziko http: //up. fmf. uni-lj. si Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in Ministrstva za šolstvo in šport.
Zgled - loto • • Verjetnost: število "dobrih" možnost / število vseh možnosti Dobre možnosti: naša 4 števila + 3 poljubna Verjetnost, da bodo na lotu izžrebana dana štiri števila je enaka A/B, pri čemer je A število načinov, na katerega lahko izmed 35 = 39 - 4 števil izberemo 3 = 7 - 4 in B število načinov, na katerega lahko izmed 39 števil izberemo 7 števil. Število načinov, na katerega lahko izmed n števil izberemo k števil je enako n * (n-1) * (n-2) *. . . * (n - k + 1) / (1 * 2 *. . . * k) • • Na primer, če je n = 5 in k = 3, potem je odgovor 5 * 4 * 3 / (1 * 2 * 3) = 10. Pa še to: število 39 * 38 * 37 * 36 * 35 * 34 * 33 je večje od največjega dovoljenega celega števila v javi. Fakulteta za matematiko in fiziko http: //up. fmf. uni-lj. si Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in Ministrstva za šolstvo in šport.
LOTO - program import javax. swing. *; public class Verjetnost { public static void main(String[] a) { String odgovor; int A = 35 * 34 * 33 / (1 * 2 * 3); int B = 39 * 38 * 37 * 36 * 35 * 34 * 33 / (1 * 2 * 3 * 4 * 5 * 6 * 7); odgovor = "Verjetnost je "; odgovor = odgovor + A / B; JOption. Pane. show. Message. Dialog(null, odgovor, "L O T O", JOption. Pane. PLAIN_MESSAGE); } } Fakulteta za matematiko in fiziko http: //up. fmf. uni-lj. si Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in Ministrstva za šolstvo in šport.
Zakaj je narobe? • A in B sta tipa int • A / B celoštevilsko deljenje! • Popraviti v "realno" deljenje – Za pretvorbo poskrbimo sami Ø (double)A / (double)B – Prepustimo pretvorbo prevajalniku Ø 1. 0 * A / B Fakulteta za matematiko in fiziko http: //up. fmf. uni-lj. si Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in Ministrstva za šolstvo in šport.
Pravilna vrednost? • Rezultat je tokrat 0. 1567. Bo držalo, da štirico zadanemo z verjetnostjo skoraj 16%? • Pri računanju števila B se je izračunal tudi produkt 35 * 34 * 33 * 32 * 31* 30 * 29, ki je večji od največjega celega števila. • Prekoračitev - napačen odgovor. • Treba je delati z realnimi števili, da ne bo prišlo do prekoračitve • Verjetnost 2. java Fakulteta za matematiko in fiziko http: //up. fmf. uni-lj. si Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in Ministrstva za šolstvo in šport.
Pravilna vrednost • Odgovor zapisan v eksponentni obliki • 12. 3 E-2 pomeni 12. 3 * 10 -2 = 0. 123 • 4. 255267 E-4 = 4. 255267 * 10 -4 = 0. 0004255267 • Koliko je vseh možnih kombinacij na lotu? Napiši program, ki izračuna odgovor. Fakulteta za matematiko in fiziko http: //up. fmf. uni-lj. si Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in Ministrstva za šolstvo in šport.
LOTO – vse kombinacije • Izračunati je potrebno 39 * 38 * 37 * 36 * 35 * 34 * 33 / (1 * 2 * 3 * 4 * 5 * 6 * 7). • Računati z realnimi števili! public class Loto { public static void main(String[] a) { String odgovor; double B = 39. 0 * 38 * 37 * 36 * 35 * 34 * 33 / (1 * 2 * 3 * 4 * 5 * 6 * 7); odgovor = "Vseh kombinacij je "; odgovor = odgovor + B; JOption. Pane. show. Message. Dialog(null, odgovor, "L O T O", JOption. Pane. PLAIN_MESSAGE); } } Fakulteta za matematiko in fiziko http: //up. fmf. uni-lj. si Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in Ministrstva za šolstvo in šport.
LOTO – vse kombinacije • • • Rezultat spet v eksponentni obliki 1. 5380937 E 7 = 1. 5380937 * 107 = 15 380 937 Rezultat je celo število – ga lahko pretvorimo v tako (int) odgovor = odgovor + (int)B; Fakulteta za matematiko in fiziko http: //up. fmf. uni-lj. si Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in Ministrstva za šolstvo in šport.
- Slides: 23