Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    23

    Utilizzo della sintassi switch()

    mi sono accorto che la sintassi switch non viene molto utilizzata. Per quanto mi riguarda la utilizzo in tutti quei casi in cui ho diverse operazioni di selezione che fanno il controllo sulla stessa variabile e l'operatore relazionale e' quello di uguaglianza ovvero:
    codice:
    int x;
    if (x == NUM_1)
    {
      ...
    }
    else if (x == NUM_2)
    {
      ...
    }
    else if (x == NUM_3)
    {
      ...
    }
    ecc...
    a me piace di piu' scriverla:
    codice:
    switch (x)
    {
      case NUM_1:
        ...
        break;
      case NUM_2:
         ...
         break;
      case NUM_3:
         break;
      ecc...
    }
    Bhe' non capisco perche' spesso viene utilizzata la sintassi if else if anziche utilizzare la sintassi switch case. Comporta qualche svantaggio? Non so', magari un impiego di risorse maggior ecc...
    Premetto che la mia e' solo una sensazione, pero' in svariati programmi che ho visto girando in rete ho notato questo scarso utilizzo della sintassi switch...

    A voi la parola

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Personalmente non ho notato la tendenza di cui parli ...

    Ovviamente sono d'accordo ad usare la switch al posto della catena di if, se possibile ...

    Una precisazione ... la switch non e' una "funzione" ma un costrutto sintattico ... le funzioni sono "cose" diverse ...

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    23
    Originariamente inviato da oregon
    Una precisazione ... la switch non e' una "funzione" ma un costrutto sintattico ... le funzioni sono "cose" diverse ...
    hai ragione, edito...

  4. #4
    Utente di HTML.it L'avatar di newbie
    Registrato dal
    Dec 2005
    Messaggi
    299
    Effettivamente lo switch è moooooolto più elegante di una cascata di if-else-if-else-if-else... che a volte, ad esempio nel C++, è una scelta obbligata, magari perchè è bassato su stringhe e non su costanti numeriche... mentre ad esempio C# permette di usare anche le stringhe, o magari altri tipi di dato: ed è proprio in questo modo che il costrutto rivela la sua potenza!
    Svegliati, Neo. Matrix ti possiede...

  5. #5
    Utente di HTML.it L'avatar di eclips
    Registrato dal
    Apr 2005
    Messaggi
    48
    l'uso dello switch() è limitato per via del break, perche il esso non è un'istruzione dello switch(). il break è un'istruzione di salto simile al GOTO(in pratica il break passa il controllo alla prima istruzione fuori dallo switch(), for, while o do while ). Le istruzioni di salto (escluso il return) non sono ben accettate da molti standard ......., quindi lo switch senza il break non è poi tanto utile.

    saluti

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    10
    ciao...
    secondo me tutto cio che facilita la scrittura appesantisce la compilazione e lo sfruttamento di risorse...
    basta prendere in esempio la ricorsione e l'itarazione...........io preferisco la seconda in tutti i programmi che faccio.....
    Cz!!!

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Originariamente inviato da eclips
    l'uso dello switch() è limitato per via del break, perche il esso non è un'istruzione dello switch(). il break è un'istruzione di salto simile al GOTO(in pratica il break passa il controllo alla prima istruzione fuori dallo switch(), for, while o do while ). Le istruzioni di salto (escluso il return) non sono ben accettate da molti standard ......., quindi lo switch senza il break non è poi tanto utile.

    saluti
    Non sono d'accordo ...

    L'istruzione di salto vera e propria e' il goto ed e' sicuramente da evitare perche' il suo uso aumenta la "confusione" relativa al flusso dell'elaborazione ...

    Ma il break no. Il break non e' una vera e propria istruzione di salto. E' vero che determina un cambiamento del flusso del codice, ma tale cambiamento non e' "a piacimento" del programmatore, ma ben definito. Questo fatto non pregiudica la chiarezza del codice.

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Originariamente inviato da Calo
    ciao...
    secondo me tutto cio che facilita la scrittura appesantisce la compilazione e lo sfruttamento di risorse...
    basta prendere in esempio la ricorsione e l'itarazione...........io preferisco la seconda in tutti i programmi che faccio.....
    Ma non e' questo il caso ... Le due strutture sono equivalenti dal punto di vista funzionale e del codice generato, ma la switch e' piu' chiara (ferma restando la limitazione degli interi ...) ...

  9. #9
    Un aspetto della questione che non è emerso è che un buon compilatore , non necessariamente ottimizzato , produrra' codice piu' efficiente , in termini di velocità , per il costrutto switch rispetto al costrutto con gli if in cascata . Nel caso di pochi if innestati la questione non si pone e quindi i costrutti sono equivalenti , anche se propendo per lo switch per motivi di leggibilità . Ma nel caso in cui le alternative da considerare sono molte , nell'ordine delle centinaia o più e il codice relativo viene richiamato frequentemente , allora è meglio considerare l'adozione dello switch . Saluti .

  10. #10
    Utente di HTML.it L'avatar di eclips
    Registrato dal
    Apr 2005
    Messaggi
    48
    Originariamente inviato da oregon
    Non sono d'accordo ...

    L'istruzione di salto vera e propria e' il goto ed e' sicuramente da evitare perche' il suo uso aumenta la "confusione" relativa al flusso dell'elaborazione ...

    Ma il break no. Il break non e' una vera e propria istruzione di salto. E' vero che determina un cambiamento del flusso del codice, ma tale cambiamento non e' "a piacimento" del programmatore, ma ben definito. Questo fatto non pregiudica la chiarezza del codice.
    no, il break e proprio un istruzione di salto, e come ho detto all'inizio il break salta tutte le istruzioni successive fino alla prima istruzione che si trova dopo la " } " che chiude lo switch(), while...... passandole il controllo.

    dal borland:
    Category

    Statements

    Syntax

    break;

    Description

    Use the break statement within loops to pass control to the first statement following the innermost switch, for, while, or do block.



    comunque ti invito a provare questo semplice codice:

    #include <stdio.h>

    int main()
    {
    float a;

    printf("Inserire il valore >0");
    scanf("%f", &a);
    while(a>0){
    break;
    a++;}

    printf("questa e' la prima istruzione fuori dal ciclo, quindi il valore e': %f",a);

    getch();
    return 0;
    }

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.