Fondamenti dell’informatica Algoritmi e Strutture...

51
Fondamenti dell’informatica Algoritmi e Strutture Dati a cura di Bruno Bertaccini insegnamento di Gestione Informatica dei Dati CdL in Scienze Turistiche Materiale didattico a disposizione degli studenti, scaricabile all’indirizzo http://www.ds.unifi.it/bertaccini. È vietata la riproduzione non autorizzata a fini commerciali. Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali. Sistemi di rappresentazione dei numeri (aritmetica degli elaboratori)

Transcript of Fondamenti dell’informatica Algoritmi e Strutture...

Page 1: Fondamenti dell’informatica Algoritmi e Strutture Datilocal.disia.unifi.it/bertaccini/AlgoritmiPT.pdf · base 10, con riferimento all'atto di contare con le dita delle mani. I sistemi

Fondamenti dell’informaticaAlgoritmi e Strutture Dati

a cura di Bruno Bertaccini

insegnamento di

Gestione Informatica dei DatiCdL in Scienze Turistiche

Materiale didattico a disposizione degli studenti,scaricabile all’indirizzo http://www.ds.unifi.it/bertaccini.

È vietata la riproduzione non autorizzata a fini commerciali.

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

Sistemi di rappresentazione

dei numeri(aritmetica degli elaboratori)

Page 2: Fondamenti dell’informatica Algoritmi e Strutture Datilocal.disia.unifi.it/bertaccini/AlgoritmiPT.pdf · base 10, con riferimento all'atto di contare con le dita delle mani. I sistemi

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

La rappresentazione dei numeri

I sistemi di numerazione

Un sistema di numerazione è un sistema utilizzato peresprimere i numeri e le operazioni che si possono effettuaresu di essi.

Per ovvi motivi, i più antichi sistemi di numerazione hannobase 10, con riferimento all'atto di contare con le dita dellemani.I sistemi di numerazione sono classificabili in base alle loroproprietà.Ad esempio, gli antichi Romani usavano un sistema additivoe non posizionale: ad esempio, il simbolo X rappresentasempre il numero dieci, V il numero cinque, in qualunqueposto del numero si trovino.

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

La rappresentazione dei numeri

Il sistema metrico decimale

Il comune sistema metrico decimale, che tutti impariamo ascuola, è di tipo posizionale. Tale sistema ci è statotramandato dagli Arabi.

Nel sistema posizionale decimale ogni cifra assume unsignificato diverso a seconda della posizione in cui sitrova (unità, decine, centinaia, ecc.):

2 1 0133 1 10 3 10 3 10

Page 3: Fondamenti dell’informatica Algoritmi e Strutture Datilocal.disia.unifi.it/bertaccini/AlgoritmiPT.pdf · base 10, con riferimento all'atto di contare con le dita delle mani. I sistemi

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

La rappresentazione dei numeri

I sistemi posizionali

I sistemi posizionali sono caratterizzati da: una base b, ovvero un qualsiasi numero naturale b (diverso

da zero e da uno); b simboli diversi dette cifre.

In un sistema posizionale i numeri si compongono tenendopresente che il valore di ogni cifra va moltiplicato per: se è l’ultima cifra alla destra del numero

considerato; se è la seconda cifra da destra; se è la terza cifra da destra; … se è l’n-esima cifra da destra.

La somma di tutti i valori così ottenuti restituisce ilnumero che stiamo considerando in base dieci.

0 ( 1)b

1b2b

1nb

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

La rappresentazione dei numeri

Il sistema binario

Il sistema di numerazione decimale si presta male ad esseretrattato automaticamente.Il calcolatore è infatti costituito da componenti elettronici chehanno la caratteristica di rappresentare due stati opposti:un transistore può essere in stato di conduzione o diinterdizione; un interruttore come un circuito può essereaperto o chiuso.Questi stati sono matematicamente rappresentabili tramitedue sole cifre.Il più semplice sistema di numerazione è quello che usa duesole cifre (0 e 1). Tale sistema è detto binario e le sue cifresono dette bit (binary digit).

Page 4: Fondamenti dell’informatica Algoritmi e Strutture Datilocal.disia.unifi.it/bertaccini/AlgoritmiPT.pdf · base 10, con riferimento all'atto di contare con le dita delle mani. I sistemi

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

La rappresentazione dei numeri

Il sistema binario

Secondo le regole dei sistemi posizionali esposte in precedenza:

2 1 0

4 3 2 1 0

101 1 2 0 2 1 2 4 0 1 5

10110 1 2 0 2 1 2 1 2 0 2

16 0 4 2 0 22

bin dec

bin

dec

Si osservi che la somma di tutte le moltiplicazioni per tutte lepotenze del 2, eccetto 20, restituiscono SEMPRE un numeropari. Per cui: un numero binario è pari se finisce con la cifra 0; dispari se finisce con la cifra 1.

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

La rappresentazione dei numeri

Il sistema binario

Si è detto che le regole dei sistemi posizionali consentono di trasformare in base 10 un generico numero espresso in base b.Nel caso del sistema binario, l’operazione inversa può essere ottenuta operando divisioni successive della cifra decimale per la base b = 2:

5 2

1 2 2

0 1 2

1 0

dec

Page 5: Fondamenti dell’informatica Algoritmi e Strutture Datilocal.disia.unifi.it/bertaccini/AlgoritmiPT.pdf · base 10, con riferimento all'atto di contare con le dita delle mani. I sistemi

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

La rappresentazione dei numeri

Il sistema binario

Secondo queste semplici regole è possibile costruire la tabella di conversione delle prime 16 cifre decimali naturali:

Dec Bin0 0 0 0 01 0 0 0 12 0 0 1 03 0 0 1 14 0 1 0 05 0 1 0 16 0 1 1 07 0 1 1 18 1 0 0 09 1 0 0 110 1 0 1 011 1 0 1 112 1 1 0 013 1 1 0 114 1 1 1 015 1 1 1 1

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

La rappresentazione dei numeri

I sistemi ottale ed esadecimale

