Nick01 ha scritto:grazie
prego, figurati.
Nick01 ha scritto:Sai anche i miei prof dicono che non si dovrebbe uscire in modo così brusco dal ciclo, ma io non riesco ancora a capire il perché.
se non lo capisci, malgrado te lo abbiano spiegato, non fai altro che porre loro di nuovo la questione; invece, se non glie lo hai mai chiesto, poni la questione.
Da parte mia, sempre in merito al "break", per quel che vale, ti posso scrivere che, se non esistono dubbi sullo statement sul quale agisce(che viene limitato), i problemi potrebbero derivare dal fatto di non avere censito le conseguenze di quanto non viene più eseguito: può apparire banale ma non lo è, almeno per me.
Al contrario, in un costrutto proprio come lo switch, dove il suo impiego ne caratterizza per "natura" la sintassi, è un ovvio riferimento.
Per il comportamento del programma non so, invece, sulla base di cosa, sostieni che i loop(s) non vengono mai eseguiti.
A livello di sintassi non c'è motivo apparente per dubitare.
Se escludo qualche "gabola" a livello di compilatore ( ... ma lo ritengo veramente poco probabile) allora una risposta ragionevole sta nel fatto che:
i) a livello hardware qualcosa non funziona
ii) il primo while deve essere/viene eseguito se RA5 corrisponde a 1 (magari è sempre a zero)
iii) il secondo while deve essere/viene eseguito perché le due variabili soddisfano la condizione
iv) per il terzo while vale quanto per il (ii)
v) da "sotto" in poi è una conseguenza
vi) il codice che hai riportato non è esattamente quanto hai compilato: nulla di che, può accadere, per distrazione o approssimazione, ma può accadere.
vii) ... altre varie ...
Potrebbe certamente essermi sfuggito qualcosa ma se trovi modo di verificare ci togliamo delle curiosità.
Buon studio.
Saluti