C++

Discuti dei problemi relativi alla programmazione nel tuo linguaggio preferito!

Moderatori: cb_123, thrantir, tonertemplum

C++

Messaggiodi manuel86 il 09 dic 2005, 19:20

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:
Under Construction:
CPU: AMD Athlon 64 X2 3800+ boxed Manchester; MOBO: ASUS A8N-E; RAM: GeIL Ultra-X PC3200 400MHz DDR Dual Ch. Kit 2x512; HD: Maxtor 200Gb S-ATA 16Mb Cache; VGA: GeForce 6600 256Mb dvi/tv PCI-E; ALI: LC Power 550W SATA silent 14cm
manuel86
Cittadino verde
Cittadino verde
 
Messaggi: 19
Iscritto il: 27 nov 2005, 14:16
Località: Roma

 

Re: C++

Messaggiodi `knives` il 09 dic 2005, 20:22

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!
vogliadidolci.wordpress.com
Avatar utente
`knives`
Moderatore
Moderatore
 
Messaggi: 6246
Iscritto il: 24 mar 2005, 01:57

Messaggiodi manuel86 il 09 dic 2005, 20:35

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:
Under Construction:
CPU: AMD Athlon 64 X2 3800+ boxed Manchester; MOBO: ASUS A8N-E; RAM: GeIL Ultra-X PC3200 400MHz DDR Dual Ch. Kit 2x512; HD: Maxtor 200Gb S-ATA 16Mb Cache; VGA: GeForce 6600 256Mb dvi/tv PCI-E; ALI: LC Power 550W SATA silent 14cm
manuel86
Cittadino verde
Cittadino verde
 
Messaggi: 19
Iscritto il: 27 nov 2005, 14:16
Località: Roma

Messaggiodi manuel86 il 09 dic 2005, 20:50

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:
Under Construction:
CPU: AMD Athlon 64 X2 3800+ boxed Manchester; MOBO: ASUS A8N-E; RAM: GeIL Ultra-X PC3200 400MHz DDR Dual Ch. Kit 2x512; HD: Maxtor 200Gb S-ATA 16Mb Cache; VGA: GeForce 6600 256Mb dvi/tv PCI-E; ALI: LC Power 550W SATA silent 14cm
manuel86
Cittadino verde
Cittadino verde
 
Messaggi: 19
Iscritto il: 27 nov 2005, 14:16
Località: Roma

Messaggiodi thrantir il 10 dic 2005, 12:40

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?
Fletto i muscoli e sono nel vuoto
Principi di architettura degli eleboratori
X postare immagini
-----BEGIN GEEK CODE BLOCK-----
GCS/IT/L/MU d- s: a C++$>+++ UL+>++ P L+++>++++ E--- W++ N++>+++ o+>++ K? w O-- M- VMS? V- PS++ Y+ PGP+ t 5? X+ R++>+++ tv+ b+++>++++ DI+++ D++ G e++ h- r++ y++
------END GEEK CODE BLOCK------
Addio Dani, sono più ricco perchè ti ho conosciuto
Avatar utente
thrantir
Moderatore
Moderatore
 
Messaggi: 8897
Iscritto il: 27 mag 2003, 13:32
Località: Pisa

Messaggiodi `knives` il 10 dic 2005, 13:06

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?
vogliadidolci.wordpress.com
Avatar utente
`knives`
Moderatore
Moderatore
 
Messaggi: 6246
Iscritto il: 24 mar 2005, 01:57

Messaggiodi thrantir il 10 dic 2005, 13:22

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...
Fletto i muscoli e sono nel vuoto
Principi di architettura degli eleboratori
X postare immagini
-----BEGIN GEEK CODE BLOCK-----
GCS/IT/L/MU d- s: a C++$>+++ UL+>++ P L+++>++++ E--- W++ N++>+++ o+>++ K? w O-- M- VMS? V- PS++ Y+ PGP+ t 5? X+ R++>+++ tv+ b+++>++++ DI+++ D++ G e++ h- r++ y++
------END GEEK CODE BLOCK------
Addio Dani, sono più ricco perchè ti ho conosciuto
Avatar utente
thrantir
Moderatore
Moderatore
 
Messaggi: 8897
Iscritto il: 27 mag 2003, 13:32
Località: Pisa

Messaggiodi Bartok il 17 dic 2005, 11:56

In realtà le tre espressioni separate la punto e virgola sono del tutto indipendenti tanto che addirittura una delle 3 può essere vuota!
Athlon 3800+ - 64bit
Asus A8N-SLI Deluxe
2x512 Mb DDR 2.5
Case Thermaltake Soprano (2 ventole 12x12)
Nvidia 6600Gt 256Mb PCI-Express
2x160 Gb Maxtor Sata
Lg DVD-Rom
Mast LG DVD-RAM
Avatar utente
Bartok
Cittadino verde
Cittadino verde
 
Messaggi: 29
Iscritto il: 07 dic 2005, 11:39

Messaggiodi thrantir il 17 dic 2005, 13:17

tutte e tre possono essere vuote, se scrivi for ( ; ; ) è come scrivere while(true) :wink:
Fletto i muscoli e sono nel vuoto
Principi di architettura degli eleboratori
X postare immagini
-----BEGIN GEEK CODE BLOCK-----
GCS/IT/L/MU d- s: a C++$>+++ UL+>++ P L+++>++++ E--- W++ N++>+++ o+>++ K? w O-- M- VMS? V- PS++ Y+ PGP+ t 5? X+ R++>+++ tv+ b+++>++++ DI+++ D++ G e++ h- r++ y++
------END GEEK CODE BLOCK------
Addio Dani, sono più ricco perchè ti ho conosciuto
Avatar utente
thrantir
Moderatore
Moderatore
 
Messaggi: 8897
Iscritto il: 27 mag 2003, 13:32
Località: Pisa

Messaggiodi Bartok il 17 dic 2005, 13:20

Già hai ragione, come l'ho scritta sembrava che poteva essere vuota solo una alla volta!(non glie sfugge niente!)
Athlon 3800+ - 64bit
Asus A8N-SLI Deluxe
2x512 Mb DDR 2.5
Case Thermaltake Soprano (2 ventole 12x12)
Nvidia 6600Gt 256Mb PCI-Express
2x160 Gb Maxtor Sata
Lg DVD-Rom
Mast LG DVD-RAM
Avatar utente
Bartok
Cittadino verde
Cittadino verde
 
Messaggi: 29
Iscritto il: 07 dic 2005, 11:39

Messaggiodi `knives` il 17 dic 2005, 15:46

Bartok ha scritto:Già hai ragione, come l'ho scritta sembrava che poteva essere vuota solo una alla volta!(non glie sfugge niente!)

:roll:
vogliadidolci.wordpress.com
Avatar utente
`knives`
Moderatore
Moderatore
 
Messaggi: 6246
Iscritto il: 24 mar 2005, 01:57

 

Torna a Programmare

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite