ALGORITMO

r

Indica un procedimento risolutivo di un problema.Insieme di istruzioni, chiare e non ambigue, che, eseguite in un ordine preciso, consentono di risolvere, in un tempo finito e in un numero finito di passi, una classe di problemi.Quanto sopra, consente di individuare 4 caratteristiche essenziali di un algoritmo:non ambiguitàdeterminismofinitezzageneralitànon ambiguitàLe istruzioni non devono essere interpretabili, poiché il calcolatore non è in grado di farlo.Esempio: un comando forward() non è eseguibile da un calcolatore poiché non contiene la quantità di spazio da percorrere; allo stesso modo, un comando gira() (del tipo left(); right()), non contiene l'angolo di rotazione (ad esempio left(45), significa gira di 45 gradi a sinistra e questo è un comando non ambiguo, poiché contiene tutte le informazioni per eseguire l'istruzione voluta.determinismoUn algoritmo è deterministico, ovvero, a parità di input, fornisce sempre lo stesso output.Ad esempio, se l'algoritmo esegue (banalmente) la somma tra due numeri, una volta fissati i numeri in input (ad es: 5 e 12) la somma risultante in output sarà sempre, in qualsiasi momento, da chiunque venga utilizzato ed eseguito l'algoritmo, sempre la stessa, ovvero 17.finitezzaSignifica che l'algoritmo, non deve avere dei cicli infiniti, rischiando così di non terminare mai.Ad esempio, supponiamo di voler costruire un algoritmo che, inseriti dei numeri in input, calcoli la somma di questi numeri, fino a quando non viene inserito il valore zero.Questo algoritmo non è finito, poiché se non viene inserito il valore zero, continuerà all'infinito.generalitàL'algoritmo deve risolvere non un problema specifico ma una classe di problemi.Ad esempio, tornando sull'algoritmo di somma tra due numeri: l'algoritmo non deve risolvere il problema della somma tra 5 e 12 ma tra due numeri generici (anche grandi, ad esempio: 123097 e 23243). Quindi, cambiando l'input, cambia l'output ma risolve la somma tra due numeri qualsiasi.

Teorema di Bohm - Jacopini

r

Qualsiasi algoritmo è rappresentabile con una delle seguenti 3 strutture di controllo:sequenzaselezioneiterazione

ITERAZIONE

r

Si parla di iterazione quando alcune istruzioni di un programma informatico devono essere eseguite più volte, ovvero ripetute.

INDEFINITA

r

Si ha quando le istruzioni da ripetere devono essere iterate un numero non noto a priori di volte ma in base ad una condizione che può cambiare durante l'esecuzione dell'algoritmo.Ad esempio:Ripeti avanti di 100 fin quando una variabile specifica non cambia valore.In informatica questo costrutto è noto come CICLO WHILEIn questo caso avremo bisogno di una variabile che definisce la condizione la arresto dell'algoritmo.esempio su edublocks

a

DEFINITA

r

Si ha quando le istruzioni da ripetere devono essere iterate un numero noto a priori di volte (sappiamo quante volte dobbiamo ripeterle).Ad esempio:Ripeti 5 volte avanti di 100.In informatica questo costrutto è noto come CICLO FORIn questo caso avremo bisogno di una variabile contatore (generalmente indicato con la lettera i, j, k, oppure count o contatore) che viene aggiornato ad ogni iterazione del ciclo (ovvero ogni ripetizione) finché non si arriverà ad eseguire le istruzioni del ciclo il numero di volte desiderato (noto a priori, ricordiamo)esempio su edublocks

a

SEQUENZA

r

Esecuzione di azioni in un ordine rigorosamente rigido:prima Apoi Bpoi C...e così viaesempio

a

SELEZIONE

r

Esempi su edublocks

a

MULTIPLA

r

Sulla base del risultato di un TEST che può avere più di 2 risultati possibili (almeno 3), si procede con una elaborazione alternativaIn informatica (Python) si può tradurre coni costrutti di programmazioneIF....THEN....ELIF...ELIF...ELSEMATCH (test) CASE

BINARIA

r

Sulla base del risultato di un TEST che può essere VERO (V) o FALSO (F), l'elaborazione procede per due strade alternative.In informatica di traduce con il costrutto di programmazioneIF....THEN....ELSEESEMPIO

a

TEST (IF)

FALSO (ELSE)

VERO (THEN)