BIOINFO3 - Lezione 15 ISTRUZIONI Un’ISTRUZIONE è un ordine fornito ad una entità esecutrice di eseguire un’AZIONE Ad esempio, possiamo dire ad un nostro amico di porgerci un libro, oppure “dire” alla nostra televisione di mostrarci il primo canale… L’esecutore potrà essere in grado di svolgere solo un insieme limitato di azioni (es. la TV, un frullatore), oppure potrà essere GENERAL PURPOSE, cioè capace di eseguire una grande varietà di azioni (es. l’uomo, il computer) ESECUTORE istruzione azione BIOINFO3 - Lezione 15
BIOINFO3 - Lezione 15 PROGRAMMI Una sequenza di istruzioni forma un PROGRAMMA. La sequenza delle azioni corrispondenti è chiamata PROCESSO Es: Televisione: mostrami il canale 1, poi alza il volume, poi abbassa la luminosità ESECUTORE istruzione1 azione1 istruzione2 istruzionen ……….. azione2 ……. azionen PROGRAMMA PROCESSO BIOINFO3 - Lezione 15
BIOINFO3 - Lezione 15 IL COMPUTER Il computer è un esecutore general purpose in grado di accettare istruzioni fornitegli utilizzando un particolare LINGUAGGIO. E’ inoltre incredibilmente veloce e preciso. Bisogna però sempre ricordarsi che è in grado di eseguire solo ed esattamente quanto gli viene richiesto. Non ha alcuna capacità di capire quello che sta facendo, né tantomeno verificare se ciò corrisponde esattamente ai nostri desideri BIOINFO3 - Lezione 15
BIOINFO3 - Lezione 15 ALGORITMO Con il termine ALGORITMO si indica la sequenza di azioni necessarie (o le corrispondenti istruzioni) per risolvere un particolare problema. Differenza tra PROCESSO e ALGORITMO (sempre che esista una tale differenza). Il termine algoritmo è spesso usato infatti tranquillamente come sinonimo sia di processo sia di programma La differenza, comunque, è un po’ sottile. Un processo è un insieme generico di azioni, eventualmente anche fini a se stesse. Un algoritmo è invece finalizzato alla soluzione di un particolare problema. Un programma rappresenta una implementazione dell’algoritmo, cioè la sua traduzione in un linguaggio comprensibile dal computer BIOINFO3 - Lezione 15
SOLUZIONE DI UN PROBLEMA BIOINFO3 - Lezione 15 SOLUZIONE DI UN PROBLEMA L’approccio tipicamente utilizzato (in informatica) per risolvere un problema e quindi per sviluppare un algoritmo (eventualmente tradotto poi in un programma scritto in un qualche linguaggio di programmazione) è detto TOP-DOWN. Il problema è spezzato in diversi sottoproblemi e anziché risolvere l’intero problema nella sua complessità si tentano di risolvere i singoli sottoproblemi più semplici problema sottoprobleman sottoproblema1 sottoproblema2 BIOINFO3 - Lezione 15
BIOINFO3 - Lezione 15 FLOW-CHART Una notazione usata per descrivere un algoritmo è quella cosiddetta dei FLOW-CHART (diagrammi di flusso). Un diagramma di flusso descrive il “flusso” delle azioni da svolgere rappresentandolo in una forma grafica. In questa notazione si disegnano dei blocchi, ciascuno dei quali rappresenta una azione (un’istruzione), connessi tra loro da archi orientati, che permettono di identificare l’ordine in cui effettuare le azioni BIOINFO3 - Lezione 15
BIOINFO3 - Lezione 15 INIZIO E FINE L’inizio e la fine di un algoritmo in un flow-chart sono rappresentati da un blocco di tipo ovale. All’interno del blocco normalmente è scritto se si tratta di un blocco di INIZIO o di FINE. Il significato è ovvio: un blocco di inizio è sempre il primo blocco di un flow-chart, mentre un blocco di fine fa terminare l’esecuzione dell’algoritmo INIZIO FINE BIOINFO3 - Lezione 15
BIOINFO3 - Lezione 15 AZIONE GENERICA Quando vogliamo rappresentare l’esecuzione di una azione generica si usa un blocco rettangolare. All’interno del blocco è indicata l’azione. Nella maggior parte dei casi l’azione consiste nell’assegnare ad una VARIABILE il risultato di una ESPRESSIONE calcolata in quel momento. Esempio: “ricava il valore della variabile A, somma 1 a questo valore ed assegna il risultato alla variabile A stessa” Se prima del blocco la variabile A valeva 3, una volta eseguita l’istruzione (effettuata l’operazione) varrà 4 AZIONE A=A+1 BIOINFO3 - Lezione 15
BIOINFO3 - Lezione 15 TEST I test permettono di definire esecuzioni alternative. A seconda del risultato di un’espressione logica (che quindi sarà o VERO o FALSO) è possibile scegliere quale delle due esecuzioni alternative dovrà essere effettivamente intrapresa. Arrivati al blocco di test, rappresentato da un rombo, viene valutata l’espressione logica indicata. Se questa è VERA si prosegue per il percorso indicato con “vero”, se FALSA si prosegue per l’altro percorso falso TEST vero BIOINFO3 - Lezione 15
BIOINFO3 - Lezione 15 INPUT Se desideriamo passare all’algoritmo un valore (che quindi potrà variare da esecuzione ad esecuzione) si disegna un parallelogramma Normalmente all’interno del blocco è indicato il nome della variabile destinata a ricevere il valore di input Ad esempio in un algoritmo che prepara la dieta di una persona un dato di input potrebbe essere il peso della persona (che è un parametro variabile da persona a persona e anche nel tempo, per la stessa persona) da fornire di volta in volta ad ogni differente esecuzione dell’algoritmo. In quest’esempio possiamo chiamare PESO la variabile a cui assegnare il valore ricevuto dall’esterno PESO BIOINFO3 - Lezione 15
OUTPUT In questo caso la simbologia è piuttosto varia. BIOINFO3 - Lezione 15 OUTPUT In questo caso la simbologia è piuttosto varia. All`inizio si usavano blocchi diversi a seconda del tipo di apparecchiatura che portava in output i risultati. C’era un simbolo per le stampanti, un simbolo per il video, un simbolo per il disco, uno per il nastro magnetico, uno per le schede perforate e così via… Oggi preferibilmente viene usato invece lo stesso simbolo a parallelogramma usato per l’input BIOINFO3 - Lezione 15
BIOINFO3 - Lezione 15 UN ESEMPIO Vogliamo disegnare un semplice flow-chart che prepari una dieta personalizzata in base al peso di una persona, fornito in input BIOINFO3 - Lezione 15
BIOINFO3 - Lezione 15 UN ALTRO ESEMPIO Leggere un numero in input. Se pari dividerlo per 2, se dispari moltiplicarlo per 2. Stampare il risultato BIOINFO3 - Lezione 15
ESEMPI DI ESECUZIONE inizio 5a a pari? 5 pari? falso a=a*2=5*2=10 BIOINFO3 - Lezione 15 ESEMPI DI ESECUZIONE inizio 5a a pari? 5 pari? falso a=a*2=5*2=10 stampare a 10 fine ------------------------ 8a a pari? 8 pari? vero a=a/2=8/2=4 stampare a 4 BIOINFO3 - Lezione 15
BIOINFO3 - Lezione 15 UN ALTRO ESEMPIO Leggere dei numeri dall’input e sommarli finchè non viene letto un numero negativo. Stampare il numero dei numeri letti e la loro somma e media. BIOINFO3 - Lezione 15
ESECUZIONE inizio n=0, s=0 3a a<0? 3<0? falso n=n+1=0+1=1 BIOINFO3 - Lezione 15 ESECUZIONE inizio n=0, s=0 3a a<0? 3<0? falso n=n+1=0+1=1 s=s+a=0+3=3 7a a<0? 7<0? falso n=n+1=1+1=2 s=s+a=3+7=10 -1a a<0? -1<0? vero n>0? 2>0? vero m=s/n=10/2=5 stampare n,s,m 2 10 5 fine BIOINFO3 - Lezione 15
BIOINFO3 - Lezione 15 ESERCIZIO Provate voi adesso: Leggere dei numeri da input fino a trovarne uno uguale a 0. Stampare il valore massimo dei numeri letti BIOINFO3 - Lezione 15
BIOINFO3 - Lezione 15 Esercizio 11. Disegnare un flow-chart per risolvere il seguente problema. Leggere da input due numeri a e b. Se i due numeri sono uguali stampare “NUMERI UGUALI”. Altrimenti stampare “NUMERI DIVERSI” Esercizio 12. Leggere una frase f da input. Leggere un numero n da input. Stampare n volte la frase f BIOINFO3 - Lezione 15
RIEPILOGO Istruzioni Programmi Algoritmi e soluzione di problemi BIOINFO3 - Lezione 15 RIEPILOGO Istruzioni Programmi Algoritmi e soluzione di problemi Flow-Chart: blocchi di inizio e fine, di azione, di test, di input e output BIOINFO3 - Lezione 15