PDA

Visualizza la versione completa : [C++] Quando e come le { }


Manuelandro
17-01-2006, 13:33
ciao a tutti. La mia domanda risulterà un pò banale ma non capisco davvero qual è la differenza nell'usare o no le { } ad esempio in un ciclo.


Vi faccio un esempio molto pratico



char ch;
int n;

cout << "\n inserisci un numero naturale ";
cin >> n;
cout << "\n inserisci un carattere ";
cin >> ch;
for (int i=1; i<=n; i++) {
for (int j=1; j<=i; j++)
cout << ch;
cout << "\n";
}
cout << "\n";

questo piccolo codice kiede prima il numero degli elementi, poi il simbolo e poi corstruisce. Se io inserisco 6 e poi come carattere $ mi stamperà un triangolo


$
$$
$$$
$$$$
$$$$$
$$$$$$


come potete notare dal codice il secondo ciclo non ha le parentesi { }. Se io metto le parentesi al secondo ciclo ,i stampa una cosa del genere


$
$
$
$
$
$
$
$
$
$
$
$


Allora vi kiedo...qual è la differenza? quano bisogna usare le parentesi e quando no?

grazie per la cortese pazienza :D

unomichisiada
17-01-2006, 13:35
facci vedere comne le hai messe le parentesi

Manuelandro
17-01-2006, 13:37
char ch;
int n;

cout << "\n inserisci un numero naturale ";
cin >> n;
cout << "\n inserisci un carattere ";
cin >> ch;
for (int i=1; i<=n; i++) {
for (int j=1; j<=i; j++) {
cout << ch;
cout << "\n";
}
}
cout << "\n";


:master:

LeleFT
17-01-2006, 13:39
Beh è molto semplice: le parentesi identificano un blocco di istruzioni che vengono considerate come una sola.
Di conseguenza, metterle o non metterle fa differenza solamente quando si ha a che fare con un blocco composto da più di un'istruzione.
Riprendendo il tuo esempio, senza le parentesi nell'istruzione for più esterna, esso sarebbe esattamente equivalente a questo:


char ch;
int n;

cout << "\n inserisci un numero naturale ";
cin >> n;
cout << "\n inserisci un carattere ";
cin >> ch;
for (int i=1; i<=n; i++)
for (int j=1; j<=i; j++) {
cout << ch;
cout << "\n";
}
cout << "\n";
non farti ingannare dall'indentazione: quella serve solo a poter leggere meglio il programma.

Questa è la sintassi dell'istruzione for:


for (init; test; inc) <istruzione>

dove

init: inizializzazione di una o più variabili;
test: guardia del for, che continua finchè essa rimane vera;
inc: incremento automatico di una variabile;
<istruzione>: una istruzione (sia essa una singola istruzione o un blocco di istruzioni)

Ovviamente per avere un blocco di istruzioni è necessario utilizzare le parentesi graffe.


Ciao. :ciauz:

Samuele_70
17-01-2006, 13:41
Originariamente inviato da Manuelandro
...

Allora vi kiedo...qual è la differenza? quano bisogna usare le parentesi e quando no?

grazie per la cortese pazienza :D

Se non ci sono le parentesi '{}', che servono a racchiudere una
porzione di codice in un unico blocco, viene eseguita l'istruzione o la funzione successiva delimitata dal ';' successivo.

Sfogliare uno straccio di libro ? :D

unomichisiada
17-01-2006, 13:41
Originariamente inviato da Manuelandro


char ch;
int n;

cout << "\n inserisci un numero naturale ";
cin >> n;
cout << "\n inserisci un carattere ";
cin >> ch;
for (int i=1; i<=n; i++) {
for (int j=1; j<=i; j++) {
cout << ch;
cout << ch;
}
}
cout << "\n";


:master:
Allora è ovvio! Se non inserisci parentesi solo l'istruzione successiva al for viene associata ad esso, quindi se non le metti cout << ch; viene eseguita ad ogni iterazione del ciclo interno cout << ch; solo ad ogni iterazione di quello più esterno.Se le metti come le hai messe tu invece, anche cout << ch; viene associata al ciclo più interno e fa casino. Se vuoi ottenere una cosa equivalente pur mettendo le parentesi devi fare così


char ch;
int n;

cout << "\n inserisci un numero naturale ";
cin >> n;
cout << "\n inserisci un carattere ";
cin >> ch;
for (int i=1; i<=n; i++) {
for (int j=1; j<=i; j++)
{
cout << ch;
}
cout << ch;

}
cout << "\n";

unomichisiada
17-01-2006, 13:42
Triplo post simultaneo...siamo troppo zelanti :)

unomichisiada
17-01-2006, 13:43
Originariamente inviato da Samuele_70
Sfogliare uno straccio di libro ? :D
Ovviamente quoto al cubo

Samuele_70
17-01-2006, 13:44
Originariamente inviato da unomichisiada
Triplo post simultaneo...siamo troppo zelanti :)
:unz:

oregon
17-01-2006, 14:38
La cosa piu' importante relativa all'uso delle parentesi {} in C e' capire che, se si usano, tutte le istruzioni al loro interno sono considerate come fossero una sola. Questo e' importantissimo.

Quindi, dato che la for (ma anche la if e altri statement) lavorano con la *singola prossima istruzione*, devi fare questo ragionamento

1) con la for voglio ripetere una sola istruzione, allora



for(...)
istruzione


2) con la for voglio ripetere piu' istruzioni, allora (dato che un blocco di istruzione e' equivalente a una sola



for(...)
{
istruzione
istruzione
istruzione
}

Loading