Variabili inizializzate vs costanti nominate

5

Sto lavorando a un corso di programmazione fondamentale al college e il nostro libro di testo è "programmazione logica e design" di joyce farrell (ortografia?)

In ogni caso, sto combattendo concettualmente quando si tratta di variabili inizializzate e costanti con nome.

La nostra classe si sta concentrando sullo pseudo-codice per il momento e non su un particolare linguaggio, quindi permettimi di illustrare di cosa sto parlando.

Diciamo che sto dichiarando una variabile chiamata "myVar" e il tipo di dati è numerico:

num myVar

ora voglio inizializzarlo (non capisco questo concetto) iniziando con il numero 5

num myVar = 5

Qual è la differenza rispetto alla creazione di una costante denominata?

    
posta Mike 31.05.2012 - 19:42
fonte

5 risposte

5

Il processo di inizializzazione potrebbe essere lo stesso, ma una costante non può essere modificata una volta impostata. A seconda del tipo di variabile (privata, protetta, pubblica), altre cose, come la classe corrente, le sottoclassi o altre classi, possono agire e possono avere la capacità di modificare il valore di tale variabile. Una costante rimane la stessa per tutte le cose che la usano.

Quindi supponiamo di inizializzare una variabile per dire:

var normalVariable = 10;

Più tardi nel tuo codice potresti cambiarlo a 20, o qualcosa del genere, se lo avessi voluto. Con una costante (che di solito è denominata in maiuscolo LIKE_THIS), non è possibile modificare il valore in qualcos'altro, molto probabilmente si otterrebbe un errore se ci provassi.

Per la maggior parte, una variabile è ciò che afferma di essere. È qualcosa che potrebbe non essere sempre un certo valore. D'altra parte, una costante sarebbe qualcosa che vuoi significare come qualcosa che non cambierà. Pensa alla gravità o a Pi nel mondo reale.

    
risposta data 31.05.2012 - 19:51
fonte
4

Direi che stai pensando alle variabili nel modo in cui le pensiamo in un'espressione algebrica, cioè come qualcosa con un valore sconosciuto che dipende dagli altri vincoli dell'equazione:

x + y = 3

In un'equazione del genere, i valori di x e y dipendono l'uno dall'altro. Se sai cos'è y , puoi dedurre il valore di x . Sono chiamati variables qui perché ci sono molte coppie {x, y} che soddisfano l'equazione.

Le variabili nella programmazione sono fondamentalmente diverse. Nella programmazione, una variabile rappresenta ancora un valore, ma il valore può cambiare nel corso del programma. Pensala come una scatola che può contenere un valore: puoi sempre cambiare ciò che è nella scatola. Alcuni linguaggi potrebbero consentire un'equazione come quella algebrica sopra, ma nella maggior parte delle lingue non è possibile creare vincoli aperti come quello (almeno non senza più lavoro). Invece, dovresti dire qualcosa del tipo:

y = 5;       // assign 5 to y
x = 3 - y;   // y is 5 from the line above, so x becomes -2
x = x - 1;   // it's okay to assign an expression containing a variable 
             // to that same variable, so x now becomes (-2 - 1), or -3

Le costanti, d'altra parte, sono proprio questo: valori costanti. Sono nomi di valori e questi valori non possono cambiare. Li usiamo principalmente per rendere il codice più facile da capire:

secondsPerDay = hoursPerDay * minutesPerHour * secondsPerMinute;

è più facile da capire di:

secondsPerDay = 24 * 60 * 60;
    
risposta data 31.05.2012 - 20:27
fonte
2

La differenza è che una costante nominata è immutabile. Con una variabile puoi scrivere:

myVar = 10

E la variabile memorizzerebbe la modifica. Se fosse una costante però, verrebbe generato un errore.

    
risposta data 31.05.2012 - 19:52
fonte
2

Una costante nominata è, come dice il nome, non può essere modificata. Nel tuo esempio, puoi impostare il valore di myVar in qualsiasi momento durante l'esecuzione del tuo programma. A seconda della lingua, puoi creare una costante con le parole chiave const (C / C ++) o final (Java).

// C/C++
const int CONSTANT = 5;

// java
public static final int CONSTANT = 5;
    
risposta data 31.05.2012 - 19:52
fonte
2

Sebbene sia dipendente dalla lingua, è pratica comune quando si dichiara una costante per il programma stesso che non crea mai realmente una variabile che trattiene quel valore. Invece, si può presumere che se si ha una costante numerica impostata su 5, essa troverà ogni posizione in cui viene utilizzata la costante in fase di compilazione e la sostituirà con 5 (o qualsiasi altra cosa). Se si crea una variabile (non costante) e la si imposta su 5, il compilatore non può effettuare tale ottimizzazione, anche se non si modifica la variabile. Ciò significa che durante l'esecuzione del programma sarà necessario creare una posizione in memoria per tale variabile, impostarla e, al momento dell'esecuzione del programma, dovrà recuperare il valore di tale posizione in memoria anziché utilizzare un valore codificato.

    
risposta data 31.05.2012 - 20:10
fonte

Leggi altre domande sui tag