OOP: Java 1.Gy: Java alapok

Hasonló dokumentumok
Java Programozás 1. Gy: Java alapok. Ismétlés ++

Informatika terméktervezőknek

OOP: Java 11.Gy: Enumok, beágyazott osztályok. 13/1 B ITv: MAN

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN

BME MOGI Gépészeti informatika 5.

OOP: Java 4.Gy: Java osztályok

Programozás I. 3. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

// keressük meg a legnagyobb faktoriális értéket, ami kisebb, // mint százmillió

Programozás alapjai 9.Gy: Struktúra 2.

BME MOGI Gépészeti informatika 4.

4. Gy: JAVA osztályok

11. gyakorlat Sturktúrák használata. 1. Definiáljon dátum típust. Olvasson be két dátumot, és határozza meg melyik a régebbi.

OOP: Java 8.Gy: Gyakorlás

10. gyakorlat Tömb, mint függvény argumentum

Programozás I. Matematikai lehetőségek Műveletek tömbökkel Egyszerű programozási tételek & gyakorlás V 1.0 OE-NIK,

6. gyakorlat Egydimenziós numerikus tömbök kezelése, tömbi algoritmusok

OOP I. Egyszerő algoritmusok és leírásuk. Készítette: Dr. Kotsis Domokos

A függvények névvel rendelkező utasításcsoportok, melyeknek információkat adhatunk át, és van egy visszatérési értékük.

C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem

Java Programozás 4. Gy: Java GUI. Tipper, MVC kalkulátor

7. K: JAVA alapok Konzultáció

BME MOGI Gépészeti informatika 6.

1. Jelölje meg az összes igaz állítást a következők közül!

OOP: Java 6.Gy: Java osztályok. Definíció, static, túlterhelés

OOP: Java 1.Gy: Java alapok

Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges. Könyvtárhierarhiát fed: Pl.: java/util/scanner.java

OOP: Java 8.Gy: Abstract osztályok, interfészek

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):

Java II. I A Java programozási nyelv alapelemei

3. Határozza meg és írja ki a minta szerint, hogy a forrásállományban hány kémiai elem felfedezési adatai

OOP: Java 5.Gy: Osztály, referencia, konstruktor

Programozás I. Első ZH segédlet

A C# programozási nyelv alapjai

Szoftvertechnológia alapjai Java előadások

C# gyorstalpaló. Készítette: Major Péter

OOP: Java 7.Gy: Öröklődés, referenciák

3. Gyakorlat Ismerkedés a Java nyelvvel

Bánsághi Anna 2014 Bánsághi Anna 1 of 68

Java Programozás 11. Ea: MVC modell

Java II. I A Java programozási nyelv alapelemei

Programozás alapjai 5. gyakorlat Vezérlési szerkezetek egymásba ágyazása

Programozás alapjai gyakorlat. 4. gyakorlat Konstansok, tömbök, stringek

Java Programozás 9. Gy: Java alapok. Adatkezelő 5.rész

Programozás III A JAVA TECHNOLÓGIA LÉNYEGE. Többlépcsős fordítás JAVA PLATFORM. Platformfüggetlenség

Programozási nyelvek II.: JAVA, 4. gyakorlat

BME MOGI Gépészeti informatika 1.

Objektum Orientált Programozás. 5. JAVA osztályok 21/1B IT MAN

Torna. A torna.csv UTF-8 kódolású állományban soronként egy versenyző eredményeit tároljuk. Az adatokat pontosvessző választja el egymástól.

Kivételek kezelése (exception handling) Hibakezelés old style. Kivételkezelés

C# feladatok gyűjteménye

Programozás I. Második ZH segédlet

1. Feladat: beolvas két számot úgy, hogy a-ba kerüljön a nagyobb

Maximum kiválasztás tömbben

Java bevezet o Kab odi L aszl o Kab odi L aszl o Java bevezet o

Programozási nyelvek Java

A C# PROGRAMOZÁSI NYELV

