Il 0% ha trovato utile questo documento (0 voti)
19 visualizzazioni33 pagine

02 SAA-FI Algoritmi

Caricato da

vsjy8fr6mg
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Il 0% ha trovato utile questo documento (0 voti)
19 visualizzazioni33 pagine

02 SAA-FI Algoritmi

Caricato da

vsjy8fr6mg
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Sei sulla pagina 1/ 33

Algoritmi e Logica

A.A. 2023/2024

[email protected]
Cosa e come interpreta
la nostra mente

• Immagini
• Colori
• Associazioni di idee e di suoni
• Informazioni che ci coinvolgono
emotivamente
• Informazioni che ci incuriosiscono
• Informazioni curiose e strane
Cosa e come interpreta
la nostra mente - 2

Neurone
Rappresentazione grafica
Schema
Rappresentazione grafica
Diagramma a blocchi
Rappresentazione grafica
Mappa Concettuale
Rappresentazione grafica
Mappa Mentale
Rappresentazione grafica
Mappa Mentale – a cosa servono
Rappresentazione grafica
Mappa Mentale – come si fanno
Esercizio on line

https://www.mindmup.com/
Da scaricare

http://www.xmind.net/
Rappresentazione grafica
Diagramma di Flusso
Programmazione
• E` l'attività con cui si predispone l'elaboratore ad eseguire
un particolare insieme di azioni su particolari informazioni
(dati), allo scopo di risolvere un certo problema.

istruzioni

DATI Calcolatore RISULTATI


Elettronico
ALGORITMO
è l'insieme ordinato delle azioni che
risolve un dato problema P.
• l’algoritmo descrive un metodo risolutivo attraverso
un insieme ordinato di azioni.
• l'esecuzione dell'algoritmo è affidata ad un
generico "esecutore", cioè una macchina astratta
(non necessariamente un calcolatore !) in grado di
interpretare ed eseguire ogni azione specificata
nell'ordine indicato.
Algoritmo
risolutivo di P

Esecutore
DATI di P RISULTATI
di P
Esempio: la preparazione del caffè
Esecutore: essere umano corredato di caffettiera "moka",
cucina a gas e macina-caffe`;
Algoritmo:
1. svitare la caffettiera;
2. se si dispone di caffè macinato:
riempire il filtro con il caffè` macinato,
altrimenti se si dispone di caffè` in chicchi:
• macinarlo e ripetere il punto 2;
• altrimenti terminare (il caffè non si può
fare..).
3. riempire la parte inferiore della caffettiera con acqua;
4. inserire il filtro nella macchina;
5. avvitare la caffettiera;
6. accendere il fuoco a gas;
7. collocare la moka sul fuoco;
8. attendere l'uscita del caffe`;
9. spegnere il fuoco;
10. fine (il caffè è` pronto).
Esempio: la preparazione del caffè
Esecutore: essere umano corredato di caffettiera "moka", cucina a gas
e macina-caffe`;

Set di istruzioni:
• operazioni fondamentali sulla caffettiera:
svitare avvitare
riempire il filtro
riempire con
acqua spostare

• operazioni fondamentali sulla cucina a gas:


accendere
spegnere

• operazioni fondamentali sul macina-caffe`:


macinare

• altre operazioni:
verifica di condizioni
ripetizione di
operazioni attesa
..
Proprietà fondamentali dell’Algoritmo
1. Eseguibilità: ogni “istruzione” deve essere eseguibile da parte dell’esecutore
dell’algoritmo;
2. Non Ambiguità`: ogni istruzione deve essere univocamente interpretabile
dall'esecutore
3. Finitezza: il numero totale di azioni da eseguire, per ogni insieme di dati di ingresso,
è finito.

Se almeno una delle 3 proprietà` non è soddisfatta, la sequenza non è un algoritmo.

Altre proprietà` desiderabili:


• generalità`: corretto funzionamento dell'algoritmo anche variando alcuni aspetti del
problema (ad esempio, la dimensione dell'insieme dei dati, il tipo dei dati, ecc.)
• efficienza: tanto minore è il numero di azioni eseguite per la risoluzione del
problema, tanto maggiore è` l'efficienza.
• determinismo: possibilità di prevedere esattamente prima dell'esecuzione la
sequenza di azioni che verranno eseguite, per ogni insieme di dati.
• ...
Algoritmi e Programmi

• Se l'esecutore è un elaboratore elettronico:


è necessario conoscere l'insieme di istruzioni che è in
grado di interpretare
è necessario conoscere quali tipi di informazioni (dati) è
in grado di rappresentare

Gli aspetti 1. e 2. sono peculiari del formalismo


scelto per esprimere l'algoritmo all'interno del
sistema di elaborazione, cioè del
Linguaggio di Programmazione
Rappresentazione di Algoritmi:
Diagrammi di flusso
è un formalismo che consente di rappresentare graficamente gli algoritmi.

• un diagramma di flusso descrive le azioni da eseguire ed il loro ordine


di esecuzione.

• ad ogni tipo di azione corrisponde ad un simbolo grafico (blocco)


diverso.

• ogni blocco ha un ramo in ingresso ed uno o più rami in uscita;


collegando tra loro i vari blocchi attraverso i rami, si ottiene un
diagramma di flusso

• un diagramma di flusso appare, quindi, come un insieme di blocchi,


collegati fra loro da linee orientate che specificano la sequenza in cui i
blocchi devono essere eseguiti (flusso del controllo di esecuzione).
Blocchi semplici
Inizio e fine esecuzione (start e stop): marcano inizio e fine di un
algoritmo
• Inizio e` il blocco da cui deve iniziare l'esecuzione (uno solo ogni
algoritmo).
• Il blocco fine fa terminare l'esecuzione dell'algoritmo (almeno uno).

INIZIO

FINE
Blocchi semplici
Assegnazione :
calcola il valore dell’espressione a destra del simbolo "<-" e lo si
attribuisce (lo si assegna) alla variabile indicata a sinistra del simbolo
(con eventuale perdita del valore precedente di V)

Esempio:

V<-E

dove V è il nome di una variabile, E è una espressione.

Significato: " Calcola il valore dell’espressione E e assegnalo alla variabile V."

N.B. Il valore di V viene, in generale, modificato.


Blocchi semplici
Ingresso (lettura, read, input):

Si ricevono dal dispositivo di ingresso (per esempio, la tastiera) tanti valori


quante sono le variabili specificate all’interno del blocco (separate da
virgole), e si attribuiscono (si assegnano) nello stesso ordine alle
variabili.

Ad esempio:

V, W, Z

Significato: "leggi i tre valori dati in ingresso, ed assegnali


rispettivamente alle variabili V, W, e Z.”
Quindi: se durante l'esecuzione, se vengono digitati dalla tastiera i valori:
5, 7, 9, allora la variabile V assumerà il valore 5, W il valore 7 e Z il
valore 9.
Blocchi semplici

Uscita (stampa, print, output):


i valori delle espressioni specificate all'interno del blocco vengono
calcolati e successivamente trasmessi al dispositivo di uscita (per
esempio, il video).

Ad esempio:

A+B, X

Significato: "calcola il valore dell'espressione A+B e di X e


trasmettili in uscita.”

Quindi: se A vale 10, B vale 7 e X vale -25, l'esecuzione del blocco


provochera` la stampa dei 2 valori: 17 e -25.
NB: I valori di A, B e X non vengono alterati dall’esecuzione del blocco.
Esempio: start

somma di due
interi dati da A,B
input
C<-A+B

FINE
Blocco Condizione
Condizione:
Si valuta la condizione specificata all’interno del blocco: se è
verificata,
si prosegue con la linea di flusso contrassegnata da “SI” (o ok, vero,
true..), altrimenti (se non è verificata) si prosegue per il ramo
etichettato con “NO” (falso, false,..).

Esempio:
SI
E NO

dove E è un'espressione relazionale (o logica): ritorna valore vero, oppure


falso.

Significato: " Calcola il valore dell’espressione E: se è vero, prosegui


per il ramo SI, altrimenti prosegui per il ramo NO".

NB. Il blocco condizione è l’elemento di base per realizzare alternative e ripetizioni.


Strutture di controllo

Mediante i blocchi fondamentali finora visti, è


possibile costruire delle strutture da utilizzare
per il controllo del flusso di esecuzione
dell’algoritmo:
Alternativa: esprime la scelta tra due
possibili azioni (o sequenze di azioni)
mutuamente esclusive.
Ripetizione: esprime la ripetizione di una
sequenza di istruzioni.
Strutture:
Alternativa
INIZIO

algoritmo che, A,B


dati due valori
interi A e B,
stampa il SI NO
minore dei due.
A<B

C<-A C<-B

C
alternativa

FINE
Strutture: INIZIO

ripetizione
N
ripetizione
algoritmo che, dato
un valore intero
positivo N, stampa
I<-1

tutti gli interi > 0 e SI

<= N.
I>N
NO

I<-I+1

FINE
Strutture: Ripetizione (o iterazione)

Nel caso più generale, è costituita da 4 elementi:

• Inizializzazione: assegnazione dei valori iniziali alle variabili


caratteristiche del ciclo (viene eseguita una sola volta);

• Corpo: esecuzione delle istruzioni fondamentali del ciclo che devono


essere eseguite in modo ripetitivo;

• Modifica: modifica dei valori delle variabili che controllano l'esecuzione


del ciclo (eseguito ad ogni iterazione);

• Controllo: determina, in base al valore delle variabili che controllano


l'esecuzione del ciclo se il ciclo deve essere ripetuto o meno.
Ripetizione
INIZIO

N
ripetizione

Inizializzazione I<-1

SI
Controllo
I>N
NO

I Corpo

I<-I+1 Modifica

FINE
Addizione INIZIO

X,Y,Z
variabili lettura
X,Y (inizializzazione)

Algoritmo che Z<-0


calcola la somma
assegnamento

come sequenza di
somme SI
Y=Z condizione (controllo)

NO

X<-X+1 assegnamento (modifica)

Z<-Z+1
assegnamento (corpo)

FINE
Moltiplicazione: INIZIO

X,Y,Z
variabili lettura
X,Y (inizializzazione)

Algoritmo che Z<-0


calcola il prodotto
assegnamento

come sequenza di
somme (si suppone SI
X =0 condizione (controllo)
X>0). NO

X<-X-1 assegnamento (modifica)

Z<-Z+Y
assegnamento (corpo)

stampa Z

FINE
Definizione di calcolatore

Una sequenza finita di


operazioni elementari dove
ciascuna operazione è una
tra:

• Assegnazione
• Aggiungi uno
• Iterazione condizionata
illimitata.

Potrebbero piacerti anche