Algoritmo di Euclide

Algoritmo di Euclide

L’algoritmo di Euclide è un metodo per trovare il massimo comune divisore tra due numeri interi.

Ricordiamo che il massimo comune divisore, MCD, tra due numeri interi è il più grande divisore comune ad entrambi.

Come si determina? Si calcola per ognuno l’elenco dei divisori e tra i due gruppi si individua il numero più grande.

Ricordo che vi avevo presentato l’algoritmo in questa lezione: massimo comune divisore con scratch.

Ma Euclide riuscì a risolvere il problema senza calcolare tutti i divisori!

L’idea è stata questa: anziché calcolare il MCD tra i due numeri a e b, si divide a per b e si calcola il resto r.

Dopo si ricava il MCD tra b ed r e si procede fino a quando si ha resto 0. L’ultimo divisore è il MCD cercato.


Facciamo un esempio:

Prendiamo i due numeri 40 e 15 e procediamo secondo l’algoritmo di Euclide.

Primo passaggio: a/b cioè 40/15=2 resto 10

Secondo passaggio scambiamo a con b e b con r cioè 15/10=1 resto 5

Terzo passaggio scambiamo a con b e b con r cioè 10/5=2 resto 0.

Abbiamo trovato resto zero, quindi il MCD è 5.


Facciamo ancora un altro esempio:

Consideriamo i due numeri 84 e 48.

Avremo questi passaggi:

84/48=1 resto 36

48/36=1 resto 12

36/12=3 resto 0

Allora MCD è 12.


Algoritmo di Euclide per il MCD con Scratch

Bene una volta capito il procedimento sviluppiamo l’algoritmo di Euclide con Scratch.

Innanzitutto scegliamo uno sfondo e uno sprite qualsiasi.

euclide

Dopo creiamo le variabili necessarie:

variabili algoritmo di euclide

Poi realizziamo il nostro codice a blocchi.

– Prendiamo inizialmente i nostri due numeri in input.

– Dopo finché il secondo numero non diventa zero facciamo queste operazioni:

– Memorizziamo nella variabile resto il resto della divisione di numero1 per numero2.

– Nella variabile numero1 memorizziamo il valore di numero2 e nella variabile numero2 memorizziamo il resto.


Provando con l’esempio sopra:

numero1=84 e numero2=48

quindi resto=numero1%numero2 cioè resto=84%48 ovvero resto=36.

Poi memorizziamo in numero1 il valore di numero2 e in numero2 il valore di resto e quindi numero1=48 e numero2=36.

E così via, faccio questi passaggi finché non ottengo più il resto.


Notate che dopo il ciclo ho inserito un’istruzione condizionale: se il numero1 che corrisponde al nostro massimo comune divisore è negativo allora diventa positivo. Perché ad esempio il MCD(84,48)=MCD(-84,48)=MCD(84, -48)=MCD(-84, -48).

Ecco il diagramma a blocchi completo.

scratch 2


Chiaramente si poteva introdurre il controllo per verificare che i numeri presi in input siano interi. Provate a farlo, vi darò la soluzione in un prossimo articolo.

Come si nota l’algoritmo di Euclide per il massimo comune divisore è una soluzione molto più semplice rispetto alla precedente.

Alcuni link utili

Area e perimetro con scratch

Divisori di un numero con scratch

Multipli di un numero con scratch

Numeri pari con scratch

Esercizi con scratch

Potenze con scratch

Quoziente potenze stessa base con scratch

Palindroma con scratch

Storiella con scratch

Serie buffa con scratch

Operazioni matematiche con scratch

Come sommare un intervallo di numeri con scratch

Anno bisestile con scratch

Selezione con scratch

Olimpiadi di informatica con scratch

Olimpiadi di matematica con scratch

Figure equivalenti con scratch


jQuery eq()

jQuery eq()

jQuery eq() method è un metodo che serve ad individuare elementi specifici all’interno di un set di elementi. All’interno del metodo eq() si specifica infatti un indice che indica la posizione dell’elemento che vogliamo selezionare.

La sintassi è dunque questa:

$(selettore).eq(indice)

dove indice rappresenta un numero intero.


Quindi se, data una serie di voci di un elenco puntato, volessi selezionare la voce dell’elenco che indica jQuery potrei utilizzare il metodo eq() specificando l’indice 2.

Ricordiamo infatti che l’indice parte da zero.

<ul>
   <li>Scratch</li>
   <li>Algobuild</li>
   <li>jQuery</li>
   <li>Algobuild</li>
</ul>

Posso dunque utilizzare questo metodo:

$("li").eq(2);

L’indice può essere anche negativo, ma in questo caso si partirà a contare dal basso e non dall’alto e si inizia da -1 (consultate il secondo esempio di questa lezione).


Esempio di utilizzo di jQuery eq()

Facciamo quindi un esempio completo per capire come applicare questo metodo.

Guardate dunque l’elenco sotto, noterete che ho applicato alla voce jQuery dell’elenco una formattazione diversa.

  • Scratch
  • Algobuild
  • jQuery
  • Algobuild


