Libro "VB 2010 spiegato a mia nonna" (6)

Algoritmi in cucina

La parola algoritmo, utilizzata soprattutto in matematica e in informatica, indica, principalmente, un procedimento per ottenere un certo risultato, attraverso una serie di semplici passi, precisi e ordinati.

Esprimendo questo concetto in modo più rigoroso:

  • l’algoritmo è un insieme ordinato di operazioni;
  • tali operazioni non possono essere ambigue ma devono essere ben determinate
    e calcolabili;
  • l’algoritmo produce un risultato che deve corrispondere con il risultato atteso;
  • il tempo di esecuzione deve essere finito.

Questa definizione ci porta a fare alcune considerazioni.

Per prima cosa, abbiamo un insieme ordinato di operazioni: tali operazioni hanno un ordine preciso che non può essere modificato a pena della non validità dell’algoritmo stesso o della produzione di un risultato diverso da quello atteso. Per esempio, una ricetta di cucina indica un procedimento ben preciso per ottenere il risultato voluto (una torta). Se viene cambiato anche un solo dettaglio, è un algoritmo diverso: otterremo una torta di tipo diverso oppure un pasticcio.

Nella descrizione delle operazioni da eseguire non può esserci alcuna ambiguità e ciascun passo deve essere espresso in modo semplice. Per esempio, per preparare le lasagne alla bolognese dobbiamo preparare pure la besciamella: bisognerà quindi descrivere l’algoritmo per preparare anche la besciamella, altrimenti tale passo non sarà un passo espresso in forma semplice e non ambigua.

Naturalmente l’algoritmo deve produrre un risultato conforme a quello atteso: se utilizziamo un algoritmo per fare una torta e alla fine ci ritroviamo con le lasagne alla bolognese, allora non è l’algoritmo corretto per cucinare una torta.

Infine, il tempo di esecuzione deve essere finito, perché non si può stare all’infinito a cucinare una torta (immaginate quali consumi di gas o di corrente elettrica potremmo avere!). Se utilizziamo un algoritmo che non termina in un tempo adeguato o non termina affatto è come se non avessimo alcun algoritmo.

Vediamo, per esempio, come potrebbe essere un algoritmo per cucinare una torta alle fragole:

  1. preparare la base;
  2. preparare il ripieno alle fragole;
  3. versare il ripieno sulla base;
  4. cuocere in forno per quarantacinque minuti a duecento gradi centigradi.

In questo algoritmo vediamo che c’è una sequenza di passi ordinata, il risultato sembra quello atteso e il tempo di esecuzione è finito (pari a quarantacinque minuti di cottura più il tempo necessario alla preparazione della base e del ripieno).

Esaminando bene l’algoritmo, ci rendiamo però conto che i primi due punti non sono ben determinati e non ci permettono nemmeno di valutare se il tempo di esecuzione sia finito e di quantificare tale tempo.

Se l’esecutore dell’algoritmo è uno specialista (per esempio un pasticcere) sicuramente saprà eseguire correttamente i primi due punti senza ulteriori specificazioni.

In caso contrario, dobbiamo aggiungere le informazioni necessarie per permettere anche a un esecutore inesperto di eseguire l’algoritmo.

In quest’ultimo caso, quindi, dobbiamo includere altri due algoritmi: l’algoritmo per la preparazione di una base per la torta e l’algoritmo per la preparazione di un ripieno alle fragole.

L’algoritmo finale (Figura 1.3) diventa come il seguente:

  1. preparare la base;
    1.1. prendere un terzo di tazza di farina;
    1.2. setacciare la farina;
    1.3. miscelare in una terrina la farina, mezza tazza di burro e un quarto di acqua;
  2. preparare il ripieno alle fragole;
    2.1. pulire duecento grammi di fragole;
    2.2. tagliare le fragole a pezzi in una terrina;
    2.3. aggiungere cento grammi di marmellata di fragole;
    2.4. mescolare per distribuire i pezzi di fragola in modo uniforme;
  3. versare il ripieno sulla base;
  4. cuocere in forno per quarantacinque minuti a duecento gradi centigradi.

Anche in questo caso abbiamo un passo, setacciare la farina (passo 1.2.), che potrebbe essere svolto da un esecutore esperto senza alcuna esitazione, mentre per un esecutore inesperto dovrebbe essere ulteriormente dettagliato. Pensiamo, comunque, che il concetto sia ormai sufficientemente chiaro e che non sia necessario proseguire nella spiegazione di questa ricetta.


 

image
Figura 1.3 – Diagramma di flusso di un algoritmo ed
eventuale  espansione con due ulteriori algoritmi.

Nella Figura 1.3 notiamo che non tutto l’algoritmo è incluso nel percorso principale.

Infatti sono evidenziati, all’interno delle nuvole, altri due algoritmi che vengono richiamati dall’algoritmo principale. Una volta terminati gli algoritmi secondari, il controllo dell’esecuzione del programma torna al passo successivo dell’algoritmo principale.

Potremmo chiamare gli algoritmi secondari anche sottoprocedure o, con un termine più comunemente utilizzato, subroutine (Sub in linguaggio Visual Basic). Se consideriamo, tuttavia, che queste subroutine restituiscono un risultato all’algoritmo chiamante (la “base” nel primo caso e il “ripieno” nel secondo caso) potremmo anche considerarle due funzioni (Function in linguaggio Visual Basic).

Le Sub e le Function sono due elementi del linguaggio molto importanti in Visual Basic, pertanto le vedremo apparire in tutti gli esempi di questo libro.

Approfondiremo meglio nei capitoli successivi i dettagli delle parole riservate di Visual
Basic 2010.

(…segue…)

Fonte: Cap. 1 – libro “Visual Basic 2010 spiegato a mia nonna”, Edizioni FAG Milano, Autore Mario De Ghetto, 2011, http://bit.ly/NRO6Cn.

About these ads

Pubblicato il 20 luglio 2012, in Programmazione, VB2010SAMN, VS 2010 con tag , , . Aggiungi il permalink ai segnalibri. Lascia un commento.

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

Iscriviti

Ricevi al tuo indirizzo email tutti i nuovi post del sito.

Unisciti agli altri 844 follower

%d blogger cliccano Mi Piace per questo: