Variabile (informatica)

Una variabile, in informatica, è un contenitore di dati situato in una porzione di memoria (una o più locazioni di memoria) destinata a contenere valori, suscettibili di modifica nel corso dell'esecuzione di un programma. Una variabile è caratterizzata da un nome (inteso solitamente come una sequenza di caratteri e cifre).

Una costante è un dato non modificabile situato in una porzione di memoria (una o più locazioni di memoria) destinata a contenere un valore, che non può essere appunto modificato nel corso dell'esecuzione di un programma. Una costante può essere caratterizzata da un nome (inteso solitamente come una sequenza di caratteri e cifre).

Nei linguaggi tipizzati, ciascuna variabile è caratterizzata da un tipo di dato, che specifica come deve essere considerato il dato rappresentato, e possibilmente restringe i valori accettabili. Ad esempio una variabile destinata a contenere il numero progressivo di un mese di una data, potrà assumere solo i valori interi da 1 a 12.

L'insieme delle variabili esistenti a tempo di esecuzione è contenuto all'interno dell'ambiente.

Definizione formale

La variabile è un identificatore V associato a un insieme prefissato di possibili valori che definiscono il tipo della variabile. L'insieme dei possibili valori definisce il range dei valori che V può assumere durante l'esecuzione di un programma. Definendo il tipo e la rappresentazione della variabile oltre al range di valori, vengono definite anche le operazioni possibili con la variabile stessa. Durante l'esecuzione di un programma ciascuna variabile ha un valore corrente.

Ambiti per concetto di variabile

Nei linguaggi di programmazione di livello diverso, il concetto di variabile ha sfumature diverse:

  • In assembly si trova il tipo più elementare di variabile: il registro, un contenitore di dati elementari interno al processore atto a contenere quelle informazioni numeriche che il processore stesso è in grado di manipolare direttamente alla massima velocità di processamento. Le uniche operazioni applicabili sui registri, sempre disponibili in numero molto limitato, sono quelle stabilite dal linguaggio macchina messo a disposizione dal processore stesso, quali assegnamento diretto o indiretto, test elementari, operazioni logiche o booleane. Solitamente l'assembler mette a disposizione del programmatore alcune caratteristiche di più alto livello, per facilitare la stesura del programma. Ad esempio, è possibile usare delle variabili o delle etichette: in questo caso, una variabile identifica un'area di memoria di una certa dimensione, non strettamente legata al tipo di dato che ospita, che accetta alcune operazioni elementari come la lettura, l'assegnamento, semplici operazioni logiche o aritmetiche. Una cella di memoria può essere opzionalmente identificata da un'etichetta (detta anche label), allo scopo di creare una semplice associazione mnemonica; resta tuttavia la possibilità di accedere ai suoi contenuti direttamente, mediante il proprio indirizzo.
  • In linguaggi che mantengono uno stretto legame con l'architettura hardware, come il C, o il C++ per i tipi di dati elementari, le variabili sono caratterizzate da un tipo, che limita le operazioni che possono essere fatte con la variabile dichiarata, e specializza la semantica degli operatori. Ad esempio, l'espressione a+b può essere valutata in modo diverso se a e b sono numeri interi oppure numeri in virgola mobile. È comunque possibile ottenere l'indirizzo di una variabile (per costruire un puntatore), e quindi manipolare manualmente l'utilizzo della memoria fatto dal compilatore.
  • In linguaggi che offrono un maggiore livello di astrazione, come Java, la variabile è tipizzata, ma il nome della variabile è l'unico modo per accedere al dato in essa memorizzato, e non è possibile conoscere l'indirizzo in cui è stata memorizzata. Una variabile di tipo complesso è in realtà sempre un riferimento a un'area di memoria allocata dinamicamente che viene gestito dal linguaggio.
  • Nei più semplici linguaggi di scripting interpretati, le variabili sono, di norma, solo semplici identificatori privi di un tipo e una dimensione definita. Lo spazio di memoria è allocato dinamicamente al momento dell'assegnamento.

Uso delle variabili

