bioinfo3 - lezione 151 istruzioni unistruzione è un ordine fornito ad una entità esecutrice di...
TRANSCRIPT
BIOINFO3 - Lezione 15 11
ISTRUZIONIISTRUZIONI
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)
ESECUTOREistruzione azione
BIOINFO3 - Lezione 15 22
PROGRAMMIPROGRAMMI
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 azione1istruzione2
istruzionen
……….. azione2…….azionen
PROGRAMMA PROCESSO
BIOINFO3 - Lezione 15 33
IL COMPUTERIL 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 44
ALGORITMOALGORITMO
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 55
SOLUZIONE DI UN PROBLEMASOLUZIONE 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
sottoproblema1 sottoproblema2 sottoprobleman
BIOINFO3 - Lezione 15 66
FLOW-CHARTFLOW-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 77
INIZIO E FINEINIZIO 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 88
AZIONE GENERICAAZIONE 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 99
TESTTEST
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
TEST
vero
falso
BIOINFO3 - Lezione 15 1010
INPUTINPUT
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 1111
OUTPUTOUTPUT
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 1212
UN ESEMPIOUN ESEMPIOVogliamo disegnare un semplice flow-chart che prepari una dieta personalizzata in base al peso di una persona, fornito in input
BIOINFO3 - Lezione 15 1313
UN ALTRO ESEMPIOUN ALTRO ESEMPIO
Leggere un numero in input. Se pari dividerlo per 2, se dispari moltiplicarlo per 2. Stampare il risultato
BIOINFO3 - Lezione 15 1414
ESEMPI DI ESECUZIONEESEMPI DI ESECUZIONE
inizio
5a
a pari? 5 pari? falso
a=a*2=5*2=10
stampare a 10
fine
------------------------
inizio
8a
a pari? 8 pari? vero
a=a/2=8/2=4
stampare a 4
fine
BIOINFO3 - Lezione 15 1515
UN ALTRO ESEMPIOUN 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 1616
ESECUZIONEESECUZIONE
inizion=0, s=03aa<0? 3<0? falson=n+1=0+1=1s=s+a=0+3=37aa<0? 7<0? falson=n+1=1+1=2s=s+a=3+7=10-1aa<0? -1<0? veron>0? 2>0? verom=s/n=10/2=5stampare n,s,m 2 10 5fine
BIOINFO3 - Lezione 15 1717
ESERCIZIOESERCIZIO
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 1818
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 1919
RIEPILOGORIEPILOGO
•Istruzioni
•Programmi
•Algoritmi e soluzione di problemi
•Flow-Chart: blocchi di inizio e fine, di azione, di test, di input e output