Programmazione stack-oriented: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nuova pagina: La '''programmazione stack-oriented''' (letteralmente "orientata alla pila"), o '''stack-based''' ("basata su pila") è un paradigma di programmazione che basa il s...
 
ValterVBot (discussione | contributi)
m Manipolazione dello stack: tag source deprecati, replaced: <source lang= → <syntaxhighlight lang= (3), </source> → </syntaxhighlight> (3)
 
(4 versioni intermedie di 3 utenti non mostrate)
Riga 10:
[[File:Human stack.svg|thumb|Illustrazione]]
 
Dapprima verrà preso {{code|2}} e posto sulla pila, seguito da {{code|3}}. In seguito si incontra {{code|mul}}, che è un' operatore che indica un'istruzione da eseguire. Le istruzioni dell'operazione {{code|mul}} prevede che gli ultimi due valori nella pila vengano estratti, moltiplicati e scartati, e che il risultato della loro moltiplicazione ({{code|6}}) venga ri-aggiunto sulla pila.
 
Nel caso di calcoli più complessi, come {{code|(2 + 3) × 11 + 1}} (in notazione postfissa {{code|2 3 add 11 mul 1 add}}),
Riga 38:
 
== Manipolazione dello stack ==
Generalmente, i linguaggi di programmazione basati su pila forniscono metodi per manipolare la pila stessa. Fra i più comuni, {{code|dup}} per duplicare l'elemento in cima allo stack, {{code|exch}} (o {{code|swap}}) per scambiare i due elementi in cima, {{code|roll}} per permutare in maniera ciclica un sottinsieme degli elementi in cima,<ref>{{cita web|url=http://www.ugrad.math.ubc.ca/Flat/stack-eg.html|titolo=5.5.1 How Roll Works|lingua=en|editore=[[Università della Columbia Britannica]]|sito=ubc.ca|urlarchivio=httphttps://web.archive.org/web/20030222200921/http://ugrad.math.ubc.ca:80/Flat/stack-eg.html|dataarchivio=22 febbraio 2003|urlmorto=no}}</ref> o {{code|pop}} (o {{code|drop}}) per scartare l'elemento in cima.
 
Per mostrare gli effetti di un operatore, può essere usato un [[Commento (informatica)|commento]]. La notazione seguente è usata solitamente in [[Forth (linguaggio)|Forth]], dove i commenti sono inseriti fra parentesi.
 
<sourcesyntaxhighlight lang="forth">( prima -- dopo )</sourcesyntaxhighlight>
 
Per esempio, gli operatori basilari del Forth sono descritti come segue:
 
<sourcesyntaxhighlight lang="forth">
dup ( a -- a a )
drop ( a -- )
Riga 52:
over ( a b -- a b a )
rot ( a b c -- b c a )
</syntaxhighlight>
</source>
 
E la funzione <code>fib</code> è descritta come segue:
 
<sourcesyntaxhighlight lang="forth">fib ( n -- n' )</sourcesyntaxhighlight>
 
== Vedi anche ==
* [[Notazione polacca inversa]]
* [[Concatenative programming]]
 
== Note ==
<references/>
 
== Voci correlate ==
* [[Notazione polacca inversa]]
* [[Concatenative programming]]
 
{{Paradigmi di programmazione}}