L'uso del sistema binario è in genere molto complesso.L’elevata lunghezza che assumono i numeri in binario (adesempio, la sola cifra 9 necessita di quattro posizioni 1001)comporta un’elevata possibilità di errore nel manipolarli enell'interpretarli.Per ovviare a questo problema esistono sistemi dinumerazione, l’ottale e, soprattutto, l'esadecimale, chepresentano il vantaggio di essere più compatti del binario eimmediatamente convertibili in esso. sistema ottale: cifre 0, 1, 2, 3, 4, 5, 6, 7 sistema esadecimale:

cifre 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F

Page 6: Fondamenti dell’informatica Algoritmi e Strutture Datilocal.disia.unifi.it/bertaccini/AlgoritmiPT.pdf · base 10, con riferimento all'atto di contare con le dita delle mani. I sistemi

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

La rappresentazione dei numeri

Secondo le regole dei sistemi posizionali esposte in precedenza:

2 1 0

1 0

147 1 8 4 8 7 8 64 32 7 103

3 10 16 3 16

160 3 163

oct dec

hes

dec

A

Si osservi che le potenze dell’8 e del 16 sono a loro voltaesprimibili in potenze del 2, per cui la somma di tutte lemoltiplicazioni per tutte tali potenze, eccetto le cifremoltiplicate per 80 o 160, restituiscono SEMPRE un numeropari. Per cui: un numero ottale o esadecimale è pari se finisce con una

cifra pari; dispari se finisce con una cifra dispari.

I sistemi ottale ed esadecimale

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

La rappresentazione dei numeri

Come per il binario, nel caso dei sistemi ottale ed esadecimale, si può convertire un numero decimale in tali sistemi operando divisioni successive della cifra decimale per le base b = 8 ob = 16:

103 8

7 12 8

4 1 8

1 0

dec

I sistemi ottale ed esadecimale

Page 7: Fondamenti dell’informatica Algoritmi e Strutture Datilocal.disia.unifi.it/bertaccini/AlgoritmiPT.pdf · base 10, con riferimento all'atto di contare con le dita delle mani. I sistemi

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

La rappresentazione dei numeri

La tabella di conversione completa

Dec Bin Oct Hes

0 0 0 0 0 0 0 0

1 0 0 0 1 0 1 1

2 0 0 1 0 0 2 2

3 0 0 1 1 0 3 3

4 0 1 0 0 0 4 4

5 0 1 0 1 0 5 5

6 0 1 1 0 0 6 6

7 0 1 1 1 0 7 7

8 1 0 0 0 1 0 8

9 1 0 0 1 1 1 9

10 1 0 1 0 1 2 A

11 1 0 1 1 1 3 B

12 1 1 0 0 1 4 C

13 1 1 0 1 1 5 D

14 1 1 1 0 1 6 E

15 1 1 1 1 1 7 F

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

La rappresentazione dei numeri

Dai sistemi ottale ed esadecimale al binario e viceversa la conversione è immediata.Nel sistema ottale, poiché 23 = 8, vanno effettuatiraggruppamenti di tre cifre e ogni cifra ottale va sostituitadalla sua rappresentazione in tre bit.Nel sistema esadecimale, poiché 24 = 16, vanno effettuatiraggruppamenti di quattro cifre e ogni cifra esadecimaleva sostituita dalla sua rappresentazione in quattro bit.

Da ottale/esadecimale a binario

147 001 100 111 1100111

3 1010 0011 10100011

oct bin

hes binA

Page 8: Fondamenti dell’informatica Algoritmi e Strutture Datilocal.disia.unifi.it/bertaccini/AlgoritmiPT.pdf · base 10, con riferimento all'atto di contare con le dita delle mani. I sistemi

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

La struttura degli elaboratori

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

La struttura degli elaboratori

def: elaboratore elettronico: macchina elettronica, modulare, a stati discreti, programmabile.

Il concetto di elaboratore

elettronica: macchina costituita da componenti elettroniche, chesono prevalenti, sia quantitativamente, che qualitativamente;

modulare: le unità funzionali, che lo compongono, possono essererealizzate con unità fisiche suscettibili di variare come numeroe caratteristiche;

a stati discreti: i componenti elementari di un elaboratore potrannotrovarsi, ai fini del nostro studio, in due sole condizioni: si/no,acceso/spento, 1/0;

programmabile: sarà di volta in volta l'utilizzatore ad indicare allamacchina le operazioni da compiere per la risoluzione didifferenti problemi o classi di problemi;

Page 9: Fondamenti dell’informatica Algoritmi e Strutture Datilocal.disia.unifi.it/bertaccini/AlgoritmiPT.pdf · base 10, con riferimento all'atto di contare con le dita delle mani. I sistemi

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

Quella esposta in queste dispense non è la vera e propria struttura fisica di un elaboratore, ma solo una sua schematizzazione logica. Tale struttura funzionale può essere diversamente realizzata, a seconda dei tipi e delle dimensioni delle macchine. Per struttura funzionale intendiamo un dispositivo capace di compiere operazioni sui dati che transiteranno nel sistema.

La struttura degli elaboratori

Il concetto di elaboratore

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

La struttura degli elaboratori

Struttura funzionale

Ogni rettangolo rappresenta una unità funzionale dell'elaboratore che dovrà necessariamente essere presente, affinché la macchina possa svolgere il proprio lavoro.

Ogni unità funzionale potrà essere, poi, costituita da uno o più dispositivi fisici di dimensioni e caratteristiche variabili.

Page 10: Fondamenti dell’informatica Algoritmi e Strutture Datilocal.disia.unifi.it/bertaccini/AlgoritmiPT.pdf · base 10, con riferimento all'atto di contare con le dita delle mani. I sistemi

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

Unità d’ingresso: queste unità hanno lo scopo di immetteredati nel sistema elettronico. Dispositivi tipici usati per questoscopo sono: lettori ottici, tastiere, lettori di caratteri magnetici,penne luminose associate ad unità video, video «touch-screen».

Unità di uscita: tale unità servono ad emettere datiall'esterno dati e risultati di elaborazioni compiutedall'elaboratore. Dispositivi tipici usati a questo scopo sono:schermi video, stampanti, plotter.