Innanzitutto includiamo la libreria jQuery:

<script src="https://code.jquery.com/jquery-3.4.0.min.js" type="text/javascript"></script>

Dopo inseriamo, in un punto qualunque della pagina, il nostro elenco a cui assegniamo un id. Ciò è importante perchè l’id mi servirà quando userò il selettore nella funzione jQuery.

<ul id="argomenti">
   <li>Scratch</li>
   <li>Algobuild</li>
   <li>jQuery</li>
   <li>Algobuild</li>
</ul>

Infine creo la mia semplicissima funzione in cui utilizzo il metodo eq() e il metodo css(). Notate che come selettore ho utilizzato l’id argomenti e la voce li dell’elenco puntato. Ho utilizzato l’id per distinguere l’elenco da altri possibili elenchi presenti nella pagina.

<script type="text/javascript">
$(document).ready(function(){
  $("#argomenti>li").eq(2).css("background-color", "#ffff00");
});
</script>


Secondo esempio d’uso del metodo eq()

Facciamo un secondo esempio utilizzando un indice negativo.

Guardate quindi l’elenco sotto, noterete che www.codingcreativo.it è di colore blu.

Coding Creativo

Blog sul coding

www.codingcreativo.it


Innanzitutto inserite il codice html:

<div class="testo">
<p>Coding Creativo</p>
<p>Blog sul coding</p>
<p>www.codingcreativo.it</p>
</div>

Poi inserite una semplicissima funzione che utilizza i metodi eq() e css().

<script type="text/javascript">
$(document).ready(function(){
  $(".testo>p").eq(-1).css("color", "blue");
});
</script>

Ovviamente questi sono solo dei semplici esempi d’uso del jQuery eq() method presentati a scopo didattico.

Alcuni link utili

Rimuovere attributi agli elementi del DOM con JavaScript

Creare attributi agli elementi

Creare elementi nel dom con javascript

Dom in javascript

Come creare una galleria di immagini con javascript

Utilizzare gli array in javascript

Come creare una calcolatrice con javascript

Validare un form con javascript

Saper utilizzare il metodo getElementById

Esempi di Javascript corfirm

Esempi con Javascript prompt

Alcuni esempi con javascript alert

Tutorial javascript

Algobuild

Algobuild

In questo tutorial spiegheremo come utilizzare Algobuild per lo sviluppo dei diagrammi di flusso. Chiaramente è possibile utilizzare anche solo carta e penna per creare i diagrammi di flusso.

Algobuild è un software sviluppato per aiutare nella creazione dei flow chart ed è molto semplice da utilizzare.

Ci sono tanti altri software per la creazione dei diagrammi di flusso, lascio a voi la scoperta e la valutazione personale di tali software.

Download Algobuild

Il sito ufficiale è raggiungibile al seguente link: sito ufficiale.

Dopo aver raggiunto il sito ufficiale è possibile effettuare il download del software nell’apposita area di download.

Scaricate la versione più idonea al vostro sistema operativo.

Potete anche consultare il manuale che vi spiega come utilizzare le varie funzioni di Algobuild.

Appena avviate il programma vi trovate davanti una schermata come questa:

schermata Algobuild

La sezione del main è lo spazio riservato alla costruzione del diagramma di flusso. A destra trovate invece la parte inerente la pseudo-codifica.

Nelle sezioni in basso si potrà visualizzare l’andamento dell’algoritmo quando è in esecuzione.

Algobuild istruzioni

Come potete notare, all’avvio del software, troverete già inserite la forma di inizio e quella di fine.

Queste due forme sono collegate da una freccia. Se cliccate su questa freccia con il pulsante sinistro del mouse si apre un menù per inserire una nuova istruzione.

Algobuild istruzioni

Ogni istruzione in Algobuild è rappresentata da una forma geometrica opportuna.

Ad esempio il parallelogramma è utilizzato per l’input e l’output.

Il rettangolo è utilizzato per l’assegnamento e quindi per fare delle operazioni che vengono poi assegnate ad una variabile.

Il rombo con i due rami a destra e a sinistra rappresenta l’istruzione if che consente di effettuare una scelta.

Oltre a queste forme geometriche Algobuild mette a disposizione altre forme per rappresentare le tre istruzioni iterative: while, do-while e for.

Queste strutture dette anche cicliche sono utilizzate per ripetere un certo numero di istruzioni.

Infine il commento permette di inserire una descrizione in qualsiasi punto del diagramma di flusso.

Conclusioni

In questa lezione abbiamo presentato il software Algobuild per la creazione dei diagrammi di flusso, nella prossima lezione svilupperemo degli esempi.

Alcuni link utili

Indice argomenti diagramma a blocchi

1 – Diagramma a blocchi

2 – Primi esercizi con i diagrammi di flusso (perimetro triangolo; area di un trapezio)

3 – Altro semplice esercizio sui flow chart (calcolare uno sconto)

4 – Area del cerchio con Algobuild

5 – Precedente e successivo di un numero

6 – Introduzione agli algoritmi di selezione