diff --git a/Suli/13.b/Programozás (Tusjak Brigitta)/Elmélet/2024. 11. 13.txt b/Suli/13.b/Programozás (Tusjak Brigitta)/Elmélet/2024. 11. 13.txt index a71f877..efaeb0c 100644 --- a/Suli/13.b/Programozás (Tusjak Brigitta)/Elmélet/2024. 11. 13.txt +++ b/Suli/13.b/Programozás (Tusjak Brigitta)/Elmélet/2024. 11. 13.txt @@ -18,11 +18,11 @@ Aszimptotikus hatékonyság: Ha a bemenet mérete elég nagy, akkor az algoritmus futási idejének csak a nagyságrendje érdekes. Az O (Ordó) jelölés: -A O jelölést arra használjuk, ahogy a futási idő növekedését aszimptotikusan alulról és felülről konstant távolságra behatároljuk. +A O jelölést arra használjuk, hogy a futási idő növekedését aszimptotikusan alulról és felülről konstant távolságra behatároljuk. Például a bináris keresés futási ideje legrosszabb esetben O(log2n), helytelen lenne azt állítani, hogy a bináris keresés futási ideje O(log2n) minden esetben. A bináris keresés futási ideje soha nem rosszabb, mint O(log2n), de van, amikor ennél jobb. -Jó lenne egy olyan aszimptotikus jelölés, ami azt fejezné ki, hogy "a futási idő maximum ennyivelnő, de ennél korábban is nőhet." Erre használjuk az "O" jelölést. +Jó lenne egy olyan aszimptotikus jelölés, ami azt fejezné ki, hogy "a futási idő maximum ennyivel nő, de ennél korábban is nőhet." Erre használjuk az "O" jelölést. Ha a futási idő O(f(n)), akkor elég nagy n esetén a futási idő maximum k*f(n) valamilyen konstans k érték mellett. Az O(f(n)) futási időt így kell elképzelni. Azt mondjuk "f(n) ordója" vagy egyszerűen "O(f(n)) (kiejtésben használatos még az ordó(f(n)) is). Az O jelölést aszimptotikus felső korlátként használjuk, mivel a futási időt felülről korlátozza, ha az input mérete elég nagy. @@ -32,7 +32,7 @@ Tömb A tömb egy olyan adatszerkezet, amely menet közben nem méretezhető át. Tehát ha új elemeket szeretnénk egy meglévő tömbhöz adni, az csak úgy fog működni, hogy létrehozunk egy új tömböt, ami az új elemek és a meglévő elemek tárolására alkalmas, ezután pedig bemásoljuk a meglévő elemeket és az új elemeket a teljesen új tömbünkbe. Tömbökben referencia típusokat is alkalmazhatunk, viszont ebben az esetben nem elég példányosítani a tömböt, az egyes elemeket is példányosítani kell, mivel ebben az esetben a tömb csak az objektumra mutató referenciát tárolja, így példányosítás nélkül a tömb elemeinek értéke null lesz. -Az osztályokat ben muszáj a konstruktuk segítségével példányosítani. Erre célra vezették be a nyelvben az Object Initializer szintaxist, amivel egy osztály adattagjai úgy adhatók meg, mint egy tömb elemei. +Az osztályokat tömbben muszáj a konstruktoruk segítségével példányosítani. Erre a célra vezették be a nyelvben az Object Initializer szintaxist, amivel egy osztály adattagjai úgy adhatók meg, mint egy tömb elemei. Ez akkor jön jól, ha van egy osztályunk, amely adattagokkal rendelkezik de a konstruktor az objektum minden adattagjának beállításához nagyon összetett és komplikált lenne. Ebben az esetben nem érdemes konstruktort írni. Az objektum inicializáló szintaxis a következő: var objektum = new Osztaly() diff --git a/Suli/13.b/Programozás (Tusjak Brigitta)/Elmélet/2024. 11. 15.txt b/Suli/13.b/Programozás (Tusjak Brigitta)/Elmélet/2024. 11. 15.txt index a3d3d1a..e1ce9c4 100644 --- a/Suli/13.b/Programozás (Tusjak Brigitta)/Elmélet/2024. 11. 15.txt +++ b/Suli/13.b/Programozás (Tusjak Brigitta)/Elmélet/2024. 11. 15.txt @@ -1,9 +1,9 @@ Adatstruktúra interfészek -A kollekcióhoz kapcsolódó interfészek közül az egyik legfontosabb az IEnumerable interfész. Ez teszi lehetővé, hogy mindegyik. +A kollekcióhoz kapcsolódó interfészek közül az egyik legfontosabb az IEnumerable interfész. Ez teszi lehetővé, hogy mindegyik kollekción implementációtól függetlenül végig tudjuk iterálni egy foreach ciklussal. -Az absztrakció következő szintje az IReadOnlyCollection és ICollection interfészek. Az ICollection egy módosítható kollekciót ír le, aminek az elemei törölhetőek és bővíthetőek. Az IReadOnlyCollection pedig egy olyant, amiből csak olvasni tudunk, de tudjuk az elemek számát. +Az absztrakció következő szintje az IReadOnlyCollection és ICollection interfészek. Az ICollection egy módosítható kollekciót ír le, aminek az elemei törölhetőek és bővíthetőek. Az IReadOnlyCollection pedig egy olyat, amiből csak olvasni tudunk, de tudjuk az elemek számát. Az olyan típusok esetén, mint a lista, halmaz és asszociatív tömb kapunk speciális interfészeket, mind olvasható és módosítható változatban is. @@ -17,4 +17,4 @@ Egy sokkal jobb megoldás lehet nagy mennyiségú, előre nem ismert számú ada A láncolt lista egy eleme két részből épül fel. Egyrészt tartalmazza a tárolni kívánt adatot, vagy adatokat és tartalmaz egy olyan mutatót, ami a lista egy másik elemét mutatja. Ha referencia a következő elemre nem létezik, akkor a lánc végén vagyunk. -A láncolt lista a dinamikus tömbökhöz képest hátránya a közbülső elemek elérhetőségéből ered. Míg egy tömb esetén ha tudjuk, hogy a k. elemet szeretnénk elérni, akkor a tömb idnexelésével rögtön hozzáférhetünk ehhez az adathoz, addig a láncolt listában a lista elejéről indulva a mutatókon keresztül addig kell lépkedni, míg a k. elemhez nem érünk. A véletlenszerű lista elem megtalálása a lista hosszávak arányos időt igényel. \ No newline at end of file +A láncolt lista a dinamikus tömbökhöz képest hátránya a közbülső elemek elérhetőségéből ered. Míg egy tömb esetén ha tudjuk, hogy a k. elemet szeretnénk elérni, akkor a tömb indexelésével rögtön hozzáférhetünk ehhez az adathoz, addig a láncolt listában a lista elejéről indulva a mutatókon keresztül addig kell lépkedni, míg a k. elemhez nem érünk. A véletlenszerű lista elem megtalálása a lista hosszával arányos időt igényel. \ No newline at end of file diff --git a/Suli/13.b/Programozás (Tusjak Brigitta)/Elmélet/2024. 11. 21.txt b/Suli/13.b/Programozás (Tusjak Brigitta)/Elmélet/2024. 11. 21.txt index 6c0c653..aee48ea 100644 --- a/Suli/13.b/Programozás (Tusjak Brigitta)/Elmélet/2024. 11. 21.txt +++ b/Suli/13.b/Programozás (Tusjak Brigitta)/Elmélet/2024. 11. 21.txt @@ -18,7 +18,7 @@ Kétszeresen láncolt lista esetén a 2db hivatkozás (zöld és sárga) van egy Mint a listák esetében is a LinkedList beírása után a <> jelek közé kerül a láncolt listák típusa és a megszokott név, egyenlőségjel a new operátor, valamint újra a LinkedList és el ne felejtsük a zárójeleket! -Ezután a LinkedList.AddLast(érték) metódussal tudunk a listánk végére beszúrszni egy elemet, vagy például az AddFirst(érték) metódussal pedig a lista első helyére. +Ezután a LinkedList.AddLast(érték) metódussal tudunk a listánk végére beszúrni egy elemet, vagy például az AddFirst(érték) metódussal pedig a lista első helyére. A láncolt listák fontos metódusai @@ -34,4 +34,4 @@ LinkedListNode = LinkedList.Find(keresett érték): Egy LinkedList-ben vissza Csomópontok - LinkedListNode -Egy listából létrehozhatunk egy-egy csomópontot, melyben az adott csomóponthoz tartozó érték és a következő csomópontra való hivatkozás van. A következő csomópontra való ugráshoz a .Next metódust kell használnunk, hogy visszafele közlekedjünk, pedig a .Previous metódust kell használnunk. A .Value metódus az adott csomópontban eltárolt adatpt adja vissza. mivel tudjuk, hogy a láncolt listák utolsó, illetve első eleme null értékú, így egy while while ciklussal is végig tudunk menni az adott láncolt listán, a léptetésről a Next gondoskodik. \ No newline at end of file +Egy listából létrehozhatunk egy-egy csomópontot, melyben az adott csomóponthoz tartozó érték és a következő csomópontra való hivatkozás van. A következő csomópontra való ugráshoz a .Next metódust kell használnunk, hogy visszafele közlekedjünk, pedig a .Previous metódust kell használnunk. A .Value metódus az adott csomópontban eltárolt adatot adja vissza. Mivel tudjuk, hogy a láncolt listák utolsó, illetve első eleme null értékú, így egy while ciklussal is végig tudunk menni az adott láncolt listán, a léptetésről a Next gondoskodik. \ No newline at end of file diff --git a/Suli/13.b/Programozás (Tusjak Brigitta)/Elmélet/2024. 11. 22.txt b/Suli/13.b/Programozás (Tusjak Brigitta)/Elmélet/2024. 11. 22.txt index c67112f..087832f 100644 --- a/Suli/13.b/Programozás (Tusjak Brigitta)/Elmélet/2024. 11. 22.txt +++ b/Suli/13.b/Programozás (Tusjak Brigitta)/Elmélet/2024. 11. 22.txt @@ -1,11 +1,11 @@ Verem (stack) A verem egy olyan adatszerkezet, amelyben az utoljára betett elemet tudjuk feldolgozni. LIFO (Last In First Out). A veremből mindig a legfelső elemet látjuk csak, amelyet a veremmutatóval jelzünk. Ahhoz, hogy az alsóhoz hozzáférjünk, ki kell szedni a felette lévő elemeket. -Két fontos műveletet különböztetünk meg. Az egyik az adott elem verembe helyezése Push, a másik pedig a legffelső elem kivéve a veremből Pop. +Két fontos műveletet különböztetünk meg. Az egyik az adott elem verembe helyezése Push, a másik pedig a legfelső elem kivéve a veremből Pop. A Stack osztály fontosabb tulajdnságai és metódusai: Stack (int capacity) -Paraméteres konstruktor. A paraméter a kiindulásként tárolni kívánt elemk számát adja meg. +Paraméteres konstruktor. A paraméter a kiindulásként tárolni kívánt elemek számát adja meg. Stack(IEnumerable collection) Paraméteres konstruktor. A verem elemei a paraméterként megadott IEnumerable felületet implementáló oszály elemei lesznek. @@ -17,7 +17,7 @@ T Pop() Visszaadja a verem tetején lévő elemet és az elemet eltávolítja a veremből. void Push(T item) -A paraméterként megadott elemt beilleszti a verem tetejére. +A paraméterként megadott elemet beilleszti a verem tetejére. T[] ToArray() A verem elemeit visszaadja egy tömbben.