Variabel (datamaskin)

I informatikk , variabler er symboler som knytter et navn ( ID ) med en verdi. På de fleste språk og spesielt de vanligste, kan variabler endre verdi over tid ( dynamisk ). På språkene til visse paradigmer , spesielt funksjonell programmering , er deres verdi tvert imot frossen i tid ( statisk ).

Variabler og konstanter

I motsetning til en variabel er en konstant en identifikator assosiert med en fast verdi. Syntaksisk har denne identifikatoren alle aspektene av en variabel. Imidlertid tildeles den en endelig verdi, dvs. konstant , for eksempel størrelsen på et sjakkbrett (8x8). En konstant inneholder en verdi som kan ha forskjellige verdier avhengig av henrettelsene, som minesveiper spillet der spilleren kan velge størrelsen på brettet.

Programmeringsvariabler

I et programmeringsspråk er en variabel lagringsplass for et resultat. Men mulighetene Av en variabel er nært knyttet til programmeringsspråket som vi henviser. For eksempel vil en variabel i C ++ ha seks egenskaper:

Man kan imidlertid finne språk som begrenser disse egenskapene:

Variabler og pekere

På alle språkene som tillater dynamisk oppretting av adresser (ny i C ++ eller Java), suppleres begrepet variabel med begrepet peker (type data tilknyttet en variabel, hvis verdier er adresser). Adressen i en pekervariabel kan være utilgjengelig for programmereren (PHP, Java, Python), eller direkte tilgjengelig (C ++) .

Navn på variabler

På noen språk må navnene på variabler (som identifikatorene ) nødvendigvis begynne med en bokstav (store og små bokstaver) eller med en _ ( understreket ). De andre tegnene som utgjør navnet på variabelen, må være bokstav, tall eller _ . Forskjellen mellom store og små bokstaver (store og små bokstaver) i navnet på en variabel avhenger av språket som vurderes.

Eksempler på gyldige variabelnavn, i C  :

Eksempel på et ugyldig variabelnavn i C:

Dermed kan det første tegnet ikke være et tall, fordi dette gjør det mulig å legge til rette for kompilering eller tolkning av programmet ved å fjerne en uklarhet: når kompilatoren leser et tall, vet den at tegnene som følger vil utgjøre en numerisk verdi. På samme måte, hvis den leser et brev eller en understreking, vil den vite at den har å gjøre med en variabel.

Alle disse variabelnavnene er gyldige i Lisp .

Skrive

Når typen av en variabel bestemmes ved kompilering (eksplisitt av programmereren eller automatisk av typen inferens ), snakker vi om statisk skriving . Verdiene til denne variabelen må være av denne typen (i vid forstand, det vil si av samme type eller avledet type).

Statisk skriving hjelper til med å generere mer effektiv objektkode (når det gjelder minneforbruk og kjøringshastighet). Det forbyr imidlertid refleksivitet under utførelse.

Ellers, i tilfeller der det ikke er variablene som har en type, men verdiene, snakker vi om dynamisk skriving eller latent skriving.

Vi snakker om sterk skriving når språket krever at variablene deklareres i en type og brukes i denne typen (f.eks: Ada eller C ++). Vi snakker om svak skriving når språket innrømmer at en variabel kan endre type under eksistensen (spesielt for å tilpasse seg semantikken til et uttrykk).

Livssyklus av variabler

Det er vanligvis fem operasjoner på variabler, som hver kan ha forskjellige syntaktiske former.

Språk, som C , Caml eller Pascal , krever å erklære en variabel eller til og med gi den en type før den brukes. Den tvungne erklæringen av variabler gjør at kompilatoren eller tolken kan identifisere typografiske feil som sortvariabler eller homonyme variabler. Andre språk avgir erklæringen på tidspunktet for den første oppgaven (dette er tilfellet med de fleste skriptspråk ) eller når de først vises i koden (som i Prolog).

Når det gjelder initialisering av variabler, det vil si tildelingen av en verdi samtidig som definisjonen, noen språk krever å initialisere en variabel før den første behandlingen, andre gir en implisitt verdi (spesifisert eller ubestemt), og til slutt andre lar variabelen ha en uspesifisert verdi. Språk som Oz eller Prolog utfører strengt tatt ikke initialisering. Når det erklæres variabler, er ingen verdi tilknyttet, sier vi at variabelen ikke er bundet . Verdien på variabelen bestemmes når programmet kjøres, dette kalles forening .

I funksjonell programmering eller logiske programmeringsspråk kan variabler bare ha en verdi i løpet av deres eksistens.

Refleksivitet

På de fleste språk eksisterer variabler bare som verktøy for programmereren. Å endre navn på alle forekomster av en variabel vil derfor ikke endre driften av programmet.

Tvert imot, for å gi ekstra uttrykksevne, tillater noen språk at et variabelnavn kan betraktes som en verdi som alle andre (for eksempel er dette symboleneCommon Lisp og Smalltalk ). Dette er en veldig nyttig teknikk for effektiv implementering av symbolske beregningsalgoritmer .

Merknader og referanser

  1. I C varierer det ikke over tid hvis vi bruker const- nøkkelordet

Se også