Taulukon alustus?

Miten (vakio) taulukko alustetaan?
6758
Äänestä

Muut lukivat myös

Vastaukset 6

Vanhimmat

vakiotaulukko alustetaan näin:
Esimerkkitaulukossa on siis 39 alkiota, indeksit ovat tässä 0..38

const

CC = 39;

VakioTaulukkoA : Array[0..CC-1] of Integer = (
50, 40, 27, 36, 34, 24, 21, 4, 31, 24, 22, 25, 29, 36, 10, 13, 10, 42, 150,
31, 12, 8, 66, 52, 5, 48, 12, 14, 3, 9, 1, 4, 7, 3, 3, 3, 2, 14, 4
);

Äänestä

Joissakin tapauksissa myös aliohjelmaa FillChar on käytetty.

Äänestä
  • Vakioita EI normaalisti tulisi koskaan muuttaa,
    eikä niitä voi edes muuttaa, vakiot määritellään ohjelman/metodin yms. Alustuksessa, tuo mainitsemasi FillChar kyllä toimii mikä kääntäjään on erikseen asetettu että sallitaan vakioiden ajonaikainen muokkaus, mutta sitä ei voi alkajille edes suositella.

    Alla lainaus delphin ohjeesta.

    "Controls whether typed constants can be modified or not. When enabled (equivalent to {$J }), typed constants can be modified, and are in essence initialized variables. When disabled (equivalent to {$J-}), typed constants are truly constant, and any attempt to modify a typed constant causes the compiler to report an error. Writable consts refers to the use of a typed const as a variable modifiable at runtime.
    Old source code that uses writable typed constants must be compiled with this option enabled, but for new applications it is recommended that you use initialized variables and compile your code with the option disabled."

    Äänestä

Miten tuo alustus tehdään kun joku taulukko halutaan alkuarvottaa tietyillä arvoilla?

Äänestä
  • unit Esimerkki;
    interface

    const

    CC = 39;

    var

    VakioTaulukkoA : Array[0..CC-1] of Integer;


    implementation

    initialization

    {} FillChar(VakioTaulukkoA, SizeOf(VakioTaulukkoA), 0);

    // em. nollan tilalle voi laittaa minkä tahansa muunkin tavuksi (Byte) tulkittavan arvon, esim: $80 mikä tarkoittaa 80h = 128.

    finalization

    end.


    HUOM: huomasithan, että tässä taulukko VakioTaulukkoA ei ole enää const vaan var eli normaali muuttuja.

    Tuo, että kyseessä on BYTE, niin tarkoittaa juuri sitä, että jos laitat:

    FillChar(VakioTaulukkoA, SizeOf(VakioTaulukkoA), $80);

    niin silloin yhden Integer -tyyppisen alkion arvoksi tulee $80808080 = -2139062144

    Äänestä

  • Jos tavu ei riitä alkuarvoksi niin voit aina seuraavalla yksinkertaisella tavalla alustaa taulukon haluamallasi (tyypin rajoissa) olevalla arvolla.

    Esim.

    var
    tau : array[1..10] of Cardinal;
    Index : Integer;
    begin
    // Alustetaan taulukko suurimmalla mahdollisella 32 (etumerkittömällä) bitin arvolla
    for Index := Low(Tau) to High(Tau) do
    tau[Index] := INFINITE;

    Tuo Low/High ihan vaan esimerkin kannalta kun joskus ovat käteviä dynaamisissa ohjelmissa..

    Äänestä

Kommentoi aloitusta


Mun kysymys on kirjoitti:

Miten (vakio) taulukko alustetaan?

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu