[Risolto] Domanda veloce comando for

di il
7 risposte

[Risolto] Domanda veloce comando for

Salve a tutti, sto studiando autodidatticamente C e mi sono ritrovato all'esercizio dove si chiede di fare dei triangoli.

Io una mia soluzione l'ho trovata ma mi costringeva ad aggiungere un ulteriore
printf("*");
alla fine del programma per far si che il triangolo fosse completato.

Ho trovato una soluzione migliore qui in questo sito però non capisco perché sia presente il comando for senza le parentesi graffe per aprire l'istruzione, sul libro non ho trovato una risposta, qualche volontario che me lo spieghi?
#include <stdio.h>

int main (void)
{
	int N,i,h;
	scanf("%d",&N);
	
	for(i=0; i<N ;i++){
		for(h=0;h<i;h++)   //questo for non ha parentesi, perché?//
			printf("*");
			printf("*\n");
			
		}
		return 0;
	}

7 Risposte

  • Re: [Risolto] Domanda veloce comando for

    Quando un for o un if o un while non hanno le parentesi graffe, l'unica istruzioni che gli appartiene è quella che viene subito dopo e basta.
    il primo printf("*") appartiene al for senza parentesi, mentre il secondo printf("*\n") al primo for.
    Penso sia dovuto a come lavorano i compilatori.
    Se vuoi un'evoluzione dell'esercizio stampati i triangoli come nell'allegato, aventi una base composta da un numero di asterischi dispari. Se positivi ti si mozza la cima, come un albero di natale senza stella -.-
    Allegati:
    14867_c45aa9132672439b37a9dce04ef19a3c.png
    14867_c45aa9132672439b37a9dce04ef19a3c.png
  • Re: [Risolto] Domanda veloce comando for

    Ciao

    Le parentisi graffe rappresentano i singoli blocchi dei tuoi comandi e aiutano la leggibilità dei tuoi programmi, quindi:

    int main()
    {
    <istruzioni>
    if(<valori>)
    {
    <istruzioni>
    }
    else
    {
    <istruzioni>
    }
    <istruzioni>
    }

    è identico a scrivere:
    int main()
    {
    <istruzioni>
    if(<valori>)
    <istruzioni>
    else
    <istruzioni>
    <istruzioni>
    }

    Come puoi ben vedere la leggibilità del tuo programma e diminuito sensibilmente, ma il concetto rimane lo stesso, in quanto i blocchi di istruzioni vengono definiti dagli spazi e/o dalle parole chiavi che definiscono le istruzioni, spero per il bene di tutti che continuerai ad usare le parentesi graffe per la definizione dei tuoi blocchi e di aver risolto i tuoi dubbi.
  • Re: [Risolto] Domanda veloce comando for

    Puntualizzerei che
    if(<condizione>)
    <istruzione> // no istruzioni

    per avere conferma fate girare:
    
    int main(){
      int i;
      for(i=0;i<10;i++)
        printf("prima\n");   //unica che appartiene al for
        printf("seconda\n");
        printf("terza\n");
    }
    
  • Re: [Risolto] Domanda veloce comando for

    Grazie adesso ho capito! mi cimenterò nella variante
  • Re: [Risolto] Domanda veloce comando for

    Noooooooooooooooooooooooooooo per caritàààààààààààààààà ti prego rimani nel gruppo delle parentesi graffe resta con noi
  • Re: [Risolto] Domanda veloce comando for

    Concordo. Un'altra viariante è quella di disegnare la Gioconda di asterischi solo con cicli for.
  • Re: [Risolto] Domanda veloce comando for

    Giacomo_made4core ha scritto:


    noooooooooooooooooooooooooooo per caritàààààààààààààààà ti prego rimani nel gruppo delle parentesi graffe resta con noi
    Tranquillo non mi sogno minimamente di non usare le parentesi


    Per la gioconda......... C'è tempo
Devi accedere o registrarti per scrivere nel forum
7 risposte