Ilmoitus (tietokonetiede)

Ohjelmointikielissä ilmoitus ( englanninkielinen deklaraatio ) sisältää tunnisteen , tyypin sekä muiden kielielementtien näkökohtia, kuten muuttujia ja toimintoja . Ilmoitusta käytetään ilmoittamaan kääntäjälle elementin olemassaolosta; tämä on varsin tärkeää monille kielille (kuten C :lle ), jotka vaativat muuttujien ilmoittamisen ennen kuin niitä voidaan käyttää.  

Yleiskatsaus

BCPL - kieliperheessä , jonka jäseniä ovat C++ ja Java , voit myös määrittää muuttujan koon skalaarityypin, taulukon tai matriisin määrittämisessä. Tässä perheessä ilmoitukset (ilmoitus elementin olemassaolosta ja ominaisuuksista) ja määritelmät (suoraan itse toteutuksen tarjoaminen ) voidaan määrittää toisistaan ​​riippumatta. Ilmoitukset määritetään yleensä otsikkotiedostoissa , jotka sitten sisällytetään muihin tiedostoihin, jotka viittaavat niihin käyttääkseen näitä ilmoituksia, mutta niillä ei ole pääsyä määritelmään. Jos tyypin määritelmä ei vastaa tämän elementin aiemmin määritettyä ilmoitusta, kääntäjä antaa tässä tapauksessa virheilmoituksen.

Muuttujien osalta määritelmät antavat arvoja ilmoitushetkellä varatuille muistialueille. Funktioiden osalta määritelmät tarjoavat kuvauksen itse funktion rungosta. Vaikka muuttuja tai funktio voidaan ilmoittaa useita kertoja, se määritellään yleensä vain kerran. Dynaamiset kielet , kuten Javascript tai Python , antavat kuitenkin mahdollisuuden määrittää toimintoja uudelleen.

Ilmoitusta käytetään usein toisessa lähdetiedostossa tai kirjastossa määritettyyn funktioon tai muuttujaan pääsyyn .

Seuraavassa on joitain esimerkkejä ei-määritelmän C -ilmoitusten käytöstä:

ulkoinen merkki esimerkki1 ; extern int esimerkki2 ; void esimerkki3 ( void );

Ja nyt muutamia esimerkkejä määritelmistä C-kielellä:

char esimerkki1 ; int esimerkki2 = 5 ; tyhjä esimerkki3 ( tyhjä ) { int x = 7 ; }

Ilmoituksessa määritellyt elementit

Eri ohjelmointikielissä vaatimukset tiettyjen ohjelmaobjektien ilmoittamiselle voivat vaihdella suuresti. Yleensä seuraavat parametrit voidaan ilmoittaa:

Ohjelmoinnissa toisinaan määritelmä erotetaan ilmoituksesta seuraavien elementtien suhteen:

  • tyypit,
  • vakiot,
  • kirjaimelliset,
  • rutiinit,
  • luokat,

Lisäksi ilmoitus ja määritelmä voidaan yhdistää tai määritellä erikseen eri paikoissa lähdekoodissa (eri tiedostoihin asti ).

Mainospaikka

Ilmoituksen lähdekoodissa tulee yleensä edeltää tietyn tunnisteen ensimmäistä käyttöä ohjelmassa. Ilmoitus on tietoa kääntäjälle, joka ei itsessään tuota suoritettavaa koodia (mutta johtaa usein muistin varaukseen ).

Useimpien ohjelmointikielten syntaksi tarjoaa ilmoituksen tietyssä paikassa lähdekoodissa. Tämä on joko ohjelman erikoisosa (moduuli, aliohjelma, paketti) tai tietyn lohkon alku (eli kaikkien ilmoitusten on oltava ohjelman tekstissä ennen tämän lohkon ensimmäistä käskyä).

Mainostyypit

Mainos voisi olla:

  • implisiittinen,
  • selkeä:
    • täydellinen tai
    • osittainen.
implisiittinen ilmoitus

Implisiittisiä ilmoituksia käytetään ohjelmointikielissä, jotka sallivat tunnisteen käytön ilmoittamatta sitä nimenomaisesti. Tässä tapauksessa kääntäjällä on oltava mekanismi attribuuttien lisäämiseksi tunnisteeseen tiettyjen menetelmien perusteella:

  • oletusarvo,
  • epäsuorasti,
  • kontekstin perusteella.

Implisiittiset ilmoitukset voivat johtaa virheisiin, esimerkiksi tunnisteen kirjoitusvirhe aiheuttaa uuden muuttujan, mikä aiheuttaa virheen ohjelman toiminnassa.

Nimenomainen julistus

