Algoritmi e Strutture Dati

64
Algoritmi e Strutture Dati Bruno Bertaccini Gestione Informatica dei Dati CdL in Statistica

description

Algoritmi e Strutture Dati. Gestione Informatica dei Dati CdL in Statistica. Bruno Bertaccini. La programmabilità degli elaboratori. - PowerPoint PPT Presentation

Transcript of Algoritmi e Strutture Dati

Page 1: Algoritmi  e  Strutture Dati

Algoritmi e

Strutture Dati

Bruno Bertaccini

Gestione Informatica dei Dati

CdL in Statistica

Page 2: Algoritmi  e  Strutture Dati

Bruno Bertaccini (mail to: [email protected])

La programmabilità degli elaboratori

Page 3: Algoritmi  e  Strutture Dati

Bruno Bertaccini (mail to: [email protected])

La programmabilità degli elaboratori

Gli elaboratori elettronici sono macchine programmabili:

l’utilizzatore deve fornire loro un’insieme di istruzioni che indichino le operazioni da compiere

ed i dati su cui operare.

Un insieme coerente di tali istruzioni si chiama PROGRAMMA

Tali istruzioni, una volta memorizzate nella memoria centrale, verranno prese in considerazione dalla CPU

che si occuperà dell’attivazione dei dispositivi necessari alla loro elaborazione

Introduzione

Page 4: Algoritmi  e  Strutture Dati

Bruno Bertaccini (mail to: [email protected])

La programmabilità degli elaboratori

Un elaboratore elettronico, a differenza di quanto ci si potrebbe aspettare, è in grado di compiere

SOLO operazioni estremamente semplici (es: una radice quadrata, una funzione trigonometrica richiedono

programmi specifici)

Tuttavia un elaboratore è molto veloce e può eseguire un gran numero di operazioni

nell’unità di tempo(la velocità dipende anche dal fatto che le operazioni

sono appunto elementari)

Introduzione

OPERAZIONI ELEMENTARI

Page 5: Algoritmi  e  Strutture Dati

Bruno Bertaccini (mail to: [email protected])

La programmabilità degli elaboratori

Classificazione delle istruzioni elementari in base alla diversità delle funzioni svolte dall’elaboratore e agli effetti che queste hanno sui dati.

Le operazioni elementari

1. Istruzioni aritmetiche e logiche

2. Istruzioni di trasferimento

3. Istruzioni di input-output

4. Istruzioni di controllo

5. Istruzioni ausiliarie

Page 6: Algoritmi  e  Strutture Dati

Bruno Bertaccini (mail to: [email protected])

La programmabilità degli elaboratori

Istruzioni Aritmetiche e Logiche.servono ad eseguire operazioni aritmetiche ( + ,- , * , / ) elogiche (NOT, AND, OR)sui dati presenti nella memoria centrale

Istruzioni di Trasferimento.permettono lo spostamento dei dati all’interno della memoria centrale e tra questa e i registri presenti nella unità aritmetico logica (ALU) della CPU

Le operazioni elementari

Page 7: Algoritmi  e  Strutture Dati

Bruno Bertaccini (mail to: [email protected])

La programmabilità degli elaboratori

Istruzioni Input-Output.consentono l’immissione e l’emissione dei dati nella e dalla memoria centrale; il dialogo avviene generalmente con in i dispositivi di I/O e e con le memorie ausiliarie.

Istruzioni di Controllo.guidano lo svolgimento dell’elaborazione controllando l’ordine di esecuzione delle istruzioni elementari;sono eseguite dalla unità di controllo (CU) della CPU.

Istruzioni Ausiliarie.sono deputate a riordinare alcuni dispositivi fisici dell’elaboratore e a controllarne lo stato.

Le operazioni elementari

Page 8: Algoritmi  e  Strutture Dati

Bruno Bertaccini (mail to: [email protected])

La programmabilità degli elaboratori

Operazione Elementare (generalizzata)

codice operativo operando

Le operazioni elementari

indica il tipo di operazione da compiere

identifica i dati o i dispositivi che interessano l’operazione

L’insieme dei codici operativi e le regole che guidano il modo di esprimere gli operatori costituiscono un sistema di programmazione, un sistema completo

per gestire il funzionamento dell’elaboratore ed indirizzarlo alla risoluzione di un determinato

problema.

Page 9: Algoritmi  e  Strutture Dati

Bruno Bertaccini (mail to: [email protected])

La programmabilità degli elaboratori

Il linguaggio macchina ed i linguaggi simboliciTale sistema è detto LINGUAGGIO MACCHINA perché è il SOLO comprensibile dall’unità di controllo dell’elaboratore.Il Linguaggio Macchina varia da elaboratore ad elaboratore ed è estremamente complicato da utilizzare ed interpretare da parte dell’utilizzatore.

Generalmente vengono utilizzati altri linguaggi di programmazione, i cosiddetti LINGUAGGI SIMBOLICI, basati su una modalità di espressione di operatori ed operandi più simili ai criteri usati dal linguaggio umano.

Page 10: Algoritmi  e  Strutture Dati

Bruno Bertaccini (mail to: [email protected])

La programmabilità degli elaboratori

Il linguaggio macchina ed i linguaggi simboliciUn programma espresso per mezzo di un linguaggio simbolico non è direttamente utilizzabile dall’unità di controllo dell’elaboratore;

sarà prima necessario TRADURLO per mezzo di un apposito programma nell’unico linguaggio comprensibile alla CU: il linguaggio macchina appunto.

Page 11: Algoritmi  e  Strutture Dati

Bruno Bertaccini (mail to: [email protected])

Gli ALGORITMI

Page 12: Algoritmi  e  Strutture Dati

Bruno Bertaccini (mail to: [email protected])

Gli Algoritmi

Algoritmi: aspetti definitori

I problemi umani la cui soluzione è demandata ad un elaboratore sono notoriamente MOLTO COMPLESSI.(es: per x = 1.347)

Ma un elaboratore è in grado di svolgere SOLO OPERAZIONI ELEMENTARI e NON operazioni complesse.

Come è possibile allora utilizzare un elaboratore per risolvere un problema

complesso?

2( ) 2 3 5f x x x

Page 13: Algoritmi  e  Strutture Dati

Bruno Bertaccini (mail to: [email protected])

Algoritmi: aspetti definitori

Occorre SCOMPORRE il problema complesso in una serie di operazioni elementari in grado di poter essere compiute da un esecutore che non riesce ASSOLUTAMENTE a prendere in considerazione il problema nella sua interezza.

Tale procedimento è detto PROCESSO ALGORITMICO

ed il risultato di tale processo è dettoALGORITMO

Gli Algoritmi

Page 14: Algoritmi  e  Strutture Dati

Bruno Bertaccini (mail to: [email protected])

Algoritmi: aspetti definitori

L’ALGORITMO è una serie finita e completa di operazioni elementari ordinate alla soluzione di un problema, da effettuare meccanicamente, ossia attraverso una esecuzione precisa delle regole, senza implicare alcuna conoscenza del caso da trattare.

Le operazioni in cui viene scomposto il processo risolutivo del problema devono essere comprensibili ed eseguibili dall’entità cui l’algoritmo è destinato, entità che può non necessariamente essere l’elaboratore.

In pratica esisterà sempre un limite preciso al numero di istruzioni che possono comporre l’algoritmo e al tempo di esecuzione dello stesso, limite dettato dalle caratteristiche dell’elaboratore.

Gli Algoritmi

Page 15: Algoritmi  e  Strutture Dati

Bruno Bertaccini (mail to: [email protected])

Algoritmi: caratteristiche

Un ALGORITMO adatto ad essere utilizzato da un elaboratore deve rispondere ad alcune proprietà essenziali; deve cioè essere:

effettivo;

definito e non ambiguo;

generale;

finito.

Gli Algoritmi

Page 16: Algoritmi  e  Strutture Dati

Bruno Bertaccini (mail to: [email protected])

Algoritmi: caratteristiche

Deve avere un punto di partenza e deve essere EFFETTIVOcioè deve avere un punto di partenza ed ogni operazione deve produrre un certo e bendeterminato risultato ogni volta che si presentano le stesse condizioni.

Deve essere DEFINITO e NON AMBIGUOè necessario ciò che sia stato previsto ogni aspetto che il problema può assumere durante la fase risolutiva e che ogni espressione sia interpretabile in maniera univoca senza ambiguità.

Gli Algoritmi

Page 17: Algoritmi  e  Strutture Dati

Bruno Bertaccini (mail to: [email protected])

Algoritmi: caratteristiche

Deve essere GENERALEossia utilizzabile per una serie o classe di problemi.Dominio dell’algoritmo: insieme dei dati che possono essere elaborati e le condizioni che ne permettono l’elaborazione

Deve essere FINITOdeve cioè poter giungere al suo termine dopo che sia stato eseguito un numero anche elevatissimo ma finito di istruzioni(poiché spesso le istruzioni possono essere eseguite in modo ciclico – loop -, sarà necessario che non sia possibile prevedere loop non aventi limite finito).

Gli Algoritmi

Page 18: Algoritmi  e  Strutture Dati

Bruno Bertaccini (mail to: [email protected])

Analisi e Programmazione

ANALISI: fase di comprensione del problema, in base all’obiettivo da perseguire. Conduce ad un disegno articolato del problema stesso.

Gli Algoritmi

Ogni problema che l’uomo si pone comporta una serie di azioni (“decisioni”) stabilite in base allo stato dell’informazione disponibile all’insorgere del problema stesso: si effettua una rassegna degli elementi determinanti alla soluzione, elencando gli elementi necessari e quelli disponibili.

Vengono “decise” le azioni da compiere e la loro sequenza temporale.

Page 19: Algoritmi  e  Strutture Dati

Bruno Bertaccini (mail to: [email protected])

Analisi e Programmazione

Generalizzazione della fase d’Analisi:

definizione dei dati in ingresso;

definizione dei risultati in uscita;

individuazione dei termini del problema e dei possibili metodi risolutivi;

determinazione della necessità e della disponibilità di risorse (di calcolo e memorizzazione);

generalizzazione del problema (definizione di una classe di problemi da risolvere);

descrizione informale dell’algoritmo o degli algoritmi necessari a risolvere la procedura.

Gli Algoritmi

Page 20: Algoritmi  e  Strutture Dati

Bruno Bertaccini (mail to: [email protected])

Analisi e Programmazione

PROGRAMMAZIONE: ha lo scopo di descrivere le operazioni che l’elaboratore deve eseguire per risolvere il problema.

Gli Algoritmi

Fase della programmazione

insieme delle attività e delle funzioni che trasformano il bisogno (necessità di risolvere il problema con un elaboratore) in una richiesta di formulazione,

costruzione e definizione delle regole di comportamento per la soluzione di classi di processi di elaborazione, fatte ad un insieme di risorse di calcolo.

Page 21: Algoritmi  e  Strutture Dati

Bruno Bertaccini (mail to: [email protected])

Analisi e Programmazione

Tecnica TOP-DOWN: si definiscono inizialmente un insieme d’azioni a grandi linee (macro istruzioni) e si procede per raffinamenti successivi, fino ad arrivare ad operazioni elementari che l’esperienza designa come indipendenti dal linguaggio di programmazione utilizzato per scrivere il programma.

Tecnica BOTTOM-UP: parte dai singoli dati e dalle operazioni elementari da compiere su di essi, arrivando, per aggregazione, ad una o più procedure automatiche.

Gli Algoritmi

Page 22: Algoritmi  e  Strutture Dati

Bruno Bertaccini (mail to: [email protected])

Analisi e Programmazione

Indipendentemente dalla tecnica usata, la programmazione si concretizza nei seguenti passi:

Gli Algoritmi

definizione formale dell’algoritmo, spesso in forma grafica tramite un diagramma a blocchi;

stesura del programma nel linguaggio di programmazione prescelto;

prova del programma.La programmazione è sicuramente

un processo creativo non vincolato da regole, che deve tenere in considerazione alcuni criteri di

ottimizzazione quali i tempi di calcolo e l’occupazione delle memorie.

Page 23: Algoritmi  e  Strutture Dati

Bruno Bertaccini (mail to: [email protected])

Esempi di algoritmi

Gli Algoritmi

Una ricetta di cucina.

Lettura di due valori numerici e stampa del maggiore tra i due

Lettura di due valori numerici A e Be stampa di (A-B)^2

Lettura del valore numerico n e calcolo di

Lettura di due valori numerici M e N (con M>=N) e calcolo del M.C.D.

Ordinamento di una sequenza di numeri

0

2n

i

i

Page 24: Algoritmi  e  Strutture Dati

Bruno Bertaccini (mail to: [email protected])

Algoritmi rilevanti

Gli Algoritmi

Progetto Genoma Umano per la mappatura dei 100000 geni del DNA umano;

Navigazione Internet: percorsi ottimali che i dati devono percorrere in rete per il rapido accesso a grandi quantità di informazioni e motori di ricerca;

Percorso stradale minimo data una certa rete viaria (es: mappe in internet);

Compressione del testo, crittografia e firme digitali;

Allocazione ottimale dei prodotti negli scaffali di un supermercato (P. L. e Game Theory);

Gestione delle code;

Page 25: Algoritmi  e  Strutture Dati

Bruno Bertaccini (mail to: [email protected])

Efficienza di un Algoritmo

Quand’è che un Algoritmo è EFFICIENTE?

Gli Algoritmi

quando è CORRETTO: cioè produce il risultato atteso;

quando è VELOCE (in termini di tempo impiegato per produrre il risultato);

quando è PARSIMONIOSO (in termini di risorse allocate per produrre il risultato).

Page 26: Algoritmi  e  Strutture Dati

Bruno Bertaccini (mail to: [email protected])

Strutture dati

(fondamenti)

Page 27: Algoritmi  e  Strutture Dati

Bruno Bertaccini (mail to: [email protected])

Classificazione

Strutture dati

Variabili numeriche

Variabili carattere

Bit

Intere

Reali (razionali)

Complesse

precisione singola

precisione doppia

Page 28: Algoritmi  e  Strutture Dati

Bruno Bertaccini (mail to: [email protected])

Strutture di memorizzazione

Strutture dati

Variabili singole

Vettori: una sequenza indicizzabile di valori numerici dello stesso tipo es: stringa = vettore di caratteri

Matrici: una sequenza indicizzabile di vettori dello stesso tipo

Array: matrici multidimensionali

Liste: array differenziabili per tipo di valori memorizzabili

Page 29: Algoritmi  e  Strutture Dati

Bruno Bertaccini (mail to: [email protected])

I DIAGRAMMI a BLOCCHI

(o Diagrammi di Flusso)

Page 30: Algoritmi  e  Strutture Dati

Bruno Bertaccini (mail to: [email protected])

Aspetti definitori

I Diagrammi a Blocchi

I Diagrammi a Blocchi sono uno strumento molto utilizzato in informatica per una chiara e semplice esposizione in forma grafica degli algoritmi.

Sono uno strumento fondamentale per l’analista (servono a definire in modo schematico il processo algoritmico di scomposizione di un problema), danno una visione immediata dell’iter risolutivo e facilitano il controllo di correttezza logica dell’algoritmo.

Inoltre hanno anche uno scopo comunicativo: la documentazione di un algoritmo nel tempo.È infatti molto più facile leggere un algoritmo schematizzato mediante un diagramma a blocchi che leggerne la sua traduzione in uno specifico linguaggio di programmazione.

Page 31: Algoritmi  e  Strutture Dati

Bruno Bertaccini (mail to: [email protected])

Aspetti definitori

I Diagrammi a Blocchi

Requisiti essenziali di un Diagramma a Blocchi:

• deve esistere un solo blocco di inizio;

• deve essere previsto almeno un blocco di fine;

• il diagramma può esibire un numero finito di blocchi di controllo;

• il diagramma può prevedere un numero finito di blocchi relativi sia ad operazioni aritmetiche e logiche che di I/O.

Page 32: Algoritmi  e  Strutture Dati

Bruno Bertaccini (mail to: [email protected])

Simboli e regole di costruzione

I Diagrammi a Blocchi

Punto di Inizio e punti di Fine

Operazioni Aritmetiche e Logiche

Operazioni di Input/Output

Decisioni

Sottoprogrammi

Connessioni ad un qualsiasi punto del diagramma

Page 33: Algoritmi  e  Strutture Dati

Bruno Bertaccini (mail to: [email protected])

I Diagrammi a Blocchi

Regole di implementazione:

• ogni blocco logico/aritmetico o di I/O deve avere una sola linea in ingresso e una sola in uscita;

• ogni blocco di controllo deve avere una sola linea in ingresso e due (o più) linee in uscita;

• una linea può inserirsi in un blocco o in un’altra linea;

• dall’unico blocco iniziale parte una sola linea, seguendo la quale, attraverso un insieme non vuoto di blocchi deve potersi raggiungere uno dei blocchi finali.

Simboli e regole di costruzione

Page 34: Algoritmi  e  Strutture Dati

Bruno Bertaccini (mail to: [email protected])

I Diagrammi a Blocchi

es. 1 : scambio di due valori numerici

semplice scambio di 2 valori numerici immessi da tastiera nelle variabili A e B

START

AUX = BB = A

A = AUX

INPUT AINPUT B

PRINT APRINT B

STOP

Page 35: Algoritmi  e  Strutture Dati

Bruno Bertaccini (mail to: [email protected])

I Diagrammi a Blocchi

es. 1 : scambio di due valori numerici

semplice scambio di 2 valori numerici immessi da tastiera nelle variabili A e B

START

INPUT AINPUT B

PRINT APRINT B

STOP

ScambiaA con B

AUX = BB = A

A = AUX

ScambiaA con B

dove

Page 36: Algoritmi  e  Strutture Dati

Bruno Bertaccini (mail to: [email protected])

I Diagrammi a Blocchi

es. 2 : scambio di due valori numerici

scambio di 2 valori numerici immessi da

tastiera nelle variabili A e B solo se il primo è

maggiore del secondo

START

INPUT AINPUT B

PRINT APRINT B

STOP

A > B

No

ScambiaA con B

Page 37: Algoritmi  e  Strutture Dati

Bruno Bertaccini (mail to: [email protected])

I Diagrammi a Blocchi

es. 3 : somma dei valori di un vettore

Somma di una certa sequenza di valori, immessi da tastiera

all’interno di un vettore

START

INPUT N

No

DIM V[N]

INPUT V[1]…

INPUT V[N]

J = 1S = 0

J <= N

S = S + V[J]

J = J + 1

PRINT S

STOP

Page 38: Algoritmi  e  Strutture Dati

Bruno Bertaccini (mail to: [email protected])

I Diagrammi a Blocchi

es. 3 : somma dei valori di un vettore

Somma degli elementi di un vettore V già presente in

memoriaSTART

No

J = 1S = 0

J <= N

S = S + V[J]

J = J + 1

PRINT S

STOP

Sommavettore

Page 39: Algoritmi  e  Strutture Dati

Bruno Bertaccini (mail to: [email protected])

I Diagrammi a Blocchi

es. 4 : ricerca del minimo di un vettore

Ricerca del minimo di un vettore V già presente in

memoria

START

No

min = V[1]N = length(V)

J = 2

J <= NPRINT

min

STOP

V[J] < min

min = V[J]

J = J +1

No

Minimo diun vettore

Page 40: Algoritmi  e  Strutture Dati

Bruno Bertaccini (mail to: [email protected])

I Diagrammi a Blocchi

es. 5 : somma, media, min e max di un vettore

