3. Absztrakt adattípusok
|
|
- Dezső Balla
- 6 évvel ezelőtt
- Látták:
Átírás
1 3. Absztrakt adattípusok Az adatkezelés szintjei: 1. Probléma szintje. 2. Modell szintje. 3. Absztrakt adattípus szintje. 4. Absztrakt adatszerkezet szintje. 5. Adatszerkezet szintje. 6. Gépi szint. Absztrakt adattípus: A = (E, M) 1. E: értékhalmaz, 2. M: műveletek halmaza. "Absztrakt" jelző jelentése: i. Nem ismert az adatokat tároló adatszerkezet. ii. Nem ismertek a műveleteket megvalósító algoritmusok, a műveletek specifikációjukkal definiáltak. Alapvető absztrakt adattípusok 3.1. Verem Értékhalmaz: Verem = { a 1,...,a n : a i E,i = 1,...,n,n 0 V : Verem, x : E {Igaz Letesit(V ) {V = {V = V Megszuntet(V ) {Igaz {V = V Uresit(V ) {V = {V = a 1,...,a n VeremBe(V,x) {V = a 1,...,a n,x {V = a 1,...,a n n > 0 VeremBol(V,x) {V = a 1,...,a n 1 x = a n {V = V NemUres(V ) {NemUres = (Pre(V ) ) {V = a 1,...,a n n > 0 Tete je(v,x) {x = a n V = Pre(V ) {V = a 1,...,a n n > 0 Torol(V ) {V = a 1,...,a n 1 Még az egyszerű absztrakt adattípusoknak is különböző megvalósítása lehet. Mindig azt a megvalósítást kell kiválasztani, amelyik az adott feladat megoldásához a legmegfelelőbb. A megvalósítást alapvetően befolyásolja a megvalósításra használt programozási nyelv. Objektum orientált nyelvek esetén (java, C++, C#) interfész (vagy absztrakt) osztály használata biztosítja azt, hogy a megvalósítástól független algoritmust készíthessünk. Pontosabban, csak a LETESIT művelet függ a megvalósítástól. A java nyelv esetén a Verem adattípus interfész osztálya a következő: public interface Verem<E>{ public boolean NemUres(); public void VeremBe(E x); public E VeremBol(); public E Teteje(); public void Torol(); 1
2 Ha VeremL osztály egy megvalósítása a Verem adattípusnak (interfésznek), és egész számokat tartalmazó V vermet akarunk létesíteni, akkor ezt a VeremL osztály konstruktorának hívásával végezhetjük, ahol típus-paraméterként kell megadni az Integer típust (osztályt). Megjegyzés. Típus-paraméter csak referencia típus lehet, elemi típus (int, long, float, double, char, boolean) nem. Azonban az int Integer,... típuskonverzió automatikus. Tehát pl. Verem<Integer> V típus esetén alkalmazható a int x=v.verembol();, V.VeremBe(x); utasítás. Verem<Integer> V = new VeremL<Integer>(); Verem megvalósítások: VeremT: tömb adatszerkezettel, VeremL: lánc adatszerkezettel, VeremK: kombinált adatszerkezettel. Példa verem adattípus használatára: A postfix konverzió megvalósítása veremmel. private static int Prior(char c){ switch (c){ case ( : return 0; case + : return 1; case - : return 1; case * : return 2; case / : return 2; return -1; public static String Postfix(String K){ Verem<Character> V=new VeremL<Character>(); V.VeremBe( ( ); String Postform=""; char jel, op; for (int i=0; i<k.length(); i++){ jel=k.charat(i); if (Character.isLetter(jel)){ Postform=Postform+jel; else if (jel== ( ){ V.VeremBe(jel); else if (jel== ) ){ op=v.verembol(); while (op!= ( ) { Postform=Postform+op; op=v.verembol(); else{ //műveleti jel while (Prior(V.Teteje()) > Prior(jel)){ op=v.verembol(); Postform=Postform+op; V.VeremBe(jel); op=v.verembol(); //a veremben maradt műveleti jelek kiírása 2
3 while (op!= ( ) { Postform=Postform+op; op=v.verembol(); return Postform; 3.2. Sor Értékhalmaz: Sor = { a 1,...,a n : a i E,i = 1,...,n,n 0 S : Sor, x : E public interface Sor<E>{ public int Elemszam(); public void SorBa(E x); public E SorBol(); public E Elso(); public void Torol(); Sor megvalósítások: SorT: tömb adatszerkezettel, SorL: lánc adatszerkezettel, SorK: kombinált adatszerkezettel. {Igaz Letesit(S) {S = {S = S Megszuntet(S) {Igaz {S = S Uresit(S) {S = {S = a 1,...,a n SorBa(S,x) {S = a 1,...,a n,x {S = a 1,...,a n n > 0 SorBol(S,x) {x = a 1 S = a 2,...,a n {S = a 1,...,a n Elemszam(S) {Elemszam = n {S = a 1,...,a n n > 0 Elso(S,x) {x = a 1 S = Pre(S) {S = a 1,...,a n n > 0 Torol(S) {S = a 2,...,a n 3.3. Prioritási Sor Értékhalmaz: PriSor = { S : S E, E-n értelmezett a lineáris rendezési reláció. S : PriSor, x : E {Igaz Letesit(S, ) {S = /0 {S = S Megszuntet(S) {Igaz {S = S Uresit(S) {S = /0 {S = S SorBa(S,x) {S = Pre(S) {x {S /0 SorBol(S,x) {x = min(pre(s)) Pre(S) = S {x {S = {a 1,...,a n Elemszam(S) {Elemszam = n {S /0 Elso(S,x) {x = min(pre(s)) Pre(S) = S {S /0 Torol(S) {S = Pre(S) {min(pre(s)) 3
4 public interface PriSor<E extends Comparable<E>> extends Sor<E>{ Prioritási sor megvalósítások: PriSorT: kupac-tömb adatszerkezettel, PriSorR: kupac-tömb adatszerkezettel, a rendezési reláció konstruktor paraméter. Példa prioritási sor alkalmazására. Probléma:Halmaz k-adik legkisebb elemének kiválasztása. Bement: H = {a 1,...,a n, különböző egész szám, 1 k n. Kimenet: a i H, amelyre {x : x H,x a i = k, import java.io.*; import java.util.scanner; public class Kivalaszto{ public static int Kivalaszt(){ Scanner stdin = new Scanner(System.in); System.out.println("Elemek száma?"); int n=stdin.nextint(); stdin.nextline(); System.out.println("Hanyadik?"); int k=stdin.nextint(); stdin.nextline(); if (k>n) return 0; int x=0; PriSor<Integer> S = new PriSorT<Integer>(n); for (int i=1; i<=n; i++){ x=stdin.nextint(); S.SorBa(x); stdin.close(); for (int i=1; i<=k; i++) x=s.sorbol(); return x; public static void main (String[] args){ int x=new Kivalaszto().Kivalaszt(); System.out.println("A keresett szám: "+x); 3.4. Lista Értékhalmaz: Lista = { a 1,...,a i 1 a i,...,a n : a j E, j = 1,...,n,0 i 1 n,n 0 L,L1,L2 : Lista, x : E 4
5 {Igaz Letesit(L) {L = {L = L Megszuntet(L) {Igaz {L = L Uresit(L) {L = {L = L Urese(L) {Urese = (Pre(L) = {L = L Ele jen(l) {= Pre(L) = a 1,...,a n {L = L Vegen(L) {Vegen = L = a 1,...,a n {L = a 1,...,a i 1 a i,...,a n Ele jere(l) {L = a 1,...,a n {L = a 1,...,a i 1 a i,...,a n Vegere(L) {L = a 1,...,a n {L = a 1,...,a i 1 a i,...,a n i n Tovabb(L) {L = a 1,...,a i 1,a i a i+1,...,a n {L = a 1,...,a i 1 a i,...,a n i n Kiolvas(L,x) {x = a i L = Pre(L) {L = a 1,...,a i 1 a i,a i+1...,a n i n Modosit(L,x) {L = a 1,...,a i 1 x,a i+1,...,a n {L = a 1,...,a i 1 a i,...,a n Bovit(L,x) {L = a 1,...,a i 1 x,a i,...,a n {L = a 1,...,a i 1 a i,a i+1,...,a n i n Torol(L) {L = a 1,...,a i 1 a i+1,...,a n {L1 = α 1 β 1,L2 = α 2 β 2 Kapcsol(L1,L2) {L1 = α 1 α 2 β 1,L2 = β 2 public interface Lista<E>{ public boolean Urese(); public boolean Elejen(); public boolean Vegen(); public void Elejere(); public void Vegere(); public void Tovabb(); public E Kiolvas(); public void Modosit(E x); public void Bovit(E x); public void Torol(); public void Kapcsol(Lista<E> l2); Lista megvalósítások: ListaL: lánc adatszerkezettel, ListaT: tömb adatszerkezettel. Példa lista alkalmazására. Probléma: Két rendezett lista összefűzése rendezett listává. Bement: L1 = a 1,...,a i 1 a i,...,a n, (a k a k+1, 1 k < n) L2 = b 1,...,b j 1 b j,...,b m, (b k b k+1,1 k < m) Kimenet: L1 = c 1,...,c n+m, (c i c i+1,1 i < n + m) {c 1,...,c n+m = {a 1,...,a n {b 1,...,b m L2 = public static void ListaFuz(Lista<Integer> L1, Lista<Integer> L2){ L1.Elejere(); L2.Elejere(); int a=l1.kiolvas(); 5
6 int b=l2.kiolvas(); while (!L1.Vegen() &&!L2.Vegen()){ if (a<=b){ L1.Tovabb(); if (!L1.Vegen()) a=l1.kiolvas(); else{ L2.Tovabb(); L1.Kapcsol(L2); L1.Tovabb(); if (!L2.Vegen()) b=l2.kiolvas(); //while if (!L2.Vegen()){ L2.Vegere(); L1.Kapcsol(L2); A while ciklus végrehajtásának egy adott pillanatában a ciklusmag elején: L1 = c 1,...,c k a i,...,a n, a = a i és L2 = b j,...,b m, b = b j és Teljesül, hogy {c 1,...,c k = {a 1,...,a i 1 {b 1,...,b j 1 c 1 c 2... c k c k a i, c k b j Ez a feltétel ciklusinvariáns lesz, tehát az algoritmus helyes. A LISTAFUZ algoritmus futási idejének elemzése. Tegyük fel, hogy minden lista művelet futási ideje konstans. Legjobb eset: T l j (n,m) = Θ(min(n,m)). legrosszabb eset: T lr (n,m) = Θ(n + m). Átlagos eset: T a (n,m) = Θ(n + m). T a (n,m) = 1 2 (Θ(n) + 1 m (m + 1) j + Θ(m) + 1 j=0 n + 1 n i=0 = 1 2 (Θ(n) + 1 m(m + 1) + Θ(m) + 1 (m + 1) 2 n + 1 i) n(n + 1) ) 2 = 1 2 (Θ(n) + m 2 + Θ(m) + n ) = Θ(n) + Θ(m) + Θ(n) + Θ(m) 2 = Θ(n + m) A LISTAFUZ csak egész elemtípusú listákra alkalmazható. Látható azonban, hogy csak az a<=b utasítás függ az elemtípustól. Ez is csak annyiban, hogy az elemtípuson értelmezve kell legyen a <= lineáris rendezési reláció. A típus-paraméterezett metódusok lehetővé teszik, hogy ilyen esetekben egyetlen kódot írhassunk. A feltétel az, hogy az E elemtípus a Comparable<E> osztály leszármazottja legyen, tehát implementáljs a compareto metódust. Az ilyen esetet, amikor megköveteljük, hogy az elemtípus rendelkezzen meghatározott műveletekkel, típuskorlátozásnak nevezzük. public static <E extends Comparable<E> > //típuskorlátozás void ListaFuz(Lista<E> L1, Lista<E> L2){ L1.Elejere(); L2.Elejere(); E a=l1.kiolvas(); 6
7 E b=l2.kiolvas(); while (!L1.Vegen() &&!L2.Vegen()){ if (a.compareto(b)<=0){ // a<=b L1.Tovabb(); if (!L1.Vegen()) a=l1.kiolvas(); else{ L2.Tovabb(); L1.Kapcsol(L2); L1.Tovabb(); if (!L2.Vegen()) b=l2.kiolvas(); //while if (!L2.Vegen()){ L2.Vegere(); L1.Kapcsol(L2); 3.5. Kétirányú lista Értékhalmaz: Lista2 = { a 1,...,a i 1 a i,...,a n : a i E,i = 1,...,n,n 0 Lista műveletei + Vissza L : Lista2 {L = a 1,...,a i 1 a i,...,a n i > 0 Vissza(L) {L = a 1,...,a i 2 a i 1,a i,a i+1,...,a n public class Lista2<E> extends Lista<E>{ public void Vissza(); Kétirányú lista (Lista2) megvalósítások Lista2L: kétirányú lánc adatszerkezettel Tömb Értékhalmaz: Tomb = { a 1,...,a n : a i E {,i = 1,...,n,n 1 T : Tomb, x : E, i : Integer {Igaz Letesit(T,n) {T =,..., {T = a 1,...,a i 1,a i,a i+1,...,a n 1 i n Kiolvas(T,i,x) {T = Pre(T ) x = a i {T = a 1,...,a i,...,a n 1 i n Modosit(T,i,x) {T = a 1,...,x,...,a n Megvalósítás //Letesit(T,n): E[] T=new E[n]; //Kiolvas(T,i,x): 7
8 x=t[i]; //Modosit(T,i,x): T[i]=x; A tömb típus rendelkezik iterátorral, tehát a for (int i=0; i<t.length; i++) M(T[i]) ismétlés helyett írhatjuk az egyszerű for (E x:t) M(x) utasítást Sorozat Értékhalmaz: Sorozat = { a 1,...,a n : a i E,i = 1,...,n,n 0 S : Sorozat, x : E, i : Integer {Igaz Letesit(S) {S = {S = S Megszuntet(S) {Igaz {S = S Uresit(S) {S = {S = a 1,...,a n Elemszam(S) {Elemszam = n {S = a 1,...,a i,...,a n 1 i n Kiolvas(S,i,x) {x = a i S = Pre(S) {S = a 1,...,a i,...,a n 1 i n Modosit(S,i,x) {S = a 1,...,x,...,a n {S = a 1,...,a i,a i+1,...,a n 0 i n Bovit(S,i,x) {S = a 1,...,a i,x,a i+1,...,a n {S = a 1,...,a i 1,a i,a i+1,...,a n 1 i n Torol(S,i) {S = a 1,...,a i 1,a i+1,...,a n {S = S IterKezd(S,I) { {I = I IterAd(I,x) { {I = I IterVege(I) { public interface Sorozat<E> extends Iterable<E>{ public int Elemszam(); public E Kiolvas(int i); public void Modosit(int i, E x); public void Bovit(int i, E x); public void Torol(int i); public Iterator<E> iterator(); Sorozat megvalósítások SorozatBKF: bináris keresőfa adatszerkezettel, SorozatAVL: AVL-kiegyensúlyozott bináris keresőfa adatszerkezettel Halmaz Értékhalmaz: Halmaz = { H : H E H : Halmaz, x : E, I : Iterator 8
9 {Igaz Letesit(H) {H = /0 {H = H Megszuntet(H) {Igaz {H = H Uresit(H) {H = /0 {H = {a 1,...,a n Elemszam(H) {Elemszam = n {H = H Eleme(H,x) {Eleme = x Pre(H) {H = H Bovit(H,x) {H = Pre(H) {x {H = H Torol(H,x) {H = Pre(H) {x {H = H IterKezd(H,I) { {I = I IterAd(I,x) { {I = I IterVege(I) { public interface Halmaz<E> extends Iterable<E>{ public int Elemszam(); public boolean Eleme(E x); public void Bovit(E x); public boolean Torol(E x); public E Keres(E x); 3.9. RHalmaz Értékhalmaz: Halmaz = { H : H E, E-n értelmezett a lineáris rendezési reláció. Halmaz műveletek + H : Halmaz, x : E, I : Iterator {H /0 Min(H) {= min{x : x H {H /0 Max(H) {= max{x : x H {H /0 Elozo(H,x) {= max{y : y H x y x {H /0 Koveto(H,x) {= min{y : y H x x y public interface RHalmaz<E extends Comparable<E>> extends Halmaz<E>, Iterable<E>{ public E Min(); public E Max(); public E Elozo(E x); public E Koveto(E x); A Halmaz adattípus megvalósításai: HalmazB: bitvektor adatszerkezettel; E=1..n HalmazT: tömb adatszerkezettel, HalmazL: lánc adatszerkezettel, HalmazHL: hasítótábla (ütközésfeloldás láncolással) adatszerkezettel, HalmazHN: hasítótábla (ütközésfeloldás nyílt címzéssel) adatszerkezettel. Az RHalmaz adattípus megvalósításai: RHalmazT: rendezett tömb adatszerkezettel, RHalmazL: rendezett lánc adatszerkezettel, RHalmazBKF: bináris keresőfa adatszerkezettel, 9
10 RHalmazAVL: AVL-kiegyensúlyozott bináris keresőfa adatszerkezettel, RHalmazPFFa: piros-fekete fa adatszerkezettel. Forall x in H Do M(x); Diszkrét ismétléses vezérlés megvalósításai iterátorral. Pascal megvalósítás: IterKezd(H,I); While Not IterVege(I) Do Begin IterAd(I,x); M(x); End; java megvalósítás: Iterator<E> I=H.iterator(); //IterKezd(H,I) while (I.hasNext()){ //!IterVege(I) x=i.next(); //IterAd(I,x) M(x); vagy kiterjesztett for-ciklussal: for (E x:h) M(x); Példa Halmaz absztrakt adattípus alkalmazására. Probléma:Adott sorozat különböző elemének kiválasztása. Bement: S = a 1,...,a n egész számok. Kimenet: H = {x : x S. import java.io.*; import java.util.*; public class HalmazPelda{ public static void main (String[] args){ Scanner stdin = new Scanner(System.in); Halmaz<Integer> H=new HalmazL<Integer>(); int x; System.out.println("Elemek száma?"); int n=stdin.nextint(); stdin.nextline(); for (int i=1; i<=n; i++){ x=stdin.nextint(); if (!H.Eleme(x)) H.Bovit(x); stdin.close(); Iterator<Integer> it=h.iterator(); //IterKezd(H,it) while (it.hasnext()){ //!IterVege(it) x=it.next(); //IterAd(it,x) System.out.print(x+" "); System.out.println(); for (int e:h) //H elemeinek kiíratása for ciklussal System.out.print(e+" "); 10
11 3.10. Függvény (parciális függvény) Értékhalmaz: Fuggveny = { F : F E = K A,( k K)( x,y A)((k,x) F (k,y) F x = y) F : Fuggveny, k : K, x : A public interface Fuggveny<K, A> extends Iterable<KulcsPar<K, A>>{ public int Elemszam(); public boolean Eleme(K k); public void Bovit(K k, A a); public boolean Torol(K k); public A Kiolvas(K k); public void Modosit(K k, A a); {Igaz Letesit(F) {F = /0 (1) {F = F Megszuntet(F) {Igaz (2) {F = F Uresit(F) {F = /0 (3) {F = F Eleme(F,k) {Eleme = ( x A)((k,x) F) (4) {F = F Elemszam(F) {Elemszam = F (5) {( a A)((k,a) F) Kiolvas(F,k,x) {x = a F = Pre(F) (6) {( a A)((k,a) / F) Kiolvas(F,k,x) {F = Pre(F) x = Pre(x) (7) {( a A)((k,a) F) Modosit(F,k,x) {F = Pre(F) {(k,a) {(k,x) (8) {( a A)((k,a) / F) Modosit(F,k,x) {F = Pre(F) x = Pre(x) (9) {( a A)((k,a) / F) Bovit(F,k,x) {F = Pre(F) {(k,x) (10) {( a A)((k,a) F) Bovit(F,k,x) {F = Pre(F) x = Pre(x) (11) {( a A)((k,a) F) Torol(F,k) {F = Pre(F) {(k,a) (12) {( a A)((k,a) / F) Torol(F,k) {F = Pre(F) (13) public class KulcsPar<K, A > implements Cloneable{ public K kulcs; public A adat; public KulcsPar(K k, A a){ kulcs=k; adat=a; public boolean equals(object x){ return this.kulcs.equals( ((KulcsPar<K,A>)x).kulcs ); public int hashcode(){ return this.kulcs.hashcode(); Forall (k,x) in F Do M(k,x); {F = F IterKezd(F,I) { (14) {I = I IterAd(I,k,x) { (15) {I = I IterVege(I) { (16) 11
12 KulcsPar<K,A> par; Iterator<KulcsPar<K,A>> I=F.iterator(); //IterKezd(F,I) while (I.hasNext()){ //!IterVege(I) par=i.next(); //IterAd(I,par) M(par.kulcs, par.adat); for (KulcsPar<K,A> par : F) M(par.kulcs, par.adat); A Függvény adattípus megvalósításai: FuggvenyT: tömb adatszerkezettel, az értelmezési tartomány (K) típusa Integer; public class FuggvenyT<A> implements Fuggveny<Integer, A>. FuggvenyH: <k,a> párok halmazaként, ekkor konstruktor paraméterként kell megadni, hogy milyen halmaz ábrázolást akarunk: "Lanc" "Tomb" "HasitL" "HasitN" lánc adatszerkezet tömb adatszerkezet hasítótábla láncolással adatszerkezet hasítótábla nyílt címzéssel adatszerkezet FuggvenyR: az értelmezési tartományon értelmezett lin. rendezés, ekkor konstruktor paraméterként kell megadni, hogy milyen halmaz ábrázolást akarunk: "BKF" "AVLFa" "PFFa" bináris keresőfa AVL-keresőfa piros-fekete keresőfa Reláció Értékhalmaz: Relacio = { R : R E = K A R : Relacio, k : K, a : A {Igaz Letesit(R) {F = /0 {F = F Megszuntet(R) {Igaz {F = F Uresit(R) {F = /0 {F = F Eleme(R,k,a) {Eleme = ((k,a) R) {F = F Elemszam(R) {Elemszam = R {(k,a) / R) Bovit(R,k,a) {R = Pre(R) {(k,a) {(k,a) R) Torol(R,k,a) {R = Pre(R) {(k,a) {R = R) KTorol(R,k) {R = Pre(R) {(k,a) : (k,a) Pre(R) {R = R) ATorol(R,a) {R = Pre(R) {(k,a) : (k,a) Pre(R) {R = R) KPar(R,k) {{a : (k,a) Pre(R) {R = R) APar(R,a) {{k : (k,a) Pre(R) {R = R IterKezd(R,I) { {I = I IterAd(I,k,a) { {I = I IterVege(I) { 12
13 public interface Relacio<K, A> extends Iterable<Par<K, A>>{ public int Elemszam(); public boolean Eleme(K k, A a); public void Bovit(K k, A a); public boolean Torol(K k, A a); public void KTorol(K k); public void ATorol(A a); public Halmaz<A> KPar(K k); public Halmaz<K> APar(A a); A Relacio adattípus megvalósításai: RelacioL: lánc adatszerkezettel, RelacioBKF: bináris keresőfa adatszerkezettel, mind K, mind A rendezett típus kell legyen. RelacioAVL: AVL-fa bináris keresőfa adatszerkezettel, mind K, mind A rendezett típus kell legyen. 13
Megoldás meghatározása Ez a szakasz kitölti a c és S táblázatokat, a kiíratás S alapján egy rekurzív algoritmussal megtehető.
Leghosszabb közös részsorozat Egy sorozat, akkor részsorozata egy másiknak, ha abból elemeinek elhagyásával megkapható. A feladat két sorozat X = (x 1,...,x m ) és Y = (y 1,...,y n ) leghosszabb közös
Hátizsák feladat. Példa: A tárgyak (súly, fontosság) párokban (4,6) (3,5) (2,3) (2,3) a hátizsák kapacitása 8.
Hátizsák feladat Egy adott hátizsákba tárgyakat akarunk pakolni. Adott n tárgy minden tárgynak van egy fontossági értéke ( f [i]), és egy súlya (s[i]), a hátizsákba maximum összesen S súlyt pakolhatunk.
Hátizsák feladat. Példa: A tárgyak (súly, fontosság) párokban (4,6) (3,5) (2,3) (2,3) a hátizsák kapacitása 8.
Hátizsák feladat Egy adott hátizsákba tárgyakat akarunk pakolni. Adott n tárgy minden tárgynak van egy fontossági értéke ( f [i]), és egy súlya (s[i]), a hátizsákba maximum összesen S súlyt pakolhatunk.
Az absztrakt adattípus egy (E,M) párral adható meg, ahol E az értékhalmaz, M a műveletek halmaza. Fő tulajdonságok. Verem
Előadás részvétel igazolása Az előadáson való részvételt az előadáson kapott kódnak az alábbi oldalra való feltöltésével lehet igazolni. http://www.inf.u-szeged.hu/~tnemeth/alg1ics/ Az adatkezelés szintjei
Algoritmizálás. Horváth Gyula Szegedi Tudományegyetem Természettudományi és Informatikai Kar
Algoritmizálás Horváth Gyula Szegedi Tudományegyetem Természettudományi és Informatikai Kar horvath@inf.u-szeged.hu 0.1. Az algoritmikus tudás szintjei Ismeri (a megoldó algoritmust) Érti Le tudja pontosan
Algoritmusok és adatszerkezetek II.
Algoritmusok és adatszerkezetek II. Horváth Gyula Szegedi Tudományegyetem Természettudományi és Informatikai Kar horvath@inf.u-szeged.hu 3. Kiegyensúlyozott keresőfák A T tulajdonság magasság-egyensúlyozó
A Verem absztrakt adattípus
A Verem absztrakt adattípus Értékhalmaz: E Verem = [a 1,...,a n : a i E,i = 1,...,n,] Műveletek: V : Verem, x : E {Igaz} Letesit(V) {V = []} {V = V } Megszuntet(V) {Igaz} {V = V } Uresit(V) {V = []} {V
Számláló rendezés. Példa
Alsó korlát rendezési algoritmusokra Minden olyan rendezési algoritmusnak a futását, amely elempárok egymással való összehasonlítása alapján működik leírja egy bináris döntési fa. Az algoritmus által a
Bináris keresőfák. Adat : M Elemtip és Elemtip-on értelmezett egy lineáris rendezési reláció,
Bináris keresőfák Az F = (M,R,Adat) absztrakt adatszerkezetet bináris keresőfának nevezzük, ha F bináris fa, R = {bal, jobb, apa}, bal, jobb, apa : M M, Adat : M Elemtip és Elemtip-on értelmezett egy lineáris
Algoritmusok és adatszerkezetek II.
Algoritmusok és adatszerkezetek II. Horváth Gyula Szegedi Tudományegyetem Természettudományi és Informatikai Kar horvath@inf.u-szeged.hu 5. Vágható-egyesíthető Halmaz adattípus megvalósítása önszervező
10. Gráf absztrakt adattípus, gráfok ábrázolása
Gráf absztrakt adattípus, gráfok ábrázolása Definíciók Irányítatlan gráf:g = (V, E) E rendezetlen {a,b,a,b V párok halmaza Irányított gráf:g = (V,E) E rendezett (a,b) párok halmaza; E V V Multigráf: G
2. Rekurzió. = 2P2(n,n) 2 < 2P2(n,n) 1
2. Rekurzió Egy objektum definícióját rekurzívnak nevezünk, ha a definíció tartalmazza a definiálandó objektumot. Egy P eljárást (vagy függvényt) rekurzívnak nevezünk, ha P utasításrészében előfordul magának
Egyesíthető prioritási sor
Egyesíthető prioritási sor Értékhalmaz: EPriSor = S E, E-n értelmezett a lineáris rendezési reláció. Műveletek: S,S 1,S 2 : EPriSor, x : E {Igaz} Letesit(S, ) {S = /0} {S = S} Megszuntet(S) {} {S = S}
... fi. ... fk. 6. Fabejáró algoritmusok Rekurzív preorder bejárás (elsőfiú-testvér ábrázolásra)
6. Fabejáró algoritmusok Fa bejárásán olyan algoritmust értünk, amelynek bemenete egy F fa és egy M művelet, és az algoritmus adott sorrendben pontosan egyszer végrehajtja az M műveletet a fa pontjaiban
Egyesíthető prioritási sor
Egyesíthető prioritási sor Értékhalmaz: EPriSor = S E, E-n értelmezett a lineáris rendezési reláció. Műveletek: S,S 1,S 2 : EPriSor, x : E {Igaz} Letesit(S, ) {S = /0} {S = S} Megszuntet(S) {} {S = S}
1. Alapfogalmak Algoritmus Számítási probléma Specifikáció Algoritmusok futási ideje
1. Alapfogalmak 1.1. Algoritmus Az algoritmus olyan elemi műveletekből kompozíciós szabályok szerint felépített összetett művelet, amelyet megadott feltételt teljesítő bemeneti adatra végrehajtva, a megkívánt
Kupac adatszerkezet. A[i] bal fia A[2i] A[i] jobb fia A[2i + 1]
Kupac adatszerkezet A bináris kupac egy majdnem teljes bináris fa, amely minden szintjén teljesen kitöltött kivéve a legalacsonyabb szintet, ahol balról jobbra haladva egy adott csúcsig vannak elemek.
Önszervező bináris keresőfák
Önszervező bináris keresőfák Vágható-egyesíthető halmaz adattípus H={2,5,7,11,23,45,75} Vag(H,23) Egyesit(H1,H2) H1= {2,5,7,11} H2= {23,45,75} Vágás A keresési útvonal mentén feldaraboljuk a fát, majd
Tuesday, March 6, 12. Hasító táblázatok
Hasító táblázatok Halmaz adattípus U (kulcsuniverzum) K (aktuális kulcsok) Függvény adattípus U (univerzum) ÉT (értelmezési tartomány) ÉK (érték készlet) Milyen az univerzum? Közvetlen címzésű táblázatok
Algoritmusok és adatszerkezetek II.
Algoritmusok és adatszerkezetek II. Horváth Gyula Szegedi Tudományegyetem Természettudományi és Informatikai Kar horvath@inf.u-szeged.hu 6. Ugrólista (Skiplist) Definíció. Olyan adatszerkezet, amelyre
Gelle Kitti Algoritmusok és adatszerkezetek gyakorlat - 07 Hasítótáblák
Algoritmusok és adatszerkezetek gyakorlat - 07 Hasítótáblák Gelle Kitti 2017. 10. 25. Gelle Kitti Algoritmusok és adatszerkezetek gyakorlat - 07 Hasítótáblák 2017. 10. 25. 1 / 20 Hasítótáblák T 0 h(k 2)
Java bevezet o Kab odi L aszl o Kab odi L aszl o Java bevezet o
Miért Java? széleskörben elterjedt Micro Edition - beágyazott rendszerek, régi telefonok Standard Edition - PC, android ezen alapul Enterprise Edition - vállalati programok, web service-ek multiplatform
Amortizációs költségelemzés
Amortizációs költségelemzés Amennyiben műveleteknek egy M 1,...,M m sorozatának a futási idejét akarjuk meghatározni, akkor egy lehetőség, hogy külön-külön minden egyes művelet futási idejét kifejezzük
Széchenyi István Egyetem. Programozás III. Varjasi Norbert varjasin@sze.hu
Programozás III. Varjasi Norbert varjasin@sze.hu 1 A java virtuális gép (JVM) Képzeletbei, ideális számítógép. Szoftveresen megvalósított működési környezet. (az op. rendszer egy folyamata). Feladata:
OOP: Java 8.Gy: Abstract osztályok, interfészek
OOP: Java 8.Gy: Abstract osztályok, interfészek 26/1 B ITv: MAN 2019.04.03 Abszrakt metódus és absztrakt osztály. Gyakran előfordul a tervezés során, hogy egy osztály szintjén tudjuk, hogy valamilyen metódus
Programozási nyelvek Java
Programozási nyelvek Java Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 9. előadás Interface - típust vezet be, de osztálypéldány nem készíthető belőle (statikus típust ad) - több osztály is
1. ábra. Egy rekurzív preorder bejárás. Egy másik rekurzív preorder bejárás
Preorder ejárás Fa bejárásán olyan algoritmust értünk, amelynek bemenete egy F fa és egy M művelet, és az algoritmus adott sorrendben pontosan egyszer végrehajtja az M műveletet a fa pontjaiban lévő adatokra.
Generikus osztályok, gyűjtemények és algoritmusok
Programozási, gyűjtemények és algoritmusok bejárása Informatikai Kar Eötvös Loránd Tudományegyetem 1 Tartalom 1 bejárása 2 bejárása 2 Java-ban és UML-ben bejárása Az UML-beli paraméteres osztályok a Java
A kurzus teljesítésének feltételei. Az I404 kódú kurzus teljesítéséhez meg kell oldani egy otthoni feladatot, határidő április 30.
Évközi teljesítés A kurzus teljesítéséek feltételei Két gyakorlato egírt ZH, az elérhető 00 potból 50 potot kell eléri. Aki e teljesíti a feltételt a vizsgaidőszak első hetébe a vizsgára egedésért írhat
A C# programozási nyelv alapjai
A C# programozási nyelv alapjai Tisztán objektum-orientált Kis- és nagybetűket megkülönbözteti Ötvözi a C++, Delphi, Java programozási nyelvek pozitívumait.net futtatókörnyezet Visual Studio fejlesztőkörnyezet
A félév során előkerülő témakörök
A félév során előkerülő témakörök rekurzív algoritmusok rendező algoritmusok alapvető adattípusok, adatszerkezetek, és kapcsolódó algoritmusok dinamikus programozás mohó algoritmusok gráf algoritmusok
Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN
Objektum Orientált Programozás 11. Kivételkezelés 44/1B IT MAN B IT v: 2016.05.03 MAN Pici elmélet A Java kivételkezelésének célja a programfutás során keletkezett hibák kiszűrése és megfelelő kezelése.
Programozási technológia
Programozási technológia Generikus osztályok Gyűjtemények Dr. Szendrei Rudolf ELTE Informatikai Kar 2018. Generikus osztályok Javaban az UML paraméteres osztályainak a generikus (sablon) osztályok felelnek
Programozás I. 3. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar
Programozás I. 3. gyakorlat Szegedi Tudományegyetem Természettudományi és Informatikai Kar Antal Gábor 1 Primitív típusok Típus neve Érték Alap érték Foglalt tár Intervallum byte Előjeles egész 0 8 bit
és az instanceof operátor
Java VIII. Az interfacei és az instanceof operátor Krizsán Zoltán Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2005. 10. 24. Java VIII.: Interface JAVA8 / 1 Az interfészről általában
Ugrólisták. RSL Insert Example. insert(22) with 3 flips. Runtime?
Ugrólisták Ugrólisták Ugrólisták Ugrólisták RSL Insert Example insert(22) with 3 flips 13 8 29 20 10 23 19 11 2 13 22 8 29 20 10 23 19 11 2 Runtime? Ugrólisták Empirical analysis http://www.inf.u-szeged.hu/~tnemeth/alga2/eloadasok/skiplists.pdf
OOP: Java 11.Gy: Enumok, beágyazott osztályok. 13/1 B ITv: MAN
OOP: Java 11.Gy: Enumok, beágyazott osztályok 13/1 B ITv: MAN 2019.04.24 ArrayList Rugalmas tömb A tömbök korlátai Fix méret, nem lehet menet közben megnövelni Ha túl nagyra választjuk, fölösleges helyfoglalás
Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán
Java VIII. Az interfacei és az instanceof operátor Krizsán Zoltán Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2005. 10. 24. Java VIII.: Interface JAVA8 / 1 Az interfészről általában
List<String> l1 = new ArrayList<String>(); List<Object> l2 = l1; // error
Generics Egyszerűbb példák (java.util csomagból): public interface List { void add(e x); Iterator iterator(); public interface Iterator { E next(); boolean hasnext(); E - formális típusparaméter,
Abstract osztályok és interface-ek. 7-dik gyakorlat
Abstract osztályok és interface-ek 7-dik gyakorlat Abstract metódusok és osztályok Az OO fejlesztés során olyan osztályokat is kialakíthatunk, melyeket csak továbbfejlesztésre, származtatásra lehet használni,
Programozás I. Első ZH segédlet
Programozás I. Első ZH segédlet Ezen az oldalon: kiírás az alapértelmezett (hiba) kimenetre, sztring konkatenáció, primitív típusok, osztály létrehozás, példányosítás, adattagok, metódusok Kiíratás alapértelmezett
Adatszerkezet - műveletek
Adatszerkezet - műveletek adatszerkezet létrehozása adat felvétele adat keresése adat módosítása adat törlése elemszám visszaadása minden adat törlése (üresít) adatszerkezet felszámolása (megszüntet) +
Pelda öröklődésre: import java.io.*; import java.text.*; import java.util.*; import extra.*;
Java osztály készítése, adattagok, és metódusok, láthatóság, konstruktor, destruktor. Objektum létrehozása, használata, öröklés. ( Előfeltétel 12. Tétel ) Az osztály egy olyan típus leíró struktúra, amely
3. Gyakorlat Ismerkedés a Java nyelvvel
3. Gyakorlat Ismerkedés a Java nyelvvel Parancssori argumentumok Minden Java programnak adhatunk indításkor paraméterek, ezeket a program egy tömbben tárolja. public static void main( String[] args ) Az
Programozási nyelvek Java
Programozási nyelvek Java Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 8. előadás Öröklődés - megnyitunk egy osztályt egy másik előtt zárt egységeket szeretünk készíteni (láthatósági kérdés:
Programozási nyelvek II. JAVA EA+GY 1. gyakolat
Programozási nyelvek II. JAVA EA+GY 1. gyakolat EÖTVÖS LORÁND TUDOMÁNYEGYTEM INFORMATIKAI KAR PROGRAMOZÁSI NYELVEK ÉS FORDÍTÓPROGRAMOK TANSZÉK 2017/2018. őszi félév Tartalom 1 Amit tudni kell a félévről
Edényrendezés. Futási idő: Tegyük fel, hogy m = n, ekkor: legjobb eset Θ(n), legrosszabb eset Θ(n 2 ), átlagos eset Θ(n).
Edényrendezés Tegyük fel, hogy a rendezendő H = {a 1,...,a n } halmaz elemei a [0,1) intervallumba eső valós számok. Vegyünk m db vödröt, V [0],...,V [m 1] és osszuk szét a rendezendő halmaz elemeit a
OOP: Java 8.Gy: Gyakorlás
OOP: Java 8.Gy: Gyakorlás 43/1 B ITv: MAN 2019.04.10 43/2 Egy régebbi beszámoló anyaga 1. Feladat: Készítsen egy Szemely nevű osztályt a szokásos konvenciók betartásával, amely tárolja egy ember nevét
Informatika terméktervezőknek
Informatika terméktervezőknek C# alapok Névterület (namespace) using Osztály (class) és Obejtumok Metódus (function, procedure, method) main() static void string[] arg Szintaxis // /* */ \n \t Névadások
Objektum Orientált Programozás. 5. JAVA osztályok 21/1B IT MAN
Objektum Orientált Programozás 5. JAVA osztályok 21/1B IT MAN B IT v: 2016.03.09 MAN Feladatok 1. Készítsen egy Alkalmazott osztályt - legyen név, kor és fizetés adata - legyen egy osztályszintű adattagja
Java Programozás 1. Gy: Java alapok. Ismétlés ++
Java Programozás 1. Gy: Java alapok Ismétlés ++ 24/1 B ITv: MAN 2018.02.18 Feladat Készítsünk egy komplett konzolos alkalmazást, mely generál egy számot 0 és 100 között (mindkét határt beleértve), feladatunk
Algoritmizálás és adatmodellezés tanítása 1. előadás
Algoritmizálás és adatmodellezés tanítása 1. előadás Algoritmus-leíró eszközök Folyamatábra Irányított gráf, amely csomópontokból és őket összekötő élekből áll, egyetlen induló és befejező éle van, az
Java programozási nyelv 4. rész Osztályok II.
Java programozási nyelv 4. rész Osztályok II. Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2005. szeptember A Java programozási nyelv Soós Sándor 1/17 Tartalomjegyzék
Elemi adatszerkezetek
2017/12/16 17:22 1/18 Elemi adatszerkezetek < Programozás Elemi adatszerkezetek Szerző: Sallai András Copyright Sallai András, 2011, 2014 Licenc: GNU Free Documentation License 1.3 Web: http://szit.hu
Helyes-e az alábbi kódrészlet? int i = 1; i = i * 3 + 1; int j; j = i + 1; Nem. Igen. Hányféleképpen lehet Javaban megjegyzést írni?
A "java Villa -v" parancs jelentése: A java interpreter elindítja a Villa osztály statikus main metódusát, és átadja neki paraméterként a "-v" stringet. A java interpreter elindítja először a Villa osztály
Bánsághi Anna 2014 Bánsághi Anna 1 of 33
IMPERATÍV PROGRAMOZÁS Bánsághi Anna anna.bansaghi@mamikon.net 7. ELŐADÁS - ABSZTRAKT ADATTÍPUS 2014 Bánsághi Anna 1 of 33 TEMATIKA I. ALAPFOGALMAK, TUDOMÁNYTÖRTÉNET II. IMPERATÍV PROGRAMOZÁS Imperatív
Specifikáció. B logikai formula, a bemeneti feltétel, K logikai formula, a kimeneti feltétel, A az algoritmus, amelyre az állítás vonatkozik.
Algoritmus Az algoritmus olyan elemi műveletekből kompozíciós szabályok szerint felépített összetett művelet, amelyet megadott feltételt teljesítő bemeneti adatra végrehajtva, a megkívánt kimeneti adatot
Collections. Összetett adatstruktúrák
Collections Összetett adatstruktúrák Collections framework Előregyártott interface-ek és osztályok a leggyakoribb összetett adatszerkezetek megvalósítására Legtöbbször módosítás nélkül használhatók Időt,
Módosítható Prioritási sor Binomiális kupaccal. Wednesday, March 21, 12
Módosítható Prioritási sor Binomiális kupaccal modosit(x,k) {! if (k>x.kulcs) {!! x.kulcs=k ;!! y=x!! z=x.apa ;!! while(z!=nil and y.kulcs
Java II. I A Java programozási nyelv alapelemei
Java2 / 1 Java II. I A Java programozási nyelv alapelemei Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2009. 02. 09. Java II.: Alapelemek JAVA2 / 1 A Java formalizmusa A C, illetve
14. Mediánok és rendezett minták
14. Mediánok és rendezett minták Kiválasztási probléma Bemenet: Azonos típusú (különböző) elemek H = {a 1,...,a n } halmaza, amelyeken értelmezett egy lineáris rendezési reláció és egy i (1 i n) index.
Programozási nyelvek Java
statikus programszerkezet Programozási nyelvek Java Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 2. előadás csomag könyvtárak könyvtárak forrásfájlok bájtkódok (.java) (.class) primitív osztály
4. Gy: JAVA osztályok
Objektum Orientált Programozás 4. Gy: JAVA osztályok 25/1B IT MAN B IT v: 2016.02.24 MAN Feladatok 1. Készítsen egy Teglalap osztályt - legyen adattagja a két oldal tárolására (egészek) - legyen konstruktora,
Kivételek kezelése (exception handling) Hibakezelés old style. Kivételkezelés
Kivételek kezelése (exception handling) Hibakezelés old style class Szamolo { void szamol( String s, int i ) { int d; if (i!= 0) d = (i+1)/i; else if (s!= null) d = s.length(); else if (i > 10) // applikációs
Szoftvertechnológia alapjai Java előadások
Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz e-mail: fandrew@mit.bme.hu tárgy honlap: http://home.mit.bme.hu/~fandrew/szofttech_hu.html A mai előadás tartalma: Miért pont Java?
Specifikáció. B logikai formula, a bemeneti feltétel, K logikai formula, a kimeneti feltétel, A az algoritmus, amelyre az állítás vonatkozik.
Algoritmus Az algoritmus olyan elemi műveletekből kompozíciós szabályok szerint felépített összetett művelet, amelyet megadott feltételt teljesítő bemeneti adatra végrehajtva, a megkívánt kimeneti adatot
INFORMATIKAI ALAPISMERETEK
Informatikai alapismeretek középszint 1021 ÉRETTSÉGI VIZSGA 2011. május 13. INFORMATIKAI ALAPISMERETEK KÖZÉPSZINTŰ ÍRÁSBELI ÉRETTSÉGI VIZSGA JAVÍTÁSI-ÉRTÉKELÉSI ÚTMUTATÓ NEMZETI ERŐFORRÁS MINISZTÉRIUM
ÖNSZERVEZŐ BINÁRIS KERESŐFÁK HATÉKONYSÁGA
ÖNSZERVEZŐ BINÁRIS KERESŐFÁK HATÉKONYSÁGA Tétel: Ha a halmazok ábrázolására önszervező bináris keresőfát használunk, akkor minden α 1,...,α m műveletsor, ahol i {1..m}: α i {keres;bovit;torol;vag;egyesit}
OOP: Java 1.Gy: Java alapok
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ő
Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges. Könyvtárhierarhiát fed: Pl.: java/util/scanner.java
Függvények, csomagok Csomagok Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges számú osztályt tartalmazhat Pl.: java.util.scanner Könyvtárhierarhiát fed: Pl.: java/util/scanner.java Célja:
Imperatív programozás
Imperatív programozás 6. Előadás Python típusok (folytatás) Függvények Típusok + műveleteik Listák - mutable (változtatható) - heterogén lista >>> lista = ["szo", 12, 3.5] >>> lista[1] 12 >>> lista[1:3]
PROGRAMOZÁS tantárgy. Gregorics Tibor egyetemi docens ELTE Informatikai Kar
PROGRAMOZÁS tantárgy Gregorics Tibor egyetemi docens ELTE Informatikai Kar Követelmények A,C,E szakirány B szakirány Előfeltétel Prog. alapismeret Prog. alapismeret Diszkrét matematika I. Óraszám 2 ea
Függvények. Programozás alapjai C nyelv 7. gyakorlat. LNKO függvény. Függvények(2) LNKO függvény (2) LNKO függvény (3)
Programozás alapjai C nyelv 7. gyakorlat Szeberényi Imre BME IIT Függvények C program egymás mellé rendelt függvényekből áll. A függvény (alprogram) jó absztrakciós eszköz a programok
Programozás alapjai. 5. előadás
5. előadás Wagner György Általános Informatikai Tanszék Cserélve kiválasztásos rendezés (1) A minimum-maximum keresés elvére épül. Ismétlés: minimum keresés A halmazból egy tetszőleges elemet kinevezünk
Programozás alapjai C nyelv 7. gyakorlat. Függvények. Függvények(2)
Programozás alapjai C nyelv 7. gyakorlat Szeberényi Imre BME IIT Programozás alapjai I. (C nyelv, gyakorlat) BME-IIT Sz.I. 2005.11.05. -1- Függvények C program egymás mellé rendelt függvényekből
1. Egyszerű (primitív) típusok. 2. Referencia típusok
II. A Java nyelv eszközei 1. Milyen eszközöket nyújt a Java a programozóknak Korábban már említettük, hogy a Java a C nyelvből alakult ki, ezért a C, C++ nyelvben járatos programozóknak nem fog nehézséget
8. Mohó algoritmusok. 8.1. Egy esemény-kiválasztási probléma. Az esemény-kiválasztási probléma optimális részproblémák szerkezete
8. Mohó algoritmusok Optimalizálási probléma megoldására szolgáló algoritmus gyakran olyan lépések sorozatából áll, ahol minden lépésben adott halmazból választhatunk. Sok optimalizálási probléma esetén
Bánsághi Anna 2014 Bánsághi Anna 1 of 68
IMPERATÍV PROGRAMOZÁS Bánsághi Anna anna.bansaghi@mamikon.net 3. ELŐADÁS - PROGRAMOZÁSI TÉTELEK 2014 Bánsághi Anna 1 of 68 TEMATIKA I. ALAPFOGALMAK, TUDOMÁNYTÖRTÉNET II. IMPERATÍV PROGRAMOZÁS Imperatív
7. K: JAVA alapok Konzultáció
Objektum Orientált Programozás 7. K: JAVA alapok Konzultáció 35/1B IT MAN B IT v: 2017.05.03 MAN Hiba, biztonságos program 01. Szintaktikai hiba imt i = 0; system.out.println( alma ); for (int i = 0, i
Programozási nyelvek Java
Programozási nyelvek Java Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 13. előadás Throwable Error Exception RuntimeException IOException Saját (általában) Nem ellenörzött kivételek (Unchecked
Adatszerkezetek és algoritmusok
2012. október 18. Ismétlés El z órai anyagok áttekintése Ismétlés Specikáció Típusok, kifejezések, m veletek Adatok ábrázolása a memóriában Vezérlési szerkezetek Függvények Osztályok, objektumok Paraméterátadás
Programozás alapjai II. (7. ea) C++ Speciális adatszerkezetek. Tömbök. Kiegészítő anyag: speciális adatszerkezetek
Programozás alapjai II. (7. ea) C++ Kiegészítő anyag: speciális adatszerkezetek Szeberényi Imre BME IIT M Ű E G Y E T E M 1 7 8 2 C++ programozási nyelv BME-IIT Sz.I. 2016.04.05. - 1
Speciális adatszerkezetek. Programozás alapjai II. (8. ea) C++ Tömbök. Tömbök/2. N dimenziós tömb. Nagyméretű ritka tömbök
Programozás alapjai II. (8. ea) C++ Kiegészítő anyag: speciális adatszerkezetek Szeberényi Imre BME IIT Speciális adatszerkezetek A helyes adatábrázolás választása, a helyes adatszerkezet
Programozási technikák Pál László. Sapientia EMTE, Csíkszereda, 2009/2010
Programozási technikák Pál László Sapientia EMTE, Csíkszereda, 2009/2010 Előadás tematika 1. Pascal ismétlés, kiegészítések 2. Objektum orientált programozás (OOP) 3. Delphi környezet 4. Komponensek bemutatása
OOP: Java 4.Gy: Java osztályok
OOP: Java 4.Gy: Java osztályok. 36/1 B ITv: MAN 2019.03.02 Feladat Készítsen el egy Employee osztályt és egy Employee osztályt használó osztályt (EmpProgram). Az Employee osztálynak: van name és salary
Algoritmizálás + kódolás C++ nyelven és Pascalban
Algoritmizálás + kódolás nyelven és ban Motiváció A Programozási alapismeretek tárgyban az algoritmizáláshoz struktogramot, a kódoláshoz nyelvet használunk, a Közismereti informatikában (a közoktatásban
Számjegyes vagy radix rendezés
Számláló rendezés Amennyiben a rendezendő elemek által felvehető értékek halmazának számossága kicsi, akkor megadható lineáris időigényű algoritmus. A bemenet a rendezendő elemek egy n méretű A tömbben
Java II. I A Java programozási nyelv alapelemei
Java II. I A Java programozási nyelv alapelemei Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2008. 02. 19. Java II.: Alapelemek JAVA2 / 1 A Java formalizmusa A C, illetve az annak
Előfeltétel: legalább elégséges jegy Diszkrét matematika II. (GEMAK122B) tárgyból
ÜTEMTERV Programozás-elmélet c. tárgyhoz (GEMAK233B, GEMAK233-B) BSc gazdaságinformatikus, programtervező informatikus alapszakok számára Óraszám: heti 2+0, (aláírás+kollokvium, 3 kredit) 2019/20-es tanév
Programozás alapjai C nyelv 4. gyakorlat. Mit tudunk már? Feltételes operátor (?:) Típus fogalma char, int, float, double
Programozás alapjai C nyelv 4. gyakorlat Szeberényi Imre BME IIT Programozás alapjai I. (C nyelv, gyakorlat) BME-IIT Sz.I. 2005.10.10.. -1- Mit tudunk már? Típus fogalma char, int, float,
Programozás I. Második ZH segédlet
Programozás I. Második ZH segédlet Ezen az oldalon: interfész létrehozás, megvalósítás; absztrakt osztály, metódus; belső osztály Interfész létrehozása: public interface InterfeszNeve { //Metódusok deklarációja
Algoritmusok helyességének bizonyítása. A Floyd-módszer
Algoritmusok helyességének bizonyítása A Floyd-módszer Algoritmusok végrehajtása Egy A algoritmus esetében a változókat három változótípusról beszélhetünk, melyeket az X, Y és Z vektorokba csoportosítjuk
Adatszerkezetek 2. Dr. Iványi Péter
Adatszerkezetek 2. Dr. Iványi Péter 1 Hash tábla A bináris fáknál O(log n) a legjobb eset a keresésre. Ha valamilyen közvetlen címzést használunk, akkor akár O(1) is elérhető. A hash tábla a tömb általánosításaként
Kalapácsvetés 2016 szöveges
Kalapácsvetés 2016 Ebben a feladatban a 2016. évi nyári olimpiai játékokon az atlétika férfi kalapácsvetés döntőjének eredményeit kell feldolgoznia. A döntő 6 dobási sorozatból állt, de a 3. sorozat után
Adatszerkezetek Adatszerkezet fogalma. Az értékhalmaz struktúrája
Adatszerkezetek Összetett adattípus Meghatározói: A felvehető értékek halmaza Az értékhalmaz struktúrája Az ábrázolás módja Műveletei Adatszerkezet fogalma Direkt szorzat Minden eleme a T i halmazokból
Java programozási nyelv
Szoftvertechnológia sáv Java programozási nyelv Dirk Louis-Peter Müller: Java (Belépés az internet világába) Panem kiadó, Budapest, 2002. Webvilág sorozat Készítette: Gregorics Tibor Vázlatos áttekintés
Algoritmusok és adatszerkezetek gyakorlat 07
Algoritmusok és adatszerkezetek gyakorlat 0 Keresőfák Fák Fa: összefüggő, körmentes gráf, melyre igaz, hogy: - (Általában) egy gyökér csúcsa van, melynek 0 vagy több részfája van - Pontosan egy út vezet
Algoritmusok és adatszerkezetek gyakorlat 06 Adatszerkezetek
Algoritmusok és adatszerkezetek gyakorlat 06 Adatszerkezetek Tömb Ugyanolyan típusú elemeket tárol A mérete előre definiált kell legyen és nem lehet megváltoztatni futás során Legyen n a tömb mérete. Ekkor:
Programozás alapjai II. (7. ea) C++
Programozás alapjai II. (7. ea) C++ Kiegészítő anyag: speciális adatszerkezetek Szeberényi Imre BME IIT M Ű E G Y E T E M 1 7 8 2 C++ programozási nyelv BME-IIT Sz.I. 2016.04.05. - 1
Programozás I. Metódusok C#-ban Egyszerű programozási tételek. Sergyán Szabolcs sergyan.szabolcs@nik.uni-obuda.hu
Programozás I. 3. előadás Tömbök a C#-ban Metódusok C#-ban Egyszerű programozási tételek Sergyán Szabolcs sergyan.szabolcs@nik.uni-obuda.hu Óbudai Egyetem Neumann János Informatikai Kar Szoftvertechnológia