Pagina 1 di 1

C++

MessaggioInviato: 09 dic 2005, 19:20
di manuel86
Ciao ragazzi
ci sono alcune cose che non riesco a capire riguardo al passaggio di parametri. Ho alcune domande da farvi:
1) il passagio per valore consente di inviare alla funzione chiamata il valore contenuto in una o più variabili?
2)All'interno di una funzione non si ha accesso alle variabili locali della funzione chiamante? è vero o no?????
3) All'interno della funzione chiamante è possibile vedere le variabili locali alla funzione chiamata?
4)I parametri attuali sono indicati nella riga di intestazione della funzione?

Rispondetemi presto :wink:

Re: C++

MessaggioInviato: 09 dic 2005, 20:22
di `knives`
manuel86 ha scritto:1) il passagio per valore consente di inviare alla funzione chiamata il valore contenuto in una o più variabili?

esatto.. manda solo il valore.. che se lo vuoi restiturie, dovrai mettere il tipo di ritorno nella dichiarazione della funzione, attenzione... puoi mandare piu valori.. ma restituirne 1, se devi lavorare con piu valori modificandoli è meglio il passaggio per indirizzo
manuel86 ha scritto:2)All'interno di una funzione non si ha accesso alle variabili locali della funzione chiamante? è vero o no?????


se quelle variabili sono dichiarate nella aria privata della funzione chiamante, no, xo se le passi per indirizzo si.

manuel86 ha scritto:3) All'interno della funzione chiamante è possibile vedere le variabili locali alla funzione chiamata?

no, perchè fino a che la funzione chiamata non ha concluso, non puoi tornare alla chiamante.
manuel86 ha scritto:4)I parametri attuali sono indicati nella riga di intestazione della funzione?


mi sfugge l'idea di " parametri attuali", cmq la riga ti intestazione ti serve per dichiarare il tipo e i nomi delle variabili che utilizzerai nella funzione chiamata.

ciao ciao!

MessaggioInviato: 09 dic 2005, 20:35
di manuel86
i parametri attuali sono le variabili, costanti o espressioni che forniscono i valori ai parametri al momento della chiamata :D
Cmq grazie per l'aiuto, sei stato provvidenziale :wink: :wink:

MessaggioInviato: 09 dic 2005, 20:50
di manuel86
Visto che sei stato eccezionale vorrei chiedere ulteriori chiarimenti :?
Perfette le risposte di prima :D , ora vorrei sapere un altro paio di cose....
1)In una struttura di iterazione for, l'incremento deve essere sempre unitario?

2)L'istruzione di salto "break", provoca un'uscita incondizionata da una struttura di controllo?

3) Come si dichiara una variabile di tipo logico? (sempre in c++) :o

grzie tanto :wink:

MessaggioInviato: 10 dic 2005, 12:40
di thrantir
allora, i parametri...

quando dichiari una procedura, indichi la sua segnatura cioè quali argomenti richiede e di che tipo. Questi sono i parametri formali, che identificano univocamente la funzione insieme col nome. A runtime, i parametri formali vengono sostituiti con i parametri attuali, cioè con i reali valori che vengono dati alla funzione come argomenti

quindi, i parametri formali riguardano la definizione della funzione, i parametri attuali riguardano invece l'esecuzione della funzione a runtime

in un for, in c, puoi fare quello che ti pare, è sostanzialmente identico a un while. Puoi anche non specificare niente nei 3 campi, scrivendo una roba del genere:

for(;;)

che equivale a un

while(true)

Oltretutto, puoi anche dichiarare un passo incrementale che non abbia relazione con il valore utilizzato come guardia:

int a = 0;
for(int i = 0; i < max; a = a*2)

il breack ti fa uscire dal blocco in cui si trova, con la particolarità che, se ti trovi all'interno di un ciclo, non viene ripetuto il controllo sulla guardia

cosa intendi per tipo logico? un tipo strutturato definito da te?

MessaggioInviato: 10 dic 2005, 13:06
di `knives`
thrantir ha scritto:allora, i parametri...

quando dichiari una procedura, indichi la sua segnatura cioè quali argomenti richiede e di che tipo. Questi sono i parametri formali, che identificano univocamente la funzione insieme col nome. A runtime, i parametri formali vengono sostituiti con i parametri attuali, cioè con i reali valori che vengono dati alla funzione come argomenti

quindi, i parametri formali riguardano la definizione della funzione, i parametri attuali riguardano invece l'esecuzione della funzione a runtime

chiarissimo. grazie.

thrantir ha scritto:Oltretutto, puoi anche dichiarare un passo incrementale che non abbia relazione con il valore utilizzato come guardia:

int a = 0;
for(int i = 0; i < max; a = a*2)


mi spieghi cosa significa questo? cioè, se io pongo il passo incrementale cosi, significa che il mio indice i lo incrementa qualcosaltro esatto?
ma ad ogni passaggio del for cosa sucede alla a?

MessaggioInviato: 10 dic 2005, 13:22
di thrantir
era solo un esempio, per far vedere che in realtà, le tre parti del for non sono strettamente correlate: io posso dichiarare una variabile, avere una guardia su un'altra variabile e modificare un'altra variabile ancora... certo che poi, sta al programmatore capire cosa succede... è che il for del c è proprio un while cammuffato, non è come quello, per esempio, del pascal, che semanticamente può essere un for e niente altro...

MessaggioInviato: 17 dic 2005, 11:56
di Bartok
In realtà le tre espressioni separate la punto e virgola sono del tutto indipendenti tanto che addirittura una delle 3 può essere vuota!

MessaggioInviato: 17 dic 2005, 13:17
di thrantir
tutte e tre possono essere vuote, se scrivi for ( ; ; ) è come scrivere while(true) :wink:

MessaggioInviato: 17 dic 2005, 13:20
di Bartok
Già hai ragione, come l'ho scritta sembrava che poteva essere vuota solo una alla volta!(non glie sfugge niente!)

MessaggioInviato: 17 dic 2005, 15:46
di `knives`
Bartok ha scritto:Già hai ragione, come l'ho scritta sembrava che poteva essere vuota solo una alla volta!(non glie sfugge niente!)

:roll: