Please ignore secret bonuses. Secret tests do NOT award bonus. Max hw grade is 30+2 bonus efficiency

Do you need help?

Notice Board

Per partecipare al corso di Fondamenti di programmazione 2023-24 loggatevi e attivatelo nella vostra pagina dei corsi preferiti. A quel punto il corso appare nel menù personale cliccando sul proprio avatar. Per i materiali degli anni precedenti seguite lo stesso metodo.

To join the Programming/Lab 2023-24 course, log-on and select it on the my courses page. It will appear on the personal menu of your avatar. For earlier years use the same method.

Utilizzo ciclo for

a.capobianco1 (16770 points)
11 54 165
in Es1 by (16.8k points)
edited by
X evitare di riscrivere codice chiedo prima di provare...

Meglio 4 doppi cicli for in sequenza ognuno con una sola operazione oppure un solo doppio ciclo for con quattro operazioni?

NB: per come ho strutturato l'algoritmo, il/i ciclo/i for deve/ono fare necessariamente tutti i cicli fino ad esaurimento... Nessun break, pass o continue...

Attualmente ne ho 4 doppi e li uso x scandire matrice crucipuzzle.

Edit:
Ogni ciclo è in una funzione a se stante ognuna richiamata in sequenza nella funzione principale... Il dubbio è che non so se potrebbe essere conveniente levare dalle funzioni il ciclo for... Spostando nella funzione principale e al suo interno richiamo le funzioni senza ciclo...
411 views

1 Answer

Xriuk (13590 points)
6 24 116
by (13.6k points)

Non ho capito esattamente cosa fai con i tuoi cicli ma ti estraggo un esempio dal mio codice: io scorro tutte le parole della lista e per ogni parola controllo la sua presenza nella griglia (in tutte le possibili posizioni). Ora le strade sono due (secondo la tua domanda):

  • Fare un ciclo unico e su ogni parola della lista applicare le funzioni che mi servono
    ciclo:
      funzione1()
      funzione2()
      ...
  • Fare un ciclo sulle parole della lista per ogni funzione che mi serve
    ciclo:
      funzione1()
    ciclo:
      funzione2()
    ...

Come puoi vedere nel secondo caso le iterazioni sono molte di più perchè esegui il ciclo di nuovo ogni volta, quindi la soluzione secondo me è fare tutto quello che puoi in un unico ciclo, così guadagni tempo.

a.capobianco1 (16770 points)
11 54 165
by (16.8k points)
Ho fatto un edit del mio primo post.

Ho capito i tuoi esempi tuttavia sebbene il numero di cicli diminuisce, il numero di operazioni non cambia:
1 ciclo x 4 operazioni = 4 operazioni
4 cicli x 1 operazione = 4 operazioni

Ho suddiviso il codice x questioni di intricatezza.. Ma sono in dubbio se levare i ciclo for dalle funzioni figlie per passarlo in quella principale nella quale le richiamo...

Edit: forse mi tocca usare %time :)
a.capobianco1 (16770 points)
11 54 165
by (16.8k points)
Ho fatto la prova:
4 funzioni che contengono ognuna un doppio ciclo for all'interno dei quali vengono svolte determinate operazioni, vengono eseguite Più velocemente di un solo doppio ciclo for che richiama le Medesime funzioni senza ciclo.

Non lo avrei mai detto.
Xriuk (13590 points)
6 24 116
by (13.6k points)
I tuoi conti non tornano, separando le operazioni tu non vai a fare un unico ciclo, ma ne fai molti di più: è qui che aumenta il numero di operazioni, non restano uguali.

Il fatto che vengano svolte più velocemente dipende magari da ottimizzazioni interne del linguaggio (o addirittura del processore).
a.capobianco1 (16770 points)
11 54 165
by (16.8k points)
pensavo che il ciclo for servisse a ripetere X volte le operazioni al suo interno..  e per questo, a far perdere tempo pensavo fossero appunto le operazioni svolte al suo in terno e non il ciclo for in se… rimango col dubbio...