La struttura degli elaboratori

Unità di ingresso e uscita (I/O)

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

La memoria centrale ha lo scopo di immagazzinare dati eprogrammi. I dati inseriti in memoria centrale generalmentesono memorizzati per il tempo necessario alle elaborazioni enon conservati per future elaborazioni.

Le moderne memorie centrali degli elaboratori, formate da circuitiintegrati, consentono operazioni di lettura e scrittura contempi dell’ordine del nanosecondo e sono destinate a contenere,sia le istruzioni che l'utilizzatore fornisce alla macchina, sia i dati diimmediato utilizzo, necessari, di volta in volta, per un determinatolavoro.La memorizzazione delle istruzioni fa sì che l'elaboratore esegua leelaborazioni "in maniera automatica", senza l'intervento umano e allavelocità che gli è propria.

La struttura degli elaboratori

Memoria centrale

Page 11: Fondamenti dell’informatica Algoritmi e Strutture Datilocal.disia.unifi.it/bertaccini/AlgoritmiPT.pdf · base 10, con riferimento all'atto di contare con le dita delle mani. I sistemi

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

La memoria centrale è anche detta memoria ad accesso casuale(RAM = Random Access Memory), in quanto l’elaboratore puòdirettamente arrivare all'indirizzo di memoria desiderato, senza doverscorrere altri indirizzi di memoria, cioè, appunto, in maniera casualeo diretta. Tale memoria è volatile, ovvero le informazioni in essacontenute si perdono ogniqualvolta l'elaboratore viene spento.

Ci sono però altre zone di memoria in cui vengono immesseinformazioni (dati od istruzioni) in maniera permanente, fin dalmomento della costruzione dell'elaboratore; queste informazioniservono a scopi ben precisi e possono venir solo lette, senzapossibilità di modifica: tale parte della memoria è detta memoria asola lettura (ROM = Read Only Memory).

La struttura degli elaboratori

Memoria centrale

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

La memoria centrale è schematizzabile come un insiemefinito, ordinato e numerato di celle o posizioni, ciascuna dellequali, da sola od in gruppo, può contenere un'informazione in formabinaria. Il numero delle celle rappresenta la capacità dellamemoria.La dimensione di una cella è equivalente al numero di bit da cui essaè composta: generalmente una cella di memoria corrisponde ad unbyte ovvero è formata da 8 bit. Il byte è pertanto l'unità di misuradelle memorie degli elaboratori (comprese quelle ausiliarie).L'utilizzo pratico comporta, spesso, l'uso di celle di dimensionimaggiori.Ogni cella è individuata da un suo numero d'ordine, che nerappresenta l'indirizzo, a cui si fa riferimento per accedereall'informazione memorizzata o per inserire l'informazione (datol’elevato numero di celle, gli indirizzi sono rappresentati informato esadecimale).

La struttura degli elaboratori

Memoria centrale

Page 12: Fondamenti dell’informatica Algoritmi e Strutture Datilocal.disia.unifi.it/bertaccini/AlgoritmiPT.pdf · base 10, con riferimento all'atto di contare con le dita delle mani. I sistemi

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

Le memorie ausiliarie esterne (dette anche memorie secondarie odi massa) sono memorie deputate alla memorizzazione di tutti gliarchivi che vogliamo conservare per future consultazioni, nonché iprogrammi realizzati o acquisiti.Gli archivi possono anche essere il risultato di elaborazioni in corso, evenire poi eliminati al termine del processo elaborativo, o possonoessere costituiti dal risultato di precedenti elaborazioni.Il tempo di accesso, ossia il tempo necessario alla lettura o allascrittura di un insieme elementare di dati, è variabile a secondadell'unità fisica impiegata e del sistema di organizzazione dei datiusato.Sono esempi di memorie ausiliare gli hard-disk, i supporti magneticirimovibili (floppy, CD e DVD), le moderne flash-memory.

La struttura degli elaboratori

Memorie ausiliarie

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

1 byte = 8 bit

I simboli K, M, G, T sono usati per indicare multipli del byte.

1 Kbyte = byte, ovvero la potenza del 2 più vicina al Kilo ( )

1 Mbyte = 1024 Kbyte = , byte

ovvero la potenza del 2 più vicina al Mega ( ) 1 Gbyte = 1024 Mbyte = byte, ovvero la potenza del 2

più vicina al Giga ( ) 1 Tbyte = 1024 Gbyte = byte, ovvero la potenza del 2

più vicina al Tera ( )

Ordini di grandezza delle memorie degli elaboratori

102 ( 1024)310 ( 1000)

610 ( 1000000)

10 10 10 10 201024 1024 2 2 2 2 ( 1048576)

302910

4021210

La struttura degli elaboratori

Page 13: Fondamenti dell’informatica Algoritmi e Strutture Datilocal.disia.unifi.it/bertaccini/AlgoritmiPT.pdf · base 10, con riferimento all'atto di contare con le dita delle mani. I sistemi

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

La CPU è l’unità centrale di elaborazione tradizionalmentecomposta da 2 componenti, che possono essere, o meno,fisicamente separati (l'unità di controllo e l'unitàaritmetico-logico).

L'unità di controllo (CU) è il dispositivo che provvede a controllarel'attività di elaborazione. Il suo ruolo è quello di decodificare e fareseguire le istruzioni presenti in memoria centrale, nonché disupervisionarne l'esecuzione. Questa unità non esegue, quindi, leistruzioni: il suo compito è quello di leggere le istruzioni, una allavolta, prelevandole dalla memoria centrale, di interpretarle, cioè dicapirne il significato, di provvedere a che vengano eseguite, dandogli opportuni comandi alle varie unità interessate.

La struttura degli elaboratori

CPU: central processing unit

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

