Arrays és Subroutines

Rétegek: kitöltés és rendezés

Ismerkedjen meg a tömbökkel

nbsp nbsp nbsp nbsp nbsp A rétegek általában a kezdőknek szóló programozás egyik legnehezebb témája. Tény, hogy a legfontosabb az, hogy megértsük, majd minden úgy fog menni, mint a clockwork (nos, valaki, mint, természetesen!). Olvassa el a következő szöveget, amennyit csak tudsz.

nbsp nbsp nbsp nbsp nbsp Így egy tömb homogén adatkészlet (számok, szimbólumok, szavak), amelynek elemei egy névvel és egymást követő számozással rendelkeznek. Például a tanulók listája - egy tömb, egy diák 1 - ilyen és egy ilyen, egy diák 5 - ilyen és egy ilyen, egy diák 18 - ilyen-és-ilyen; vagy az ábécé - az 1 - "A" betű, az 5 - "D" betű, a 15 - "H" betű, a 7 - "E" betű. Mivel fizikailag egy tömb jelenik meg a számítógépben, nem mondom el, de hivatalosan - megmondom. Ezt kell tanulnia.

nbsp nbsp nbsp nbsp nbsp Ha egy tömbre van szükségünk, akkor meg kell adnunk annak paramétereit - nevét, dimenzióját és adattípusát - a DIM operátor a BASIC-ban (DIM - az angol "dimenzióból"). Például, COUNT 20 egész számra van szükség. írja le az INTEGER DIM COUNT (20) -ta. Vagy ugyanazt a COUNT, de 47 karakterláncváltozót tartalmaz. DIM COUNT $ (47) STRING-t írunk - a tömb neve és a karakterlánc neve után a "$" szimbólumot adjuk meg. A Pascal-ban a tömb a következőképpen van megadva: ArrayName: Array [0..Number of Elements] típusú - és a Var-deklaráció szakaszában van leírva.

nbsp nbsp nbsp nbsp nbsp Vessünk egy konkrét példára. Tegyük fel, hogy van egy táblázata az átlagos hőmérsékletnek egy adott év minden napján. Minden nap minden egyes hőmérsékletét a 1. nap, 2. nap, 3. napi változó rögzíti. Day365. Meg kell találni az átlagos éves hőmérsékletet. Felírható: sred: = (. Day1 + Day2 + nappali 3 + + Day365) / 365;, de lehet, hogy az összes adatot egy sor dimenzióban 365, majd kiszámítjuk összessége hőmérséklet, el kell osztani 365 Ugyancsak könnyebb? Nos, itt van. Az egyetlen negatív Pascal - dimenziója a tömb adott, mielőtt a program, akkor nem változik a program során, és BASIC, felvehet egy változó kívánt méretre a tömb, és azonnal indíthatja a tömb abban a dimenzióban.

nbsp nbsp nbsp nbsp nbsp A különböző nyelveken lévő tömbök indexét különböző módon jelöljük. Tehát a BASIC-ban egy változó indexét egy "()", és pascal - a szögletes zárójelek "[]" jelöli. Tehát mi van a tömbökön:

  • a tömb neve a programozónak adott;
  • a tömbnek egy neve van (csak a BASIC-ban), azaz ha a tömb szöveges fájl, akkor a neve után a "$" szimbólum feltétlenül fel van tüntetve;
  • a tömbnek van egy dimenziója, vagyis az elemek száma;
  • a tömbnek alkotóelemei egymást követő szekvenciális indexeléssel vannak ellátva;
  • minden elemnek van értéke (név, betű, hőmérséklet - az előző példákban).

Az egyes tömbök DIM-kimutatását csak egyszer kell megadni a programban, mielőtt az első hozzáférést kapna.

Tény, hogy a tömbelemek számozása nulláról indul, de sokkal kényelmesebb és kényelmesebb számunkra az egységszámozás megkezdése. Ez általánosságban nem illegális - a számozás az 5. és a 10. és a legalább egy elem között kezdődik. Elvileg megadhatod az egyes tömbökben lévő első elem számát (csak a BASIC-ban) - OPTION BASE n, ahol n az egyes tömbök első elemének száma.

