JAVA predavanje 4

java_thumbMetode so zakon ;)

 


Poteze lovca pri šahu


//zaradi neprimernega predavanja manjka začetna razlaga tega programa. Program bo vseboval komentarje, tako, da v bistvu ni panike ;)

 

 

Zvezdice ( * ) predstavljajo komentar, ki ga najdete pod kodo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public class PotezeLovca {
public static void main (String[] args) {
//Branje položaja (vrstica, stolpec), kjer se lovec nahaja
int zacVr = BranjePodatkov.preberiInt();
int zacSt = BranjePodatkov.preberiInt();
 
//Izpis šahovnice (izpisujemo jo po vrsticah)
for (int i = 1; i <= 8; i++){ //zanka za izpis vrstice
for (int j=1; j <= 8; j++) //zanka za izpis polj v tekoči vrstici
//izpis enega polja *
if (i+j == zacVr + zacSt || i-j == zacVr – zacSt) // **
System.out.print ("*");
else if ((i+j)%2 == 0) // ***
System.out.print ("B");
else
System.out.print ("C");
System.out.println();
}
}
} // ****

*     3 možnosti ... ali je polje napadeno, ali je belo, ali pa črno
**     i = vrstica vrstice; j = vrstica stolpca   -->   polje napadeno
***     polje je belo
****    oklepaje lahko izpustimo ali ne, ker je v for zanki LE ena if zanka (,čeprav je dolga).



Stavek Switch

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
switch (<izraz>) {
case <vrednost1>: ---; //če nam izraz da vrednost 1 se izvršijo stavki
---;
break; //skok ven iz stavka switch
case <vrednost2>: ---;
---;
break;
case <vrednost3>: ---;
---;
break;
.
.
.
default: ---;
---; //V primeru, da nobena zgornja možnost ni izbrana se izvrši default
 
}


break;
pomeni izstop iz stavka in izvajanje se nadaljuje pri naslednjem stavku.



Primer: Meti kocke


Napišite program, ki simulira n metov kocke in izpiše, kolikokrat se pojavi vsaka izmed 6ih možnih vrednosti (kolikokrat smo vrgli 1,2,3,4,5,6).

V razredu Math obstaja metoda random, ki vrne naključno število z intervala od 0 do 1, s tem, da vrednosti 1 nikoli ne zavzame [0,1). To število moramo pretvoriti v interval od 1 do 6, upoštevati pa moramo tudi, da nam random ven vrže tudi decimalke. Da pretvorimo v celo število določimo int (pretvorba tipa + nujno oklepaj).

(int)(Math.random()*6)+1
//tako pridemo do enega meta kocke [1,6]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
public class MetiKocke {
public static void main (String[] args) {
System.out.print("Vpisi stevilo metov");
int n = BranjePodatkov.preberiInt(); //branje št. metov
 
//inicializacija števcev; 6 števcev, za vsako posebej
int st1=0; int st2=0; int st3=0; int st4=0; int st5=0; int st6=0;
 
//Zanka v kateri simuliramo posamezne mete
for (int i = 1; i <= n; i++) {
int met = (int)(Math.random()*6)+1;
 
//s stavkom switch povečamo ustrezen števec
switch (met) {
case 1: st1++;
break;
case 2: st2++;
break;
case 3: st3++;
break;
case 4: st4++;
break;
case 5: st5++;
break;
case 6: st6++;
break;
}
}
//izpis vrednosti števcev
System.out.println(st1+" "+st2+" "+st3+" "+st4+" "+st5+" "+st6);
}
}



Kako lahko stavek switch nadomestimo z gnezdenjem stavkov if?

1
2
3
4
5
6
7
8
9
10
11
12
if (met == 1)
st1++;
else if (met == 2)
st2++;
else if (met == 3)
st3++;
else if (met == 4)
st4++;
else if (met == 5)
st5++;
else
st6++;


METODE

  • Definicija metode
  • Zakaj metode uporabljamo
  • Kako metode deklariramo

 

Primeri:

  • Primer 1: preprosta metoda brez parametrov
  • Primer 2: metoda s parametri
  • Primer 3: še ena metoda s parametri
  • Primer 4: metoda, ki vrača vrednost

 

Definicija:


Metoda je zaporedje stavkov, ki ima svoje ime

Ime omogoča, da to zaporedje stavkov pokličemo z različnih mest v program.


Zakaj metode uporabljamo?

  • če se isto zaporedje stavkov pojavi na različnih mestih v programu, zadostuje, da ga napišemo samo enkrat in ga kličemo z njegovim imenom
  • da izboljšamo strukturo programa (program strukturiramo na podprograme, metode in vsaka metoda rešuje nek zaokrožen podproblem)
  • pri objektivno usmerjenem programiranju (OOP) z metodami opišemo operacije, ki jih izvajajo posamezni objekti