Szoftvertervezés és -fejlesztés I.

Szoftvertechnolo gia gyakorlat

Programozási nyelvek II.: JAVA, 4. gyakorlat

Bevezetés a programozásba I.

hiányzott szeptemberben vagy A tanuló nem hiányzott szeptemberben szöveget

INFORMATIKAI ALAPISMERETEK

7/8. gyakorlat Karaktertömbök és sztringkezelés

Adatbázis rendszerek Gy: Algoritmusok C-ben

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós szeptember 27. Széchenyi István Egyetem, Gy r

Bevezetés a programozásba I.

1. Egyszerű (primitív) típusok. 2. Referencia típusok

2018, Funkcionális programozás

Gelle Kitti Algoritmusok és adatszerkezetek gyakorlat - 07 Hasítótáblák

1. feladat Készítse el szövegszerkesztővel, majd mentse osztály.txt néven a következő tartalmú szöveges fájlt:

6. A Pascal nyelv utasításai

A képernyőre írást igénylő részfeladatok eredményének megjelenítése előtt írja a képernyőre a feladat sorszámát (például: 3. feladat:)!

Programozás I. Második ZH segédlet

PASzSz. Dr. Kotsis Domokos

PROGRAMOZÁS ALAPFELADATOK

Alapok. tisztán funkcionális nyelv, minden függvény (a konstansok is) nincsenek hagyományos változók, az első értékadás után nem módosíthatók

2018, Diszkrét matematika

Programozás alapjai C nyelv 4. gyakorlat. Mit tudunk már? Feltételes operátor (?:) Típus fogalma char, int, float, double

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):

Egyenletek, egyenlőtlenségek V.

Bevezetés a programozásba I.

Programozás alapjai 3.Gy: C elágazások, ciklusok P R O

Programozás I. Szöveges fájlok kezelése Felsorolástípus Objektumtömb Gyakorló feladatok

Programozási nyelvek II. JAVA EA+GY 1. gyakolat

1. Alapok. Programozás II

Bevezetés a programozásba I.

Mit tudunk már? Programozás alapjai C nyelv 4. gyakorlat. Legnagyobb elem keresése. Feltételes operátor (?:) Legnagyobb elem keresése (3)

Objektumorientált Programozás VI.

Objektumorientált Programozás III.

Apple Swift kurzus 3. gyakorlat

Klasszikus programozás Java nyelven

GYAKORLATIAS JAVA MINTA

Objektum Orientált Programozás VII.

Kifejezések. Kozsik Tamás. December 11, 2016

Kalapácsvetés 2016 szöveges

Programozási nyelvek II. JAVA EA+GY 1. gyakolat

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós február 18. Széchenyi István Egyetem, Gy r

Tömbök kezelése. Példa: Vonalkód ellenőrzőjegyének kiszámítása

Bánsághi Anna

Java gyakorlat feladatai e s megolda sai ( )

Átírás:

OOP: Java 1.Gy: Java alapok Eclipse alapok O O P Objektum Orientált Programozás 31/1 B ITv: MAN 2019.02.25

Feladat Írja meg a 4 alapműveletet megvalósító Kalkulátor programot Java nyelven. Az elvégzendő műveletet és az operandusokat a felhasználó adja meg. A program a megadott művelettől függően végzi el a számítási feladatot. A művelet vizsgálatához használja a switch utasítást. Az osztás művelet végrehajtásakor ügyeljen az operandusok típusára, és ne engedje a 0-val való osztást. 31/2

Magyarázatok Programlogika: Kezdetben egész számokra írjuk meg a kódot! 1. Írjunk egy metódust (ReadInt), ami be tud olvasni egy ellenőrzött egész számot. Ellenőrzés: ha osztunk, a nevező nem lehet nulla! 2. Írjunk egy metódust (ReadOperation), ami be tud olvasni egy ellenőrzött műveletet (csak +, -, /, * lehet!) 3. Írjunk metódust (Calc), a műveletek elvégzésére 4. Írjunk metódust az eredmény kiírására (Print) 31/3

