Usare il "break" in un ciclo for

di Anonimizzato18717 il
6 risposte
Salve a tutti, come dal titolo vorrei sapere se è "moralmente" corretto utilizzare il break in un ciclo for.
Sono al primo anno di Ingegneria Informatica e il mio prof ha espressamente detto che se in un compito di esame avesse visto utilizzare un break all'interno di un ciclo for, avrebbe bocciato l'alunno.
Ho notato che c'è una similitudine con il "goto", perchè anche questa funzione funziona , ma non è comunque utilizzata, poichè crea più "entrate" e più "uscite" all'interno di un sottoprogramma.
Ma il for non fa niente di simile.
Quindi, ritornando alla domanda, vorrei sapere se è possibile utlizzarlo.
Scusatemi, inoltre se ho sbagliato sezione in cui inserire il topic; dato che è di carattere generale e non relativo ad un solo linguaggio di programmazione, ho pensato che potesse andare bene.
Grazie

6 Risposte

  • In realtà, non sono molti i linguaggi di programmazione che ammettono la break o equivalente.

    In ogni caso, la risposta in estrema sintesi è assolutamente affermativa: non solo è ampiamente lecito nella programmazione mainstream l'uso della break per uscire anticipatamente da un ciclo, ma il suo impiego è perfino ammesso in contesti critici di uso del linguaggio C, come quelli regolati dalla MISRA/C che fino dall'edizione 2004 ha iniziato a distinguere in modo netto l'uso della goto (deprecato) da quello della break (ammesso).

    Per una discussione un po' più completa sull'uso della goto e forme derivate, si veda anche questo.

    In generale, è comunque giusto scoraggiare didatticamente l'impiego di taluni statement, che richiedono maturità professionale e ampia esperienza con codice di elevato livello qualitativo del real world per poter essere utilizzati con cognizione di causa.
  • Ciao buongiorno...diciamo che moralmente come dici tu e specialmente scolasticamente è deprecabile l'uso del break!!! Ci sono eccezioni che ho visto sopratutto in python piu per il while. Comunque anche io cerco di evitarne l'uso!!! Un saluto


    Inviato dal mio iPhone utilizzando Tapatalk
  • Capisco.. quindi nel caso in cui avessi necessità di usare un break all'interno di un ciclo for, come potrei fare?
    Faccio un esempio:
    
    bool flag;
    int i=0;
    	for(int k=0;k<cont;k++)
    			{
    				if(nome==vettore[k])
    				{
    					flag= true;
                                            break;
    				}
    				 else flag=false;
    			}
             if(flag==false)
             {
                   i++;
             }
    
    Questa è un pezzo di codice (modificato in parte), che restituisce un valore true o false in base al risultato del confronto tra due stringhe.
    La variabile "vettore" è allocata dinamicamente.
    Come potrei ovviare al problema dell'uso del break in questo ciclo?
  • for(int k=0;(k<cont)&&(!flag);k++)
  • Ma in questo modo poi non diventerebbe un ciclo non determinato (quindi si andrebbe comunque a contraddire la definizione stessa del ciclo for), poichè non sappiamo quando la variabile flag diventa falsa?
  • No, equivale ad un ciclo while. Lui non voleva il break.
Devi accedere o registrarti per scrivere nel forum
6 risposte