ISTRUZIONI
Un’ISTRUZIONE è un ordine fornito ad una entità esecutrice di
eseguire un’AZIONE
istruzione
ESECUTORE
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)
BIOINFO3 - Lezione 15
1
PROGRAMMI
Una sequenza di istruzioni forma un PROGRAMMA. La
sequenza delle azioni corrispondenti è chiamata PROCESSO
istruzione1
istruzione2
………..
istruzionen
PROGRAMMA
ESECUTORE
azione1
azione2
…….
azionen
PROCESSO
Es: Televisione: mostrami il canale 1, poi alza il volume, poi
abbassa la luminosità
BIOINFO3 - Lezione 15
2
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
3
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
4
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
sottoproblema1
BIOINFO3 - Lezione 15
sottoproblema2
sottoprobleman
5
FLOW-CHART
Una notazione usata per descrivere un
algoritmo è quella cosiddetta dei FLOWCHART (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
6
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
7
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.
AZIONE
Esempio: “ricava il valore della variabile A, somma 1 a questo
valore ed assegna il risultato alla variabile A stessa”
A=A+1
Se prima del blocco la variabile A valeva 3, una volta eseguita
l’istruzione (effettuata l’operazione) varrà 4
BIOINFO3 - Lezione 15
8
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.
falso
TEST
vero
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
BIOINFO3 - Lezione 15
9
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
PESO
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
BIOINFO3 - Lezione 15
10
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
11
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
12
UN ALTRO ESEMPIO
Leggere un numero in input.
Se pari dividerlo per 2, se
dispari moltiplicarlo per 2.
Stampare il risultato
BIOINFO3 - Lezione 15
13
ESEMPI DI ESECUZIONE
inizio
5a
a pari? 5 pari? falso
a=a*2=5*2=10
stampare a 10
fine
-----------------------inizio
8a
a pari? 8 pari? vero
a=a/2=8/2=4
stampare a 4
fine
BIOINFO3 - Lezione 15
14
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
15
ESECUZIONE
inizio
n=0, s=0
3a
a<0? 3<0? falso
n=n+1=0+1=1
s=s+a=0+3=3
7a
a<0? 7<0? falso
n=n+1=1+1=2
s=s+a=3+7=10
-1a
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
16
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
17
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
18
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
19
Scarica

bioinfo3