Somma, media, min e max di una sequenza di

valori, immessi da tastiera

all’interno di un vettore

START

INPUT N

DIM V[N]

INPUT V[1]…

INPUT V[N]

Sommavettore

Minimo di unvettore

Massimo diun vettore

STOPA

A

media = S/N

PRINTmedia

Page 41: Algoritmi  e  Strutture Dati

Bruno Bertaccini (mail to: [email protected])

I Diagrammi a Blocchi

es. 6 : calcolo di una serie parziale

Lettura del valore numerico n e calcolo di

0

2n

i

i

START

INPUT N

No

J = 0S = 0

J <= N

S = S + 2^J

J = J + 1

PRINT S

STOP

Page 42: Algoritmi  e  Strutture Dati

Bruno Bertaccini (mail to: [email protected])

I Diagrammi a Blocchi

es. 7 : calcolo del MCD (algoritmo di Euclide)

Lettura di due valori numerici M e N

(con M>=N) e calcolo del M.C.D.

START

INPUT NINPUT M

No

M > N

Q = INT(N/M)

R = N - M*Q

PRINT”MCD :”, M

STOP

ScambiaM con N

R = 0N = M

M = R

SìNo

Page 43: Algoritmi  e  Strutture Dati

Bruno Bertaccini (mail to: [email protected])

I Diagrammi a Blocchi

es. 7 : calcolo del MCD (algoritmo inefficiente)

Lettura di due valori numerici M e N

(con M>=N) e calcolo del M.C.D.con un algoritmo

inefficiente

START

INPUT NINPUT M

No

M > N

ScambiaM con N

Q = INT(N / J)R = N - J*Q

J = M

R = 0

J = J - 1

No PRINT”MCD :”, J

STOP

Page 44: Algoritmi  e  Strutture Dati

Bruno Bertaccini (mail to: [email protected])

I Diagrammi a Blocchi

es. 8 : radici di un polinomio di 2° grado

Ricerca delle due radici reali x1 e x2, di

una equazione del tipo

, ,a b c

2 0ax bx c

2 4b ac

se

2

bx

a

2

bx

a

>0 :

=0 :

<0 : non esistono radici reali

Page 45: Algoritmi  e  Strutture Dati

Bruno Bertaccini (mail to: [email protected])

I Diagrammi a Blocchi

es. 8 : radici di un polinomio di 2° grado

Ricerca delle due radici reali x1 e x2, di

una equazione del tipo2 0ax bx c

START

INPUTA,B,C

delta =B*B-4*A*C

deltaPRINT

”non esistonoradici reali”

STOP

rad = 0

rad =SQRT(delta)

X1 =(-B + rad)/(2*A)

X2 =(-B - rad)/(2*A)

PRINTX1, X2

STOP

< 0

= 0

> 0

Page 46: Algoritmi  e  Strutture Dati

Bruno Bertaccini (mail to: [email protected])

I Diagrammi a Blocchi

es. 9 : ricerca in un vettore

Verifica della presenza di un certo elemento A all’interno di un vettore

V preesistente in memoria

START

INPUT A

J = 1N = length(V)

A = V[J] STOPPRINT

”elementotrovato”

J > N

No

STOPPRINT

”elementonon trovato”

J = J +1

No

Page 47: Algoritmi  e  Strutture Dati

Bruno Bertaccini (mail to: [email protected])

I Diagrammi a Blocchi

es. 10 : ordinamento

di un vettoreOrdinamento di un

vettore V preesistente in memoria:

un’ipotesi di lavoroStart

Stop

1:

2:

3:

4:

5:

6:

7 4 3 8

7 4 3 8

4 7 3 8

3 7 4 8

3 7 4 8

3 4 7 8

3 4 7 8

3 4 7 8

Page 48: Algoritmi  e  Strutture Dati

Bruno Bertaccini (mail to: [email protected])

I Diagrammi a Blocchi

es. 10 : ordinamento

di un vettoreOrdinamento

di un vettore V preesistente in

memoria

START

N = length(V)

I = 1