Nei linguaggi compilati, le variabili devono essere definite ovvero dichiarate in maniera tipizzata prima di essere adoperate, in quanto il compilatore o l'interprete non sa come trattare ovvero non riconosce oggetti sconosciuti ovvero non specificati precedentemente. La dichiarazione consente di raggiungere due fondamentali obiettivi: da un lato, con la dichiarazione tipizzata si specifica il tipo della variabile, cosicché il compilatore è in grado di verificare eventuali errori semantici presenti all'interno di un programma sintatticamente corretto (ad esempio, non è consentito moltiplicare tra loro una variabile stringa e una variabile intera). Dall'altro, viene valutata e definita la quantità di memoria destinata, in fase di esecuzione, a contenere i dati a cui la variabile si riferisce.

Le operazioni basilari che possono essere compiute su una variabile sono la lettura del valore in essa contenuto e la scrittura di un nuovo valore, o assegnamento. Il primo assegnamento della variabile è detto inizializzazione. Molti linguaggi richiedono o preferiscono che la variabile una volta dichiarata venga anche inizializzata a un valore arbitrario.

Dal punto di vista della semantica dei linguaggi di programmazione quando si dichiara tramite un identificativo o nome e si inizializza tramite un certo valore una variabile, il calcolatore riserva un contenitore ovvero un'area di memoria alla suddetta variabile ovvero crea un'associazione indirizzo cella di memoria-valore per tutto il tempo in cui la variabile stessa è attiva. In virtù della definizione di variabile l'associazione suddetta è dinamica ovvero il valore di questa può variare all'interno del flusso di esecuzione del programma comportando una sovrascrittura del valore precedente con quello attuale al punto o tempo t.

Per leggere il contenuto di una variabile v, cioè per utilizzarlo per qualche scopo del programma, basta impiegarne la sua notazione in un'espressione, come ad esempio in 5+v o in (3.14+v)*x.

In molti linguaggi di scripting, per indicare che si vuole leggere il valore di una variabile, bisogna aggiungere un prefisso e/o un suffisso al nome della variabile, come $HOME negli script di shell su unix, o %HOME% nei file batch su DOS.

Per assegnare un valore a una variabile, deve essere usato un operatore di assegnamento, ad esempio, in C, a = b + 5 assegna alla variabile a il risultato dell'espressione b+5 valutata nell'ambiente corrente.

Formalmente, un'espressione che può stare a sinistra di un operatore di assegnamento, ovvero qualcosa in cui può essere scritto un valore, è detta un l-value (contrazione di left-value). Una variabile è l'esempio tipico, ma non l'unico, di l-value. Un'espressione che può essere solo letta o valutata, ma alla quale non è possibile assegnare un valore, è detta r-value.

Visibilità di una variabile

Il contesto in cui una variabile viene dichiarata all'interno di un programma determina la sua visibilità (o portata o scope). Tutte le variabili visibili a tempo di esecuzione in un certo istante sono contenute nell'ambiente. Se più variabili dello stesso nome e dello stesso tipo vengono dichiarate in contesti diversi, è l'ambiente messo a disposizione dal linguaggio che determina in che modo le variabili sono visibili in ogni momento. Nei linguaggi più diffusi, ad esempio, il nome della variabile fa riferimento alla dichiarazione più specifica, ed esistono strumenti per indicare esplicitamente lo scope a cui si fa riferimento.