L'unità aritmetico-logica (ALU) è il dispositivo che esegue leoperazioni aritmetiche e logiche. Per far ciò si serve, oltre che diappositi circuiti elettronici, di particolari registri, fra cui alcuni chepossono essere specificamente dedicati alla manipolazione aritmeticae logica dei dati, detti accumulatori. Oltre che dalla capacità dimemoria, la potenza di un elaboratore dipende, anche dallecaratteristiche della unità logico-aritmetica, quali la sua velocità e leoperazioni che essa può eseguire, per altro legate alle capacità evelocità dell'unità di controllo.

La struttura degli elaboratori

CPU: central processing unit

Page 14: Fondamenti dell’informatica Algoritmi e Strutture Datilocal.disia.unifi.it/bertaccini/AlgoritmiPT.pdf · base 10, con riferimento all'atto di contare con le dita delle mani. I sistemi

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

Nella descrizione della struttura funzionale di un elaboratore è statoprecisato che la CPU comunica con le altre unità, comprese quelle diinput/output, attivandole affinché effettuino le operazioni che sonoloro proprie.I moderni sistemi elettronici sono anche dotati di una o più unità dielaborazione distinte dall'unità centrale (processori esterni), alle qualiquest'ultima affida il compito di comunicare direttamente con leperiferiche. In questo modo è possibile gestire al meglio le operazionidi ingresso e di uscita. Tali unità si chiamano canali.I canali sono, in pratica, unità di elaborazione che hanno unaccesso diretto alla memoria e sono in grado di trasferire idati fra la CPU, la memoria centrale e le periferiche con lequali comunicano.

La struttura degli elaboratori

Unità canale (BUS)

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

La programmabilità degli elaboratori

Page 15: Fondamenti dell’informatica Algoritmi e Strutture Datilocal.disia.unifi.it/bertaccini/AlgoritmiPT.pdf · base 10, con riferimento all'atto di contare con le dita delle mani. I sistemi

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

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

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

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 epuò 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 16: Fondamenti dell’informatica Algoritmi e Strutture Datilocal.disia.unifi.it/bertaccini/AlgoritmiPT.pdf · base 10, con riferimento all'atto di contare con le dita delle mani. I sistemi

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

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

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

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 17: Fondamenti dell’informatica Algoritmi e Strutture Datilocal.disia.unifi.it/bertaccini/AlgoritmiPT.pdf · base 10, con riferimento all'atto di contare con le dita delle mani. I sistemi

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

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

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

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 18: Fondamenti dell’informatica Algoritmi e Strutture Datilocal.disia.unifi.it/bertaccini/AlgoritmiPT.pdf · base 10, con riferimento all'atto di contare con le dita delle mani. I sistemi

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

La programmabilità degli elaboratori

Il linguaggio macchina ed i linguaggi simbolici

Tale sistema è detto LINGUAGGIO MACCHINAperché è 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: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

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.

Page 19: Fondamenti dell’informatica Algoritmi e Strutture Datilocal.disia.unifi.it/bertaccini/AlgoritmiPT.pdf · base 10, con riferimento all'atto di contare con le dita delle mani. I sistemi

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

Gli ALGORITMI

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

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 20: Fondamenti dell’informatica Algoritmi e Strutture Datilocal.disia.unifi.it/bertaccini/AlgoritmiPT.pdf · base 10, con riferimento all'atto di contare con le dita delle mani. I sistemi

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

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

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

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 21: Fondamenti dell’informatica Algoritmi e Strutture Datilocal.disia.unifi.it/bertaccini/AlgoritmiPT.pdf · base 10, con riferimento all'atto di contare con le dita delle mani. I sistemi

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

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

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

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 22: Fondamenti dell’informatica Algoritmi e Strutture Datilocal.disia.unifi.it/bertaccini/AlgoritmiPT.pdf · base 10, con riferimento all'atto di contare con le dita delle mani. I sistemi

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

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

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

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 23: Fondamenti dell’informatica Algoritmi e Strutture Datilocal.disia.unifi.it/bertaccini/AlgoritmiPT.pdf · base 10, con riferimento all'atto di contare con le dita delle mani. I sistemi

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

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

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

Analisi e Programmazione

PROGRAMMAZIONE: ha lo scopo di descrivere le operazioniche 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 24: Fondamenti dell’informatica Algoritmi e Strutture Datilocal.disia.unifi.it/bertaccini/AlgoritmiPT.pdf · base 10, con riferimento all'atto di contare con le dita delle mani. I sistemi

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

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

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

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 25: Fondamenti dell’informatica Algoritmi e Strutture Datilocal.disia.unifi.it/bertaccini/AlgoritmiPT.pdf · base 10, con riferimento all'atto di contare con le dita delle mani. I sistemi

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

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

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

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 26: Fondamenti dell’informatica Algoritmi e Strutture Datilocal.disia.unifi.it/bertaccini/AlgoritmiPT.pdf · base 10, con riferimento all'atto di contare con le dita delle mani. I sistemi

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

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).

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

Strutture dati

(fondamenti)

Page 27: Fondamenti dell’informatica Algoritmi e Strutture Datilocal.disia.unifi.it/bertaccini/AlgoritmiPT.pdf · base 10, con riferimento all'atto di contare con le dita delle mani. I sistemi

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

Classificazione

Strutture dati

Variabili numeriche

Variabili carattere

Bit

Intere

Reali (razionali)

Complesse

precisione singola

precisione doppia

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

Strutture di memorizzazione

Strutture dati

Variabili singole: singole celle di memoria cui fare riferimento sfruttando un’etichetta definita dal programmatorees: A, pippo, tot

Vettori: una sequenza indicizzabile di variabili dello stesso tipo accomunate da una stessa etichetta definita dal programmatore

es: vett[1] consente di accedere alla prima cella di memoria del vettore denominato vettab[10] consente di accedere alla 10° cella di memeoria del vettore denominato ab

Page 28: Fondamenti dell’informatica Algoritmi e Strutture Datilocal.disia.unifi.it/bertaccini/AlgoritmiPT.pdf · base 10, con riferimento all'atto di contare con le dita delle mani. I sistemi

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

Strutture di memorizzazione

Strutture dati

Matrici: una sequenza indicizzabile di vettori dello stesso tipo;una matrice di fatto si configura come un insieme dicelle di memoria dello stesso tipo organizzate in righee colonne, accumunate da una stessa etichetta definitadal programmatore

