B M Java Programozás 2. Gy: Java alapok IT A N Adatszerkezetek

Slides:



Advertisements
Hasonló előadás
Java programozási nyelv Adatbekérés konzolról
Advertisements

TÁMOP /1-2F JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam Osztályok, objektumok definiálása és alkalmazása. Saját.
Bevezetés a C# nyelvbe Az alapok összefoglalása Farkas Csaba.
 Alap tudnivalók Alap tudnivalók  Az If és a While folyamatábrák Az If és a While folyamatábrák  Probléma Probléma  A while ciklus (általános alak,
Forrás: Reiter István C_Sharp programozás lépésről lépésre (frissített tartalommal )
avagy a háromszög technika
Hogyan partícionáljuk meghajtónkat?
Script nyelvek előadás
Fájlkezelés.
Nagyméretű állományok küldése
A kérdőívek, a kérdőívszerkesztés szabályai
Hogyan lehet sikeresen publikálni?
Alhálózat számítás Osztályok Kezdő Kezdete Vége Alapértelmezett CIDR bitek alhálózati maszk megfelelője A /8 B
Programstruktúrák.
Microsoft Excel BAHAMAS tanfolyam
Java kódolási konvenciók
Scilab programozás alapjai
A tökéletes számok keresési algoritmusa
Az Európai Uniós csatlakozás könyvtári kihívásai
PHP - függvények.
Algoritmusok és Adatszerkezetek I.
Programozás I. Gyakorlás egydimenziós tömbökkel Többdimenziós tömbök
KERESÉS ELEKTRONIKUS KÖNYVTÁRI KATALÓGUSOKBAN
Egyéb gyakorló feladatok (I.)
C# SZINTAKTIKÁJA Az egyes utasítások végén pontosvessző áll
Dependency Injection Moq Feladat
Animációk.
Programozás I. 5. gyakorlat.
2. Bevezetés A programozásba
Hernyák Zoltán Magasszintű Programozási Nyelvek I.
☺ Programozási környezetek Validátorok Fazekas Judit PTI 2010.
Vállalatgazdaságtan (BAI0030L; GZB2320L) 2017/18 tanév I. félév
VB ADATTÍPUSOK.
Hogyan lehet sikeresen publikálni?
A márkázás Marketing gyakorlat 6..
Algoritmusok és Adatszerkezetek I.
Körmendi Dániel MAS Meeting Scheduler.
Számítógépes Hálózatok
Teljes visszalépéses elemzés
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Programozás I. 4. gyakorlat.
Szoftverrobotok vs biorobotok Bemutatkozik Albert, a vállalati robot
Informatikai gyakorlatok 11. évfolyam
B M Java Programozás 4. Gy: Java GUI IT A N Tipper, MVC kalkulátor
Java Programozás 3. Gy: Java GUI Swing, AWT B IT M A N v:
TÁMOP A pályaorientáció rendszerének tartalmi és módszertani fejlesztése – Regionális workshop Zétényi Ákos.
A Microsoft SharePoint testreszabása Online webhely
INFORMATIKA október 6. Gyakorló alkalom – 2. rész
B M Java Programozás 9. Gy: Java alapok IT A N Adatkezelő 5.rész
A Lineáris Keresés Buktatói
B M Java Programozás 1. Gy: Java alapok IT A N Ismétlés ++
Algoritmusok és Adatszerkezetek I.
További rendező és kereső algoritmusok
Szálszinkronizáció.
1.5. A diszkrét logaritmus probléma
A szállítási probléma.
9-10.-es bemeneti mérések és a fejlesztő munkánk
B M Java Programozás 6. Gy: Java alapok IT A N Adatkezelő 2.rész
Matematika 11.évf. 1-2.alkalom
B M Java Programozás 8. Gy: Java alapok IT A N Adatkezelő 4.rész
Erasmus+ hallgatói mobilitásra jelentkezéshez
ANTOINE DE SAINT- EXUPERY Gondolatok „A kis herceg” című könyvből.
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Informatika Oktató: Katona Péter.
Edényrendezés - RADIX „vissza” - bináris számokra
Erasmus+ hallgatói mobilitásra jelentkezéshez
Java alkalmazások 6. Előadás.
Algoritmusok.
ANTOINE DE SAINT- EXUPERY Gondolatok „A kis herceg” című könyvből.
A tehetséggondozás kihívásai
Előadás másolata:

B M Java Programozás 2. Gy: Java alapok IT A N Adatszerkezetek

Feladat Készítsünk egy komplett konzolos alkalmazást, mely letárolja 4 ember nevét és fizetését 1-1 tömbbe. További feladatok: Név szerint rendezett adatok kiírása Fizetés szerint rendezett adatok kiírása Kereső algoritmus írása, megadott nevű ember létezik-e Kereső algoritmus írása, megadott keresztnevű emberek nevének kiírása

Magyarázatok Programlogika: Készítünk egy 4 elemű String típusú tümböt (neve legyen nev) Készítünk egy 4 elemű int típusú tümböt (neve legyen fiz) Feltöltjük a két tömböt adatokkal Rendezzük a tömbök tartalmát név szerint (metódus neve: sortNev) Kiírjuk az adatokat Rendezzük a tömbök tartalmát fizetés szerint (sortFiz) A kiírásra készítsünk egy print nevű metódust Megírjuk a névre kereső metódust (neve: search), úgy, hogy írja is ki az eredményt Megírjuk a keresztnévre kereső metódust (neve: searchFirstName), úgy, hogy írja is ki az eredményt.

A kód Első lépésként készítsük el a tömböket, írjuk meg a print metódust, és próbáljuk ki a programot. Mindenki ezeket az adatokat vigye fel! public class G_20 { private static String[] nev = new String[4]; private static int[] fiz = new int[4]; public static void main(String[] args) { nev[0] = "Kis Béla"; fiz[0] = 250000; nev[1] = "Jó Zoli"; fiz[1] = 325000; nev[2] = "Só Peti"; fiz[2] = 99000; nev[3] = "Tó Tomi"; fiz[3] = 420000; }

A kód public class G_20 { private static String[] nev = new String[4]; private static int[] fiz = new int[4]; public static void main(String[] args) { nev[0] = "Kis Béla"; fiz[0] = 250000; nev[1] = "Jó Zoli"; fiz[1] = 325000; nev[2] = "Só Peti"; fiz[2] = 99000; nev[3] = "Tó Tomi"; fiz[3] = 420000; print(); } public static void print() { System.out.println(""); for (int i=0; i<4; i++) System.out.println(nev[i]+": "+fiz[i]);

A kód Írjuk meg a sortNev metódust. Stringek sorrendjének meghatározása: int s1.compareTo(s2) Ha s1 előrébb van az abc-ben mint s2, az eredmény negatív Ha s1 hátrébb van az abc-ben mint s2, az eredmény pozitív public static void sortNev() { for (int i=0; i<3; i++) for (int j=i+1; j<4; j++) if (nev[i].compareTo(nev[j]) >=0) { String s = nev[i]; nev[i] = nev[j]; nev[j] = s; int f = fiz[i]; fiz[i] = fiz[j]; fiz[j] = f; } public static void main(String[] args) { . . . sortNev(); print(); }

A kód Írjuk meg a sortFiz metódust. public static void sortFiz() { for (int i=0; i<3; i++) for (int j=i+1; j<4; j++) if (fiz[i] >= fiz[j]) { String s = nev[i]; nev[i] = nev[j]; nev[j] = s; int f = fiz[i]; fiz[i] = fiz[j]; fiz[j] = f; } public static void main(String[] args) { . . . sortNev(); print(); sortFiz(); }

A kód Írjuk meg a search metódust. public static void search(String s) { boolean b = false; for (int i=0; i<4; i++) if (nev[i].equals(s)) b = true; System.out.println(""); if (b) System.out.println(s+": létezik"); else System.out.println(s+": nem létezik"); } public static void main(String[] args) { . . . search("Kis Béla"); search("Nagy Béla"); }

A kód Írjuk meg a searchFirstName metódust, mely keresztnévre keres. Keressük a Béla keresztnevűeket: Kis Béla (megfelelő) Kis Béla Ödön (megfelelő) Béla Ödön (nem felel meg) Ötlet: daraboljuk el a szóközök mentén a nevet, és ha "nem az első" string egyenlő a keresett keresztnévvel, akkor megfelelő a név! Daraboláshoz használjuk a split() metódust: String[] n = nev[i].split(" ");

A kód Írjuk meg a searchFirstName metódust, mely keresztnévre keres. public static void searchFirstName(String s) { System.out.println(""); for (int i=0; i<4; i++) { boolean b = false; String[] n = nev[i].split(" "); for (int j=1; j<n.length; j++) if (n[j].equals(s)) b = true; if (b) System.out.println(s+": "+nev[i]); }

A kód A searchFirstName kipróbálásához készítsünk teszt adatokat: public static void main(String[] args) { nev[0] = "Kis Béla"; fiz[0] = 250000; nev[1] = "Jó Zoli"; fiz[1] = 325000; nev[2] = "Só Béla Peti"; fiz[2] = 99000; nev[3] = "Béla Tomi"; fiz[3] = 420000; searchFirstName("Béla"); }

Feladat Készítsük el ugyanezt a programot úgy, hogy készítünk egy Emp (név, fizetés) osztályt, és annak a példányait használjuk. public class Emp { private String nev; private int fiz; public Emp(String nev, int fiz){ this.nev = nev; this.fiz = fiz; } public String getNev(){ return nev; public int getFiz(){ return fiz; public String toString(){ return nev+": "+fiz;

A kód Az EmpPrg osztály kódja: public class EmpPrg { private static Emp[] emp = new Emp[4]; public static void main(String[] args) { emp[0] = new Emp("Kis Béla", 250000); emp[1] = new Emp("Jó Zoli", 325000); emp[2] = new Emp("Só Béla Peti", 99000); emp[3] = new Emp("Béla Tomi", 420000); } Hová tegyük a sortNev, sortFiz és a print metódust? Emp osztályba? EmpPrg osztályba? Tegyük az Emp osztályba. Mivel nem az adatokkal, hanem az adatok tömbjével dolgoznak, osztálymetódusok lesznek!

A kód A print metódus kódja az Emp-ben: Hívása az EmpPrg-ben: public class Emp { . . . public String toString(){ return nev+": "+fiz; } public static void print(Emp[] t){ System.out.println(""); for (int i=0; i<t.length; i++) System.out.println(t[i]); Emp.print(emp); emp[0].print(emp);

A kód A sortNev metódus kódja az Emp-ben: Hívása az EmpPrg-ben: public class Emp { . . . public static void sortNev(Emp[] t) { int db = t.length; for (int i=0; i<db-1; i++) for (int j=i+1; j<db; j++) if (t[i].nev.compareTo(t[j].nev) >=0) { Emp e = t[i]; t[i] = t[j]; t[j] = e; } print(t); Hívása az EmpPrg-ben: Emp.sortNev(emp);

A kód A sortFiz metódus kódja az Emp-ben: Hívása az EmpPrg-ben: public class Emp { . . . public static void sortFiz(Emp[] t) { int db = t.length; for (int i=0; i<db-1; i++) for (int j=i+1; j<db; j++) if (t[i].fiz >= t[j].fiz) { Emp e = t[i]; t[i] = t[j]; t[j] = e; } print(t); Hívása az EmpPrg-ben: Emp.sortFiz(emp);

A kód A search metódus kódja az Emp-ben: Hívása az EmpPrg-ben: public class Emp { . . . public static void search(Emp[] t, String s) { boolean b = false; for (int i=0; i<t.length; i++) if (t[i].nev.equals(s)) b = true; System.out.println(""); if (b) System.out.println(s+": létezik"); else System.out.println(s+": nem létezik"); } Hívása az EmpPrg-ben: Emp.search(emp, "Kis Béla");

A kód A searchFirstName metódus kódja az Emp-ben: public class Emp { . . . public static void searchFirstName(Emp[] t, String s) { System.out.println(""); for (int i=0; i<t.length; i++) { boolean b = false; String[] n = t[i].nev.split(" "); for (int j=1; j<n.length; j++) if (n[j].equals(s)) b = true; if (b) System.out.println(s+": "+t[i].nev); } Hívása az EmpPrg-ben: Emp.searchFirstName(emp, "Béla");

Feladat Készítsük el ugyanezt a programot úgy, hogy ArrayList-et (listatömb, tömblista, rugalmas tömb) használunk. Kezdjük a programosztállyal. import java.util.ArrayList; public class EmpPrg { private static ArrayList<Emp> emp = new ArrayList<Emp>(); public static void main(String[] args) { emp.add(new Emp("Kis Béla", 250000)); emp.add(new Emp("Jó Zoli", 325000)); emp.add(new Emp("Só Béla Peti", 99000)); emp.add(new Emp("Béla Tomi", 420000)); } }

A kód A print metódus kódja az Emp-ben: Hívása az EmpPrg-ben: import java.util.ArrayList; public class Emp { . . . public static void print(ArrayList<Emp> emp){ System.out.println(""); for (Emp e : emp) System.out.println(e); } Hívása az EmpPrg-ben: Emp.print(emp);

A kód A sortNev metódus kódja az Emp-ben: Hívása az EmpPrg-ben: import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; public class Emp { . . . public static void sortNev(ArrayList<Emp> emp){ Collections.sort(emp, new Comparator<Emp>() { public int compare(Emp e1, Emp e2) { return e1.nev.compareTo(e2.nev); } }); print(emp); Emp.sortNev(emp); A { } között egy névtelen osztály található, ami implementálja a Comparator interfészt. Az interfész compare metódusát kell felüldefiniálni: a két bemenő elemet kell összehasonlítani úgy, hogy int típusú értéket adjon eredményül.

A kód A sortFiz metódus kódja az Emp-ben: Hívása az EmpPrg-ben: import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; public class Emp { . . . public static void sortFiz(ArrayList<Emp> emp){ Collections.sort(emp, new Comparator<Emp>() { public int compare(Emp e1, Emp e2) { return e1.fiz - e2.fiz; } }); print(emp); Hívása az EmpPrg-ben: Emp.sortFiz(emp);

A kód A search metódus kódja az Emp-ben: Hívása az EmpPrg-ben: public class Emp { . . . public static void search(ArrayList<Emp> emp, String s) { boolean b = false; for (Emp e : emp) if (e.nev.contains(s)) b = true; System.out.println(""); if (b) System.out.println(s+": létezik"); else System.out.println(s+": nem létezik"); } Hívása az EmpPrg-ben: Emp.search(emp, "Kis Béla");

A kód A searchFirstName metódus kódja az Emp-ben: public class Emp { . . . public static void searchFirstName(ArrayList<Emp> emp, String s){ System.out.println(""); for (Emp e : emp) { boolean b = false; String[] n = e.nev.split(" "); for (int j=1; j<n.length; j++) if (n[j].equals(s)) b = true; if (b) System.out.println(s+": "+e.nev); } Hívása az EmpPrg-ben: Emp.searchFirstName(emp, "Béla");

V É G E VÉGE