Fondamenti di Informatica - Università degli studi di Parma
Fondamenti di Informatica - Università degli studi di Parma
Fondamenti di Informatica - Università degli studi di Parma
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Algoritmo <strong>di</strong> Euclide: correttezza<br />
• Ad ogni passo abbiamo che m = q n + r (con<br />
q intero).<br />
• Se r ?0 ogni <strong>di</strong>visore <strong>di</strong> m,n <strong>di</strong>vide anche<br />
r=m-qn. D’altra parte anche ogni <strong>di</strong>visore <strong>di</strong><br />
n,r <strong>di</strong>vide m=qn+r.<br />
• In pratica la coppia m,n primo e dopo lo<br />
scambio m ? n e n ? r hanno lo stesso<br />
MCD.<br />
• Se r=0 l’ algoritmo termina e n e’ l’MCD.<br />
Algoritmo <strong>di</strong> Euclide<br />
• L’algoritmo descritto non è l’unico per<br />
risolvere il problema del MCD<br />
• Ma è il più efficiente se a priori non conosco<br />
nulla dei due numeri<br />
FI - Algoritmi e Programmazione 19<br />
FI - Algoritmi e Programmazione 20<br />
Calcolo MCD modo 2<br />
Calcolo MCD modo 3<br />
• Problema: dati due numeri determinare il<br />
loro massimo comune denominatore:<br />
q scomporre in fattori primi i due numeri<br />
q considerare solo fattori comuni<br />
q prendere quelli con esponente piú piccolo<br />
q moltiplicarli tra loro<br />
• Problema: dati due numeri determinare il loro<br />
massimo comun denominatore<br />
q costruire insieme <strong>di</strong>visori primo numero<br />
q costruire insieme <strong>di</strong>visori secondo numero<br />
q costruire intersezione fra i due insiemi<br />
q in<strong>di</strong>viduare nell'intersezione l'elemento piú grande<br />
FI - Algoritmi e Programmazione 21<br />
FI - Algoritmi e Programmazione 22<br />
Algoritmo<br />
• Per realizzare un algoritmo con un<br />
calcolatore occorre rappresentare la<br />
sequenza <strong>di</strong> passi che portano alla sua<br />
soluzione con istruzioni appartenenti ad un<br />
linguaggio <strong>di</strong> programmazione.<br />
Diagramma <strong>di</strong> Flusso<br />
(Flow-Chart)<br />
• I <strong>di</strong>agrammi <strong>di</strong> flusso sono un formalismo<br />
grafico per descrivere gli algoritmi.<br />
• I <strong>di</strong>agrammi <strong>di</strong> flusso scompongono in passi<br />
successivi gli algoritmi.<br />
• Un <strong>di</strong>agramma <strong>di</strong> flusso è una descrizione più<br />
efficace e meno ambigua <strong>di</strong> una descrizione<br />
a parole.<br />
FI - Algoritmi e Programmazione 23<br />
FI - Algoritmi e Programmazione 24