es: mat[1,3] consente di accedere alla cella collocataall’intersezione tra la prima riga e la terza colonnadella matrice denominata mat;

M[2,2] consente di accedere alla cella collocataall’intersezione tra la seconda riga e la secondacolonna della matrice denominata M;

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

I DIAGRAMMI a BLOCCHI

(o Diagrammi di Flusso)

Page 29: Fondamenti dell’informatica Algoritmi e Strutture Datilocal.disia.unifi.it/bertaccini/AlgoritmiPT.pdf · base 10, con riferimento all'atto di contare con le dita delle mani. I sistemi

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

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.

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

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 30: Fondamenti dell’informatica Algoritmi e Strutture Datilocal.disia.unifi.it/bertaccini/AlgoritmiPT.pdf · base 10, con riferimento all'atto di contare con le dita delle mani. I sistemi

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

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

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

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 31: Fondamenti dell’informatica Algoritmi e Strutture Datilocal.disia.unifi.it/bertaccini/AlgoritmiPT.pdf · base 10, con riferimento all'atto di contare con le dita delle mani. I sistemi

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

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

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

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 32: Fondamenti dell’informatica Algoritmi e Strutture Datilocal.disia.unifi.it/bertaccini/AlgoritmiPT.pdf · base 10, con riferimento all'atto di contare con le dita delle mani. I sistemi

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

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

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

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

Page 33: Fondamenti dell’informatica Algoritmi e Strutture Datilocal.disia.unifi.it/bertaccini/AlgoritmiPT.pdf · base 10, con riferimento all'atto di contare con le dita delle mani. I sistemi

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

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

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

I Diagrammi a Blocchi

es. 4 : ricerca del minimo di un vettore

Ricerca del minimo di un vettore V

già presente in memoriaSTART

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 34: Fondamenti dell’informatica Algoritmi e Strutture Datilocal.disia.unifi.it/bertaccini/AlgoritmiPT.pdf · base 10, con riferimento all'atto di contare con le dita delle mani. I sistemi

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

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

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

I Diagrammi a Blocchi

es. 6 : calcolo di una serie parziale

Lettura del valore numerico n e calcolo di

0

2n

i

i

Page 35: Fondamenti dell’informatica Algoritmi e Strutture Datilocal.disia.unifi.it/bertaccini/AlgoritmiPT.pdf · base 10, con riferimento all'atto di contare con le dita delle mani. I sistemi

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

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

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

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 36: Fondamenti dell’informatica Algoritmi e Strutture Datilocal.disia.unifi.it/bertaccini/AlgoritmiPT.pdf · base 10, con riferimento all'atto di contare con le dita delle mani. I sistemi

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

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

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

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

2 0ax bx c

Page 37: Fondamenti dell’informatica Algoritmi e Strutture Datilocal.disia.unifi.it/bertaccini/AlgoritmiPT.pdf · base 10, con riferimento all'atto di contare con le dita delle mani. I sistemi

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

PSEUDO-LINGUAGGIO

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

Pseudo-linguaggio

La traduzione del diagramma a blocchi in pseudolinguaggio

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

ELSEinizio blocco ( { )istruzione 1istruzione 2…fine blocco ( } )

Page 38: Fondamenti dell’informatica Algoritmi e Strutture Datilocal.disia.unifi.it/bertaccini/AlgoritmiPT.pdf · base 10, con riferimento all'atto di contare con le dita delle mani. I sistemi

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

La traduzione del diagramma a blocchi in pseudolinguaggio

Condizioni nidificate (una dentro l’altra):

IF (condizione) THEN

{ [blocco istruzioni] }

ELSE IF (condizione) THEN

{ [blocco istruzioni] }

ELSE

{ [blocco istruzioni] }

Pseudo-linguaggio

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

La traduzione del diagramma a blocchi in pseudolinguaggio

Iterazioni: FOR (variabile) = (inizio) TO (fine) (step)inizio blocco ( { )istruzione 1istruzione 2…fine blocco ( } )

WHILE (condizione)inizio blocco ( { )istruzione 1istruzione 2…fine blocco ( } )

Pseudo-linguaggio

Page 39: Fondamenti dell’informatica Algoritmi e Strutture Datilocal.disia.unifi.it/bertaccini/AlgoritmiPT.pdf · base 10, con riferimento all'atto di contare con le dita delle mani. I sistemi

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

La traduzione del diagramma a blocchi in pseudolinguaggio

Iterazioni nidificate (una dentro l’altra):

FOR (variabile1) = (inizio) TO (fine) (step)

{FOR (variabile2) = (inizio) TO (fine) (step)

{istruzione 1istruzione 2…}

}

Pseudo-linguaggio

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

La traduzione del diagramma a blocchi in pseudolinguaggio

Esempio di confronto tra FOR e WHILE

FOR I = 1 TO 10 {

istruzione 1istruzione 2…}

Pseudo-linguaggio

I=1WHILE (I<=10){

istruzione 1istruzione 2…I = I + 1}

Page 40: Fondamenti dell’informatica Algoritmi e Strutture Datilocal.disia.unifi.it/bertaccini/AlgoritmiPT.pdf · base 10, con riferimento all'atto di contare con le dita delle mani. I sistemi

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

Lettura delle diapositive successive

Le diapositive successive illustrano esempi di soluzione degli algoritmi proposti.

Si osservi che solo per i primi algoritmi sarà fatto un parallelo tra gli schemi risolutivi tipici del diagramma a blocchi e la sintassi propria dello pseudo-linguaggio.

Man mano che la complessità algoritmica aumenterà, si abbandoneranno i diagrammi a blocchi per utilizzare solo ed esclusivamente la sintassi dello pseudo-linguaggio.

Pseudo-linguaggio

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

Diagrammi a blocchi e pseudo-linguaggio

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

start

read A,B

AUX=BB=AA=AUX

write A,B

stop

Page 41: Fondamenti dell’informatica Algoritmi e Strutture Datilocal.disia.unifi.it/bertaccini/AlgoritmiPT.pdf · base 10, con riferimento all'atto di contare con le dita delle mani. I sistemi

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

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