Kako metode deklariramo?

Deklaracija metode obsega glavo in telo.

Telo sestavlja zaporedje stavkov, ki se izvedejo, ko metodo pokličemo.
Glava je sestavljena iz večih delov, ki si jih bomo ogledali na primeru metode main.

GLAVA -->   public static void main (String[] args)

 

Glavo sestavljajo:

 

različna določila
-- public: metoda je javna; dostopna tudi iz drugih razredov
-- static: metoda obstaja samostojno, brez povezave z objekti

tip rezultata
-- void: metoda ne vrača vrednosti
-- Če metoda vrača vrednost moramo tukaj napisati, kakšnega tipa je ta vrednost (int, double, ...)

ime metode
-- main
-- Ime metode določi programer (z malo začetnico)

v oklepaju je seznam parametrov (lahko je prazen)

Primer 1: Preprosta metoda brez parametrov


Predpostavka: Pišemo nek program, kjer se na več različnih mestih pojavlja zahteva za izpis naslova fakultete.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public class Primer1 {
public static void main (String[] args) {
// različni stavki
 
// prvo mesto, kjer potrebujemo izpis naslova
naslov();
 
// različni stavki
 
// drugo mesto, kjer potrebujemo izpis naslova
naslov();
 
//različni stavki
 
//tretje mesto, kjer potrebujemo izpis naslova
naslov();
}
 
public static void naslov() {
System.out.println ("fakulteta za racunalnistvo");
System.out.println ("in informatiko");
System.out.println ("Trzaska 25");
System.out.println ("1000 Ljubljana");
}
}

 

Primer 2: Metoda s parametri


Predpostavka: Želimo izpisati naslov poljubne fakultete.

Rešitev: Vpeljava parametrov. Preko parametrov posredujemo metodi podatke, ki jih potrebuje za svoje delo.

  • prvi del imena fakultete
  • drugi del imena fakultete
  • ulica in hišna številka
  • poštna številka in pošta

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class Primer2 {
public static void main (String[] args) {
 
// Med oklepaji, med "" so nanizani dejanski parametri
naslov("Fakulteta za racunalnistvo","in informatiko","Trzaska 25","1000 Ljubljana"); 
naslov("Fakulteta za upravo", "", "Gosarjeva 5", "1000 Ljubljana");
naslov("Fakulteta za matematiko", "in fiziko", "Jadranska 19","1000 Ljubljana");
}
 
public static void naslov(String ime1, String ime2, String ulica, String posta) {
System.out.println (ime1)
System.out.println (ime2);
System.out.println (ulica);
System.out.println (posta);
}
}

 


Formalni in dejanski parametri


  • Formalni parametri so tisti, ki jih navedemo v glavi metode (ime1, ime2, ulica, posta). Služijo samo za opis postopka, ki ga metoda izvaja.
  • Dejanski parametri so tisti, ki jih navedemo ob klicu metode. Predstavljajo tiste vrednosti, nad katerimi se postopek v resnici izvede


Zamenjava formalnih parametrov z dejanskimi

Ob klicu metode se formalni parametri nadomestijo z dejanskimi parametri.
Formalni in dejanski parametri se morajo ujemati v številu, vrstnem redu in tipu.

Ujemanje v tipu: tip dejanskega parametra mora biti skladen s tipom formalnega parametra.
Skladnost je dosežena, če sta tipa enaka ali, če je tip dejanskega parametra vsebovan v tipu formalnega parametra (numerični tip).

Primer 3: Metoda, ki izračuna vrednost depozita po enoletni vezavi.


Kaj so primerni parametri?

  • Glavnica
  • obrestna mera

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
public class Primer3 {
public static void main (String[] args) {
 
poEnemLetu (1000, 3.5);
poEnemLetu (100000, 3.9);
 
double gl = BranjePodatkov.preberiDouble();
double obr = BranjePodatkov.preberiDouble();
poEnemLetu(gl, obr);
 
}
 
public static void poEnemLetu (double glavnica, double obrMera) {
double novoStanje = glavnica + glavnica*obrMera/100;
System.out.println (novoStanje);
}
}

 

 



3 ure predavanj se s tem zaključujejo, naslednjič pa si bomo ogledali še Primer 4.
Vsi vodiči so na voljo BREZPLAČNO!
Pišite mi

Želite mnenje ali pomoč pri vašem projektu?

Pišite mi in bom pomagal, kakor bom v tistem trenutku lahko.