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