startread A,Bif (A>B) then {

AUX=BB=AA=AUX}

write A,Bstop

Diagrammi a blocchi e pseudo-linguaggio

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

es. 3 : somma dei valori di un vettore

Somma di una certa sequenza di valori, immessi da tastiera all’interno di un vettore

Diagrammi a blocchi e pseudo-linguaggio

startread NS=0for I=1 to N{

read VETT[I]S=S+VETT[I]}

write Sstop

Page 42: Fondamenti dell’informatica Algoritmi e Strutture Datilocal.disia.unifi.it/bertaccini/AlgoritmiPT.pdf · base 10, con riferimento all'atto di contare con le dita delle mani. I sistemi

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

es. 3 : somma di valori (variante)

Somma di una certa sequenza di valori, immessi da tastiera senza ricorrere al vettore

startread NS=0for I=1 to N{

read AS = S + A}

write "totale: ", Sstop

Pseudo-linguaggio

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

es. 4 Leggere un numero da tastiera tra 50 e 90 e produrre la somma di tutti i numeri dispari tra 49 ed il valore letto

startwrite "inserisci numero tra 50 e 90: "read Nif (N<50 or N>90) then {

write ("errore")stop}

S=0for I = 49 to N step 2{

S = S + I}

write "totale: ", Sstop

NB: in questa forma, l’algoritmo si ferma in caso di errore (condizione numero tra 50 e 90 non rispettata per cui l’IF fa eseguire lo STOP) senza dare la possibilità all’utente di inserire un nuovo numero

Pseudo-linguaggio

Page 43: Fondamenti dell’informatica Algoritmi e Strutture Datilocal.disia.unifi.it/bertaccini/AlgoritmiPT.pdf · base 10, con riferimento all'atto di contare con le dita delle mani. I sistemi

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

es. 4 (variante) Leggere un numero da tastiera tra 50 e 90 e produrre la somma di tutti i numeri dispari tra 49 ed il valore letto

startN=0while (N<50 or N>90){

write "inserisci numero tra 50 e 90: "read Nif (N<50 or N>90) then { write ("errore") }}

S=0for I = 49 to N step 2{

S = S + I}

write "totale: ", Sstop

Per ovviare al problema precedente (uscita forzata al primo errore) si utilizza il WHILE:per far sì che l’algoritmo entri nel WHILE si preassegna ad N (variabile che conterrà il numero da leggere) un valore NON compreso tra 50 e 90 (nell’esempio si parte con N=0). Finchè l’utente continuerà ad inserire valori NON compresi tra 50 e 90, il WHILE continuerà ad eseguire le istruzioni tra parentesi graffe

Pseudo-linguaggio

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

es. 5: successione sempliceProdurre la somma dei primi 20 numeri della successione: 1, 3, 7, 15, 31 … (an+1 = 2*an +1)

startA=0SUM=0for I = 1 to 20{

A = 2*A + 1SUM = SUM + A}

write SUMstop

Partendo da 0, il primo elemento generato della successione all’interno del FOR è 1, come richiesto dall’esercizio

Pseudo-linguaggio

Page 44: Fondamenti dell’informatica Algoritmi e Strutture Datilocal.disia.unifi.it/bertaccini/AlgoritmiPT.pdf · base 10, con riferimento all'atto di contare con le dita delle mani. I sistemi

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

es. 5: successione di FibonacciProdurre la somma dei primi M numeri della successione di Fibonacci: 0, 1, 1, 2, 3, 5, 8 … (an+1 = an + an-1)start

write "quanti numeri: "read Mif (M<2) then {

write ("errore")stop}

vett[1]=0vett[2]=1SUM=1for I = 3 to M{

vett[I] = vett[I-1] + vett[I-2]SUM = SUM + vett[I]}

write SUMstop

Ogni nuovo elemento della successione è funzione dei due precedenti, per cui in questo caso conviene usare un vettore ed impostare le prime due celle dello stesso a 0 e 1 (prime due cifre della successione)

In questo caso si parte da 1 perché la somma delle prime due cifre della successione è 1

Il ciclo FOR in questo caso parte da 3 perché i primi due valori della successione risultano assegnati all’esterno del ciclo

Pseudo-linguaggio

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

es. 6: gestione di un archivio

In un archivio sono memorizzati i seguenti campi relativi alla gestione di un ristorante: n° pasti cucinati all’ora di pranzo; n° pasti cucinati all’ora di cena.

Ogni record è relativo ad un certo giorno dell’anno, ma non è detto che il ristorante sia rimasto aperto per tutti i giorni dell’anno.

Sapendo che il costo di ogni pasto è di 3 € e che viene venduto ad un prezzo di 5.10 €, e sapendo che i costi fissi ammontano a 59000 €, realizzare un algoritmo in grado di calcolare se nell’anno di riferimento si è verificato un utile oppure una perdita.

Pseudo-linguaggio

Page 45: Fondamenti dell’informatica Algoritmi e Strutture Datilocal.disia.unifi.it/bertaccini/AlgoritmiPT.pdf · base 10, con riferimento all'atto di contare con le dita delle mani. I sistemi

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

startARCH=open("ristorante.txt")DA=dim(ARCH)NREC=DA[1]

TOT=-59000for I = 1 TO NREC {

TOT = TOT + (ARCH[I,1]+ARCH[I,2])*2.1}

if (TOT<0) then{write ("si è verificato una perdita di: ", TOT)}

else{write ("si è verificato un utile di: ", TOT)}

stop

Pseudo-linguaggio

es. 6: gestione di un archivio

L’istruzione OPEN consente di leggere un archivio dalla memoria ausiliaria (hard disk) e trasferirlo nella RAM. Un archivio si configura come una matrice (è organizzato in righe dette record, ciascuna delle quali è composta da più colonne dette campi) per cui viene trasferito nella RAM sotto tale forma.L’istruzione DIM restituisce un vettore di due elementi: il primo valore è pari al numero di righe della matrice, il secondo al numero di colonne.

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

