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: