Esercitazione sugli algoritmi 4

annuncio pubblicitario
ESERCITAZIONE SUGLI ALGORITMI NUMERO QUATTRO
Autori:_____________________________________________ Data: ___________________
ATTENZIONE: Al termine dello svolgimento dell’esercitazione questo file compilato in ogni sua
parte dev’essere inviato all’insegnante su Classiperlo sezione Carica.
PROTEZIONE ANTI-COPIA
Le immagini inserite nel documento devono essere protette con un watermark (scelto a piacere) che
si deve sovrapporre all’immagine stessa.
PRIMO ALGORITMO
Compilate la trace table del seguente algoritmo con gli ingressi indicati e poi provate ad eseguirlo
con Algobuld.
→ vedi le trace table alla pagina seguente
Variabile
A
B
R
Valori
Iniziali
28
21
I iterazione
II iterazione
III iterazione
IV iterazione
V iteraz
II iterazione
III iterazione
IV iterazione
V iteraz
II iterazione
III iterazione
IV iterazione
V iteraz
II iterazione
III iterazione
IV iterazione
V iteraz
Valore visualizzato in uscita:
Variabile
A
B
R
Valori
Iniziali
25
30
I iterazione
Valore visualizzato in uscita:
Variabile
A
B
R
Valori
Iniziali
5
3
I iterazione
Valore visualizzato in uscita:
Variabile
A
B
R
Valori
Iniziali
8
16
I iterazione
Valore visualizzato in uscita:
Siete riusciti a capire a cosa serve l’algoritmo?
PROVATE A TRADURRE L’ALGORITMO IN JAVASCRIPT E SCRIVETE QUI SOTTO LA
VOSTRA TRADUZIONE:
SECONDO ALGORITMO
L’algoritmo precedente serve a calcolare il Massimo Comune Divisore fra due numeri col metodo
detto “Algoritmo di Euclide”.
Vogliamo adesso scrivere un algoritmo per calcolare il Minimo Comune Multiplo. A tale scopo
sfruttiamo questa formula:
dove:
-
a e b sono i due numeri di cui voglio calcolare il Minimo Comune Multiplo (mcm)
MCD(a,b) rappresenta il massimo comune divisore fra a e b
Utilizzando la formula precedente e il PRIMO ALGORITMO per il calcolo del Massimo Comune
Divisore, scrivere un algoritmo per il calcolo del Minimo Comune Multiplo e copiarlo qui sotto:
PROVATE A TRADURRE L’ALGORITMO IN JAVASCRIPT E SCRIVETE QUI SOTTO LA
VOSTRA TRADUZIONE:
TERZO ALGORITMO
Questo algoritmo è particolare in quanto contiene due cicli uno dentro l’altro. Quando un ciclo ne
contiene un altro si parla di cicli nidificati o annidati.
Ad ogni ripetizione del ciclo esterno (while A< DIM) il ciclo interno (B <= DIM) viene ripetuto
molte volte.
La situazione assomiglia un po’ a due ingranaggi, uno più grande e l’altro più piccolo:
L’ingranaggio grande rappresenta il ciclo esterno, mentre l’ingranaggio piccolo è il ciclo interno.
Ogni volta che l’ingranaggio grande (ciclo esterno) fa un giro, l’ingranaggio piccolo (ciclo interno)
fa molti giri.
Per capire come funziona e a cosa serve l’algoritmo, scrivetelo con Algobuild e provate poi ad
eseguirlo passo-passo compilando le seguenti tabelle di verità (si tratta di una sola tabella di verità
che per comodità è stata suddivisa in pezzi):
Variabile
DIM
A
B
C
Valori
Iniziali
I iterazione
ciclo
esterno
iterazione
ciclo interno
1.1
iterazione
ciclo interno
1.2
iterazione
ciclo interno
1.3
3
Valori visualizzati in uscita:
Variabile
II iterazione
ciclo
esterno
iterazione
ciclo interno
2.1
iterazione
ciclo interno
2.2
iterazione
ciclo interno
2.3
iterazione
ciclo interno
3.1
iterazione
ciclo interno
3.2
iterazione
ciclo interno
3.3
DIM
A
B
C
Valori visualizzati in uscita:
Variabile
III
iterazione
ciclo
esterno
DIM
A
B
C
Valori visualizzati in uscita:
Siete riusciti a capire a cosa potrebbe servire l’algoritmo?
PROVATE A TRADURRE L’ALGORITMO IN JAVASCRIPT E SCRIVETE QUI SOTTO LA
VOSTRA TRADUZIONE:
QUARTO ALGORITMO
L’algoritmo mostrato nella pagina precedente è piuttosto complesso, quindi vi suggerisco subito di
provare a scriverlo con Algobuild.
Nell’algoritmo sono presenti due cicli annidati uno dentro l’altro.
Provate ad eseguirlo fornendo i seguenti valori di ingresso e scrivendo accanto ad ogni valore che
cosa viene visualizzato (ATTENZIONE: non è una trace-table; per ogni valore di ingresso bisogna
eseguire l’algoritmo e scrivere i valori che vengono visualizzati in uscita):
Valore di ingresso (IN A)
12
17
21
30
Valori visualizzati in uscita (OUT B)
Siete riusciti a capire a cosa potrebbe servire l’algoritmo?
PROVATE A TRADURRE L’ALGORITMO IN JAVASCRIPT E SCRIVETE QUI SOTTO LA
VOSTRA TRADUZIONE:
Scarica