Egydimenziós tömbök kitöltése és megjelenítésük a képernyőn

nbsp nbsp nbsp nbsp nbsp Nézzük meg a tömb kitöltésével és megjelenítésével kapcsolatos programot:

nbsp nbsp nbsp nbsp nbsp Lássuk rendben. Az első sor kéri az új tömb méretét a képernyő törlése után. Ezután létrehoz egy új MASS tömböt az N elemek dimenziójával - vagyis hányan beléptünk. Aztán egy ciklusban minden egyes elemet kér. Feltöltöttük a tömböt, és a MASS (1), MASS (2), MASS (3) nevekkel rendelkező összes elem a memóriában van. MASS (N). Ezt követően egy üres karakterláncot nyomtatnak ki arra, hogy a tömböt és a kimenetet a képernyő felé terelje. Ezután egy hurokban a tömb minden eleme megjelenik a képernyőn egy sorban. A tömb bemeneti hurokban például a MASS (I) = INT (RND (100)) hozzárendelési operátort is elhelyezhetjük - ha nem akarunk minden elemet beírni - a számítógép egyszerűen kitölti a teljes tömbt önkényesen.

nbsp nbsp nbsp nbsp nbsp Mint mondtam, a legfontosabb az, hogy megértsük. Ha megérted, akkor bátran folytasd.

A legegyszerűbb válogatás

nbsp nbsp nbsp nbsp nbsp A tömbök egyik alapvető művelete az, hogy elrendezzék őket, vagyis a tömb elemeit egyes jellemzők szerint rendeljék: leggyakrabban növekvő vagy csökkenő sorrendben számok, betűrendben pedig karakterek és karakterláncok esetében.

nbsp nbsp nbsp nbsp nbsp A válogatás sokféle módja van, de csak kettőt fogunk megfontolni - a legegyszerűbb, de sajnos nem a leghatékonyabb.

Az első megoldás a választás.

nbsp nbsp nbsp nbsp nbsp Tegyük fel, hogy megadjuk az N dimenzió numerikus tömbjét, és elemeket kell rendezni növekvő sorrendben. Tehát a módszer lényege a következő: Keressük meg a maximális elemet, és helyezzük a helyére - utoljára, miután a megfontolt tömböt 1-gyel csökkentjük, mivel egy elem már a helyén van. Ismételje meg újra az ügyet, majd ismét, és így tovább. És így - N-1 alkalommal.

nbsp nbsp nbsp nbsp nbsp Vegyünk egy konkrét példát. Adjuk meg az elemek öt elemét: 8 4 9 6 7. Most menj a folyamatba:
  • 8 4 7 6 9
  • 6 4 7 8 (9)
  • 6 4 7 (8) (9)
  • 4 6 (7) (8) (9)

nbsp nbsp nbsp nbsp nbsp A válogatás másik módja a csere vagy a "buborék". A program összehasonlítja a tömb elemeit párban, és abban az esetben, ha nem növekvő sorrendben, helyeken változtatja őket. A permutációk négyzetében a legnagyobb (N-1) a "legrosszabb esetben" - ha az összes elemet csökkenő sorrendben rendezzük el.

nbsp nbsp nbsp nbsp nbsp Próbálja végrehajtani ezeket a válogatási módszereket.

Kétdimenziós tömbök

DIM S (4,3) \ Var S: Array [0..5..3] integer;

nbsp nbsp nbsp nbsp nbsp Következő - minden ugyanaz, mint a hagyományos egydimenziós tömbök, csak egy kicsit bonyolultabb. A kitöltés is egyszerű.

Kétdimenziós tömbök kitöltése és megjelenítésük a képernyőn

nbsp nbsp nbsp nbsp nbsp Kétdimenziós tömbök feldolgozása egy ciklus helyett, kettőt használunk, egy a másikban.

