Elementi di Informatica a.a. 2020/21 - Prof. G.A. Di Lucca
Dipartimento di Ingegneria Università del Sannio
CdL Ingegneria Energetica1
66Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio
Concetto di Elaborazione
Elaborazione di dati Trasformazione di dati
L’ elaborazione avviene tramite la definizione ed esecuzione di
determinate regole da eseguirsi secondo un definito ordineLa elaborazione viene definita sulle informazioni ed eseguita sui dati
Dato: (rappresentazione del) valore di un’informazione
Dati Iniziali Dati Finali
Elaborazione
67Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio
Concetto di ElaborazioneUn semplice esempio: calcolare il perimetro di una stanza quadrata
• Tipo e valori iniziali delle informazioni con attributo Lato e
Perimetro (indefinito inizialmente)
5 m
Regola di
elaborazionePerimetro = Lato x 4
Lato = 5
Perimetro = ?
Attributivalore iniziale
Lato = 5
Perimetro = 20
valore finale
• valori finali di Lato e di Perimetro – tra cui il/i risultato/i
• una regola, eseguita da un esecutore
Informazioni del problema:
Lato (Iniziale /input) Tipo: numero Intero
Perimetro (Finale /output) Tipo: numero Intero
Elementi di Informatica a.a. 2020/21 - Prof. G.A. Di Lucca
Dipartimento di Ingegneria Università del Sannio
CdL Ingegneria Energetica2
68Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio
... alcune considerazioni e puntualizzazioni
• non confondere le informazioni Lato e Perimetro con i
valori che assumono
– Lato e Perimetro sono attributi
• non confondere i valori con la loro rappresentazione
• la regola è definita sulle informazioni (su Lato e
Perimetro), non sui loro valori
• l’elaborazione avviene sui valori delle informazioni, sui
dati
69Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio
Y=F(X)
X insieme dei dati iniziali
Y insieme dei dati finali
F regola di trasformazione dei dati (da X a Y)
Modello di Elaborazione
• F definisce la AZIONE ELABORATIVA che deve essere fatta sui dati per ottenere la trasformazione desiderata
• una azione elaborativa può essere semplice (atomica) o complessa (composta da azioni elaborative semplici)
• la semplicità o la complessità di una azione elaborativa dipende (anche) dalle capacità dell'ESECUTORE
• la trasformazione F più che una regola, in generale, costituisce un procedimento
Elementi di Informatica a.a. 2020/21 - Prof. G.A. Di Lucca
Dipartimento di Ingegneria Università del Sannio
CdL Ingegneria Energetica3
70Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio
... Procedimento: un insieme di azioni elaborative che vanno eseguite
secondo un definito ordine ...
... una azione elaborativa ‘semplice’ per un esecutore, può risultare‘complessa’ per un diverso esecutore,
… in funzione delle capacità dell’esecutore, un’azione elaborativa puòrichiedere la sua scomposizione in azioni elaborative più semplici, e laeventuale organizzazione di queste ultime in un diverso procedimento
71Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio
ALGORITMO
Termine, originariamente, usato per indicare un procedimento
matematico per risolvere un problema
L'informatica lo eredita ... con qualche variante semantica;
… una definizione informale:
Un algoritmo è una sequenza finita di azioni elaborative (o di“passi di elaborazione”) che risolve automaticamente unproblema
Elementi di Informatica a.a. 2020/21 - Prof. G.A. Di Lucca
Dipartimento di Ingegneria Università del Sannio
CdL Ingegneria Energetica4
72Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio
il concetto di sequenza si riferisce all'ordine in cui le azioni
elaborative debbono essere eseguite
SEQUENZA
La sequenza deve essere FINITA, con riferimento allo spazio ed
al tempo
• spazio: numero finito di azioni elaborative (passi)
• tempo: ogni azione elaborativa si completa in un tempo finito
NB: nelle tecnologie informatiche il concetto di infinito è una astrazione teorica non modellabile e quindi intrattabile
ALGORITMO
73Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio
AUTOMATICAMENTE
• esiste una macchina che può eseguirlo in modo autonomo
• la macchina una volta avviata è in grado di evolvere da sola
realizzando la elaborazione
• il procedimento descritto dall'algoritmo è DETERMINISTICO:
la sequenza è rigidamente fissata e niente è lasciato al caso (a
fattori probabilistici): a parità di dati (e condizioni) iniziali una
stessa elaborazione deve produrre sempre gli stessi risultati
Elementi di Informatica a.a. 2020/21 - Prof. G.A. Di Lucca
Dipartimento di Ingegneria Università del Sannio
CdL Ingegneria Energetica5
74Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio
Algoritmo• Sequenza finita di istruzioni,
• comprensibili da un esecutore (si può trattare di uno strumento
automatico),
• che descrive come realizzare un compito
(come risolvere un “problema”).
• Alcuni esempi
– Istruzioni di montaggio di un mobile
– Uso di un terminale Bancomat
– Calcolo del massimo comune divisore di numeri naturali
– Come realizzare una pietanza (ricetta di cucina)
75Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio
Algoritmi ed esecutori• La descrizione di un algoritmo (metodo di soluzione di un problema)
dipende dalle capacità dell’esecutore
• Esempio:
Calcolo della superficie di un cerchio
– esecutore con un livello medio di scolarità ⇒“calcola la superficie s di un cerchio di cui è noto il raggio r”;
– esecutore che non conosce come calcolare l’area del cerchio ⇒“… applica la formula s = π r2”;
– esecutore che non conosce ⇒… ⇒ “eleva al quadrato il raggio e quindi moltiplica il risultato per 3.1415”;
– … e se non conosce l’elevazione a potenza ⇒
– … ⇒ “moltiplica il raggio per se stesso e poi il risultato per 3.1415”;
Elementi di Informatica a.a. 2020/21 - Prof. G.A. Di Lucca
Dipartimento di Ingegneria Università del Sannio
CdL Ingegneria Energetica6
76Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio
Algoritmi ed esecutori
• La descrizione della soluzione di un problema deve essere comprensibile all’esecutore, ovvero adeguarsi alle conoscenze/capacità dell’esecutore
• L’esecutore deve conoscere le azioni da svolgere e gli elementi/oggetti a cui applicarle
• Se il problema è complesso:
– si scompone il problema originario in sottoproblemi più semplici ;
– ovvero in problemi ciascuno più semplice del problema totale
– si prosegue nella scomposizione fino a giungere a problemi elementari (o primitivi), cioè problemi che possono essere risolti direttamente dall’esecutore mediante la descrizione di algoritmi che l’esecutore riesce a comprendere ed eseguire
77Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio
Un esempio di algoritmo
• inizio operazioni
• accendere il fornello del gas
• prendere una padella, un uovo e 10 g. di burro
• mettere il burro nella padella
• mettere la padella sul fuoco
• aspettare che il burro si è sciolto,
• rompere il guscio dell’uovo
• versare delicatamente nella padella l’albume ed il tuorlo
• aspettare che l’albume sia ben rappreso
• spegnere il fuoco
• versare l’uovo fritto in un piatto
• fine operazioni
Cucinare un uovo fritto al burro:
… sequenza di azioni, ciascuna comprensibile ed eseguibile dall’esecutore… accendere, prendere, mettere, aspettare, rompere, versare, spegnere, ...
... fornello, padella, uovo, burro, piatto, ...
Elementi di Informatica a.a. 2020/21 - Prof. G.A. Di Lucca
Dipartimento di Ingegneria Università del Sannio
CdL Ingegneria Energetica7
78Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio
…. E se l’esecutore non sa accendere il fornello del gas?
…. Scomposizione in azioni più semplici di “accendere il fornello del gas”:
• prendere l’accendigas
• avvicinare l’accendigas al fornello
• girare la chiavetta del gas verso destra
• premere il pulsante dell’accendigas per innescare la scintilla
• aspettare che compare la fiamma
• smettere di premere il pulsante dell’accendigas
• allontanare l’accendigas dal fornello
• regolare l’intensità della fiamma sul valore ‘medio’
Un esempio di algoritmo
79Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio
Algoritmo
• Lo stato iniziale, del contesto in cui è eseguito, può condizionare la
correttezza dell’esecuzione …
• … nell’esempio precedente si è dato per scontato che:
• il fornello fosse spento ...
• l’accendino funziona ;
• ….
Vanno specificate le eventuali precondizioni …
Elementi di Informatica a.a. 2020/21 - Prof. G.A. Di Lucca
Dipartimento di Ingegneria Università del Sannio
CdL Ingegneria Energetica8
80Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio
Un esempio di algoritmoCalcolare l’area di un terreno agricolo avente la forma riportata in figura
A
B
C
Calcola l’area del trapezio A
Calcola l’area del triangolo B
Calcola l’area del rettangolo C
Somma le tre aree calcolate
Area_trapezio = [(Bmag + bmin) * h]/2
Area_triangolo = (Base * h)/2
Area_rettangolo = Base * h
Area_terreno = Area_trapezio + Area_triangolo + Area_rettangolo
Decomposizione in problemi più semplici
81Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio
Un esempio di algoritmoCalcolare l’area di un terreno agricolo avente la forma riportata in figura
Calcola l’area del trapezio Tp1
Calcola l’area del trapezio Tp2
Calcola l’area del parallelogramma P1
Somma le aree calcolate
Area_trapezio = [(Bmag + bmin) * h]/2
Area_parallelogramma = Base * h
Area_terreno=Area_Tp1+Area_Tp2+Area_Tr1+Area_Tr2+ Area_P1
Decomposizione in problemi più semplici... più soluzioni per uno stesso problema ...
Calcola l’area del triangolo Tr1
P1
Tr1
Tp1
Tp2
Tr2 Calcola l’area del triangolo Tr2
Elementi di Informatica a.a. 2020/21 - Prof. G.A. Di Lucca
Dipartimento di Ingegneria Università del Sannio
CdL Ingegneria Energetica9
82Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio
Algoritmo• Dati un problema P e un esecutore E, l’algoritmo definisce una soluzione
effettiva della classe dei problemi P per l’esecutore E, ovvero una sequenza finita di istruzioni elementari tale che:
– l’esecutore è in grado di interpretare, associando a ciascuna di esse l’azione (o la successione di azioni più elementari) che deve compiere per eseguirla
– la successione di azioni risultante dall’interpretazione delle istruzioni costituisce una procedura effettiva per l’esecutore stesso terminante in un tempo finito
• In generale, possono esistere diverse soluzioni effettive (algoritmi) dello stesso problema per lo stesso esecutore
83Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio
Proprietà di un algoritmo Un algoritmo, e quindi ciascuna istruzione che lo compone, deve
soddisfare le seguenti proprietà:
• Finitezza– L’algoritmo/l’azione deve concludersi in un tempo finito
• Osservabilità– L’algoritmo/l’azione deve avere un effetto osservabile, cioè deve produrre qualcosa
• Riproducibilità– a partire dallo stesso stato iniziale, la stessa azione deve produrre sempre lo stesso
risultato
• Correttezza– L’algoritmo perviene alla soluzione del compito cui è preposto, senza difettare di alcun
passo fondamentale
• Efficienza– L’algoritmo perviene alla soluzione del problema usando la minima quantità di risorse
fisiche disponibili
• tempo di esecuzione, memoria, …
Elementi di Informatica a.a. 2020/21 - Prof. G.A. Di Lucca
Dipartimento di Ingegneria Università del Sannio
CdL Ingegneria Energetica10
84Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio
Rappresentazione degli algoritmi
• Algoritmo formulato per essere comunicato tra/eseguito da esseri umani
– sintetico e intuitivo
– rappresentato in linguaggi informali o semi-formali (linguaggio naturale, diagrammi di flusso, …)
• Algoritmo formulato per essere eseguito da macchine automaticamente
– preciso ed eseguibile dalla macchina
– codificato in linguaggi comprensibili dagli esecutori automatici (linguaggio macchina o linguaggio di programmazione di alto livello)
85Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio
Algoritmo, Linguaggio, ProgrammaUn algoritmo viene descritto tramite un LINGUAGGIO
Il linguaggio di descrizione di un algoritmo deve essere comprensibile
all’esecutore, ovvero alla macchina automatica che lo esegue
Un PROGRAMMA è la descrizione formalizzata di un algoritmo, espressa
in un linguaggio di programmazione
Un PROGRAMMA è una sequenza finita di ‘frasi’ (istruzioni) ciascuna
esprimente operazioni che l’esecutore può comprendere ed eseguire
Il PROGRAMMA che deve essere eseguito è memorizzato nei registri
della memoria dell’esecutore
Il linguaggio deve essere ‘non ambiguo’, ovvero ciascuna frase
realizzata con esso deve evocare un’unica azione elaborativa
(il linguaggio ‘naturale’ non lo è)
Che bella fiera ! Mi piace la pesca È stato schiacciato dalle imposte
Pagare la mora Immerso nello stagno Ha dato una caramella al lama
Elementi di Informatica a.a. 2020/21 - Prof. G.A. Di Lucca
Dipartimento di Ingegneria Università del Sannio
CdL Ingegneria Energetica11
86Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio
Algoritmo e Programma
• Un algoritmo descrive il metodo generale per risolvere una determinata
classe di problemi, un programma è la sua descrizione specifica per un
dato esecutore
• Un programma è un algoritmo che è stato specializzato per la risoluzione,
sotto specifiche circostanze, di una specifica classe di problemi da parte
di un determinato tipo di esecutore e descritto utilizzando uno specifico
linguaggio comprensibile a quell’esecutore
• Un Programma deve soddisfare le 5 proprietà di un algoritmo
… finitezza, osservabilità, riproducibilità, efficienza, correttezza …… deterministico, non ambiguità …
87Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio
Modello di Elaborazione
Dati Iniziali Dati Finali
Esecutore
Programma
Elementi di Informatica a.a. 2020/21 - Prof. G.A. Di Lucca
Dipartimento di Ingegneria Università del Sannio
CdL Ingegneria Energetica12
88Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio
Un semplice esempio
Un esecutore con le seguenti conoscenze/capacità operative:
• sa leggere ed interpretare le istruzioni indicate in una lista scritta su un
foglio;
• sa leggere da/scrivere su appositi fogli i valori da usare;
• sa usare una semplice calcolatrice;
• sa leggere e trascrivere su appositi fogli i risultati intermedi e finali
dell’elaborazione
L’esecutore deve risolvere il problema di calcolare il perimetro,
espresso in metri, di una stanza quadrata
Bisogna istruirlo circa come e cosa fare con un programma
89Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio
Risultati
P
Dati iniziali
L 5
20
1
0.
2 3
54 6
7 98
0 =.
+ - * / C
L = 5
P =20
1. Inizia operazioni calcola
‘perimetro stanza quadrata’
2. Prendi la misura del
lato e scrivila sul foglio L
3. Azzera la calcolatrice
4. Leggi il valore sul foglio L
e copialo sulla calcolatrice
5. Premi il tasto * della calcolatrice
6. Premi il tasto 4 della calcolatrice
7. Premi tasto = della calcolatrice
8. Leggi il dato sul display
calcolatrice e copialo sul foglio P
9. Leggi valore sul foglio P e
forniscilo come risultato
10. Termina operazioni
0.
5.
5.
20.
4.
Il Perimetro
è 20 metri
Elementi di Informatica a.a. 2020/21 - Prof. G.A. Di Lucca
Dipartimento di Ingegneria Università del Sannio
CdL Ingegneria Energetica13
90Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio
L 5
P20
1
0.
2 3
54 6
7 98
0 =.
+ - * / C
1. Inizia operazioni per calcolare
‘perimetro stanza quadrata’
2. Prendi la misura del
lato e scrivila sul foglio L
3. Azzera la calcolatrice
4. Leggi il valore sul foglio L
e copialo sulla calcolatrice
5. Premi il tasto * della calcolatrice
6. Premi il tasto 4 della calcolatrice
7. Premi tasto = della calcolatrice
8. Leggi dato su calcolatrice e
copialo sul foglio P
9. Leggi valore sul foglio P e
forniscilo come risultato
10. Termina operazioni
Registri
•Dati
•Istruzioni
Controllore ElaborazioneInterprete/Esecutore istruzioni
Esecutore operazioni
…
Ambiente di Elaborazione
Principali elementi caratterizzanti
91Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio
inoltre, acquisizione del programma e sua memorizzazione nei registri
• operazioni di ingresso: i dati vengono acquisiti dall'esterno e
memorizzati nei registri
• operazioni di trasferimento: dei dati tra registri o altri componenti
• operazioni aritmetiche e logiche: eseguite da appositi componenti
• operazioni di uscita, i dati relativi ai risultati vengono letti dai registri
e trasferiti all'esterno
Ambiente di Elaborazione
Principali Tipi di Operazioni
Elementi di Informatica a.a. 2020/21 - Prof. G.A. Di Lucca
Dipartimento di Ingegneria Università del Sannio
CdL Ingegneria Energetica14
92Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio
L'esecutore di un programma e` un elaboratore elettronico:
• necessario conoscere l'insieme di istruzioni che esso è in grado di
interpretare ed eseguire
• necessario conoscere quali sono tipi di informazioni che è in grado di
rappresentare
Ciascun tipo di elaboratore possiede un proprio insieme di istruzioni
rappresentate in linguaggio macchina (sequenze di bit)
Un Linguaggio di Programmazione permette di descrivere un programma
con un linguaggio, non ambiguo, più vicino a quello naturale; un tale
programma è poi automaticamente tradotto nel linguaggio macchina che
l’elaboratore eseguirà
Algoritmo e Programma