I <= (N-1)

J <= N

J = I + 1

V[I] > V[J]

ScambiaV[I] con V[J]

J = J + 1

I = I + 1

PRINTV

STOP

No

No

No

SORTvettore

Page 49: Algoritmi  e  Strutture Dati

Bruno Bertaccini (mail to: [email protected])

I Diagrammi a Blocchi

es. 11 : ricerca in un vettore

(alg. dicotomico)

START

SORTV

A < V[L1]or

A > V[L2]

INPUT A

PRINT A“non trovato”

STOP

L1 = 1L2 = length(V)

PRINT A“trovato”

STOP

A = V[L1]or

A = V[L2]

No

med =INT ( (L1 + L2) / 2 )

A >= V[med]

No

L2 = med L1 = med

SìNo

Verifica della presenza di un certo elemento A

all’interno di un vettore V preesistente in memoria,

previa ordinamento

Attenzione: possibilità di loop

infinito

Page 50: Algoritmi  e  Strutture Dati

Bruno Bertaccini (mail to: [email protected])

I Diagrammi a Blocchi

es. 11 : ricerca in un vettore

(alg. dicotomico)

Verifica della presenza di un certo elemento A

all’interno di un vettore V preesistente in memoria,

previa ordinamento

START

SORTV

A < V[L1]or

A > V[L2]

INPUT A

PRINT A“non trovato”

STOP

L1 = 1L2 = length(V)

PRINT A“trovato”

STOP

A = V[L1]or

A = V[L2]

No

med =INT ( (L1 + L2) / 2 )

A >= V[med]

No

L2 = med L1 = med

SìNo

L1 = L2 - 1

No

Page 51: Algoritmi  e  Strutture Dati

Bruno Bertaccini (mail to: [email protected])

Lo PSEUDOLINGUAGGIO

un ponte verso i linguaggi di programmazione

Page 52: Algoritmi  e  Strutture Dati

Bruno Bertaccini (mail to: [email protected])

Lo pseudolinguaggio

La traduzione del diagramma a blocchi in pseudolinguaggio

Condizioni: IF (condizione) THENinizio bloccoistruzione 1istruzione 2…fine blocco

ELSEinizio bloccoistruzione 1istruzione 2…fine blocco

Page 53: Algoritmi  e  Strutture Dati

Bruno Bertaccini (mail to: [email protected])

La traduzione del diagramma a blocchi in pseudolinguaggio

Condizioni:

IF (condizione) THEN

[blocco istruzioni]

ELSE IF (condizione) THEN

[blocco istruzioni]

ELSE

[blocco istruzioni]

Lo pseudolinguaggio

Page 54: Algoritmi  e  Strutture Dati

Bruno Bertaccini (mail to: [email protected])

La traduzione del diagramma a blocchi in pseudolinguaggio

Condizioni: SWITCH (espressione)

CASE (condizione1):

[blocco istruzioni]

CASE (condizione2):

[blocco istruzioni]

CASE (condizione3):

[blocco istruzioni]

OTHER:

[blocco istruzioni]

NON in tutti i

linguaggi diprogrammazion

e

Lo pseudolinguaggio

Page 55: Algoritmi  e  Strutture Dati

Bruno Bertaccini (mail to: [email protected])

La traduzione del diagramma a blocchi in pseudolinguaggio

Iterazioni: FOR (variabile) = (inizio) TO (fine) (step)

inizio bloccoistruzione 1istruzione 2…fine blocco

WHILE (condizione)inizio bloccoistruzione 1istruzione 2…fine blocco

Lo pseudolinguaggio

Page 56: Algoritmi  e  Strutture Dati

Bruno Bertaccini (mail to: [email protected])

Lo pseudolinguaggio

es. 1 : scambio di due valori numerici

main {input Ainput BAUX = BB = AA = AUXprint Aprint B}

START

AUX = BB = A

A = AUX

INPUT AINPUT B

PRINT APRINT B

STOP

Page 57: Algoritmi  e  Strutture Dati

Bruno Bertaccini (mail to: [email protected])