Vegyünk egy példát az X (3.5) kétdimenziós tömb kitöltésére, 1-től 20-ig terjedő egész számokkal, majd táblázatos képernyőre adva.

nbsp nbsp nbsp nbsp nbsp Szóval, a tömbökkel, amit kitaláltunk, menjünk át a szubrutinokra.

szubrutinok

És mi ez?

nbsp nbsp nbsp nbsp nbsp Néha bizonyos helyeken bizonyos operátorok ugyanazt a sorrendet kell végrehajtani, különböző kezdeti adatokkal. Ehhez szubrutinokat használunk (angolul "szubrutin").

nbsp nbsp nbsp nbsp nbsp rutinok csökkentik a szöveg programok jelentősen felgyorsítja a folyamatot a munkája, valamint megkönnyítse a munkáját programozók, akik nem igazán akar írja sorozata nyilatkozatok többször, mely összegyűjti a moduláris program, azaz a kész darabot - rutin. Ez lehetővé teszi, hogy nagy programokat hozzon létre egy programozói csoport számára.

nbsp nbsp nbsp nbsp Nbsp Vegyünk egy szubrutint egy ilyen kifejezés kiszámítására: Z = N! / (M! * (N-M)!). Az N és az M változók, valamint az (N-M) kifejezések felkiáltójellel vannak ellátva, ami faktorikus (az összes szám termékét ez a befogadóig, ha nem tudjuk). A kifejezésben háromszor hivatkozhatunk a faktoriális számítás alprogramjára, miközben ugyanazokat az akciókat hajtjuk végre különböző számokkal. A szubrutin leírja a faktoriális számítást, majd háromszor a programban, különböző műveleteket hajt végre az ebben a szubrutinban kapott különböző értékekkel. Lássuk:

nbsp nbsp nbsp nbsp nbsp Mint mindig, soronként elemezzük. A kezdetek standardak - a képernyő tisztítása és beviteli adatok kérése. Akkor kezdődik a szórakozás. Van egy fellebbezés a FACT alprogramhoz, amely kiszámítja a faktoriát. A K változó a FACT szubrutin paramétere. A fő programban a K változóhoz hozzárendeljük az N változó értékét, amelyre kiszámítjuk az első tényezőt. A szubrutinnal való hívást a GOSUB operátor végzi el, amely után megjelennek az alprogramnak a neve, amelyhez el akar térni (FACT van). A szubrutin végrehajtja az összes műveletet, és megtalálja a faktoriális értéket, majd a RETURN operátor visszaküldi a tolmácsot a fő programhoz.

A RETURN operátor átveszi a vezérlést a főprogramra a kezelőnek a GOSUB szubrutinnal való hívás után.

nbsp nbsp nbsp nbsp nbsp A szubrutin eredménye a P változó, amelyben a tényleges érték értéke tárolódik. Ne feledje az első kapott értéket (N-faktorikus) az X1 változóban. Ezt meg kell tenni, mert a szubrutin végrehajtása még kétszer történik, és minden alkalommal, amikor a P változó változik. Ezután ismételje meg az M és (N-M) változókat. Ezenkívül az utóbbi esetben a faktorium kapott értéke már nem szükséges emlékezni; több hívás a szubrutinra nem. Mindent! Csak a kifejezés értékét jeleníti meg a képernyőre, és befejezi a programot.

Gyakoroljon független programrészeket szubrutinok formájában. A szubrutinokkal való programozás jó stílus! Jól stílusról beszélünk veled.

nbsp nbsp nbsp nbsp nbsp Néhány szót szólok a szubrutinokról az orosz QBasic-ban. Elmagyaráztam, hogy a legegyszerűbb módja, hogy írjon és használata rutinok, de ha úgy érzi az erőt, majd próbálja meg kitalálni a saját ilyen hatékony eszközöket az írás alapvető rutinokat, mint DECLARE SUB és CALL SUB. Nem fogsz megbánni!

nbsp nbsp nbsp nbsp nbsp A tömbök és a szubrutinok úgy tűnik, ki vannak rendezve. Menjünk tovább! .

Kapcsolódó cikkek