1 - Facoltà di Medicina e Chirurgia di Messina

A.A. 2007-2008
Università degli Studi di Messina
Facoltà di Medicina e Chirurgia
Corsi di Laurea in Dietistica, Tecniche di Laboratorio Biomedico,
Scienze delle Professioni Sanitarie, Tecniche e Diagnostiche, Tecniche
Audioprotesiche, Tecniche Audiometriche.
Corso di Sistemi di elaborazione delle informazioni
Docente: Ing. Maurizio Patanè
Corso di Sistemi di elaborazione delle informazioni - Autore: Ing. Maurizio Patanè
Argomenti del corso
• Modulo 1: Concetti generali sui calcolatori
elettronici
• Modulo 2: Hardware
• Modulo 3: Software di sistema
• Modulo 4: Software applicativi
• Modulo 5: Reti di calcolatori
Corso di Sistemi di elaborazione delle informazioni - Autore: Ing. Maurizio Patanè
Modulo 1
Concetti generali sui calcolatori
elettronici
• Struttura del calcolatore
• Il sistema binario
• Rappresentazione dell’informazione nel calcolatore
• Linguaggio macchina
• Linguaggio assemblatore
• Linguaggi di alto livello
•Algoritmi
Corso di Sistemi di elaborazione delle informazioni - Autore: Ing. Maurizio Patanè
Nozioni generali sul computer
Definizione
Un computer (o elaboratore elettronico o
calcolatore elettronico) è una macchina
elettronica capace di immagazzinare,
trasmettere ed elaborare dati, risolvendo i
più svariati problemi con straordinaria
velocità ed efficienza.
Corso di Sistemi di elaborazione delle informazioni - Autore: Ing. Maurizio Patanè
Il flusso delle informazioni
Il computer, in generale, riceve le informazioni,
cioè i dati, in ingresso (input) e, dopo averle
elaborate in base ad un programma prestabilito, le
restituisce in uscita (output) trasformate in
risultati.
dati
istruzioni
calcolatore
risultati
Corso di Sistemi di elaborazione delle informazioni - Autore: Ing. Maurizio Patanè
Cosa è un programma
Per poter risolvere un problema tramite l’uso del
computer è necessario programmarlo ovvero
bisogna fornire al calcolatore un insieme finito ed
ordinato di opportune istruzioni che si chiama
programma. Anche il computer più veloce non è
in grado di svolgere alcuna attività se nella sua
memoria non è stato introdotto il programma che
gli insegni il procedimento per risolvere il
problema.
Corso di Sistemi di elaborazione delle informazioni - Autore: Ing. Maurizio Patanè
Perché utilizzare un computer
Alcuni dei vantaggi derivanti dall’utilizzo di
un computer sono i seguenti:
•
•
•
•
Rapidità di esecuzione
Precisione nei calcoli
Esecuzione di lavori ripetitivi
Gestione di grandi quantità di dati
Corso di Sistemi di elaborazione delle informazioni - Autore: Ing. Maurizio Patanè
Limiti di un elaboratore
Un elaboratore presenta comunque i
seguenti limiti:
• non ha una propria intelligenza
• non ha creatività
• non è in grado di risolvere problemi
nuovi se non opportunamente istruito
• non è in grado di gestire informazioni non
strutturate
Corso di Sistemi di elaborazione delle informazioni - Autore: Ing. Maurizio Patanè
Struttura di un calcolatore
Memoria
di massa
CPU
Unità di
ingresso
Memoria di lavoro
(o centrale)
Corso di Sistemi di elaborazione delle informazioni - Autore: Ing. Maurizio Patanè
Unità di
uscita
Architettura di un calcolatore
Esistono due differenti architetture:
• Architettura di Von Neumann: dati ed istruzioni
sono memorizzati all’interno della stessa memoria
• Architettura Harvard: dati ed istruzioni sono
memorizzati in due memorie distinte (memoria
DATI e memoria ISTRUZIONI rispettivamente)
Attualmente l’architettura di Von Neumann è la più
utilizzata
Corso di Sistemi di elaborazione delle informazioni - Autore: Ing. Maurizio Patanè
Architettura di von Neumann
Memoria
Dispositivi
di input
CPU
Dispositivi
di output
Corso di Sistemi di elaborazione delle informazioni - Autore: Ing. Maurizio Patanè
Architettura Harvard
Memoria
DATI
Dispositivi
di input
Memoria
ISTRUZIONI
CPU
Dispositivi
di output
Corso di Sistemi di elaborazione delle informazioni - Autore: Ing. Maurizio Patanè
Rappresentazione dell’informazione nei calcolatori
• I componenti base della CPU e delle memorie
(transistor) sono in grado di rappresentare
due stati: OFF e ON (ovvero chiuso/aperto
ovvero 0/1)
• L’unità base di informazione viene chiamata
b it (da Binary Digit ovvero cifra binaria)
• Al loro interno i calcolatori utilizzano
sequenze di 0 e 1 per rappresentare ogni tipo
di informazione (testi, immagini, suoni,
programmi, istruzioni, dati…)
Corso di Sistemi di elaborazione delle informazioni - Autore: Ing. Maurizio Patanè
Rappresentazione dell’informazione nei calcolatori
• Tutte le informazioni (dati ed istruzioni)
sono trattate da un calcolatore a gruppi
di bit di dimensione finita (solitamente
32 o 64)
• Per convenzione le sequenze di bit
sono raggruppate per otto. Un gruppo
di 8 bit `e detto b y te .
Corso di Sistemi di elaborazione delle informazioni - Autore: Ing. Maurizio Patanè
Rappresentazione dell’informazione nei calcolatori
La capacità di memoria di un computer e
l’occupazione di memoria da parte di un
programma si misura in byte e, più di
frequente, mediante uno dei suoi seguenti
multipli:
1 KiloByte (KB) = 1024 byte
1 MegaByte (MB) = 1024 KB
1 GigaByte (GB) = 1024 MB
1 TeraByte(TB) = 1024 GB
Corso di Sistemi di elaborazione delle informazioni - Autore: Ing. Maurizio Patanè
Rappresentazione dei numeri naturali
I sistemi di numerazione possono essere
suddivisi in due categorie:
• Sistemi additivi
• Sistemi posizionali
Alla prima categoria appartiene il sistema di
numerazione romana mentre alla seconda
appartengono i sistemi decimale, binario, ottale,
esadecimale, etc.
Corso di Sistemi di elaborazione delle informazioni - Autore: Ing. Maurizio Patanè
Sistemi di numerazione additivi
Un tipico esempio di sistema additivo è quello romano in
cui per ottenere il valore di un numero basta sommare le
singole cifre che lo compongono.
Esempio: MDCCLXIV `e pari a
1000 + 500 + 100 + 100 + 50 + 10 − 1 + 5 = 1764
N.B. Se un valore non `e in ordine crescente si
sottrae
Svantaggi
• Sono necessari molti simboli per un numero
• E’ difficile gestire numeri con molte cifre significative
• Fare dei calcoli `e molto complesso
Corso di Sistemi di elaborazione delle informazioni - Autore: Ing. Maurizio Patanè
Sistemi posizionali
• I simboli assumono valore a seconda della
loro posizione rispetto ad un numero b detto
base; per rappresentare qualsiasi numero
naturale sono sufficienti b simboli.
• La base 10 è la più utilizzata. Il sistema di
numerazione a base 10 è detto s is te m a
d e c im ale
• L’utilizzo dei sistemi posizionali semplifica lo
svolgimento manuale di calcoli.
Corso di Sistemi di elaborazione delle informazioni - Autore: Ing. Maurizio Patanè
Sistema decimale
• Nel sistema di numerazione decimale si utilizzano
dieci simboli per rappresentare un numero secondo il
seguente schema:
(Cn-1 . . . C 0)10 con Ck  [0,1, …, 9]
La rappresentazione precedente è equivalente al
seguente polinomio:
Cn-1 x 10n-1+ Cn-2 x 10n-2 +. . . + C0 x 100
Esempio: 1512=1x103+5x102+1x101+2x100
Corso di Sistemi di elaborazione delle informazioni - Autore: Ing. Maurizio Patanè
Sistema binario
• Nel sistema di numerazione binario si
utilizzano soltanto due simboli: 0 ed 1
• Un numero binario è pertanto una sequenza
di 0 ed 1
• Ogni cifra di un numero binario è detta bit
• Con n bit è possibile rappresentare i numeri
naturali  [0 , 2n-1]
Corso di Sistemi di elaborazione delle informazioni - Autore: Ing. Maurizio Patanè
Sistema binario
Un generico numero binario ad n cifre (o n
bit) si esprime nella forma:
(Bn-1 . . . B 0)2 con Bk  [0,1]
L’equivalente decimale del numero binario è:
Bn-1 x 2n-1+ Bn-2 x 2n-2 . . . + B0 x 20
Esempio: (11)2=1x21+1x20=2+1=310
Corso di Sistemi di elaborazione delle informazioni - Autore: Ing. Maurizio Patanè
Sistema binario
Rappresentazione dei numeri negativi
Per rappresentare i numeri negativi si utilizza la
rappresentazione in complemento a due in cui il primo bit è
quello di segno (se è pari ad 1 il numero è negativo, se è zero
è positivo)
Per ottenere il complemento a due di un numero si procede
nel modo seguente:
• si invertono i bit del numero (01, 10)
• si somma 1 al risultato dell’inversione
Esempio: 01010b (= +10d)  10101b+1b  10110b (= -10d)
Corso di Sistemi di elaborazione delle informazioni - Autore: Ing. Maurizio Patanè
Rappresentazione dei caratteri
• La rappresentazione interna si basa sulla
codifica mediante un intero
• E’ sufficiente 1 byte per la rappresentazione
dei caratteri necessari per le lingue
anglosassoni
• Per altre lingue (Cinese, Giapponese, ecc.)
sono adottate altre codifiche (con almeno 2
byte per carattere)
• Una codifica molto diffusa `e quella ASCII
(American Standard Code for Information
Interchange – 7 o 8 bit)
Corso di Sistemi di elaborazione delle informazioni - Autore: Ing. Maurizio Patanè
Codice ASCII
Corso di Sistemi di elaborazione delle informazioni - Autore: Ing. Maurizio Patanè
Rappresentazioni delle immagini
• Le immagini digitali sono costituite da un numero finito di
punti detti pixel (da picture elements ovvero elementi
dell’immagine) ovvero sono il risultato di un
campionamento spaziale di una scena reale.
• Ad ogni pixel è associato una opportuna codifica binaria
che ne rappresenta la luminosità (tono di grigio) o il colore.
Poiché ad ogni pixel è possibile associare un numero finito
di bit anche i corrispondenti livelli di grigio o le tonalità di
colore (per un’immagine a colori) saranno in numero finito.
Il processo che consente di approssimare
la luminosità ( o la tonalità di colore) di un pixel mediante
un numero finito di livelli è detto quantizzazione.
Corso di Sistemi di elaborazione delle informazioni - Autore: Ing. Maurizio Patanè
Rappresentazioni delle immagini
Caratteristiche principali
• Profondità di colore: è determinata dal numero di bit
utilizzato per codificare un pixel. Maggiore è la profondità
di colore, più elevato è il numero di toni di grigio o di
colori che si possono rappresentare.
• Risoluzione: è legata alla frequenza spaziale di
campionamento ed incide sul grado di dettaglio che si può
apprezzare in una immagine. Generalmente la risoluzione
è espressa in dpi (dot per inch) ovvero punti per per
pollice o pixel per inch.
Corso di Sistemi di elaborazione delle informazioni - Autore: Ing. Maurizio Patanè
Rappresentazione delle immagini
Ingrandendo l’immagine
è possibile discernere i
singoli pixel che la
costituiscono
Corso di Sistemi di elaborazione delle informazioni - Autore: Ing. Maurizio Patanè
Rappresentazioni delle immagini
Caratteristiche principali
Dimensione in pixel: un’immagine digitale può essere assimilata ad
una matrice di punti (pixel) di tipo N x M dove il numero delle
righe N è pari al numero dei pixel lungo la direzione orizzontale
mentre il numero delle colonne M è pari al numero dei pixel lungo
la direzione verticale.
Il numero di pixel, le dimensioni geometriche (larghezza e altezza)
e la risoluzione di un’immagine sono legati dalle seguenti relazioni:
N = W x Res
M = H x Res
dove W ed H sono rispettivamente la larghezza e l’altezza
dell’immagine espresse in pollici (inches) e Res è la risoluzione
espressa in dpi (dot per inches)
Corso di Sistemi di elaborazione delle informazioni - Autore: Ing. Maurizio Patanè
Rappresentazioni delle immagini
Esempio: un’immagine digitale, di dimensioni pari a
56,44cm X 42,33cm ha una risoluzione di 72 dpi. Calcolare
il numero di punti (in orizzontale e verticale) dell’immagine.
Essendo 1cm  0.393 inches si ha:
W = 56,44 X 0.393 = 22.2 inches (larghezza)
H = 42,33 X 0.393 = 16.667 inches (altezza)
N = W x Res = 22.22 x 72 = 1600
M = H x Res = 16.667 x 72= 1200
Corso di Sistemi di elaborazione delle informazioni - Autore: Ing. Maurizio Patanè
Rappresentazione delle immagini
Immagini in bianco e nero
Ogni pixel è rappresentato
da un solo bit che può
assumere il valore 0 (pixel
spento) o 1 (pixel acceso)
Corso di Sistemi di elaborazione delle informazioni - Autore: Ing. Maurizio Patanè
Rappresentazione delle immagini
Immagini a toni di grigio
• Nelle immagini a toni di grigio, se si utilizzano n bit per
codificare la luminosità di un singolo pixel, si avranno a
disposizione un totale di 2n livelli di grigio.
Esempi:
1 bit (21) = 2 toni
2 bit (22) = 4 toni
3 bit (23) = 8 toni
4 bit (24) = 16 toni
8 bit (28) = 256 toni
16 bit (216) = 65.536 toni
24 bit (224) = 16.7 milioni toni
Corso di Sistemi di elaborazione delle informazioni - Autore: Ing. Maurizio Patanè
Rappresentazione delle immagini
Immagini a toni di grigio
Con 4 bit per pixel i livelli di grigio corrispondenti sono 16 (da 0 a 15)
Corso di Sistemi di elaborazione delle informazioni - Autore: Ing. Maurizio Patanè
Rappresentazione delle immagini
Immagini a colori
Un’immagine a colori è tipicamente rappresentata da una
profondità di colore che va da 8 a 24 bit ed oltre. In
un’immagine a 24 bit i bit sono spesso suddivisi in 3
gruppi: 8 per il rosso (Red), 8 per il verde (Green) ed 8
per il blu (Blu). Le combinazioni di tali bit sono
utilizzate per ottenere le altre sfumature di colore.
Esempio: immagine RGB a 24 bit
28 x 28 x 28 = 22416.7 milioni di colori
Corso di Sistemi di elaborazione delle informazioni - Autore: Ing. Maurizio Patanè
Linguaggi di programmazione
Tramite un linguaggio di programmazione è
possibile fornire ad un computer delle istruzioni
finalizzate all’esecuzione di un determinato compito
ovvero alla produzione di determinati risultati di uscita in
corrispondenza di determinati dati di ingresso.
Esistono due categorie di linguaggi di programmazione:
• Linguaggio macchina o binario
• Linguaggi simbolici o di alto livello
Corso di Sistemi di elaborazione delle informazioni - Autore: Ing. Maurizio Patanè
Linguaggio macchina
• Ogni CPU è in grado di interpretare e di eseguire un
certo numero di istruzioni
• Tali istruzioni sono costituite da sequenze di bit che
corrispondono al tipo di operazione da effettuare ed
ai relativi operandi.
Esempio:
001000100011
0101010111 1100101001
Codice operazione Operando 1 Operando 2
Corso di Sistemi di elaborazione delle informazioni - Autore: Ing. Maurizio Patanè
Linguaggio macchina
•
•
•
•
Svantaggi
È fortemente legato alla macchina e quindi
poco portabile
È difficile da interpretare
Richiede molto tempo per essere scritto
Il debugging può risultare complesso
Corso di Sistemi di elaborazione delle informazioni - Autore: Ing. Maurizio Patanè
Linguaggio assemblatore
• E’ stato introdotto per ridurre le difficoltà
connesse all’utilizzo del linguaggio macchina
• E’ un linguaggio simbolico di basso livello
• Ancora oggi è utilizzato per realizzare
porzioni di codice ottimizzato
• Nel linguaggio assembler le istruzioni, gli
indirizzi e gli operandi vengono rappresentati
in forma simbolica
Corso di Sistemi di elaborazione delle informazioni - Autore: Ing. Maurizio Patanè
Linguaggio assemblatore
Esempio1: istruzione per la memorizzazione nel registro R1
del contenuto della locazione di memoria FFh
Codice operativo
001000100011
Operando1
0001
Operando2
0000 0000 1111 1111
Istruzione in linguaggio macchina
LOAD
R1
FFh
Istruzione in linguaggio assembly
Corso di Sistemi di elaborazione delle informazioni - Autore: Ing. Maurizio Patanè
Linguaggio assemblatore
Esempio 2: il seguente programma trasferisce il contenuto
delle locazioni di memoria IND1 ed IND2 nei registri R1
ed R2, esegue la somma tra R1 ed ed R2 e ne memorizza
il risultato in R3. Infine il contenuto di R3 è trasferito
nella locazione di memoria IND3.
LOAD R1,IND1;
copia il contenuto di IND1 in R1
LOAD R2,IND2;
copia il contenuto di IND2 in R2
ADD R3, R1, R2;
somma R1 ad R2 e memorizza
il risultato in R3
STORE IND3, R3;
copia il contenuto di R3 in IND3
Corso di Sistemi di elaborazione delle informazioni - Autore: Ing. Maurizio Patanè
Linguaggio assemblatore
Un programma scritto nel linguaggio assembly non
è direttamente eseguibile dall’elaboratore, pertanto
deve essere tradotto da un apposito programma
(assembler) in codice macchina
Programma
Sorgente
(in codice
assembly)
assembler
Programma
Oggetto
(in codice
macchina)
Corso di Sistemi di elaborazione delle informazioni - Autore: Ing. Maurizio Patanè
Linguaggio assemblatore
Svantaggi
• I programmi scritti in codice assembly sono
difficili da interpretare
• Il codice assembly è legato alla macchina e
quindi poco “trasportabile”
• È più vicino al modo di “pensare” del
calcolatore che non a quello umano
Corso di Sistemi di elaborazione delle informazioni - Autore: Ing. Maurizio Patanè
Linguaggi di alto livello
• Per superare i limiti e le difficoltà intrinseche del
linguaggio macchina e del codice assembly sono
stati introdotti dei linguaggi di programmazione ad
alto livello.
• Tali linguaggi, detti anche linguaggi algoritmici,
prescindono dalle caratteristiche strutturali della
macchina e sono caratterizzati da un notevole
livello di astrazione ovvero tendono ad avvicinarsi
in modo sempre più consistente alle espressioni
della comunicazione e della logica di pensiero
caratteristiche dell’uomo.
Corso di Sistemi di elaborazione delle informazioni - Autore: Ing. Maurizio Patanè
Linguaggi di alto livello
•
•
•
•
•
•
•
•
Ada
Basic
Cobol
Pascal
Fortran
Visual Basic
C
C+ +
Corso di Sistemi di elaborazione delle informazioni - Autore: Ing. Maurizio Patanè
Linguaggi di alto livello
Esempio: programma per il calcolo dell’area di un rettangolo
in notazione lineare strutturata e corrispondente
implementazione nel linguaggio Pascal
INIZIO
scrivi ‘introduci la base’
leggi b
scrivi ‘introduci l’altezza’
leggi h
area a b*h
scrivi area
FINE
program rettangolo;
var b, h, area :real;
begin
writeln(‘introduci la base’);
readln(b);
writeln(‘introduci la altezza’);
readln(h);
area:=b*h;
writeln(area);
end.
Corso di Sistemi di elaborazione delle informazioni - Autore: Ing. Maurizio Patanè
Linguaggi di alto livello
dichiarazione delle
variabili (di tipo real
ovvero reale)
legge il valore immesso
da tastiera e lo memorizza
nella variabile
assegna ad area il risultato
del prodotto tra a e b
program rettangolo;
var b, h, area :real;
begin
writeln(‘introduci la base’);
readln(b);
writeln(‘introduci la altezza’);
readln(h);
area:=b*h;
writeln(area);
end.
Corso di Sistemi di elaborazione delle informazioni - Autore: Ing. Maurizio Patanè
Interpreti e compilatori
Prima di poter essere eseguito da un
calcolatore un programma scritto in un
linguaggio ad alto livello deve essere
convertito in linguaggio macchina.
I programmi in grado di effettuare la
conversione da linguaggio di alto livello a
codice macchina appartengono ad una delle
due seguenti categorie:
• Compilatori
• Interpreti
Corso di Sistemi di elaborazione delle informazioni - Autore: Ing. Maurizio Patanè
Compilatore
• Il compilatore riceve in ingresso il codice sorgente
ovvero il programma scritto in un linguaggio di alto
livello e lo converte in linguaggio macchina
• Il risultato della compilazione è detto codice
oggetto.
• Il programma può essere eseguito solo dopo
che il processo di traduzione dell’intero codice
sorgente in codice oggetto ha avuto
termine.
Corso di Sistemi di elaborazione delle informazioni - Autore: Ing. Maurizio Patanè
Compilatore
• Il linker provvede successivamente a collegare il
file oggetto alle librerie (predefinite o definite
dall’utente) generando il file eseguibile.
• Il file eseguibile varia a seconda della piattaforma
• Il file sorgente, che consentirebbe di modificare il
programma, rimane di esclusiva pertinenza del
programmatore.
Corso di Sistemi di elaborazione delle informazioni - Autore: Ing. Maurizio Patanè
Dal codice sorgente al file eseguibile
File
sorgente
editor
File
oggetto
compilatore
librerie
File
eseguibile
Corso di Sistemi di elaborazione delle informazioni - Autore: Ing. Maurizio Patanè
L
i
n
k
e
r
Interprete
• L’interprete traduce il codice sorgente in
linguaggio macchina istruzione per
istruzione
• Non appena una istruzione del codice ad
alto livello è interpretata è pronta per essere
eseguita.
• Su ogni piattaforma deve essere disponibile
il programma interprete per la traduzione in
linguaggio macchina
Corso di Sistemi di elaborazione delle informazioni - Autore: Ing. Maurizio Patanè
Il linguaggio Java
Java adotta una strategia mista
• il file sorgente contenente un programma Java viene prima
compilato, generando un file in ByteCode
• il file in ByteCode è un file in linguaggio macchina per una
macchina non esistente, detta macchina virtuale o Java
VirtualMachine
• per essere eseguito il ByteCode viene interpretato su ogni
piattaforma
• esistono programmi interpreti, che realizzano una Java
VirtualMachine, per ogni piattaforma
• in questo modo il file sorgente non viene distribuito, mentre
il file ByteCode distribuito è il medesimo per tutte le
piattaforme
Corso di Sistemi di elaborazione delle informazioni - Autore: Ing. Maurizio Patanè
Il linguaggio Java
Il calcolatore con un programma compilatore riceve in
ingresso il programma sorgente in linguaggio Java e lo
traduce producendo in uscita il corrispondente programma
nel linguaggio intermedio ByteCode.
Programma
Sorgente
(Java)
Compilatore
Java
Programma
ByteCode
Corso di Sistemi di elaborazione delle informazioni - Autore: Ing. Maurizio Patanè
Il linguaggio Java
Il calcolatore con un programma interprete
Java Virtual Machine riceve il programma
ByteCode ed i relativi dati in ingresso, lo
interpreta e lo esegue, istruzione dopo
istruzione, producendo i dati in uscita.
Programma
ByteCode
Java Virtual
Machine
Dati di uscita
Dati di
ingresso
Corso di Sistemi di elaborazione delle informazioni - Autore: Ing. Maurizio Patanè
Errori in un programma
•
•
•
•
•
Gli errori di sintassi sono in genere commessi
durante la scrittura del programma mediante la
tastiera. I più frequenti sono:
Parole chiave scritte in modo inesatto
Parentesi aperte e non chiuse
Apici aperti e non chiusi
Confusione del punto con la virgola
Identificatori che iniziano con una cifra
anziché con un numero
Corso di Sistemi di elaborazione delle informazioni - Autore: Ing. Maurizio Patanè
Errori in un programma
Gli errori di logica si commettono quando si
scrive un’istruzione o una serie di istruzioni
imprecise da un punto di vista logico ossia
quando il ragionamento che le ha prodotte è in
parte o completamente errato. I più frequenti
sono:
• Divisioni per lo zero
• Radici quadrate di numeri negativi
• Espressioni che producono risultati diversi da
quelli che il programmatore si aspettava
Corso di Sistemi di elaborazione delle informazioni - Autore: Ing. Maurizio Patanè
Errori in un programma
Gli errori di sintassi sono in genere segnalati con degli
appositi messaggi di errore durante la fase di compilazione o
di interpretazione del programma. Sono meno insidiosi degli
errori logici in quanto più facilmente rilevabili
durante la fase di “debugging” del programma. Gli errori
logici sono, invece, più difficili da individuare in quanto
spesso si verificano solo in corrispondenza di particolari
valori dei dati di ingresso pertanto è necessario sottoporre
il programma ad appropriati test di verifica allo scopo di
individuarli.
Corso di Sistemi di elaborazione delle informazioni - Autore: Ing. Maurizio Patanè
Algoritmi
• Per risolvere un problema è necessario
individuare una successione finita di
istruzioni interpretabili ed eseguibili da un
esecutore che, a partire dai dati di ingresso,
conducano ai dati finali (soluzione del
problema)
• L’insieme di tali istruzioni si definisce
Algoritmo
Corso di Sistemi di elaborazione delle informazioni - Autore: Ing. Maurizio Patanè
Algoritmi
Rappresentazione schematica di un algoritmo
algoritmo
Dati di
ingresso
esecutore
Dati di
uscita
Corso di Sistemi di elaborazione delle informazioni - Autore: Ing. Maurizio Patanè
Algoritmi
Rappresentazione di un algoritmo
Esistono due differenti modalità di rappresentazione
di un algoritmo:
• Diagramma di flusso: rappresentazione grafica
mediante l’utilizzo di simboli ad ognuno dei quali
corrisponde un’azione da parte dell’esecutore
• Notazione lineare strutturata: i simboli grafici
sono rimpiazzati da parole riservate fra le quali
vanno incluse le istruzioni da eseguire
Corso di Sistemi di elaborazione delle informazioni - Autore: Ing. Maurizio Patanè
Algoritmi
Simboli dei diagrammi di flusso
Questo simbolo viene utilizzato per identificare
l’inizio e la fine di un algoritmo
Questo simbolo indica un’azione elementare
ovvero un’azione non ulteriormente scomponibile
Questo simbolo indica che viene effettuato un
controllo da parte dell’esecutore dell’algoritmo per
verificare se una determinata condizione è vera o
falsa
Questo simbolo indica un’operazione di ingresso o
uscita dei dati
Corso di Sistemi di elaborazione delle informazioni - Autore: Ing. Maurizio Patanè
Diagrammi di flusso
Struttura sequenziale
inizio
Istruzione 1
Istruzione 2
fine
segna l’inizio della sequenza
di istruzioni
Le istruzioni che compongono
la sequenza vengono eseguite
in successione
segna la fine della sequenza
di istruzioni
Corso di Sistemi di elaborazione delle informazioni - Autore: Ing. Maurizio Patanè
Diagrammi di flusso
Struttura di selezione binaria
falso
condizione
vero
istruzione
L’istruzione viene eseguita solo
se la condizione è vera. Se la condizione
è falsa si passa direttamente all’ esecuzione
di un’eventuale istruzione successiva
istruzione successiva
Corso di Sistemi di elaborazione delle informazioni - Autore: Ing. Maurizio Patanè
Diagrammi di flusso
Struttura di selezione binaria
vero
falso
condizione
istruzione 1
se la condizione è vera
viene eseguita l’istruzione 1
se è falsa l’istruzione 2
istruzione 2
istruzione successiva
Corso di Sistemi di elaborazione delle informazioni - Autore: Ing. Maurizio Patanè
Diagrammi di flusso
Struttura di ripetizione
falso
condizione
vero
istruzione
Finché la condizione è vera
l’istruzione viene eseguita.
Quando la condizione diventa falsa
il ciclo termina. Se la condizione non
è mai vera l’istruzione presente
all’interno del ciclo non viene
eseguita nemmeno una volta.
istruzione successiva
Corso di Sistemi di elaborazione delle informazioni - Autore: Ing. Maurizio Patanè
Diagrammi di flusso
Struttura di ripetizione
istruzione
condizione
vero
falso
L’istruzione presente all’interno
del ciclo viene ripetuta fino a quando la
condizione rimane falsa. Se la condizione
diventa vera si esce dal ciclo e si procede
con l’esecuzione di
un’eventuale istruzione successiva. In
ogni caso l’istruzione presente all’interno
del ciclo viene sempre eseguita almeno
una volta.
istruzione successiva
Corso di Sistemi di elaborazione delle informazioni - Autore: Ing. Maurizio Patanè
Notazione lineare strutturata
Struttura di sequenza
INIZIO
Istruzione 1
Istruzione 2
Parole riservate
FINE
Corso di Sistemi di elaborazione delle informazioni - Autore: Ing. Maurizio Patanè
Notazione lineare strutturata
Strutture di selezione binaria
SE condizione vera ALLORA
SE condizione vera ALLORA
Istruzione
Istruzione 1
FINE SE
ALTRIMENTI
Istruzione 2
FINE SE
Parole riservate
Corso di Sistemi di elaborazione delle informazioni - Autore: Ing. Maurizio Patanè
Notazione lineare strutturata
Strutture di ripetizione
FINCHE’ condizione vera ESEGUI
RIPETI
Istruzione
Istruzione
FINE CICLO
FINCHE’ condizione è falsa
FINE CICLO
Parole riservate
Corso di Sistemi di elaborazione delle informazioni - Autore: Ing. Maurizio Patanè
Algoritmi
inizio
Leggi A
Leggi B
A+B
fine
Esempio 1
INIZIO
Leggi A
Leggi B
Somma A a B
FINE
Questo semplice algoritmo utilizza
una struttura sequenziale per leggere
due numeri A e B (immessi ad esempio
tramite la tastiera) e sommarli
Corso di Sistemi di elaborazione delle informazioni - Autore: Ing. Maurizio Patanè
inizio
Algoritmi
Esempio 2
leggi X
vero
falso
X>=0
scrivi X
scrivi -X
fine
INIZIO
leggi X
SE X>=0 ALLORA
scrivi X
ALTRIMENTI
scrivi –X
FINE
Algoritmo per il calcolo del
modulo di un numero X
attraverso la struttura di
selezione binaria
Corso di Sistemi di elaborazione delle informazioni - Autore: Ing. Maurizio Patanè
inizio
Algoritmi
XX1
Esempio 3
falso
X<=10
vero
scrivi X
X XX+1
INIZIO
XX1
FINCHE’ X<=10
ESEGUI
Scrivi X
X XX+1
FINE CICLO
FINE
fine
Corso di Sistemi di elaborazione delle informazioni - Autore: Ing. Maurizio Patanè
Fine Modulo 1
Corso di Sistemi di elaborazione delle informazioni - Autore: Ing. Maurizio Patanè