Taulukon alustus?

Mun kysymys on

Miten (vakio) taulukko alustetaan?

6

750

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • Delphiguru

      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
      );

    • PisteP

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

      • -d2006-

        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."


    • lisäkysymys

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

      • Delphiguru

        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


      • WantSomeMore

        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..


    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Vesikin maksaa, miksei hengitysilma?

      Jatkuvasti itketään ettei ole rahaa mihinkään, mutta tilastojen mukaan rahaa on enemmän kuin koskaan, joten miksei asial
      Maailman menoa
      28
      1828
    2. Satuolennoista tarinointi ei kuulu peruskoulun tehtäviin

      Opetustunteja on muutenkin käytössä vain rajallinen määrä. Eli nämä satuhommat koulun ulkopuolelle vapaaehtoisiin harras
      Maailman menoa
      157
      1802
    3. Suomalainen perheenisä vaatii Suvivirren esittämisestä hyvityksiä

      Itse lapsena uskonnonopetuksesta vissiin traumoja saanut ihka suomalainen (!) perheenisä vaatii Espoon kaupungilta korva
      Maailman menoa
      351
      1550
    4. Mitä haluaisit

      Tehdä kaivattusi kanssa?
      Ikävä
      147
      1181
    5. Mies profiloin sinut

      Etsit täysin hallittavaa mutta samalla poikkeuksellista ihmistä. Etsit jotain mitä et koskaan tule saamaan.
      Ikävä
      213
      1164
    6. Lahkokasteen ja kristillisen kasteen erot

      Raamatun mukaan Kristillisessä yhdessä kasteessa Jumala pesee ja puhdistaa ihmisen sydämen ja poistaa perisynnin kirouks
      Kaste
      422
      1128
    7. Känsäkoura ja hotelli

      Tietoa kuka ostanut?
      Kuhmo
      11
      1004
    8. Salainen kastekoulutus

      Millainen on helluntailainen kastekoulutus ja kauanko se kestää ?
      Kaste
      285
      995
    9. Heikki Paasosen Marita-vaimo jätti tunteikkaat jäähyväiset: "Tällä kertaa me..."

      Heikki Paasonen on naimisissa Marita Paasosen (os. Alatalo) kanssa ja heillä on kaksi pientä lasta. Nyt koitti aika jätt
      Suomalaiset julkkikset
      4
      979
    10. Pirkanlinna yleisötapahtuma

      Oli todella hyvä tilaisuus. Ja EERO. L. Aivan mahtava tyyppi. Veti rennosti ja asiallisesti. Ja yleisöltä hyviä kysymyks
      Ähtäri
      49
      938
    Aihe