Algoritmi e Strutture Dati Gestione Informatica dei Dati

  • Slides: 64
Download presentation
Algoritmi e Strutture Dati Gestione Informatica dei Dati Cd. L in Statistica Bruno Bertaccini

Algoritmi e Strutture Dati Gestione Informatica dei Dati Cd. L in Statistica Bruno Bertaccini

La programmabilità degli elaboratori Bruno Bertaccini (mail to: brunob@ds. unifi. it)

La programmabilità degli elaboratori Bruno Bertaccini (mail to: brunob@ds. unifi. it)

La programmabilità degli elaboratori Introduzione Gli elaboratori elettronici sono macchine programmabili: l’utilizzatore deve fornire

La programmabilità degli elaboratori Introduzione 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 Bruno Bertaccini (mail to: brunob@ds. unifi. it)

La programmabilità degli elaboratori Introduzione Un elaboratore elettronico, a differenza di quanto ci si

La programmabilità degli elaboratori Introduzione 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) OPERAZIONI ELEMENTARI 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) Bruno Bertaccini (mail to: brunob@ds. unifi. it)

La programmabilità degli elaboratori Le operazioni elementari Classificazione delle istruzioni elementari in base alla

La programmabilità degli elaboratori Le operazioni elementari Classificazione delle istruzioni elementari in base alla diversità delle funzioni svolte dall’elaboratore e agli effetti che queste hanno sui dati. 1. Istruzioni aritmetiche e logiche 2. Istruzioni di trasferimento 3. Istruzioni di input-output 4. Istruzioni di controllo 5. Istruzioni ausiliarie Bruno Bertaccini (mail to: brunob@ds. unifi. it)

La programmabilità degli elaboratori Le operazioni elementari Istruzioni Aritmetiche e Logiche. servono ad eseguire

La programmabilità degli elaboratori Le operazioni elementari Istruzioni Aritmetiche e Logiche. servono ad eseguire operazioni aritmetiche ( + , - , * , / ) e logiche (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 Bruno Bertaccini (mail to: brunob@ds. unifi. it)

La programmabilità degli elaboratori Le operazioni elementari Istruzioni Input-Output. consentono l’immissione e l’emissione dei

La programmabilità degli elaboratori Le operazioni elementari 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. Bruno Bertaccini (mail to: brunob@ds. unifi. it)

La programmabilità degli elaboratori Le operazioni elementari Operazione Elementare (generalizzata) codice operativo operando indica

La programmabilità degli elaboratori Le operazioni elementari Operazione Elementare (generalizzata) codice operativo operando 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. Bruno Bertaccini (mail to: brunob@ds. unifi. it)

La programmabilità degli elaboratori Il linguaggio macchina ed i linguaggi simbolici Tale sistema è

La programmabilità degli elaboratori Il linguaggio macchina ed i linguaggi simbolici Tale 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. Bruno Bertaccini (mail to: brunob@ds. unifi. it)

La programmabilità degli elaboratori Il linguaggio macchina ed i linguaggi simbolici Un programma espresso

La programmabilità degli elaboratori Il linguaggio macchina ed i linguaggi simbolici Un 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. Bruno Bertaccini (mail to: brunob@ds. unifi. it)

Gli ALGORITMI Bruno Bertaccini (mail to: brunob@ds. unifi. it)

Gli ALGORITMI Bruno Bertaccini (mail to: brunob@ds. unifi. it)

Gli Algoritmi: aspetti definitori I problemi umani la cui soluzione è demandata ad un

Gli 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? Bruno Bertaccini (mail to: brunob@ds. unifi. it)

Gli Algoritmi: aspetti definitori Occorre SCOMPORRE il problema complesso in una serie di operazioni

Gli 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 è detto ALGORITMO Bruno Bertaccini (mail to: brunob@ds. unifi. it)

Gli Algoritmi: aspetti definitori L’ALGORITMO è una serie finita e completa di operazioni elementari

Gli 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. Bruno Bertaccini (mail to: brunob@ds. unifi. it)

Gli Algoritmi: caratteristiche Un ALGORITMO adatto ad essere utilizzato da un elaboratore deve rispondere

Gli 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. Bruno Bertaccini (mail to: brunob@ds. unifi. it)

Gli Algoritmi: caratteristiche Deve avere un punto di partenza e deve essere EFFETTIVO cioè

Gli Algoritmi: caratteristiche Deve avere un punto di partenza e deve essere EFFETTIVO cioè deve avere un punto di partenza ed ogni operazione deve produrre un certo e ben determinato 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à. Bruno Bertaccini (mail to: brunob@ds. unifi. it)

Gli Algoritmi: caratteristiche Deve essere GENERALE ossia utilizzabile per una serie o classe di

Gli Algoritmi: caratteristiche Deve essere GENERALE ossia 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 FINITO deve 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). Bruno Bertaccini (mail to: brunob@ds. unifi. it)

Gli Algoritmi Analisi e Programmazione ANALISI: fase di comprensione del problema, in base all’obiettivo

Gli Algoritmi Analisi e Programmazione ANALISI: fase di comprensione del problema, in base all’obiettivo da perseguire. Conduce ad un disegno articolato del problema stesso. 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. Bruno Bertaccini (mail to: brunob@ds. unifi. it)

Gli Algoritmi Analisi e Programmazione Generalizzazione della fase d’Analisi: definizione dei dati in ingresso;

Gli Algoritmi 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. Bruno Bertaccini (mail to: brunob@ds. unifi. it)

Gli Algoritmi Analisi e Programmazione PROGRAMMAZIONE: ha lo scopo di descrivere le operazioni che

Gli Algoritmi Analisi e Programmazione PROGRAMMAZIONE: ha lo scopo di descrivere le operazioni che l’elaboratore deve eseguire per risolvere il problema. 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. Bruno Bertaccini (mail to: brunob@ds. unifi. it)

Gli Algoritmi Analisi e Programmazione Tecnica TOP-DOWN: si definiscono inizialmente un insieme d’azioni a

Gli Algoritmi 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. Bruno Bertaccini (mail to: brunob@ds. unifi. it)

Gli Algoritmi Analisi e Programmazione Indipendentemente dalla tecnica usata, la programmazione si concretizza nei

Gli Algoritmi Analisi e Programmazione Indipendentemente dalla tecnica usata, la programmazione si concretizza nei seguenti passi: 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. Bruno Bertaccini (mail to: brunob@ds. unifi. it)

Gli Algoritmi Esempi di algoritmi Una ricetta di cucina. Lettura di due valori numerici

Gli Algoritmi Esempi di algoritmi Una ricetta di cucina. Lettura di due valori numerici e stampa del maggiore tra i due Lettura di due valori numerici A e B e 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 Bruno Bertaccini (mail to: brunob@ds. unifi. it)

Gli Algoritmi rilevanti Progetto Genoma Umano per la mappatura dei 100000 geni del DNA

Gli Algoritmi rilevanti 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; … Bruno Bertaccini (mail to: brunob@ds. unifi. it)

Gli Algoritmi Efficienza di un Algoritmo Quand’è che un Algoritmo è EFFICIENTE? quando è

Gli Algoritmi Efficienza di un Algoritmo Quand’è che un Algoritmo è EFFICIENTE? 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). Bruno Bertaccini (mail to: brunob@ds. unifi. it)

Strutture dati (fondamenti) Bruno Bertaccini (mail to: brunob@ds. unifi. it)

Strutture dati (fondamenti) Bruno Bertaccini (mail to: brunob@ds. unifi. it)

Strutture dati Classificazione Variabili numeriche Bit Intere Reali (razionali) precisione singola precisione doppia Complesse

Strutture dati Classificazione Variabili numeriche Bit Intere Reali (razionali) precisione singola precisione doppia Complesse Variabili carattere Bruno Bertaccini (mail to: brunob@ds. unifi. it)

