Programski jezik Java
Transcription
Programski jezik Java
Programski jezik Java Interno gradivo za predmet Algoritmi in programski jeziki (3. letnik) (neprečiščeno besedilo) [email protected] Ponavljanje Navodilo: • Rešitev: Nariši diagram poteka za izpis absolutne vrednosti števila, ki ga vpišete preko tipkovnice. a) s pomočjo funkcije abs(x) b) brez funkcije abs(x) [email protected] Ponavljanje Navodilo: • Rešitev: Nariši diagram poteka ki, prebere tekst in število in izpiše tekst tolikokrat kot je bilo vneseno število. [email protected] 1 Ponavljanje Navodilo: • Rešitev: Nariši diagram poteka ki, prebere in izpiše vsa cela števila med prebranima celoštevilčnima vrednostima. Predpostavimo, da je prvo prebrano število manjše od drugega. a) v padajočem vrstnem redu b) v naraščajočem vrstnem redu [email protected] Ponavljanje Navodilo: • Rešitev: Nariši diagram poteka, ki prebere dve celi števili, zamenja njuni vrednosti med seboj, izračuna vsoto, izpiše vrednosti števil in njuno vsoto. [email protected] Ponavljanje Navodilo: • Rešitev: Nariši diagram poteka, ki izpiše število vstavljenih števil vstavljamo števila dokler ne vstavimo 0. [email protected] 2 Ponavljanje Navodilo: • Rešitev: Nariši diagram poteka za izračun vsote števil od 1 do X (X vstavimo). [email protected] Ponavljanje Navodilo: • Rešitev: Nariši diagram poteka, ki prešteje število vnesenih števil, ki so večja od 33. Števila vnašamo dokler ne vnesemo števila 0. [email protected] Ponavljanje Navodilo: • Rešitev: Nariši diagram poteka, ki izpiše tabelo kvadratov naravnih števil od 1 do 15. [email protected] 3 Ponavljanje Navodilo: • Rešitev: Nariši diagram poteka, ki prebere dve števili. Prvo število izpiše tolikokrat, kot je vrednost drugega števila. [email protected] Ponavljanje Navodilo: • Rešitev: Napiši diagram poteka, ki izpiše vsa števila od 1-10 razen tistih, ki so deljiva z 2. [email protected] Ponavljanje Navodilo: • Rešitev: Nariši diagram poteka, ki prebere 5 poljubnih celih števil. Za vsako število naj izpiše ali je pozitivno ali je negativno. [email protected] 4 Ponavljanje Navodilo: • Rešitev: Izdelaj diagram poteka, ki izpiše vsa števila med 1 in 300, ki so deljiva z 2 in 7. [email protected] Ponavljanje Navodilo: • Rešitev: Izdelaj diagram poteka, ki izpiše vsa števila med 1 in 200, ki so deljiva s 3 ali 7. [email protected] Ponavljanje Navodilo: • Rešitev: Izdelaj diagram poteka, ki izpiše vsa števila med 1 in 500, ki so deljiva s 4 in niso deljiva z 10. [email protected] 5 Ponavljanje Navodilo: • Rešitev: Nariši diagram poteka ki, bere število eno po eno in izpiše ali je sodo ali liho. Vnos števil naj se konča, ko je pritisnjena črka d (Ali želite končati? d). [email protected] Ponavljanje Navodilo: • Rešitev: Nariši diagram poteka, ki izpiše vsa liha števila iz intervala [10,30]. [email protected] Ponavljanje Navodilo: • Rešitev: Nariši diagram poteka, ki razcepi vneseno pozitivno celo število na posamezne števke in jih izpiše. [email protected] 6 Ponavljanje Navodilo: • Rešitev: Nariši diagram poteka, ki izpiše največjo števko prebranega števila. [email protected] Ponavljanje Navodilo: • Rešitev: Nariši diagram poteka, ki izpiše najmanjšo števko prebranega števila. [email protected] Ponavljanje Navodilo: • Rešitev: Nariši diagram poteka, ki izpiše vsoto števk prebranega števila. [email protected] 7 Ponavljanje Navodilo: Rešitev: • Dano je zaporedje podatkov, celih števil. Sestavi diagram poteka, ki prebere zaporedje podatkov in izpiše njihovo vsoto. • Primer zaporedja: 15…30 [email protected] Ponavljanje Navodilo: • Rešitev: Sestavi diagram poteka, ki prebere število. Če je to število liho, izpiše 10 njegovih večkratnikov, v nasprotnem primeru naj izpiše, da je vneseno število sodo. [email protected] Ponavljanje Navodilo: • Rešitev: Nariši diagram poteka, ki izpiše vsoto vnesenih števil, največje število in zaporedno številko največjega števila. Števila vnašamo dokler ne vnesemo števila 0. [email protected] 8 Ponavljanje Navodilo: Rešitev: Sestavi diagram poteka, ki bere števila in jih sešteva, dokler vsota ne preseže vrednosti 100. Na koncu izpiše, za koliko je vsota presegla vrednost 100. • [email protected] Ponavljanje Navodilo: Rešitev: Nariši diagram poteka, ki pri danem podatku X izračuna vrednost funkcije Y. Vrednost funkcije določimo po pravilu: • • če je X manjši od 1, naj bo Y=X*10, • če je X večji ali enak 1, naj bo Y=X. [email protected] Ponavljanje Navodilo: Rešitev: Nariši diagram poteka, ki izračuna vrednost funkcije Y za vse X od 0 do 10, X naj se povečuje za 1. Vrednost funkcije Y določite po naslednjem pravilu: • • če je X manjši od 5, naj bo Y=X*10, • če je X večji ali enak 5, naj bo Y=X. [email protected] 9 Ponavljanje Navodilo: • Rešitev: Nariši diagram poteka, ki s tipkovnice prebere znak. Če je vneseni znak velika tiskana črka, jo izpiše na zaslon, sicer pa izpiše njegovo zaporedno številko (ASCII kodo). Upoštevaj angleško abecedo. [email protected] Ponavljanje Navodilo: • Rešitev: Nariši diagram poteka, ki s tipkovnice bere znake, dokler ni prebran znak &. Če je tekoči znak mala tiskana črka, jo izpiše na zaslon, sicer pa izpiše na zaslon zaporedno številko (ASCII kodo) znaka. Znaka & naj ne izpiše. Pomoč: ord('&')=38. [email protected] Ponavljanje Navodilo: • Rešitev: Nariši diagram poteka ki preveri, če vnesena celoštevilčna vrednost lahko predstavlja petiško število (petiško število lahko vsebuje le števke od 0 do 4). [email protected] 10 Ponavljanje Kakšno vrednost imajo spremenljivke, ko se izvede zaporedje stavkov: a) int x = (int)(( 1/2 + 2.5) * 3.0) b) int y = 7 % (6 - 3 / 5); x y c) int z = 7 / (6 - 3 % 5); z d) double d = 6.0 / (6 - 3 % 5); d e) double e = (double) (20 / 9 % 5); e f) double f = (double)14 / 5 + (int)(14 / 3); f g) double g = (double)(14 / 5) + (int)(14.0 / 3); g h) boolean bo = (2 > 3 - 1) || (4 % 2 == 0); bo i) boolean dem = !(!(2 > 3 - 1) && !(4 % 2 == 0)); dem j) boolean s = (4 / 2 != 0)? !bo : dem; s k) int [] t = {1-2, 3%4, 4%3-1, 5%4%3 }; t l) int [][] t2 = {t, {x, y, z} }; t2 [email protected] Ponavljanje Kakšno vrednost imajo spremenljivke niz1, niz2, niz3 in niz4 (tipa String) potem, ko se izvede zaporedje stavkov: • String niz1 = "" + "bla".charAt(1) + "ble".charAt(2); • String niz2 = "n" + niz1.length() + "M"; • • String niz3 = "bbblo\" + \"bb"; String niz4 = 1 + 2 + "niz1"; • String niz5 = niz4.endsWith("niz1") ? “Tone" : “Marone"; niz1 niz2 niz3 niz4 niz5 [email protected] Ponavljanje Katera od naslednjih imen so sintaktično pravilna imena spremenljivk? Obkroži jih. a) jAnez b) for c) janez slovenski č) super d) 9bit e) negative f) to_e_dolgo_ime d) do [email protected] 11 Ponavljanje Za vsako od deklaracij napiši ali je sintaktično pravilna ali napačna in zraven pripiši pravilno obliko (oz. kar popravi). Kot nepravilna označi tudi imena, ki se ne držijo ustaljenih konvencij o poimenovanju v Javi. a) DOUBLE D; b) String posojilo = true; c) boolean b == true; d) boolean value = false, e) string start = "34", end="99"; f) int st = (int)3.4; g) String Moje_ime = "Lucka"; [email protected] Ponavljanje Na črto napiši pogoj tako, da naslednji del programa izpiše (samo) 0 3 8 15 24 • int stej = 0; while (__________) { stej = stej + 1; System.out.print( stej * stej - 1 + " " ); } System.out.println(); Rešitev: [email protected] Ponavljanje Kaj izpiše naslednji del programa? • Rešitev: int korak = 13; String niz = "Zaporedje:"; while ( korak >= 9 ) { System.out.println(niz + "#"); niz = "" + korak; korak = korak - 2; } [email protected] 12 Ponavljanje Kakšno vrednost ima spremenljivka korak po izvajanju spodnjega dela programa? Rešitev: • int korak = 13; String niz = "Zaporedje:"; while ( korak >= 9 ) { System.out.println(niz + "#"); niz = "" + korak; korak = korak - 2; } [email protected] Ponavljanje Kakšno vrednost ima spremenljivka niz po izvajanju spodnjega dela programa? • Rešitev: int korak = 13; String niz = "Zaporedje:"; while ( korak >= 9 ) { System.out.println(niz + "#"); niz = "" + korak; korak = korak - 2; } [email protected] Ponavljanje Napiši program, ki bo izpisal prvih deset členov geometrijske vrste s količnikom 2 in začetnim členom 10. • Členi zaporedja: 10, 20, 40, 80, 160, … • Rešitev: [email protected] 13 Ponavljanje Kakšna je vrednost spremenljivke izpis potem, ko izvedemo naslednje vrstice? • Rešitev: int izpis = 1; for(int zunanji=0; zunanji<100; zunanji=zunanji+5) { for(int notranji = 9; notranji >=2; notranji--) { izpis = izpis*2; if(izpis >10) break; } izpis = izpis + 2; if(izpis > 20) break; } [email protected] Ponavljanje A. Napiši prireditveni stavek s katerim boš v spremenljivko cif_n (tipa int) shranil naključno število med 10 in 39! B. Kakšno vrednost bo imela spremenljivka stevilo (tipa int) • • • potem, ko se izvedejo stavki: stevilo = 7 / 3 – 4 % 5; stevilo = 2 + 2 * 2 - 1; stevilo = 5 / stevilo + 2; C. Kakšno vrednost ima spremenljivka tip_b (tipa boolean) • potem, ko se izvede stavek: tip_b = true || ((1 < 4) && (2 > 6)); • tip_b =(!(7 > 3)) || (4 > 9) ; [email protected] Ponavljanje A. Napiši logični izraz, ki ima vrednost true takrat, ko celo število leži na intervalu med -20 in -5 ali na intervalu med 5 in 35 (robna števila štejemo k intervalu) . B. Napiši logični izraz, ki ima vrednost true takrat, ko decimalno število leži na intervalu med 17 in 35 ali na intervalu med 45 in 50 (robna števila štejemo k intervalu) in false sicer. C. Napiši prireditveni stavek s katerim boš v spremenljivko n (tipa int) shranil naključno število med -10 in 10 (torej bodisi –10, -9, -8, ..., -1, 0, 1, ..., 9, 10)! [email protected] 14 Ponavljanje Kaj izpiše naslednji del programa? • Rešitev: int n = 70, f = 2, i = 0; String odg = ""; while (f <= n) { if (n % f == 0) { i = i + 1; odg = odg + i + ". = " + f + "\n"; } f = f + 1; } System.out.print(odg); [email protected] Ponavljanje Imamo naslednji del kode • Kaj izpiše ta del kode? k = 0; while (k < 22) { A. B. if (k % 3 == 0) System.out.print(k , " "); k = k + 2; } C. D. E. F. 4 16 4 10 16 0 6 12 18 1 4 7 10 13 16 19 0 2 4 6 8 10 12 14 16 18 1 nič od tega [email protected] Ponavljanje • Dan je del programa, ki naj bi izračunal, koliko deliteljev ima dano število. Napiši pogoj(namesto MANJKA)! • int stevilo = 20, deli = 0; int narascam = 1; while (__ MANJKA __) { if (stevilo % narascam == 0) { deli = deli + 1;} narascam = narascam + 1; } System.out.println( "Stevilo " + stevilo + " ima " + deli + " deliteljev." ); Rešitev: [email protected] 15 Ponavljanje Kaj izpiše ta del programa? • Rešitev: int j = 1, k; while (j <= 5) { k = 1; while (k <= 5) { System.out.println(j + "/"); k = k + 1; } System.out.print("“); j = j + 2; } [email protected] Ponavljanje Dan je del programa: • Realiziraj z while zanko! System.out.print("1/1/1/1/1"); System.out.print("2/2/2/2"); System.out.print("3/3/3"); System.out.print("4/4"); System.out.println("5"); • Kaj izpiše ta del programa? • Rešitev: [email protected] Ponavljanje Imamo naslednji del kode: • Rešitev: k = 0; while (k < 20) { if (k % 3 == 1) System.out.print(k + " "); k = k + 2; } A. Kaj izpiše ta del? B. Popravi ta del programa tako, da bo izpisal 1 3 5 7 9 11 13 15 17 19 [email protected] 16 Ponavljanje • S spodnjim delom programa smo želeli čas, ki ga hranimo v spremenljivkah ure in minute ustrezno povečati. Dopolni spodnji del programa tako, da bo zagotovo veljalo: 0 <= ure < 24 in 0 <= minute < 60. • int ure = 14; int minute = 24; ure = ure + (int)(Math.random() * 100); minute = minute + (int)(Math.random() * 60); // manjka // • Rešitev: [email protected] Ponavljanje Napiši program, ki prebere celo število in izpiše obratno vrednost tega števila (Za prebrani podatek 2 torej izpiše 0.5,…). Pazi na 0! Rešitev: [email protected] Ponavljanje • Denimo, da smo dobili naslednji izpis. Kateri del kode ustreza zapisu? • 11111 2222 333 44 A. 5 int j = 1; while (j <= 5) { int k = 1; while (k <= 5) { System.out.print(j + " "); k = k + 1; } System.out.println(); j = j + 1; } B. int j = 1; while (j < 5) { int k = 1; while (k <= 5) { System.out.print(j + " "); k = k + 1; } System.out.println(); j = j + 1; } C. int j = 1; while (j <= 5) { int k = 1; while (k <= j) { System.out.print(j + " "); k = k + 1; } System.out.println(); j = j + 1; } [email protected] 17 Ponavljanje • Denimo, da smo dobili naslednji izpis. Kateri del kode ustreza zapisu? • 11111 2222 333 44 A. 5 int j = 1; while (j <= 5) { int k = 1; while (k <= j) { System.out.print(j + ""); k = k + 1; } System.out.println(); j = j + 1; } B. int j = 1; while (j <= 5) { int k = 5; while (k >= 1) { System.out.print(j + " "); k = k - 1; } System.out.println(); j = j + 1; } C. int j = 1; while (j <= 5) { int k = 5; while (k >= j) { System.out.print(j + " "); k = k - 1; } System.out.println(); j = j + 1; } [email protected] Ponavljanje Kaj naredi naslednji program? Pregledno označi morebitne presledke! • Rešitev: public class Diagram { public static void main(String[] kaj) { int i, j, k; // Pomozni stevci. String[] args = {"1", "3", "0", "2", "3", "4", "2"}; int max = Integer.parseInt(args[0]); i = 1; while (i < args.length) { j = Integer.parseInt(args[i]); if (j > max) max = Integer.parseInt(args[i]); i = i + 1; } k = 0; while (k < max) { i = 0; while (i < args.length) { j = Integer.parseInt(args[i]); if (max - k > j) { System.out.print(" "); } else { System.out.print("*"); } i = i + 1; } System.out.println(); k = k + 1; }}} [email protected] Ponavljanje Navodilo: Rešitev: • Napiši program Vzorec.java, ki iz ukazne vrstice dobi parameter n (1 <= n <= 9) in izpiše n vrstic po n števil. Ob klicu Vzorec 8 dobimo: • 00000000 01010101 01201201 01230123 01234012 01234501 01234560 01234567 • Namig: Z metodo Integer.parseInt(arg[0]) pretvori argument iz ukazne vrstice v n. Nato v zanki izpiši n vrstic. V vsaki vrstici izpiši ostanke pri deljenju vrstice z vsakim stolpcem – 1. [email protected] 18 Ponavljanje Navodilo: Rešitev: • Spodnjo for zanko nadomesti z while zanko • for (int i = 1; i < n; i++) { bla = bla + i; } [email protected] Ponavljanje Navodilo: • • Rešitev: Napiši program ki generira naključna števila iz intervala [0,8] v 2D tabeli. Tabela naj po diagonali vsebuje števila 0 ostala števila pa naj bodo po diagonali simetrična. Primer: 08604 80376 63082 07800 46200 [email protected] Ponavljanje Navodilo: • • Rešitev: Napiši program, ki na podlagi 60000 metov kocke šteje število vrženih šestic, petic, ..., in enk. Za hranjenje statistike uporabi celoštevilčno tabelo dolžine 6. [email protected] 19 Ponavljanje Navodilo: Rešitev: Napiši program, ki bere znake toliko časa dokler ni vneseno število 0. Program naj šteje število vnosov velikih tiskanih črk. Na koncu naj program izpiše statistiko prebranih velikih tiskanih črk. Za statistiko uporabi celoštevilčno tabelo dolžine 26. • • • [email protected] Ponavljanje Kaj izpiše spodnji program? Rešitev: public class NalogaTab { public static void main(String[] args) { int[][] matrika = {{1,2,3,5,6}, {7,9,0,4,3}, {8,3,5,1,8}, {4,1,9,7,5}, {0,6,8,4,5}}; int[] vsoti = new int[2]; int vsota = 0; • for(int i = 0; i < matrika.length; i++) vsota += matrika[i][i]; for(int i = 0; i < matrika.length; i++) { for(int j = 0; j < matrika[i].length; j++) { if(i < j) { vsoti[0] += matrika[i][j]; } else if(i > j) { vsoti[1] += matrika[i][j]; }}} System.out.println("Prva vsota je "+vsoti[0]+"\n"+"Druga vsota je "+vsoti[1]); } } [email protected] Ponavljanje Kaj izpiše spodnji program? • Rešitev: public class NalogaTab { public static void main(String[] args) { int[] tab = new int[20]; for(int i = 1; i <= 10; i++) { tab[i - 1] = i; } for(int i = 10; i < tab.length; i++) { tab[i] = tab[i - 10] + tab[i - 9]; } for(int i = 0; i < tab.length; i++) { System.out.print(tab[i] + ", "); } } } 20