Introduzione allo studio dell'informatica teorica: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Riga 141:
 
=Un esempio completo=
Questa sezione ha lo scopo di mettere in pratica i concetti appena introdotti per la computazione affrontando la soluzione di un problema di geometria.
 
==Computazione come successione di azioni==
Supponiamo di voler calcolare l'area di un rettangolo conoscendo il suo perimetro e la lunghezza di uno dei lati.
 
Le sezioni seguenti presenteranno tre possibili computazioni, ognuna pensata come successione di stati descritti nelle modalità discusse in precedenza.
 
==Computazione come successione di azioni==
Indichiamo con <math>a_n</math> la successione che descrive la sequenza di azioni necessaria per attuare la computazione desiderata.
Potremo scrivere:
# <math>a_1</math>: dimezzare (il perimetro);
# <math>a_2</math>: sottrarre (la lunghezza del lato al semiperimetro);
# <math>a_3</math>: moltiplicare (i due lati).
La scarsa comunicatività della tecnica di rappresentazione basata su azioni è qui evidente; inoltre, per poter sapere cosa accade basterebbe conoscere lo stato iniziale della computazione, esattamente come già discusso in precedenza.
Le azioni sono rappresentate solo dai verbi: le informazioni tra parentesi sono date unicamente per migliorare la comprensibilità della procedura.
La necessità di questo accorgimento mostra un importante limite di questa tecnica di rappresentazione: è poco comunicativa.
 
==Computazione come successione di stati==
Supponiamo di voler rappresentare la computazione precedente impiegando una successione di stati anziché di azioni.
 
Indichiamo con <math>q_n</math> la successione che descrive la sequenza di stati necessaria per attuare la computazione desiderata. Potremo scrivere:
 
Indichiamo con <math>q_n</math> la successione che descrive la sequenza di stati necessaria per attuare la computazione desiderata.
Potremo scrivere:
# <math>q_1</math>: perimetro
# <math>q_2</math>: semiperimetro
# <math>q_3</math>: lunghezza del lato mancante
# <math>q_4</math>: area
Come si può notare questa descrizione riesce a rendere l'idea senza che sia necessario includere informazioni aggiuntive a dimostrazione del fatto che è più espressiva rispetto alla precedente.
 
Questa descrizione è senz'altro più descrittiva della precedente; tuttavia la mancanza delle azioni costringe a dedurle in base alla successione degli stati.
==Computazione come successione di coppie <math>\text{(stato, azione)}</math>==
Anche in questa sezione rappresenteremo la stessa computazione esaminata negli altri due casi, ma impiegando la logica delle transizioni.
 
==Computazione come successione di coppie <math>\text{(stato, azione)}</math>==
Indicando con <math>p_n</math> la successione che indica la sequenza di transizioni necessarie per attuare la computazione desiderata potremo scrivere:
 
# <math>p_1</math>: (perimetro, dimezzare)
# <math>p_2</math>: (semiperimetro, sottrarre)
# <math>p_3</math>: (lunghezza del lato mancante, moltiplicare)
 
Come si può notare confrontando le tre situazioni, questa tecnica di rappresentazione è indubbiamente la più espressiva ein saràquanto quellain ogni passo si conosce lo stato attuale e impiegatal'azione duranteche ilverrà corsocompiuta.
 
Vista la buona qualità di questa rappresentazione, in generale la preferiremo alle altre.
 
=Il concetto di transizione=