Pila (informatica): differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
m Aggiunto link inglese
fix
 
(134 versioni intermedie di 88 utenti non mostrate)
Riga 1:
{{F|programmazione|febbraio 2013}}
In [[Informatica]] per '''stack''' (pila) si intende una struttura dati di tipo '''[[LIFO]]''', ''Last In First Out'' (l'ultimo in ingresso è il primo ad uscire).
[[File:Data stack.svg|thumb|upright=1.4|Semplice rappresentazione di una pila]]
 
La '''pila''' (dall'[[Lingua inglese|inglese]] ''stack''), in [[informatica]], è un [[tipo di dato astratto]] che viene usato in diversi contesti per riferirsi a [[strutture dati]], le cui modalità d'accesso ai [[dati]] in essa contenuti seguono una modalità [[LIFO]], ovvero tale per cui i dati vengono letti in ordine inverso rispetto a quello in cui sono stati inseriti scritti.
Un esempio pratico che renda l'idea può essere quella di una pila di giornali. Quando li riponiamo li mettiamo l'uno sopra l'altro. Quando poi desideriamo riprenderli lo facciamo uno alla volta, partendo dalla cima, ovvero dall'ultimo giornale che abbiamo posato. Per poter prendere un giornale che si trova nel mezzo è necessario prima togliere tutti i giornali che vi stanno sopra.
 
== Caratteristiche ==
Questo è esattamente il funzionamento di uno stack.
Il nome di questa struttura dati è infatti la stessa parola inglese usata, per esempio, per indicare una "pila di piatti" o una "pila di giornali", e sottende per l'appunto l'idea che quando si pone un piatto nella pila lo si metta in cima, e che quando si preleva un piatto si prelevi, analogamente, quello in cima (da cui la dinamica LIFO), anche se è possibile inserire o prelevare elementi dalla coda; più in generale, la pila è un particolare tipo di [[lista (informatica)|lista]] in cui le operazioni di inserimento ed estrazione si compiono dallo stesso estremo.
 
== Utilizzo ==
Questo tipo di [[struttura dati#pila|struttura dati]] è estremamente importante in Informatica, tanto da essere indispensabile al funzionamente dei calcolatori moderni, in primo luogo per l'implementazione delle [[funzione (informatica)#Implementazione delle funzioni|funzioni]]. La [[notazione polacca inversa]] usa il concetto di pila (stack) per la risoluzione di formule matematiche.
Il termine è usato in informatica in modo più specifico in diversi contesti:
* la struttura dati a pila è un tipo di struttura dati che un [[Programma (informatica)|programma]] può implementare e utilizzare per il proprio funzionamento;
* la pila è un elemento fondamentale dell'architettura dei moderni [[processore|processori]] che fornisce il supporto per l'implementazione del concetto di [[Funzione (informatica)|funzione]], le cui informazioni risiedono nella ''[[call stack]]'';
* le [[Macchina virtuale|macchine virtuali]] di quasi tutti i [[linguaggio di programmazione ad alto livello|linguaggi di programmazione ad alto livello]] usano una pila dei [[record di attivazione|''record'' di attivazione]] per implementare il concetto di subroutine (generalmente, ma non necessariamente, basandosi sulla pila del processore);
* la memoria degli [[automa a pila|automi a pila]] dell'[[informatica teorica]] è una pila.
* la gestione di più versioni dello stesso software nel medesimo [[sistema operativo]]. Per installare, occorre partire in ordine cronologico, dalla più vecchia alla più recente; per disinstallare, occorrerà seguire l'ordine opposto, dalla più recente alla più vecchia.
 
== Voci correlate ==
* [[Algoritmo]]
* [[Algoritmo di ordinamento]]
* [[Funzione (informatica)]]
* [[Struttura dati]]
* [[Hypercard]]
* [[LIFO]]
* [[Notazione polacca inversa]]
* [[Stack overflow]]
* [[Struttura dati]]
* [[Tipo di dato astratto]]
 
== Altri progetti ==
{{Interprogetto|preposizione=sulla|wikt=pila}}
 
== Collegamenti esterni ==
* {{Collegamenti esterni}}
* {{FOLDOC|stack|stack}}
 
{{Ordinamento}}
[[Categoria:Programmazione]]
{{strutture dati}}
{{Controllo di autorità}}
{{Portale|Informatica}}
 
[[Categoria:ProgrammazioneStrutture dati]]
[[en:stack_(computing)]]