Si veda il seguente esempio:

 <begin blocco 1>
     var x:...            /* qui è visibile x */
     <begin blocco 1.1>
         var y:...        /* qui sono visibili x ed y */
     <end blocco 1.1>
     <begin blocco 1.2>
         var z:...        /* qui sono visibili x e z */
         <begin blocco 1.2.1>
             var y:...    /* qui sono visibili x, z e y */
         <end blocco 1.2.1>
     <end blocco 1.2>
 <end blocco 1>
  • Col termine variabili globali vengono generalmente indicate quelle variabili dichiarate al di fuori di un sottoblocco di programma, e che sono visibili in uno o più sottoblocchi, dipendentemente dalla struttura del programma stesso. L'uso eccessivo di variabili globali è fortemente scoraggiato dalle pratiche di buona programmazione, poiché rischiano di generare interazioni di difficile controllo tra diverse parti di un programma. Nell'esempio, x è globale per il blocco 1.1, 1.2 ed 1.2.1.
    • Nei linguaggi orientati agli oggetti, le variabili di classe o attributi sono visibili solo all'interno della istanze della classe in cui sono state dichiarate. In particolare, una variabile dichiarata come statica è unica per la classe, e condivisa da ogni sua istanza. In altre parole, in ogni istanza della classe tale attributo punta alla medesima area di memoria, pertanto una sua modifica effettuata in un'istanza si riflette in tutte le altre istanze della medesima classe.
  • Le variabili locali sono quelle definite all'interno di un sottoblocco, ad esempio all'interno di una funzione, e quindi visibili solo internamente al sottoblocco stesso, secondo il tipo di ambiente messo a disposizione dal linguaggio. Nell'esempio, le variabili y sono locali per ciascuno dei due blocchi, e sono distinte l'una dall'altra: la prima è locale in 1.1 e la seconda in 1.2.1. Infine, z è globale per il blocco 1.2.1 e locale per il blocco 1.2.
    • Nei linguaggi orientati agli oggetti, gli attributi (non statici) di una classe sono elementi individuali di ogni distinta istanza. In tal caso, in ogni istanza tale attributo è presente localmente all'oggetto stesso, e distinto da quelli presenti in altre istanze della medesima classe.
    • I parametri formali di una funzione sono assimilabili ai parametri locali dal punto di vista della visibilità.
    • In molti linguaggi, è possibile dichiarare una variabile all'interno di un blocco di una struttura di controllo, o usare un costrutto di blocco solo per delimitare lo scope di una variabile locale, o ancora dichiarare una variabile all'interno di un'espressione. Queste variabili sono visibili solo all'interno del blocco o dell'espressione in cui sono dichiarate, come mostrato nell'esempio. Tali pratiche facilitano il mantenimento in vita di una variabile solo per il tempo strettamente necessario, in modo da consentire economia di memoria e pulizia nel testo del programma.

Voci correlate

Altri progetti

Collegamenti esterni

  Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica

Read other articles:

Giọng ca dĩ vãngBản nhạc Giọng ca dĩ vãng phát hành năm 1967Bài hát của Giao LinhNgôn ngữTiếng ViệtSáng tácBảo ThuPhát hành1967Thể loạiNhạc vàngHãng đĩaSơn CaSản xuấtNguyễn Văn Đông Giọng ca dĩ vãng là một ca khúc nhạc vàng của nhạc sĩ Bảo Thu sáng tác vào năm 1967. Đây là một trong những ca khúc gắn liền với sự nghiệp của nhạc sĩ Bảo Thu và nổi tiếng qua tiếng hát của Giao Linh.[1...

 

Spanish footballer (born 2000) In this Spanish name, the first or paternal surname is Baeza and the second or maternal family name is Pérez. Miguel Baeza Baeza with Real Madrid in 2017Personal informationFull name Miguel Baeza PérezDate of birth (2000-03-27) 27 March 2000 (age 23)Place of birth Córdoba, SpainHeight 1.77 m (5 ft 10 in)Position(s) Attacking midfielderTeam informationCurrent team Mirandés(on loan from Celta)Number 22Youth career2006–2012 Séneca...

 

531 voor Christus Eeuwen: 7e eeuw · 6e eeuw · 5e eeuw Decennia: 549-540 · 539-530 · 529-520 Jaren: << · < · 532 · 531 · 530 · > · >> Jaartelling in verschillende culturen Ab urbe condita: 223 CCXXIII Chinese jaartelling: 2166 – 2167丙巳 – 丁午 Hebreeuwse jaartelling: 3230 – 3231 Hindoekalenders: - Kali yuga 2571 – 2572 Maçonnieke jaartelling: 3469 – 34...

Скеля «Камінь Довбуша»(пам'ятка природи) 48°10′02″ пн. ш. 25°09′27″ сх. д. / 48.167389° пн. ш. 25.15750° сх. д. / 48.167389; 25.15750Координати: 48°10′02″ пн. ш. 25°09′27″ сх. д. / 48.167389° пн. ш. 25.15750° сх. д. / 48.167389; 25.15750Країна  УкраїнаРоз...

 

Pour les articles homonymes, voir Kent (homonymie). Nick KentKent en 2014BiographieNaissance 24 décembre 1951 (71 ans)LondresNationalité britanniqueFormation Bedford CollegeActivités Journaliste, critique musical, guitaristePériode d'activité depuis 1972Enfant PerturbatorAutres informationsA travaillé pour Les Inrockuptiblesmodifier - modifier le code - modifier Wikidata Nick Kent est un journaliste musical anglais né le 24 décembre 1951 à Londres où il a passé sa jeunesse. Bi...

 

A frente da cidadela de Qaitbay. A Cidadela de Qaitbay (ou Forte de Qaitbay) (em árabe: قلعة قايتباي) é uma fortaleza construída no século XV localizada na costa do mar mediterrâneo, em Alexandria, no Egito. Foi construído por ordens do sultão Al-Ashraf Sayf al-Din Qa'it Bay em 1477 (ano 882 no calendário islâmico). A cidadela foi erguida no lado norte da ponta da Ilha do Farol, no porto leste da cidade.[1][2][3][4] Galeria A fortaleza principal da cidadela. Um corredo...

Statue in Irvington, New York Rip Van Winkle is a life-size bronze statue of Washington Irving's literary character from his 1819 short story, Rip Van Winkle, in Irvington, New York. It was designed by Richard Masloski and unveiled in 2002. Statue of Rip Van Winkle in Irvington, New York Description Rip Van Winkle depicts the literary character reclining. He has a large beard and crumpled hat and his eyes are half-open as if he has just woken up. His boots and hands blend in with the ground l...

 

Trilogy of novels by Ford Madox Ford The Fifth Queen Cover of The Fifth QueenAuthorFord Madox FordOriginal titleThe Fifth Queen: And How She Came To Court (Book One of a Trilogy)Cover artistUnknownCountryUnited KingdomLanguageEnglishSeriesTrilogySubjectKatharine HowardGenreHistoricalPublisherAlston Rivers, Nash, Vintage ClassicsPublication date1906–1908 (original),Published in EnglishOctober 4, 2011Media typePrint (hardback, original no longer in print), print (paperback...

 

Abruzzocircoscrizione elettorale Stato Italia CapoluogoL'Aquila Elezioni perSenato della Repubblica ElettiSenatori Istituzione1948 (temporanea)1968 (definitiva) Soppressione1953 (temporanea) Sostituita daCircoscrizione Abruzzi e Molise (1953-1968) Periodo 1948-1948Tipologiadi lista Numero eletti6 Periodo 1968-2005Tipologiaa collegi uninominali Numero eletti7 Periodo 2005-2017Tipologiadi lista Numero eletti7 Periodo 2017-2020Tipologiaa collegi uninominali e plurinominali Numero elett...

Shopping centre in Kowloon Tong, Hong Kong Festival WalkExterior view of Festival WalkLocationYau Yat Chuen, Kowloon Tong, Hong KongCoordinates22°20′13.92″N 114°10′28.89″E / 22.3372000°N 114.1746917°E / 22.3372000; 114.1746917Address80 Tat Chee AvenueOpening date13 November 1998; 25 years ago (1998-11-13)DeveloperSwire Properties, CITIC PacificOwnerMapletree North Asia Commercial TrustArchitectArquitectonicaNo. of stores and services220Tot...

 

У Вікіпедії є статті про інші значення цього терміна: Володимирський узвіз (значення). Володимирський узвізКиїв Місцевість Поділ, Хрещатий ярРайон Печерський, ШевченківськийКолишні назви Хрещатицький приїзд,Мостова вул.,Олександрівська вул. (част.),Олександрівський ...

 

American baseball player Baseball player Zelous WheelerWheeler with the Tohoku Rakuten Golden Eagles in 2015Yomiuri Giants – No. 110Third baseman / Right fielder / CoachBorn: (1987-01-16) January 16, 1987 (age 36)Childersburg, Alabama, U.S.Bats: RightThrows: RightProfessional debutMLB: July 3, 2014, for the New York YankeesNPB: March 27, 2015, for the Tohoku Rakuten Golden EaglesMLB statistics (through 2014 season)Batting average.193Home runs2Runs batted i...

This article may rely excessively on sources too closely associated with the subject, potentially preventing the article from being verifiable and neutral. Please help improve it by replacing them with more appropriate citations to reliable, independent, third-party sources. (March 2012) (Learn how and when to remove this template message) Television channel TelemetroBroadcast areaPanamaProgrammingPicture format1080i HDTVOwnershipOwnerCorporación MedcomSister channelsRPCHistoryLaunchedOctobe...

 

Speculative mechanism for achieving faster-than-light travel A Krasnikov tube[1] is a speculative mechanism for space travel involving the warping of spacetime into permanent superluminal tunnels. The resulting structure is analogous to a wormhole or an immobile Alcubierre drive (and like them requires exotic matter with negative energy density) with the endpoints displaced in time as well as space. The idea was proposed by Sergey Krasnikov in 1995.[2] Structure This spacetime...

 

SMA Negeri 1 BojongmanguInformasiDidirikan17 Juli 2003JenisNegeriAkreditasiANomor Statistik Sekolah31.02.22.23.001Nomor Pokok Sekolah Nasional20237984Kepala SekolahIIS NURAENAH, M.PdKetua KomiteARMAN SUKARNAJumlah kelas14Jurusan atau peminatanIPA dan IPSKurikulum[Kurikulum K13Jumlah siswa452StatusNEGERIAlamatLokasiJl. Raya POJ Bojongmangu, KAB BEKASI, Jawa Barat,  IndonesiaTel./Faks.085780055011InstitusiDinas Pendidikan Jawa BaratMoto SMA Negeri 1 Bojongmangu merupaka...

Italia Fasis adalah era pemerintahan Partai Fasis Nasional dari tahun 1922 hingga 1943, di bawah pimpinan Benito Mussolini. Kaum fasis memberlakukan pemerintahan totaliter dan menghancurkan oposisi politik dan intelektual, sambil mempromosikan modernisasi ekonomi dan nilai-nilai sosial tradisional, serta melaksanakan pemulihan hubungan dengan Gereja Katolik Roma. Menurut Payne (1996), Pemerintahan Fasis melewati beberapa tahap yang relatif berbeda. Tahap pertama (1923-1925) adalah kelanjutan ...

 

Codex Glazier Codex Glazier, diberi kode siglum copG67, adalah naskah Perjanjian Baru Koptik kuno pada perkamen. Berdasarkan paleografi diberi tarikh abad ke-4 atau abad ke-5. Secara tekstual sangat dekat dengan naskah bahasa Yunani Codex Bezae. Deskripsi Salib berhiasan (crux ansata) pada akhir kodeks Berisi teks Kisah Para Rasul 1:1-15:3. Naskah berakhir dengan Kisah Para Rasul 15:3 pada folio 155 recto sementara halaman berikutnya, yaitu sisi verso, dibiarkan kosong. Naskah ini memiliki be...

 

دير ورق  - منطقة سكنية -  تقسيم إداري البلد الأردن  المحافظة محافظة المفرق لواء لواء قصبة المفرق قضاء قضاء المنشية السكان التعداد السكاني 372 نسمة (إحصاء 2015)   • الذكور 189   • الإناث 183   • عدد الأسر 75 معلومات أخرى التوقيت ت ع م+02:00  تعديل مصدري - تعديل   د...

American video game translator Ted WoolseyOccupation(s)Translator, video game producerYears active1991–presentNotable workFinal Fantasy VI, Secret of Mana, Super Mario RPG, Chrono Trigger Ted Woolsey is an American video game translator and producer. He had the primary role in the North American production and localization of Square's role-playing video games released for the Super NES between 1991 and 1996. He is best known for translating Final Fantasy VI and Chrono Trigger during hi...

 

Flyover in the city of Abeokuta, the capital of Ogun State, southwestern Nigeria This article is an orphan, as no other articles link to it. Please introduce links to this page from related articles; try the Find link tool for suggestions. (August 2015) Abeokuta flyoverLocationAbeokuta, Ogun, NigeriaConstructionTypeFlyoverConstructed2013 by China Civil Engineering Construction CorporationOpened2013 (2013) The Abeokuta flyover is a flyover in the city of Abeokuta, the capital of Ogun Stat...

 

Strategi Solo vs Squad di Free Fire: Cara Menang Mudah!