Selkeät ilmoitukset voivat olla täydellisiä tai osittaisia . Osittaisia ​​ilmoituksia voidaan käyttää seuraavissa tapauksissa:

  • attribuuttien epäsymmetrinen rakenne (esimerkiksi ilmoituksessa attribuutin ilmaisu EXTERNALvoi tarkoittaa toisessa moduulissa määriteltyä ulkoista objektia (muuttuja, proseduuri jne.) ja sen osoituksen puuttuminen tarkoittaa sisäistä objektia (tämän kuvaama). ilmoitus tässä moduulissa), lisäksi attribuutin nimenomaisesti määrittelevä poissaolo voi olla päinvastainen kohteelle EXTERNAL(esim. INTERNAL);
  • attribuuttien korvausmekanismi soveltaa tässä samanlaisia ​​attribuuttien täydentämisen periaatteita implisiittisten ilmoitusten menetelmien kanssa (esimerkiksi attribuutteja voi olla EXTERNALja INTERNALlisäksi, jos jollekin niistä ei ole nimenomaista osoitusta päinvastaisesta attribuutista, se osoittaa yhden niistä esimerkiksi INTERNAL).

Esimerkkejä ilmoituksista kielillä

Muuttujien ilmoitukset

Muuttujan ilmoitus voi sisältää itse ilmoituksen lisäksi myös muuttujan alustuksen eli osoituksen muuttujan alkuarvosta.

C , C++

Mainokset on merkitty:

  • funktion, luokan, menetelmän ulkopuolella globaaleille muuttujille ;
  • komentolohkon { } alussa paikallisille muuttujille;
  • lausekkeena paikallisten muuttujien {}-käskylohkon myöhemmissä osissa.
int global_var ; tärkein () { int y ; ... { int z = 1 ; saada (); int x = 5 ; /*ei toimi C-kielellä*/ ... } ... } Pascal

Deklaraatiot määritellään ohjelmassa tai sen aliohjelmassa lohkomäärityksessä, joka sijaitsee otsikon (ohjelmat, menettelyt, funktiot, moduuli (Turbo Pascal)) ja tämän lohkon käskyryhmän alkua ilmaisevan sanan välissä ( begin).

ohjelma esimerkki ; var global_var ; ... menettely Licz () ; var local_var ; alkaa loppu ; {menettely} alkaa loppua . {ohjelmoida} PL/1

Ilmoitus on käskyn muotoinen DECLARE(tai lyhennetty DCL) ja se voidaan määrittää missä tahansa lohkossa (PL/1:ssä tällainen lohko on joko menettely otsikosta PROCEDUREsanaan ENDtai komentolohko BEGIN ... END) ja se viittaa objekteihin saatavilla tässä lohkossa. Kielellä on hyvin laajennettu attribuuttisyntaksi ja laajennettu mekanismi attribuuttien korvaamiseen ja implisiittisiin ilmoituksiin.

Esimerkki : PROC ; ... /* Käytä alla ilmoitettua muuttujaa X * / X = 1 ; ... / * lohkon määrittely voidaan määrittää käyttämällä tunnistetta , mutta ilmoitetun muuttujan on oltava saatavilla lohkon alussa * / DCL X FIXED DECIMAL ( 5 , 0 ) ; ... END Esimerkki ;

Etikettiilmoitukset

{Pascal} -ohjelma DclLabel ; etiketti Label ; alkaa Tunniste : ; ... goto Label ; loppu .

Moduuliilmoitukset

Turbo Pascal ohjelma DclUnit ; käyttää Crt , Graph , MyUnit ; ... begin ... Write ( 'Proseduuri käyttää Crt-moduulia' ) ; ... loppu . Modula-2 MODUULI DclUnit ; FROM InOut TUONTI Lue , Kirjoita , ...; ... Write ( 'Proseduuri käyttää InOut-moduulia' ); ... END DclUnit .

Toimintomääritykset

C , C++

C- ja C++-kielissä funktiomääritykset (kutsutaan myös prototyypeiksi ) sijoitetaan yleensä otsikkotiedostoihin , jotka määrittelevät tietyt moduulit.

/* katkaisee funktion prototyyppi */ int trunc ( double x ); Pascal

Funktiomäärityksiä sovelletaan, kun funktiota kutsutaan , ei silloin, kun se määritellään.

{ Pascal } -proseduuri Proc_1 ; eteenpäin ; menettely Proc_2 ; begin {''Proseduurin kutsuminen, jota ei ole vielä määritelty'' ''vaatii ilmoituksen''} Proc_1 ; ... loppu ; { Myöhempi toimintomääritys } menettely Proc_1 ; alkaa ... loppu ; Turbo Pascal

Itse funktiota edeltävää ilmoitusta käytetään samalla tavalla kuin Pascalissa. Turbo Pascalissa ilmoitukset määritellään myös moduuleissa (Turbo Pascalin oma Pascalin laajennus) interface.

{ Turbo Pascal } yksikkö Esimerkki ; käyttöliittymä {muissa moduuleissa ja ohjelmissa käytettävissä olevan funktion määrittely} function trunc ( x : real ) : kokonaisluku ; toteutus { edellä määritellyn funktion määrittely, koska parametrit ja palautusarvo määriteltiin ilmoituksessa, liitäntäosion funktioiden ei tarvitse toistaa niitä } function trunc ; aloita ...

Katso myös

Linkit