Strutture dati Strutture di memorizzazione Variabili singole Vettori: una sequenza indicizzabile di valori numerici

Strutture dati Strutture di memorizzazione 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 Bruno Bertaccini (mail to: brunob@ds. unifi. it)

I DIAGRAMMI a BLOCCHI (o Diagrammi di Flusso) Bruno Bertaccini (mail to: brunob@ds. unifi.

I DIAGRAMMI a BLOCCHI (o Diagrammi di Flusso) Bruno Bertaccini (mail to: brunob@ds. unifi. it)

I Diagrammi a Blocchi Aspetti definitori I Diagrammi a Blocchi sono uno strumento molto

I Diagrammi a Blocchi Aspetti definitori 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. Bruno Bertaccini (mail to: brunob@ds. unifi. it)

I Diagrammi a Blocchi Aspetti definitori Requisiti essenziali di un Diagramma a Blocchi: •

I Diagrammi a Blocchi Aspetti definitori 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 di I/O. Bruno Bertaccini (mail to: brunob@ds. unifi. it)

I Diagrammi a Blocchi Simboli e regole di costruzione Punto di Inizio e punti

I Diagrammi a Blocchi Simboli e regole di costruzione Punto di Inizio e punti di Fine Operazioni Aritmetiche e Logiche Operazioni di Input/Output Decisioni Sottoprogrammi Connessioni ad un qualsiasi punto del diagramma Bruno Bertaccini (mail to: brunob@ds. unifi. it)

I Diagrammi a Blocchi Simboli e regole di costruzione Regole di implementazione: • ogni

I Diagrammi a Blocchi Simboli e regole di costruzione 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. Bruno Bertaccini (mail to: brunob@ds. unifi. it)

I Diagrammi a Blocchi es. 1 : scambio di due valori numerici semplice scambio

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 Bruno Bertaccini (mail to: brunob@ds. unifi. it)

I Diagrammi a Blocchi es. 1 : scambio di due valori numerici semplice scambio

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 dove Bruno Bertaccini (mail to: brunob@ds. unifi. it)

I Diagrammi a Blocchi es. 2 : scambio di due valori numerici scambio di

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 Bruno Bertaccini (mail to: brunob@ds. unifi. it)

I Diagrammi a Blocchi es. 3 : somma dei valori di un vettore Somma

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 Bruno Bertaccini (mail to: brunob@ds. unifi. it)

I Diagrammi a Blocchi es. 3 : somma dei valori di un vettore Somma

I Diagrammi a Blocchi es. 3 : somma dei valori di un vettore Somma degli elementi di un vettore V già presente in memoria Bruno Bertaccini (mail to: brunob@ds. unifi. it)

I Diagrammi a Blocchi es. 4 : ricerca del minimo di un vettore Ricerca

I Diagrammi a Blocchi es. 4 : ricerca del minimo di un vettore Ricerca del minimo di un vettore V già presente in memoria Bruno Bertaccini (mail to: brunob@ds. unifi. it)

I Diagrammi a Blocchi es. 5 : somma, media, min e max di un

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 Bruno Bertaccini (mail to: brunob@ds. unifi. it)

I Diagrammi a Blocchi es. 6 : calcolo di una serie parziale Lettura del

I Diagrammi a Blocchi es. 6 : calcolo di una serie parziale Lettura del valore numerico n e calcolo di Bruno Bertaccini (mail to: brunob@ds. unifi. it)

I Diagrammi a Blocchi es. 7 : calcolo del MCD (algoritmo di Euclide) Lettura

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. Bruno Bertaccini (mail to: brunob@ds. unifi. it)

I Diagrammi a Blocchi es. 7 : calcolo del MCD (algoritmo inefficiente) Lettura di

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 Bruno Bertaccini (mail to: brunob@ds. unifi. it)

I Diagrammi a Blocchi es. 8 : radici di un polinomio di 2° grado

I Diagrammi a Blocchi es. 8 : radici di un polinomio di 2° grado Ricerca delle due radici reali x 1 e x 2, di una equazione del tipo se >0 : =0 : <0 : Bruno Bertaccini (mail to: brunob@ds. unifi. it) non esistono radici reali

I Diagrammi a Blocchi es. 8 : radici di un polinomio di 2° grado

I Diagrammi a Blocchi es. 8 : radici di un polinomio di 2° grado Ricerca delle due radici reali x 1 e x 2, di una equazione del tipo Bruno Bertaccini (mail to: brunob@ds. unifi. it)

I Diagrammi a Blocchi es. 9 : ricerca in un vettore Verifica della presenza

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 Bruno Bertaccini (mail to: brunob@ds. unifi. it)

I Diagrammi a Blocchi es. 10 : ordinamento di un vettore Ordinamento di un

I Diagrammi a Blocchi es. 10 : ordinamento di un vettore Ordinamento di un vettore V preesistente in memoria: un’ipotesi di lavoro Start 1: 4: 2: 5: 3: 6: Stop Bruno Bertaccini (mail to: brunob@ds. unifi. it)

I Diagrammi a Blocchi es. 10 : ordinamento di un vettore Ordinamento di un

I Diagrammi a Blocchi es. 10 : ordinamento di un vettore Ordinamento di un vettore V preesistente in memoria Bruno Bertaccini (mail to: brunob@ds. unifi. it)

I Diagrammi a Blocchi es. 11 : ricerca in un vettore (alg. dicotomico) Verifica

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 Attenzione: possibilità di loop infinito Bruno Bertaccini (mail to: brunob@ds. unifi. it)

I Diagrammi a Blocchi es. 11 : ricerca in un vettore (alg. dicotomico) Verifica

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 Bruno Bertaccini (mail to: brunob@ds. unifi. it)

Lo PSEUDOLINGUAGGIO un ponte verso i linguaggi di programmazione Bruno Bertaccini (mail to: brunob@ds.

Lo PSEUDOLINGUAGGIO un ponte verso i linguaggi di programmazione Bruno Bertaccini (mail to: brunob@ds. unifi. it)

Lo pseudolinguaggio La traduzione del diagramma a blocchi in pseudolinguaggio Condizioni: IF (condizione) THEN

Lo pseudolinguaggio La traduzione del diagramma a blocchi in pseudolinguaggio Condizioni: IF (condizione) THEN inizio blocco istruzione 1 istruzione 2 … ELSE fine blocco inizio blocco istruzione 1 istruzione 2 … fine blocco Bruno Bertaccini (mail to: brunob@ds. unifi. it)

Lo pseudolinguaggio La traduzione del diagramma a blocchi in pseudolinguaggio Condizioni: IF (condizione) THEN

Lo pseudolinguaggio La traduzione del diagramma a blocchi in pseudolinguaggio Condizioni: IF (condizione) THEN [blocco istruzioni] ELSE [blocco istruzioni] Bruno Bertaccini (mail to: brunob@ds. unifi. it)

Lo pseudolinguaggio La traduzione del diagramma a blocchi in pseudolinguaggio Condizioni: SWITCH (espressione) CASE

Lo pseudolinguaggio La traduzione del diagramma a blocchi in pseudolinguaggio Condizioni: SWITCH (espressione) CASE (condizione 1): NON in tutti i linguaggi di programmazione [blocco istruzioni] CASE (condizione 2): [blocco istruzioni] CASE (condizione 3): [blocco istruzioni] … OTHER: [blocco istruzioni] Bruno Bertaccini (mail to: brunob@ds. unifi. it)

Lo pseudolinguaggio La traduzione del diagramma a blocchi in pseudolinguaggio Iterazioni: FOR (variabile) =

Lo pseudolinguaggio La traduzione del diagramma a blocchi in pseudolinguaggio Iterazioni: FOR (variabile) = (inizio) TO (fine) (step) inizio blocco istruzione 1 istruzione 2 … fine blocco WHILE (condizione) inizio blocco istruzione 1 istruzione 2 … fine blocco Bruno Bertaccini (mail to: brunob@ds. unifi. it)

Lo pseudolinguaggio es. 1 : scambio di due valori numerici main { input A

Lo pseudolinguaggio es. 1 : scambio di due valori numerici main { input A input B AUX = B B=A A = AUX print A print B } Bruno Bertaccini (mail to: brunob@ds. unifi. it)

Lo pseudolinguaggio es. 2 : scambio di due valori numerici main { input A

Lo pseudolinguaggio es. 2 : scambio di due valori numerici main { input A input B if (A > B) then { AUX = B B=A A = AUX } print A print B } Bruno Bertaccini (mail to: brunob@ds. unifi. it)

Lo pseudolinguaggio es. 3 : somma dei valori di un vettore main { input

Lo pseudolinguaggio es. 3 : somma dei valori di un vettore main { input N dim V(N) S=0 for I = 1 to N { input V(I) S = S + V(I) } print S } Bruno Bertaccini (mail to: brunob@ds. unifi. it)

Lo pseudolinguaggio es. 4 : ricerca del minimo di un vettore main { input

Lo pseudolinguaggio es. 4 : ricerca del minimo di un vettore main { input N dim W(N) for I = 1 to N { input W(I) } MIN = minimo(W) print MIN } Bruno Bertaccini (mail to: brunob@ds. unifi. it) 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 es. 6 : calcolo della serie parziale main { input N S=0

Lo pseudolinguaggio es. 6 : calcolo della serie parziale main { input N S=0 for I = 0 to N { S = S + 2^I } print S } Bruno Bertaccini (mail to: brunob@ds. unifi. it)

Lo pseudolinguaggio es. 7 : calcolo del MCD (algoritmo di Euclide) main { input

Lo pseudolinguaggio es. 7 : calcolo del MCD (algoritmo di Euclide) main { input N input M if (M > N) then { Bruno Bertaccini (mail to: brunob@ds. unifi. it) AUX = M M=N N = AUX } Q = int(N/M) R = N - M*Q while (R<>0) { N=M M=R Q = int(N/M) R = N - M*Q } print “MCD : ”, M }

Lo pseudolinguaggio es. 8 : radici di un polinomio di 2° grado main {

Lo pseudolinguaggio es. 8 : radici di un polinomio di 2° grado main { input A, B, C if (A <> 0) then { DELTA = B*B – 4*A*C if (DELTA >= 0) then { RAD = 0 if (DELTA > 0) then { RAD = SQRT(DELTA) } X 1 = (-B + RAD)/(2*A) X 2 = (-B - RAD)/(2*A) print “le radici sono: “, X 1, X 2 } else{ print “non esistono radici reali” } } else { print “è stato inserito un polinomio non di 2° grado” } } Bruno Bertaccini (mail to: brunob@ds. unifi. it)

Lo pseudolinguaggio es. 9 : ricerca in un vettore ricerca 1 (V, E) {

Lo pseudolinguaggio es. 9 : ricerca in un vettore ricerca 1 (V, E) { N = length(V) F=0 for I = 1 to N { if (V(I) = E) then { F=I I=N } } return (F) } main { input N dim W(N) for I = 1 to N { input W(I) } input A POS = ricerca 1 (W, A) if (POS > 0) then { print “trovato in posizione ”, POS } } Bruno Bertaccini (mail to: brunob@ds. unifi. it)

Lo pseudolinguaggio es. 10 : ordinamento di un vettore main { input N dim

Lo pseudolinguaggio es. 10 : ordinamento di un vettore main { input N dim W(N) for I = 1 to N { input W(I) } W = ordina (W) for I = 1 to N { print W(I) } } Bruno Bertaccini (mail to: brunob@ds. unifi. it) 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(J) = A } } } return (V) }