Annuncio

Collapse
No announcement yet.

comandi while e for

Collapse
X
 
  • Filter
  • Ora
  • Show
Clear All
new posts

  • comandi while e for

    Ok ragazzi, altra domanda da esame.

    Domanda: Fornire un esempio di quando le due procedure qui sotto danno esiti diversi.


    for (init; test; update)
    statement;

    next statement; (fuori dal ciclo)

    //////


    init;
    while (test)
    {statement;
    update; }

    next statement;


    ora da quanto ne so io il ciclo while scritto così è esattamente il ciclo for.
    quindi se io do gli stessi valori per init, test e update dovrei ottenere sempre e comunque la stessa cosa. o no? boh.... è una cassata ma non ne vengo fuori :s

  • #2
    Allora, non ho capito perchè lo chiami "test", ma per fare 2 esempi:

    for(i=0; i<10; i++) printf("%i",i);

    i=0;
    while(i<10)
    {
    printf("%i",i);
    i++;
    }

    dovrebbero dare esattamente lo stesso risultato, ma il for lo scrivi su una riga sola
    http://gamesurf.tiscali.it/forum/usernote.php?u=13 ultima pagina

    Comment


    • #3
      gogetto chiedeva un esempio per cui mettendo gli stessi dati mi da risultati diversi.

      lo chiamo test perchè è un test.... se i<10 mi da true e processa se no da false e non processa.

      Comment


      • #4
        Allora ho provato che mettendo:

        i=0;
        while(i<10)
        {
        continue;
        i++;
        }

        ///

        for(i=0;i<10;i++)continue;

        Si ottengono risultati diversi.
        http://gamesurf.tiscali.it/forum/usernote.php?u=13 ultima pagina

        Comment


        • #5
          uhm...con il continue.... cosa succede...che il for salta tutto e il while invece no? su che tipo di programma lo hai testato?

          edit: io di programmazione non so una mazza non so se si era capito... io hos celto sistemi!!!!!! non programmazione ;_;

          Comment


          • #6
            L'ho compilati con il vc microsoft, e ho notato che con il ciclo for l'esecuzione termina subito, mentre con il while dura all'infinito, in pratica il continue precede l'incremento quindi il while non termina mai mentre nel for l'incremento viene fatto lo stesso e dopo 10 giri si ferma.

            Ah il continue serve a tornare all'inzio del ciclo (spero di non sbagliarmi :P)
            http://gamesurf.tiscali.it/forum/usernote.php?u=13 ultima pagina

            Comment


            • #7
              a leggere quella roba mi pareva cirillico
              capisco a malapena le cose basilari del basic anzi meno ^__^' e pensare che vorrei fare il programmatore
              che percorso devo seguire per fare il programmatore passando dallo scientifico?

              Comment


              • #8
                Allo scientifico non farai molta informatica questo è sicuro.

                Io facevo lo scientifico 2 anni fa e sapevo un po' di visual basic perchè lo studiavo per conto mio (ti insegnano il pascal... ci fai di molto...).
                http://gamesurf.tiscali.it/forum/usernote.php?u=13 ultima pagina

                Comment


                • #9
                  Quel codice è ovvio che faccia così; il while va all'infinito perchè il continue gli fa saltare l'aumento della variabile, perciò la condizione non sarà mai falsa. Il continue nel for fa invece passare direttamente all'incremento della variabile dunque a un certo punto la condizione sarà falsa. Dunque il comportamento nel complesso è giusto (nel senso che il compilatore fa quello che deve fare); il fatto è che, però, quel codice purtroppo non dimostra un bel niente, considerato che continue è un'istruzione atipica, mentre lo statement credo che dovrebbe essere il più generico possibile.
                  Cmq, sul problema originale c'è un po' da ragionarci, domani provo qualcosa. Sarebbe interessante sapere, cmq, se la domanda verte su uno specifico linguaggio oppure se vale per la programmazione in astratto.
                  "il 9-10 marzo, ho letto su un sito che dice che chi scarica film/mp3 con p2p (anche da casa per uso personale), le forze armate lo attaccano"
                  da it.comp.software.p2p (marzo 04)

                  Comment


                  • #10
                    Certo però non credi che il problema si basi proprio sul fatto che l'incremento nel while in questo caso viene dopo lo statement mentre nel for è il contrario?
                    http://gamesurf.tiscali.it/forum/usernote.php?u=13 ultima pagina

                    Comment


                    • #11
                      Certo! Il problema è che "continue" è un'istruzione particolare. Se la ci fosse un normalissimo statement che non fa il break del loop le due cose, per quanto mi sembra ora, funzionerebbero esattamente allo stesso modo. Penso che la domanda sia riferita a una situazione generica con init, test, statement non precisati, altrimenti, in effetti di esempi in cui si comportano diversamente se ne potrebbero fare anche altri.
                      "il 9-10 marzo, ho letto su un sito che dice che chi scarica film/mp3 con p2p (anche da casa per uso personale), le forze armate lo attaccano"
                      da it.comp.software.p2p (marzo 04)

                      Comment


                      • #12
                        allora in toeria il linguaggio sarebbe il java e quindi mi sta bene anche il c. in fondo i codici in questo esempio aprticolare non ca,biano poi molot.

                        Dansolo ha in effetti ragione, il continue è un'istruzione atipica che la si usa in casi particolari, ora magari è proprio quello che volgiono non lo so, ma se trovate una soluzione più generale è meglio....

                        avevo pensato a una condizione di test ambigua che magari il while non riconoscesse, però non mi viene in mente come..uff..

                        Comment


                        • #13
                          Beh atipica... dopotutto è un istruzione fondamentale (tant'è che viene evidenziata in blu nell'editor del compilatore)!

                          Cmq vediamo di trovare un'altra soluzione, secondo me bisogna agire sulla stessa variabile che abbiamo usato per i loop...
                          http://gamesurf.tiscali.it/forum/usernote.php?u=13 ultima pagina

                          Comment


                          • #14
                            Allora, premetto che la soluzione è stata trovata in c, dunque funzionerà con le regole di visibilità dei linguaggi C-style (cpp, java e altri...). Mi ronzava per la testa il problema delle condizioni e, effettivamente è là che bisogna cercare, tuttavia bisogna metterci in mezzo anche le regole di visibilità delle variabili. Allora; il seguente codice con il for funziona:

                            void main()
                            {
                            for (a=0; a<10; a++)
                            int a=0;
                            }

                            infatti il ciclo viene correttamente eseguito e il programma termina.

                            Il seguente codice non funziona

                            void main()
                            {
                            int a=0;
                            while (a<10)
                            {
                            int a=0;
                            a++;
                            }
                            }

                            infatti il ciclo non termina mai e si pianta. Io ho compilato con il gcc. Qualcuno può fare la prova con il Visual C++?
                            "il 9-10 marzo, ho letto su un sito che dice che chi scarica film/mp3 con p2p (anche da casa per uso personale), le forze armate lo attaccano"
                            da it.comp.software.p2p (marzo 04)

                            Comment


                            • #15
                              ora provo con java.... ma non so.


                              scusa ma come fai a far inizaire il for onon avendo inizializzato a all'interno della parentesi tonda???

                              Comment

                              Working...
                              X