Innen: Hungarian Scratch-Wiki
(Listák szócikkből átirányítva)
A lista (más programozási nyelvekben tömbnek is nevezik) több információ, érték egy helyen történő tárolására alkalmas eszköz. Úgy is meghatározható, mint egy változó, ami változókat tartalmaz. Egy lista sorszámokból (1-től a lista hosszáig) és a hozzájuk rendelt elemekből (számok vagy szövegek) áll. Az elemek a sorszámuk által hívhatók le. A lista blokkok a Változók blokk-kategóriában találhatók. A Scratch 1.3 verziójában jelentek meg először.
Lista blokkok
A listák programozására a következő blokkok használhatók:
add [valami] elemet [lista v] listához |
Betesz egy elemet egy lista végére |
töröld [1] elemet [lista v] listából |
Töröl egy adott sorszámú elemet egy listából, 1-gyel csökkentve az utána következő elemek sorszámát |
töröld [lista v] lista minden elemét |
Törli egy lista összes elemét |
szúrd be [valami] elemet [1] helyre [lista v] listában |
Beszúr egy elemet egy adott helyre, 1-gyel növelve az utána következő elemek sorszámát |
cseréld le [1] elemet [lista v] listában [valami] elemre |
Lecseréli egy adott sorszámú elemét egy listának egy másik elemre. |
(lista::list) |
Adatközlő blokk, amely egy lista elemeit összeragasztva adja vissza |
([lista v] [1] eleme) |
Adatközlő blokk, amely egy lista adott sorszámú elemét adja vissza |
([valami] sorszáma [lista v] listában) |
Adatközlő blokk, visszaadja egy elem sorszámát egy listában, vagy nullát, ha a lista nem tartalmazza az adott elemet. |
([lista v] hossza::list) |
Adatközlő blokk, visszaadja egy lista elemeinek számát |
<[lista v] tartalmazza [valami]?> |
Igazat ad vissza, ha egy lista tartalmaz egy elemet, hamisat ha nem |
[lista v] lista jelenjen meg |
Megjeleníti egy lista kijelzőjét a színpadon |
[lista v] lista tűnjön el |
Eltűnteti egy lista kijelzőjét a színpadról |
Elemek
Egy listához hozzáadhatók vagy törölhetők elemek kézzel vagy programozással (a fenti blokkokkal). A shift és enter egyidejű lenyomásával a kijelölt elem elé beszúródik egy új elem, csak az entert lenyomva pedig a kijelölt elem után szúródik be egy újabb.
Egy lista kijelzőjére kattintva a jobb oldali gombbal, majd az importálásra kattintva betölthető egy .txt fájlba írt lista, amelyben minden elem új sorban van. Ilyenkor a régi lista elemei felülíródnak.
Hasonlóan ki is exportálhatók a listák, kivéve, ha a lista neve a felhasználó operációs rendszere által nem támogatott. Régebbi Windowson a kérdőjelet (?), csillagot (*), szögletes zárójelet (< >), függőleges vonalat (|), kettőspontot (:), szóközt ( ) vagy bármilyen ASCII vezérlőkaraktert tartalmazó listák nem exportálhatók ki Scratchből. Ha ilyen karaktert tartalmaz a listánk, akkor az exportálás gombra történő első kattintásra nem fog történni semmi, a második kattintásra pedig bezáródik importálás/exportálás menü.[1][2]
Korlátolt listahossz
A Scratch legújabb verzióiban nincs semmilyen korlát a listák elemeinek számát illetően, azt maximális elemszámot leszámítva, ami elegendő a Scratch lefagyasztásához. A régebbi verziók online szerkesztőiben kb. 300.000 elemű lista esetén néha nem képesek menteni, mert túl sok időbe telik a feltöltés.
Scratch 3.0-ban a listák elemeinek száma 200.000-re korlátozódik.[3]
Példák a listák használatára
A listák többek között használhatók
- Számításokra (pl. kettőnél több szám átlaga, több művelet végrehajtása)
- Karakterláncok, képek (akár rajzok), hangok kódolására és dekódolására
- Eszköztárak létrehozására játékokban
- Adatok betöltésére és kimentésére
- Hosszabb szövegek tárolására
- Karakterek adatainak (pozíció, sebesség stb.) tárolására
Összetettebb alkalmazási területek
- A felhasználó által bevitt adatok tárolása operációs rendszer szimulációkban
- Mesterséges intelligencia adatainak tárolása játékokban
- A felhasználó régebbi bemeneteinek újraalkotása
- 3D-s világok adatainak tárolása
- Kizárólag listákat használó játékok készíése
Megosztott (felhő alapú) lista
A megosztott (szerveren tárolt) lista kísérleti funkciója volt a Scratch 2.0 alpha és beta verziójának, amely a Scratch 2.0 már nem volt elérhető. A megosztott listák elemei a Scratch szerverein voltak tárolva, ez volt az egyetlen különbség köztük és az átlagos listák között. Amikor egy megosztott lista frissült, akkor az összes másolatán megtette ezt az adott projektnek. Ez hasznos például a nyilvános csúcseredmény listák készítésénél. Sok felhasználó szerette volna visszahozni ezt a funkciót, mert a megosztott listák megkönnyítenének sok dolgot számukra.[4] Több kódolással megvalósítható a listák megosztása megosztott változókba történő lekódolással és azokból történő dekódolással.[megj. 1]
Lista szerkesztő
A lista szerkesztő egy olyan funkció, amely lehetővé teszi a listák szerkesztését. Használható egyes elemek átírására egy listában, ha rájuk kattintunk, és begépeljük a kívánt új elemet. Elemeket törölni rájuk, majd a jobb oldalukon megjelenő X-re kattintva lehet. A bal alsó sarokban található + ikonnal adhatunk a listához új elemet.
Felhasználása
A lista szerkesztő használható például akkor, amikor egy projekt elvárja vagy megengedi a felhasználóinak, hogy megváltoztassanak (be lehet tölteni valamilyen felhasználók által kimentett adatot egy játékban, rajzoló programban stb.) egy listát.
Ezen kívül hasznos lehet szövegszerkesztők készítésében, mivel enélkül a
<[... v] lenyomva?>
blokkra kell hagyatkozni, ami többek között a törlés (backspace) gomb lenyomásának érzékelésére is alkalmatlan.
Korlátozások
A lista szerkesztőnek sok korlátozása van, emiatt nem használják szélesebb körben. Egyik hátránya, hogy csak a projekt szerkesztő módjában használható (Megnézem belülről), a projekt oldalán nem.
Példa projektek
- ZENEROBOT v3 - Ez a projekt listákat használ a (random) választott hangszerek, ritmus, hangmagasságok és egyebek tárolására.
A listákat érintő kérések
Amikor megjelentek a listák, sok felhasználó 2 új blokkot áhított: a [lista v] lista tűnjön el
-t és a [lista v] lista jelenjen meg
-et. A nagyon nagy követelésnek eleget téve végül a Scratch 2.0-ban megjelentek a blokkok.
Néhány felhasználó kérte, hogy legyenek két- vagy többdimenziós listák.[5] A Scratch fejlesztőcsapata azonban elutasította a javaslatot, mondván, hogy túl bonyolult lenne a funkció egy programozási nyelvhez képest, amely kezdők számára jött létre.[6] Kérték emellett a megosztott listák megvalósítását is is.[4] A lehetőség meg is volt a 2.0-ás verzióban, azonban a 3.0-ban már nincsenek.
Lásd még
Megjegyzések
- ↑ A műveletről angol nyelven itt olvashatsz többet: en:Encoding_and_Decoding_Cloud_Data