es. 2 : scambio di due valori numerici

START

INPUT AINPUT B

PRINT APRINT B

STOP

A > B

No

ScambiaA con B

main {input Ainput Bif (A > B) then {

AUX = BB = AA = AUX}

print Aprint B}

Lo pseudolinguaggio

Page 58: Algoritmi  e  Strutture Dati

Bruno Bertaccini (mail to: [email protected])

es. 3 : somma dei valori di un vettoreSTART

INPUT N

No

DIM V[N]

INPUT V[1]…

INPUT V[N]

J = 1S = 0

J <= N

S = S + V[J]

J = J + 1

PRINT S

STOP

main {input Ndim V(N)S = 0for I = 1 to N {

input V(I)S = S + V(I)}

print S}

Lo pseudolinguaggio

Page 59: Algoritmi  e  Strutture Dati

Bruno Bertaccini (mail to: [email protected])

es. 4 : ricerca del minimo di un vettore

main {input Ndim W(N)for I = 1 to N {

input W(I)}

MIN = minimo(W)print MIN}

minimo(V) {N = length(V)M = V(1)for I = 2 to N {

if (V(I) < M) then {M = V(I)}

}return (M)}

Lo pseudolinguaggio

Page 60: Algoritmi  e  Strutture Dati

Bruno Bertaccini (mail to: [email protected])

es. 6 : calcolo della serie parziale0

2n

i

i

START

INPUT N

No

J = 0S = 0

J <= N

S = S + 2^J

J = J + 1

PRINT S

STOP

main {input NS = 0for I = 0 to N {

S = S + 2^I}

print S}

Lo pseudolinguaggio

Page 61: Algoritmi  e  Strutture Dati

Bruno Bertaccini (mail to: [email protected])

es. 7 : calcolo del MCD (algoritmo di Euclide)

START

INPUT NINPUT M

No

M > N

Q = INT(N/M)

R = N - M*Q

PRINT”MCD :”, M

STOP

ScambiaM con N

R = 0N = M

M = R

SìNo

main {input Ninput Mif (M > N) then {

AUX = MM = NN = AUX

}Q = int(N/M)R = N - M*Qwhile (R<>0) {

N = MM = RQ = int(N/M)R = N - M*Q}

print “MCD :”, M}

Lo pseudolinguaggio

Page 62: Algoritmi  e  Strutture Dati

Bruno Bertaccini (mail to: [email protected])

es. 8 : radici di un polinomio di 2° grado

Lo pseudolinguaggio

main {input A, B, Cif (A <> 0) then {

DELTA = B*B – 4*A*Cif (DELTA >= 0) then {

RAD = 0if (DELTA > 0)

then {RAD =

SQRT(DELTA)}

X1 = (-B + RAD)/(2*A)

X2 = (-B - RAD)/(2*A)

print “le radici sono: “, X1, X2

} else{

print “non esistono radici reali”

}}

else {print “è stato inserito un polinomio non di 2°

grado”}

}

Page 63: Algoritmi  e  Strutture Dati

Bruno Bertaccini (mail to: [email protected])

es. 9 : ricerca in un vettore

main {input Ndim W(N)for I = 1 to N {

input W(I)}

input APOS = ricerca1 (W,A)if (POS > 0) then {

print “trovato in posizione ”, POS}

}

ricerca1 (V,E) {N = length(V)F = 0for I = 1 to N {

if (V(I) = E) then {F = II = N}

}return (F)}

Lo pseudolinguaggio

Page 64: Algoritmi  e  Strutture Dati

Bruno Bertaccini (mail to: [email protected])

es. 10 : ordinamento di un vettore

Lo pseudolinguaggio

main {input Ndim W(N)for I = 1 to N {

input W(I)}

W = ordina (W)for I = 1 to N {

print W(I)}

}

ordina (V) {N = length(V)for I = 1 to N-1 {

for J = I+1 to N { if (V(J) < V(I)) then {

A = V(I)V(I) = V(J)V(J) = A}

}}

return (V)}