Definizione di "stato"

13

Quale è un buon modo per definire lo "stato", come in una variabile di stato o in una macchina a stati, in un nuovo programmatore (precedentemente non)? Quali sono alcuni buoni modi per spiegare perché questo concetto è utile per scrivere software? Il concetto di stato è insegnato esplicitamente all'inizio di corsi o libri di programmazione?

    
posta hotpaw2 25.05.2012 - 03:58
fonte

4 risposte

5

"stato" è necessario, quando è necessario ricordare qualcosa. Le funzioni (non i "metodi" o qualsiasi altra cosa) dipendono idealmente solo dai loro input. Se fai una domanda in cui la risposta può cambiare nel tempo, anche se gli input sono gli stessi, hai bisogno di qualcosa per ricordare quella differenza nella risposta, giusto? Altrimenti, non è possibile fornire una risposta diversa perché non sono stati modificati altri fattori (supponiamo che la risposta non dipenda direttamente dal tempo).

Quella "cosa / informazione" che devi ricordare è chiamata "stato".

(non viene richiesto che questo "stato" cambi nel tempo, è fondamentalmente solo un modo per dire "ricordare / sapere qualcosa")

    
risposta data 25.05.2012 - 11:16
fonte
7

Da Wikipedia :

State commonly refers to either the present condition of a system or entity...

Questo è praticamente ciò che significa in un contesto informatico: i dati che definiscono le condizioni di alcuni oggetti o sistemi.

Il significato di "stato" non è specifico per la programmazione. Ci sono esempi di "stato" letteralmente ovunque guardi. Il televisore è spento. Il caffè è caldo Le sneakers sono a) blu; b) puzzolente; c) non mettere via; d) abbastanza logoro. 'stato' in un senso di programmazione è lo stesso di 'stato' in un senso non di programmazione, eccetto che lo applichiamo agli oggetti di cui ci occupiamo: variabili, oggetti, thread, database, file system, ecc. Se si dispone di per spiegarlo, spiegarlo in termini che sono familiari - non è necessario trasformarlo in un concetto tecnico estraneo.

Un orologio è un buon esempio di un sistema semplice con uno stato: un orologio può essere in esecuzione o non in esecuzione e indica un orario che può corrispondere o meno all'ora del giorno corrente. È piuttosto facile vedere come queste cose siano come variabili e come cambiare lo stato del clock possa avere un impatto su altre cose.

Confrontalo con qualcosa di apolide, come un'affermazione: "La porta è rossa". L'affermazione stessa non ha stato. Può o non può essere vero che la porta è rossa, ma l'affermazione stessa non contiene nessuno stato. Dipingere la porta può cambiare la verità dell'affermazione, ma l'affermazione stessa non cambia mai. Allo stesso modo, un numero come 42 non ha nessuno stato: 42 è 42 e non c'è nulla che tu possa cambiare al riguardo.

Le variabili hanno lo stato, valori no.

    
risposta data 25.05.2012 - 04:37
fonte
1

Lo stato è informazioni manipolate dal tuo programma per svolgere qualche compito. Si tratta di dati o informazioni che vengono modificati o manipolati durante il runtime di un programma. Lo "stato" di un programma in un dato momento si riferisce ad un'istantanea di tutti i dati che il programma sta attualmente esaminando o analizzando per arrivare al prossimo passo nella sua esecuzione.

La mia università è iniziata con Scheme, quindi abbiamo iniziato a programmare con un modello senza stato. Siamo quindi passati a C e siamo stati molto espliciti su quale stato è, perché è utile e perché rende le cose potenzialmente molto complicate. Quindi alcune università parlano certamente di stato, ma non necessariamente di tutti

    
risposta data 25.05.2012 - 04:44
fonte
1

È possibile utilizzare l'analogia di un semaforo che può essere in uno dei tre stati: [VERDE], [GIALLO] o [ROSSO]. Deve essere in uno stato alla volta. Il semaforo è la macchina a stato reale che viene modellata. Normalmente passerà il suo stato da [VERDE a GIALLO], quindi da [GIALLO a ROSSO], quindi da [ROSSO a VERDE].

Una transizione di stato alternativa (che è in vigore in alcuni paesi come il Regno Unito, ha due transizioni di [ROSSO in GIALLO, poi GIALLO in VERDE] al posto della transizione da [ROSSO a VERDE].

    
risposta data 25.05.2012 - 06:07
fonte

Leggi altre domande sui tag