IL LINGUAGGIOFORTRAN

Selezione di esercizi svolti tratti dagli esami degli appelli precedenti

Note per la lettura: i nomi delle variabili sono scritti in maiuscolo; le istruzioni FORTRAN sono scritte in minuscolo; nei riquadri, sono riportati alcuni commenti aggiuntivi che non sono

codice FORTRAN e non devono essere confusi con esso, e che hannoil solo scopo fornire chiarimenti sul flusso delle istruzioni.

Page 46: Fondamenti dell’informatica Algoritmi e Strutture Datilocal.disia.unifi.it/bertaccini/AlgoritmiPT.pdf · base 10, con riferimento all'atto di contare con le dita delle mani. I sistemi

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

Il linguaggio FORTRAN

5 giugno 2008 – es. 1

C Scrivere un programma FORTRAN che legga un valoreC da tastiera in lire e lo converta in euro (1€ = 1936,27 L.)

write (*,*) "inserire valore in lire" read (*,*) V

V2 = V/1936.27

write (*,20) 'il valore in euro:', V2stop

20 format (f10.2)end

le istruzioni iniziano a colonna 7;una C a colonna 1 indica che stiamo scrivendo un commento che non verrà considerato dal compilatore

occorre assegnare un formato con 2 cifre decimali al risultato, in quanto la conversione in euro prevede al massimo 2 cifre decimali (i centesimi)

le variabili utilizzate rispettano i criteri imposti dalla dichiarazione implicita: V e V2 sono di tipo reale

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

Il linguaggio FORTRAN

C Si scriva un programma FORTRAN che legga da tastiera C in sequenza 15 numeri naturali (interi non negativi) e, C al termine, stampi a video il valore massimo tra i 15C valori inseriti.

MAX=0

do I=1,15write (*,*) 'inserisci (', I, ' ) numero naturale:'read (*,*) N

if (N .GT. MAX) MAX=Nend do

write (*,*) 'massimo valore inserito', MAXstopend

18 giugno 2008 – es. 1

ciclo per la sequenza dei 15 valori

0 è i più piccolo numero naturale

appena viene individuato un numero più grande di MAX, MAX viene riassegnato a quel numero

anche in questo caso le variabili utilizzate rispettano i criteri imposti dalla dichiarazione implicita.

Page 47: Fondamenti dell’informatica Algoritmi e Strutture Datilocal.disia.unifi.it/bertaccini/AlgoritmiPT.pdf · base 10, con riferimento all'atto di contare con le dita delle mani. I sistemi

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

Il linguaggio FORTRAN

C Si scriva un programma FORTRAN che legga da tastiera C in sequenza 10 numeri interi e, al termine, stampi a video C la loro somma e il loro valore medio.

integer SUMreal MEAN

SUM=0

do I=1,10write (*,*) 'inserisci (', I, ' ) numero intero:'read (*,*) N

SUM = SUM + Nend do

MEAN = SUM / 10.0

write (*,*) 'somma:', SUM, '; media:', MEAN stopend

24 gennaio 2008 – es. 1

ciclo per la sequenza dei 10 valori

variabile totalizzatore inizializzata a zero (zero è l’elemento neutro per la somma)

tutti i numeri inseriti vengono di volta in volta cumulati nel totalizzatore

in questo caso invece occorre dichiarare esplicitamente le variabili SUM e MEAN che non rispettano la convenzione implicita: la somma di interi è una variabile intera, la loro media è una variabile reale

essendo MEAN reale, se SUM, che è intera, venisse divisa per 10 restituirebbe un risultato di tipo intero e non reale come invece accade dividendo per 10.0

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

Il linguaggio FORTRAN

luglio 2007 – es. 1

C Scrivere un programma FORTRAN che legga da tastiera iC valori N e M, controllando che siano compresi fra 10 e 90; C Il programma deve poi procedere a calcolare:C 1. il prodotto di tutti i numeri tra il maggiore dei due ed C il minore dei due (estremi compresi);C 2. la somma di tutti i numeri interi positivi più piccoli C (cioè fino al valore 1) del minore dei due.

integer*8 PROD, SUM

10 write (*,*) 'inserisci primo numero:'read (*,*) Nif (N .lt. 10 .or. N .gt. 90) goto 10

15 write (*,*) 'inserisci secondo numero:'read (*,*) Mif (M .lt. 10 .or. M .gt. 90) goto 15

C continua a pag. successiva

PROD e SUM sono dichiarate intere di 8 byte per contenere numeri interi molto grandi

controllo sul rispetto dei vincoli per i valori inseriti

Page 48: Fondamenti dell’informatica Algoritmi e Strutture Datilocal.disia.unifi.it/bertaccini/AlgoritmiPT.pdf · base 10, con riferimento all'atto di contare con le dita delle mani. I sistemi

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

Il linguaggio FORTRAN

luglio 2007 – es. 1 (continua)

MAX=MMIN=Nif (MAX .lt. MIN) then

MAX=NMIN=M

endif

PROD=1do I=MIN,MAX

PROD=PROD*Iend do

SUM=0do I=1,(MIN-1)

SUM=SUM+Iend do

write (*,*) SUM, PROD

end

variabile totalizzatore inizializzata a zero (zero è l’elemento neutro per la somma)

variabile moltiplicatore inizializzata a 1(uno è l’elemento neutro per il prodotto)

dei due valori inseriti, inizialmente si suppone che M sia il più grande e N sia il più piccolo; poi si controlla se ciò e vero ed in caso contrario si inverte l’assegnazione

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

Il linguaggio FORTRAN

luglio 2007 – es. 2

Testo dell’esercizio

Scrivere un programma FORTRAN che legga da un file relativo alle vendite di unoutlet in un certo periodo due variabili da ogni record (senza conoscere a priori ilnumero di record da leggere). Le due variabili sono rispettivamente:

a. il prezzo intero del capo d’abbigliamento venduto (espresso in € con duedecimali, il campo è di 6 byte);

