A Java programozási nyelv alapjai Változók lehetséges típusai
Típus | Érték
boolean (logikai, igaz vagy hamis) | true, false
int (egész szám) | 10, 24
double (valós szám) | 10.5
char (karakter) | 'c'
String (szöveges) | "szoveg"
stb... |
Változók, tömbök deklarálása A változók deklarálása a változó típusának és nevének megadásából áll. Deklaráció esetén lehetséges értékadás is. A a deklarációkkal azonban vigyáznunk kell, ha egy metódusban tesszük azt meg, akkor az a változó csak az adott metóduson belül érhető el. Példa deklarációra: int i; - egyész típusú, i nevű változó deklarálása boolean f=true; - boolean típusú, f nevű, true értékkel rendelkező változó deklarálása Tömbök deklarálása A tömbök olyan homogén adatszerkezetek, amelyek meghatározott számú elemet tartalmazhatnak. A homogén tulajdonság azt jelenti, hogy csak azonos típusú elemeket adhatunk meg tömbelemeknek. Példa deklarációra: int[] tomb=new int[10] - így létrehoztunk egy 10 elemű, tomb nevű, egész típusú tömböt A tömb elemeinek így adhatunk értéket: tomb[0]=20; - Java-ban a tömb elemeinek indexe nullával kezdődik, így egy 10 elemű tömb esetében az utolsó tömbindex a 9. Változók értékének növelése és csökkentése Változók értékének változtatását többféle képpen is megadhatjuk, ha eggyel kívánjuk növelni vagy csökkenteni, akkor azt így tehetjük meg: valtozo=valtozo+1; vagy valtozo=valtozo-1; Ezzel egyenértékű a valtozo++; utasítás, csökkentéskor a valtozo--; utasítást használjuk. Az értékmódosítás egy módja a ++valtozo; vagy --valtozo; utasítás is. Az, hogy melyik utasítást hazsnáljuk attól függ, hogy utólag vagy előbb szeretnénk növelni a változó értékét. Ha az utóbbiról van szó akkor a ++valtozo; vagy --valtozo; utasításokat alkalmazzuk, ha az előbbiről, akkor pedig a valtozo++; vagy valtozo--; utasításokat. Ha nem eggyel, hanem meghatározott értékkel szeretnénk módosítani a változó értékét, akkor azt a következő módokon tehetjük meg: valtozo=valtozo+5; vagy valtozo=valtozo-5; Vagy az előbb ismertetett megoldás elvével: valtozo+=5; vagy valtozo-=5; Feltételes utasítások megadásakor használható műveleti jelek és jelentésük == Egyenlőség vizsgálata. (Az egyszerű egyenlőségjel értékadást jelent.) != Az egyenlőség tagadása, azaz nem egyenlő < A bal oldalon lévő érték kisebb, mint a jobboldali > A bal oldalon lévő érték nagyobb, mint a jobboldali <= A bal oldalon lévő érték kisebb vagy egyenlő, mint a jobboldali, tehát már megengedett az egyenlőség is >= A bal oldalon lévő érték nagyobb vagy egyenlő, mint a jobboldali, már megengedett az egyenlőség is Feltételes utasítások logikai operátorokkal egészíthetőek ki, vagy kapcsolhatóak össze. Logikai operátorok: && Az ÉS operátor jele. Pl.: ((i>4) && (i<=20)) - Ez a feltétel csak akkor teljesül, ha az i nagyobb, mint 4 ÉS kisebb vagy egyenlő 20-nál. || A VAGY operátor jele. Pl.: ((x<10) || (x==1)) - Ez a feltétel VAGY akkor teljesül, ha az x kisebb, mint 10, VAGY ha az x egyenlő eggyel. ! A NEM operátor jele. Pl.: !(b<20) - Ez a feltétel akkor teljesül, ha a b NEM kisebb, mint 20. Vezérlési szerkezetek Ciklusok for iklus while ciklus do - while ciklus Kilépés a ciklusból (break) Elágazások Egyirányú elágazások Kétirányú elágazások Többirányú elágazások Ciklusok A for ciklus Rögzített lépésszámú ciklus. Akkor hazsnáljuk, ha tudjuk, hogy a ciklus hányszor fog lefutni. A for ciklus felépítése: for (előkészítő_rész; ltételes_rész; növekményes_rész;){ ciklusmag } Az előkészítő részben adjuk meg a ciklusváltozó kezdőértékét. A feltételes részben vizsgáljuk azt, hogy a ciklusváltozó csökkentett vagy növelt értéke elérte-e már a kívánt értéket. A növekményes részben változtatjuk (növeljük vagy csökkentjük) a változó értékét. A while ciklus A while ciklus előltesztelő ciklus, tehát ha a ciklusfeltétel nem teljesül, a ciklusmag nem fut le. Így előforulhat az is, hogy a ciklus egyszer sem fut le. A while ciklus felépítése: while (ciklusfeltétel){ ciklusmag } A ciklus addig fut, amíg a ciklusfeltétel teljesül. (A lehetséges ciklusfeltételeket, azaz logikai kifejezéseket fentebb részleteztük.) A do - while ciklus A do - while ciklus hátultesztelő ciklus, tehát attól függetlenül, hogy a ciklusfeltétel teljesül-e vagy sem, a ciklusmag mindenképpen lefut egyszer. A do - while ciklus felépítése: do{ ciklusmag }while(ciklusfeltétel); A ciklus addig fur, amíg a ciklusfeltétel teljesül. Kilépés a ciklusból (break) A ciklusból történő kilépés a break; utasítással történik. Ennek köszönhetően a ciklusból "kiugrunk" és az utána következő utasítással folytatódik a program futása. Elágazások Egyirányú elágazások (if) Az egyirányú elágazások felépítése: if(logikai_kifejezés){ utasítás_1; utasítás_2; ... utasítás_n; } Az if feltételes utasításban szereplő utasítások csak akkor futnak le, ha a logikai kifejezés teljesül. A kapcsos zárójelek közötti részt utasításblokknak nevezzük, és a benne szereplő utasítások egy utasításnak felelnek meg. A logikai kifejezés megadása után, ha csak egy utasítás áll, a kapcsos zárójelek elhagyhatóak. Kétirányú elágazások (if - else) A kétirányú elágazások felépítése: if(logikai_kifejezés){ utasítás_1; utasítás_2; ... utasítás_n; } else{ utasítás_1; utasítás_2; ... utasítás_n; } Ha a logikai kifejezések után csak egy utasítás szerepel, a kapcsoszárójelek elhagyhatóak. A feltételes utasítások egymásba is ágyazhatóak. Az egymásba ágyazott kétirányú elágazások felépítése: if(logikai_kifejezés){ utasítás_1; utasítás_2; ... utasítás_n; } else if(logikai_kifejezés){ utasítás_1; utasítás_2; ... utasítás_n; } else{ utasítás_1; utasítás_2; ... utasítás_n; } A feltételes utasítások bármilyen mélységben egymásba ágyazthatóak. Többirányú elágazások (switch - case) A többirányú elágazásokat akkor hazsnáljuk, amikor egy változó többféle értéket vehet fel, és a különböző esetekben más és más utasítás hajtódjon végre. A többirányú elágazások felépítése: switch(változó){ case érték_1: utasítás_1; break; case érték_2: utasítás_2; break; ... default: utasítás_n; } A case-ek után adjuk meg a változó által felvehető lehetséges értéket majd kettősponttal elválasztva a végrehajtandó utasítást. Ezután egy break; utasítás következik, melynek köszönhetően átugunk a switch - case között lévő további utasításokon. A break utasítás elhagyható, de a programunk futását gyorsítja, hiszen felesleges a többi lehetőséget vizsgálni, ha már az egyiknél egyezést találtunk. A többirányú elágazás esetén van egy olyan speciális lehetőségünk, amely minden egyéb nem megadott lehetőség esetén következik be, ezt a default: utasítás; paranccsal tehetjük meg. Példát csak erre az elágazástípusra mutatunk be, mivel ez talán a legbonyolultabb, illetve a további programokban sem fog szerepelni ennek alkalmazása. Erre példaként egy olyan programot írunk, amely billentyűzetről bekér egy érdemjegyet, és azt kiírja szövegesen. A hozzá tartozó folyamatábra a következő: import java.io.*; public class Jegyek{ public static int in() throws Exception{ Ez a beolvasást végrehajtó függvény, mely egész számot ad vissza. Később a programok során részletesen is magyarázásra kerül a függvény. (A függvényekről később esik szó.) LineNumberReader x=new LineNumberReader(new InputStreamReader(System.in)); String s=x.readLine(); int i=Integer.parseInt(s); return i; } public static void main(String[] args) throws Exception{ int n; System.out.print("Érdemjegy: "); n=in(); Billentyűzetről bekérjük az érdemjegyet szám formájában, eltároljok az n változóban, majd a switch - case többirányú elágazás segítségével megvizsgálva azt kiírjuk annak szöveges megfelelőjét. switch(n){ case 1: System.out.println("Elégtelen"); break; case 2: System.out.println("Elégséges"); break; case 3: System.out.println("Közepes"); break; case 4: System.out.println("Jó"); break; case 5: System.out.println("Jeles"); break; default: System.out.println("???"); } } } Metódusok Eljárások Függvények Az metódusoknak két típusa van: statikus (osztályszintű), vagy nem statikus metódusok. A "Programozás alapjai" c. kurzus során mi csak a statikus metódusokat alkalmazzuk. Eljárások A statikus eljárások felépítése: public static void eljárás_neve(formális_paraméterlista){ eljárás_törzsrésze } A public szó az eljárás láthatóságát, hozzáférhetőségét biztosítja más programok számára. A static jelenti azt, hogy az eljárás statikus azaz osztályszintű. Ez biztosítja számunkra, hogy minden metódusban (függetlenül attól hogy statikus-e vagy sem) példányosítás nélkül legyen elérhető. A példányosításról ebben afélévebn nem esik szó, mivel minden egyes metódust statikusnak definiálunk. A void jelzi, hogy nem lesz a metódusnak visszatérési értéke, tehát eljárásról van szó. Az eljárás neve után mindig szerepel a dupla kerek zárójel (), mely között a formális paraméterlista helyezkedik el. A formális paraméterlista a bemenő paraméterek nevét és típusát tartalmazza. Egy eljárásnak nem feltétlenül van bemenő paramétere, azok száma lehet 0, 1 vagy több is. Ha többet is megadunk, azokat vesszővel választjuk el egymástól. Függvények A függvényt a visszatérési érték különbözteti meg az eljárástól. A statikus függvények felépítése: public static visszatérési_érték_típusa függvény_neve(formális_paramlista){ függvény_törzsrésze return visszatérési_érték; } A visszatérési érték típusát a függvény nevének megadása előtt kell megadnunk, ez lehet egésztípus, logikai, azaz boolean típus, String típus, satöbbi. A formális paraméterlista megadására ugyanaz vonatkozik, mint az eljárások esetében. A visszatérési értéket a return visszatérési_érték; utasítás adja vissza. Return-t mindig tartalmaznia kell egy függvénynek, és nem szabad olyan feltételes utasításba helyeznünk, ami lehetséges, hogy nem teljesül, és így return utasítás nem kerül végrehajtásra. A metódusok a Java programok main metódusában kerülnek meghívásra. A bemenő paraméterek ekkor kapnak értéket. Mikor megadjuk egy metódus meghívásakor a paramétereket, azt aktuális paraméterlistának nevezzük.