Il termine "algoritmo" è ispirato dal nome del matematico e astronomo arabo del VII° secolo Abu Ja Mohammed Ibn Musa Al-Khowarizmi che, oltre ad essere l’inventore dello zero e dell’algebra, ha la paternità di quello che è considerato uno dei primi algoritmi della storia: il metodo per sommare due numeri incolonnandoli e procedendo cifra per cifra da destra verso sinistra tenendo conto dei riporti. Per ‘algoritmo’ si può intendere un «metodo di elaborazione da applicare a certi dati iniziali per ottenere dei dati finali o risultati». In ogni caso è importante che, in partenza, il problema da risolvere sia «ben posto» e cioè che sia chiaro l’obiettivo da raggiungere, che i dati di partenza sia noti e sufficienti, che il problema sia risolubile da parte di chi lo affronta. Se manca una di queste condizioni l’algoritmo non può essere individuato.
L’individuazione dell’algoritmo risolutivo di un problema è solo il primo passo di un procedimento in più fasi che conduce alla soluzione del problema stesso in modo automatico con l’utilizzo del sistema di elaborazione. Il passo successivo consiste nella trasformazione dell’algoritmo in un programma scritto usando un linguaggio di programmazione; si può affermare che l’algoritmo e il relativo programma sono due descrizioni, fatte con mezzi diversi, dello stesso metodo di soluzione.

Detto ciò, appare del tutto impraticabile l’idea di affidare la descrizione di un algoritmo all’uso del linguaggio naturale (nel nostro caso la lingua italiana) con il rischio di introdurre ambiguità dovute alla presenza di sinonimi, omonimie, modi diversi di intendere la stessa frase.

Per descrivere gli algoritmi si deve ricorrere a ‘linguaggi formali’ creati appositamente (e quindi artificiali); in queste dispense prenderemo in considerazione due esempi:
• un linguaggio ‘lineare’ basato sul testo, spesso denominato ‘linguaggio di progetto’;
• un linguaggio ‘grafico’ basato su simboli chiamato ‘diagramma di flusso’ (flow chart) o ‘diagramma a blocchi’.

 ESCAPE='HTML'

PREREQUISITI

Conoscenza di base del computer, dell'utilizzo del sistema operativo e della gestione dei file.

COMPETENZE

- Impostare l'algoritmo risolutivo di un semplice problema.

- Realizzare semplici algoritmi con l'uso delle strutture fondamentali.

- Codificare un algoritmo in linguaggio di programmazione.

- Saper utilizzare un ambiente di sviluppo di programmi.

 ESCAPE='HTML'

SCRATCH: programmare giocando

Scratch è un ambiente grafico di lavoro per imparare lo sviluppo di programmi in modo semplice e creare storie interattive, giochi, animazioni grafiche, simulazioni e altro ancora, per poi condividere i programmi realizzati attraverso il Web.
La codifica dei programmi in Scratch consiste nell’impilare blocchi, che presentano forma e colore dipendenti dall’istruzione che si vuole utilizzare, come si fa con i mattoncini delle costruzioni, pezzo dopo pezzo. Così facendo, è possibile avvicinarsi alla programmazione e capirne la logica alla base in modo divertente e creativo.

Ideone

Ideone is an online compiler and debugging tool which allows you to compile source code and execute it online in more than 60 programming languages.

Codehunt

Code Hunt è un gioco basato su browser-educativo indirizzato a chiunque sia interessato alla codifica.
Il giocatore ha l'obiettivo di scoprire frammenti mancanti di codice e realizza un punteggio per ogni livello con bonus extra per eventuali soluzioni eleganti.
Gli utenti imparano, giocando, ad utilizzare operatori aritmetici, istruzioni condizionali, cicli, stringhe, algoritmi di ricerca e molto altro. Code Hunt è un ottimo strumento per costruire o affinare le abilità sugli algoritmi a partire da problemi semplici divertendosi, al contempo, per diventare programmatori esperti.