b. lo sconto percentuale che è stato praticato (un numero intero, in un campo di 2cifre). A esempio, il valore 30 indica che è stato praticato uno sconto del 30%.Qualora siano presenti valori superiori a 70 sono da considerare come errori edevono essere rimpiazzati dal valore 70.

Dopo aver letto tutto l’archivio si vuole stampare il totale incassato, in € con duedecimali.

Page 49: Fondamenti dell’informatica Algoritmi e Strutture Datilocal.disia.unifi.it/bertaccini/AlgoritmiPT.pdf · base 10, con riferimento all'atto di contare con le dita delle mani. I sistemi

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

Il linguaggio FORTRAN

luglio 2007 – es. 2 (continua)

TOTI=0.0

open (5, file=‘vendite.dat')10 read (5,*,END=40) PI, SC

if (SC .gt. 70) SC=70

TOTI=TOTI+PI*(100-SC)/100goto 10

40 write (*,45) 'totale incassato:', TOTIstop

45 format (f8.2)

end

tutte le variabili utilizzate sono reali e non devono essere dichiarate perché rispettano le regole della convenzione implicita

controllo sul valore dello sconto come richiesto dall’esercizio

gli sconti vengono applicati al prezzo intero ed il risultato viene immediatamente cumulato nella variabile totale incassato TOTI

formato di visualizzazione del totale incassato con 2 cifre decimali: 8 caratteri totali disponibili per l’output di cui uno riservato alla virgola e 2 ai decimali, per cui solo cinque sono riservati alla parte intera

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

Il linguaggio FORTRAN

10 luglio 2008 – es. 2

Testo dell’esercizio

Un’indagine campionaria vuole accertare la passione dei fiorentini per lacinematografia: agli intervistati è stato chiesto di indicare il numero di proiezionicinematografiche cui hanno assistito nel corso del 2007. I risultati dell’indagine sonomemorizzati in un archivio il cui tracciato record può essere esemplificato dallaseguente tabella:

Scrivere un programma FORTRAN che produca in output:a. il totale degli proiezioni cinematografiche cui hanno assistito gli intervistati;b. il numero medio di proiezioni cui ha assistito ciascun intervistato.

n° proiezioni n° intervistati0 21301 34122 5323… …

Page 50: Fondamenti dell’informatica Algoritmi e Strutture Datilocal.disia.unifi.it/bertaccini/AlgoritmiPT.pdf · base 10, con riferimento all'atto di contare con le dita delle mani. I sistemi

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

Il linguaggio FORTRAN

10 luglio 2008 – es. 2 (continua)

integer TOTPR, TOTIreal MEDIAPR

TOTPR=0TOTI=0

open (5, file=“archivio.dat”)10 read (5,*,END=35) NUMP, NUMI

TOTI = TOTI + NUMITOTPR = TOTPR + NUMP*NUMI

goto 10

35 MEDIAPR = 1.0*TOTPR/TOTI

write (*,*) 'totale proiezioni:', TOTPRwrite (*,*) 'media proiezioni per intervistato:', MEDIAPRstopend

queste variabili devono essere dichiarate perché non rispettano i criteri della convenzione implicita

i totalizzatori devono sempre essere azzerati

al file (device o dispositivo) contenente le informazioni viene assegnato l’etichetta 5

si continua a leggere dal file finché non se ne raggiunge la fine (eof = end of file); quando cò avviene, l’esecuzione riprende dalla riga 35

il rapporto tra due interi è intero; poiché la media è reale occorre premoltiplicare per 1.0

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

Il linguaggio FORTRAN

24 gennaio 2008 – es. 2

Testo dell’esercizio

Una catena di grande distribuzione gestisce in città 4 supermercati (codificatirispettivamente con i numeri da 1 a 4). In un archivio sono memorizzati, per ciascunsupermercato e per ciascun mese del 2007, il numero degli scontrini emessi (vediesempio sotto riportato) e il totale incassato.

Produrre un programma FORTRAN che produca in output:a. il totale degli scontrini emessi per tutto il 2007;b. il totale incassato per tutto il 2007;c. il valore dello scontrino medio per i mesi estivi del 2007 (giugno, luglio e agosto).

Supermercati Mese Scontrini Incasso1 1 1200 2011032 1 1106 2021233 1 1154 3122344 1 1183 2543211 2 1233 342167… … … …

Page 51: Fondamenti dell’informatica Algoritmi e Strutture Datilocal.disia.unifi.it/bertaccini/AlgoritmiPT.pdf · base 10, con riferimento all'atto di contare con le dita delle mani. I sistemi

Bruno Bertaccini (mail to: [email protected]) È vietata la riproduzione non autorizzata a fini commerciali.

Il linguaggio FORTRAN

24 gennaio 2008 – es. 2 (continua)

integer*4 S, TOTS, TOTSEreal I, MEDIASE

TOTS=0 TOTI=0.0TOTSE=0TOTIE=0.0

open (7, file=‘supermarket.dat')15 read (7,*,END=65) A, M, S, I

TOTS = TOTS + S TOTI = TOTI + Iif (M .gt. 5 .and. M .lt. 9) then

TOTSE = TOTSE + STOTIE = TOTIE + I

endif goto 15

65 MEDIASE = 1.0*TOTIE/TOTSE

write (*,70) 'totale scontrini:', TOTSwrite (*,72) 'totale incasso:', TOTIwrite (*,72) 'scontrino medio mesi estivi:', MEDIASEstop

70 format (a28,i9) 72 format (a28,f12.2)

end

come esercizio precedente

si continua a leggere dal file finché non se ne raggiunge la fine (eof = end of file); quando ciò avviene, l’esecuzione riprende dalla riga 65

totale incasso e totale scontrini per i mesi estivi

queste variabili devono essere dichiarate perché non rispettano i criteri della convenzione implicita; alle variabili scontrino (S) e totali scontrino (TOTS e TOTSE) viene riservato una zona di memoria di 4 byte

a28: formato di un output di tipo carattere (28 carat. disponibili)i9: formato di un output di tipo intero (9 carat. disponibili)f12.2: formato di un output di tipo reale (12 carat. disponibili di cui uno

per la virgola e 2 per la parte decimale)