A ReadInt metódus kódja public static int ReadInt(boolean div) { int x; System.out.println("Enter a number: "); while (!sc.hasnextint()) { System.out.println("That's not a correct number! \nenter a number: "); sc.next(); x = sc.nextint(); if (div && x==0) { System.out.println("Can't divide by zero!"); x=readint(true); Rekurzió. Önmagát hívja a metódus. sc.nextline(); return x; Azért kell, mert a nextint() után a pufferben marad az Enter karakter, és azt onnan ki kell olvasni! 31/4

A ReadOperation metódus kódja public static String ReadOperation() { String sign=""; System.out.println("Enter operation sign: "); sign = sc.nextline(); if (sign.equals("+") sign.equals("-") sign.equals("/") sign.equals("*")) { else { System.out.println("That's not a correct operation sign!"); sign=readoperation(); Rekurzió. Önmagát hívja a metódus. return sign; 31/5

A Calc és a Print metódus kódja public static int Calc(int x, int y, String s) { int out=0; switch (s) { case "+": out=x+y; break; case "-": out=x-y; break; case "/": out=x/y; break; case "*": out=x*y; return out; public static void Print (int r) { System.out.println("Az eredmény: "+r); 31/6

A main metódus kódja static Scanner sc = new Scanner(System.in); public static void main(string[] args) { int x=readint(false); String sign=readoperation(); int y; if (sign.equals("/")) y=readint(true); else y=readint(false); Print(Calc(x, y, sign)); sc.close(); Enter a number: 3 Enter operation sign: - Enter a number: 5 Az eredmény: -2 31/7

Fejlesztés Egyetlen sztringként olvassa be az inputot space-el elválasztva a tagokat (pl.: 3 + 5). A beolvasott sztringet a space-ek mentén szét kell bontani tagokra a split metódussal, melynek paramétere a tagoló karaktersorozat. Az eredmény egy sztring tömb, melynek egyes elemeit a megfelelő típusra konvertálva kapjuk meg az operandusokat (a csomagoló osztály parsexxx metódusát használva) és az operátort. Programlogika: A ReadInt és a ReadOperation metódus helyett egyetlen ReadData metódust kell írni A program változóit adattagként kell deklarálni, nem lokális változóként 31/8

A ReadData és a main metódus kódja public static void ReadData() { System.out.println("Enter the term to calculate: "); String s = sc.nextline(); String[] st=s.split(" "); x=integer.parseint(st[0]); y=integer.parseint(st[2]); sign=st[1]; public class Calculator { static Scanner sc = new Scanner(System.in); static int x, y; Statikus adattagok static String sign; public static void main(string[] args) { ReadData(); Print(Calc(x, y, sign)); sc.close();... 31/9 Darabolás Szöveg számmá konvertálása

Házi feladat 1. Tegye a Kalkulátor programot folyamatos működésűvé. A számítás elvégzése után kérdezze meg a felhasználót, hogy akar-e új műveletet megadni. Olvassa be a választ. Amíg igennel válaszol, addig fusson a program. 2. Oldja meg a műveleti string (term) ellenőrzését. 3. Alakítsa át úgy a programot, hogy valós számokra is működjön. 31/10

31/11

Feladat Deklaráljon, majd foglaljon helyet egy 10 elemű int tömb számára. Töltse fel 1 és 50 közötti véletlenszámokkal a tömböt. Használja a java.lang.math osztály random() metódusát! Ez a metódus a [0,1) felülről nyitott intervallumból egy lebegőpontos véletlenszámot ad vissza. A számtartományt a C-ből ismert (felsőhatáralsóhatár+1)+alsóhatár képlettel adhatjuk meg. double random = (Math.random() * 50) + 1; Ha int típusú véletlenszámot szeretnénk: int random = (int)(math.random() * 50) + 1; 31/12

Feladat A következő műveleteket külön függvényekben valósítsa meg: 31/13 Tömbelemek kiírása foreach ciklussal (Print). Keresse meg a tömbben a legnagyobb páros számot. Figyelje meg mi a különbség, ha a for ciklust, illetve ha a foreach ciklust használja! (SearchLargestEvenNumber) Számolja meg, hány négyzetszám van a tömbelemek között (SquareQuantity). A négyzetszám vizsgálatot oldja meg algoritmikus úton és a Math.sqrt() metódus felhasználásával is. Ez a metódus egy double típusú argumentumot vár és double értéket ad vissza. Számítsa ki a tömbelemek mértani átlagát (GeometricMean): a tömbelemek szorzata annyiadik gyök alatt, ahány tagú a szorzat. Gyökvonáshoz használja a Math osztály pow() hatványozó metódusát, amelynek első paramétere a hatványalap (double), második paramétere a hatványkitevő (double) és double értéket ad vissza.

A Print metódus kódja public static void Print(int[] x) { for (int a : x) System.out.println(a); 31/14

A SearchLargestEvenNumber metódus kódja public static int SearchLargestEvenNumber(int[] x) { int index= -1; for (int i = 0; i < x.length; i++) if (x[i] % 2 == 0) if (index== -1) index=i; else if (x[i] > x[index]) index=i; return index; public static int SearchLargestEvenNumber2(int[] x) { int index= -1; int cv=0; for (int i : x) { if (i % 2 == 0) if (index== -1) index=cv; else if (i > x[index]) index=cv; cv++; return index; 31/15

A SquareQuantity metódus kódja public static int SquareQuantity(int[] x) { int q=0; for (int i : x) if (i % Math.sqrt(i) == 0) q++; return q; 31/16

A GeometricMean metódus kódja public static double GeometricMean(int[] x) { double gm=1.0; for (int i : x) gm*=i; gm=math.pow(gm, (double)1/x.length); return gm; 31/17

A main metódus kódja public static void main(string[] args) { int[] tomb = new int[10]; for (int i = 0; i < tomb.length; i++) tomb[i]=(int)(math.random()*50+1); Print(tomb); if (SearchLargestEvenNumber2(tomb)==-1) System.out.println("Nincs páros szám a tömbben!"); else System.out.println("A legnagyobb páros szám a tömbben: "+ tomb[searchlargestevennumber2(tomb)]); System.out.println("Négyzetszámok darabszáma: "+ SquareQuantity(tomb)); System.out.println("Mértani átlag: "+GeometricMean(tomb)); 31/18 7 4 28 13 27 26 1 2 18 33 A legnagyobb páros szám a tömbben: 28 Négyzetszámok darabszáma: 2 Mértani átlag: 9.838781067884801

31/19

Tömbkezelő extrák Javasolt metódusok: A java.util.arrays osztály metódusaival kényelmesen kezelhetők a tömbök. Például: Tömb rendezése (nem ad vissza értéket): Arrays.sort(myArray); Bináris keresés tömbben (a megtalált elem indexét adja vissza): Arrays.binarySearch(myArray, searchkey); Két tömb azonosságának a vizsgálata (boolean-el tér vissza): Arrays.equals(a1, a2); Próbálja ki a metódusokat int, double és char tömbökön is. 31/20

A main metódus kódja int[] tomb = new int[10]; for (int i = 0; i < tomb.length; i++) tomb[i]=(int)(math.random()*50+1); Print(tomb); Arrays.sort(tomb); Print(tomb); System.out.println("Keresett: 15, eredmény: "+ Arrays.binarySearch(tomb, 15)); int[] t2 = tomb; System.out.println("Egyforma 'tomb' és 't2'? Válasz: "+ Arrays.equals(tomb, t2)); 31/21 2 8 26 45 15 9 5 42 7 26 2 5 7 8 9 15 26 26 42 45 Keresett: 15, eredmény: 5 Egyforma 'tomb' és 't2'? Válasz: true Keresett: 30, eredmény: -8

31/22

Feladat Írja meg a másodfokú egyenlet valós gyökeit meghatározó Java programot. A másodfokú egyenlet konstansait a felhasználó adja meg. Beolvasáshoz használja a Scanner osztályt, a számításhoz pedig a Math osztály sqrt() metódusát, amely egy double típusú argumentumot vár és double értéket ad vissza. Az első feladathoz hasonlóan: 1) kérje be egyenként a 3 számot, majd 2) egyetlen sztringként, ahol vesszővel választja el a számokat. 31/23

Magyarázatok Programlogika: Másodfokú egyenlet alakja: ax 2 + bx + c = 0 Diszkrimináns számítása: D = b 2 4ac Diszkrimináns vizsgálata: D = 0 Egy valós gyök D > 0 Két valós gyök D < 0 Két komplex gyök Valós gyök(ök) számítása: Lépések: 1. Együtthatók bekérése 2. Diszkrimináns számítás 3. Gyökök meghatározása, kiírása 31/24

A main metódus kódja public static void main(string[] args) { Scanner sc = new Scanner(System.in); System.out.println("Adja meg az együtthatókat!"); System.out.println("Négyzetes együttható: "); int a=sc.nextint(); System.out.println("Elsőfokú együttható: "); int b=sc.nextint(); System.out.println("Konstans együttható: "); int c=sc.nextint(); double d=math.pow(b,2)-4*a*c; double x1, x2; 31/25

A main metódus kódja if (d==0) { x1=(-b+math.sqrt(math.pow(b, 2)-4*a*c))/(2*a); System.out.println("D=0, a gyök: "+x1); else if (d>0) { x1=(-b+math.sqrt(math.pow(b, 2)-4*a*c))/(2*a); x2=(-b-math.sqrt(math.pow(b, 2)-4*a*c))/(2*a); System.out.println("D>0, a gyökök: "); System.out.println("x1= "+x1); System.out.println("x2= "+x2); else System.out.println("Mivel D<0, a gyökök komplexek."); sc.close(); Adja meg az együtthatókat! Négyzetes együttható: 2 Elsőfokú együttható: 4 Konstans együttható: 2 D=0, 31/26 a gyök: -1.0 Adja meg az együtthatókat! Négyzetes együttható: 1 Elsőfokú együttható: 6 Konstans együttható: 5 D>0, a gyökök: x1= -1.0 x1= -5.0 Adja meg az együtthatókat! Négyzetes együttható: 2 Elsőfokú együttható: 2 Konstans együttható: 2 Mivel D<0, a gyökök komplexek.

A main metódus kódja public static void main(string[] args) { Scanner sc = new Scanner(System.in); int a=0, b=0, c=0; boolean ok; do { System.out.println("Adja meg az együtthatókat, vesszővel elválasztva:"); String ins=sc.nextline(); String[] sa=ins.split(","); ok=true; try { Felügyelt blokk kezdete a=integer.parseint(sa[0]); b=integer.parseint(sa[1]); Felügyelt utasítások c=integer.parseint(sa[2]); catch (NumberFormatException ex) { ok = false; Felügyelt blokk vége while (!ok); 31/27 Számformátum hiba esetén

Are you on the picture! 31/28

Feladat Egész és valós típusú tömbök deklarálása, inicializálása, feltöltése véletlen számokkal. Szöveges tömb deklarálása, inicializálása, adatok beolvasása Adatok kiíratása (esetleg fordított sorrendben) Alapalgoritmusok: Összegzés, átlagolás, megszámlálás Minimum, maximum keresés Keresés (van-e a tömbben x-értékű elem, melyik az) Rendezés Mátrixok deklarálása, feltöltése (beolvasás, véletlen, inicializálás) Adatok kiíratása Összegzés, átlagolás, megszámlálás Keresés (min, max, adott érték) 31/29

31/30

VÉGE VÉGE 31/31