aiutino sugli algoritmi (2)

7 risposte [Ultimo messaggio]
Ritratto di frankus89
frankus89
(Monster)
Offline
Monster
Iscritto: 29/03/2008
Messaggi: 203

allora avrei qualche domanda:
Inizializzare una variabile significa assegnare un valore ad essa prima che essa venga elaborata dall'algoritmo.
Ma se io non dovessi assegnare alla variabile un valore iniziale, quindi, se non la dovessi inizializzare, perchè il programma non funzionerebbe l'algortimo?

.. c'è poca cultura ma l'istinto separa i cattivi dai buoni, i rumori dai suoni, le definizioni dall'assioma..

Ritratto di wal7er
wal7er
(Guru)
Offline
Guru
Iscritto: 21/09/2007
Messaggi: 572

esempio pratico:

<br />int i;<br />...<br />while ( i&gt;0 ){<br />...<br />}<br />

se non inizializzi la variabile (cioe' contiene un valore casuale) e' possibile che in alcuni casi l'esecuzione non entri nel ciclo while.
In questo senso l'algoritmo implementato nel codice non e' predicibile (cioe' non puoi descrivere quello che fa perche' in alcuni casi fa qualcosa che non dipende dall'input).
Spero di essere stato chiaro.

HP Pavilion dv5-1110el powered by OpenSUSE 13.2 64bit

http://linuxcounter.net/cert/432576.png

Ritratto di cla90
cla90 (non verificato)
()

quoto quanto detto da wal7er, ma dipende sempre da cosa devi farci, se gli viene assegnato un valore dinamicamente a runtime puoi anche omettere l'inizializzazione...

comunque se vuoi stare sicuro inizializzale sempre con valore 0 (o 1 se devi farci moltiplicazioni). Smile

Ritratto di Barbo
Barbo
(Geek)
Offline
Geek
Iscritto: 29/04/2007
Messaggi: 70

Ragazzi così ci spaventate a noi poveri mortali che al massimo navighiamo in internet!!! Laughing Laughing Laughing

Ritratto di wal7er
wal7er
(Guru)
Offline
Guru
Iscritto: 21/09/2007
Messaggi: 572

Ho scritto l'esempio di codice solo per fissare le idee: un conto e' l'agoritmo (si tralasciano i dettagli) e l'altro e' la sua implementazione (dettagli implementativi quali il linguaggio usato e le strutture dati disponibili).

Qello che ha detto cla90 e' giusto ma (ce sempre un ma Wink ) questo tipo di considerazione fa parte dell'implementazione.

Spero che queste chiacchiere servano a chiarire qualcosa piuttosto che a confondere le idee Wink

NB:
I comuni mortali usano il pc con un sistema operativo e navigano con un esploratore di internet.

Gli altri usano il pc con un Sistema Operativo e tra le tante cose che possono fare, nei ritagli gli tempo, navigano con la volpe di fuoco
Laughing Laughing Laughing Laughing Laughing Laughing Laughing Laughing Laughing Laughing Laughing

Scegliete voi...

HP Pavilion dv5-1110el powered by OpenSUSE 13.2 64bit

http://linuxcounter.net/cert/432576.png

Ritratto di frankus89
frankus89
(Monster)
Offline
Monster
Iscritto: 29/03/2008
Messaggi: 203

no tranquillo..servono a chiarire, e non a confondere.
fatto sta, quindi, che se non dovessi inizializzare una variabile l'algoritmo potrebbe bloccarsi non potendo leggere il valore corretto della variabile.
se non inizializzassi una variabile, il suo corrispettivo "contatore" non avrebbe senso, giusto?
ho capito bene l'importanza di inizializzare una variabile?

.. c'è poca cultura ma l'istinto separa i cattivi dai buoni, i rumori dai suoni, le definizioni dall'assioma..

Ritratto di wal7er
wal7er
(Guru)
Offline
Guru
Iscritto: 21/09/2007
Messaggi: 572

Quote:

frankus89 ha scritto:
no tranquillo..servono a chiarire, e non a confondere.
fatto sta, quindi, che se non dovessi inizializzare una variabile l'algoritmo potrebbe bloccarsi non potendo leggere il valore corretto della variabile.
se non inizializzassi una variabile, il suo corrispettivo "contatore" non avrebbe senso, giusto?

Si

Quando inizializzi una variabile dai un valore di partenza e in base a questo stabilisci cosa deve essere fatto nel programma che sati scrivendo.
In questo modo la sua esecuzione e sempre prevedibile (sai cosa fa il programma avendogli passato un input).
Se armeggi un po con il C saprai che le variabili non vengono inizializzate ma, dopo la loro creazione contengono valori casuali e questo puo' creare problemi senza l'inizializzazione (vedi esempio precedente).

HP Pavilion dv5-1110el powered by OpenSUSE 13.2 64bit

http://linuxcounter.net/cert/432576.png

Ritratto di cla90
cla90 (non verificato)
()

effettivamente prima ho dato per scontato che si trattasse del C Laughing

quando dichiari una variabile, in pratica, riservi uno spazio pari al tipo della variabile (ad esempio una variabile di tipo char occupa un byte = 8 bit).
Nello spazio che ora e' assegnato alla variabile, probabilmente prima c'era qualcos'altro, quindi se non la inizializzi, questa rimane "sporca" del vecchio valore (che non e' prevedibile a priori, e' come se fosse casuale)

quindi, se fai un ciclo che procede solo se la variabile (ad esempio) e' maggiore di 10, la condizione puo' o meno verificarsi, perche' la variabile contiene un valore qualunque...

per controllare, prova a fare l'output del contenuto di una variabile non inizializzata e vedi cosa esce fuori...

Quote:

se non inizializzassi una variabile, il suo corrispettivo "contatore" non avrebbe senso, giusto?

esatto Smile