Parte 2
Software
Considerazione...
• Se l’utente inserisce dati e ottiene risultati
significa che aveva un problema che qualcuno
ha risolto per lui
• Chi ha risolto il problema?
Il computer?
p
NO!
Informatica - A.A. 2009/2010 - Software
2.1
1
…quindi…
• Il problema è stato risolto da un essere umano
che:
– ha trovato la soluzione
– ha “spiegato” la soluzione al computer
• Il computer ha poi eseguito la soluzione in
modo eccezionalmente veloce (se confrontato
alla velocità umana)
Î Il computer non risolve problemi, ma esegue
velocemente le soluzioni che ha trovato
l’uomo
Informatica - A.A. 2009/2010 - Software
2.2
Algoritmi: come “trovare” soluzioni
• Algoritmo Æ Sequenza finita di mosse che risolve in
un tempo finito una classe di problemi
– E’ un metodo sistematico per risolvere un problema. Es.
♦
lo svolgimento di operazioni aritmetiche
il processo di spedizione di una cartolina
♦ la ricerca di un numero telefonico
♦ il metodo per determinare quando il puntatore del mouse clicca su
un pulsante virtuale
♦…
♦
– Gli algoritmi devono essere non ambigui, essere
costituiti da un insieme finito di passi e terminare in un
tempo finito
– E’ l’uomo che risolve problemi (inventa algoritmi)
Informatica - A.A. 2009/2010 - Software
2.3
2
Programmi: come “spiegare” al
computer le soluzioni trovate
• “Traduzione” di un algoritmo attraverso un insieme
ordinato di frasi (“istruzioni”), descritte in un
linguaggio di programmazione,
programmazione che specificano le
azioni da compiere in modo formale che sia
interpretabile dal computer, il tutto allo scopo di
risolvere un problema
• L’azione di scrittura di programmi prende il nome di
PROGRAMMAZIONE, CODIFICA o IMPLEMENTAZIONE
• Quindi un PROGRAMMA è un testo scritto secondo la
sintassi (alfabeto+regole grammaticali) e la semantica
(significato da dare alle frasi) di un linguaggio di
programmazione
Informatica - A.A. 2009/2010 - Software
2.4
Elaborazione delle soluzioni:
ciclo Fetch-Decode-Execute
• L’esecuzione di ciascuna istruzione da parte
della CPU consta dei seguenti passi:
1 L
1.
Legge una iistruzione
i
d
dalla
ll memoria
i centrale
l
(Fetch)
2. Si predispone alla lettura della prossima istruzione
3. Decodifica l’istruzione (Decode)
4. Legge dalla memoria gli eventuali parametri
(operandi) dell’istruzione
5. Esegue l’istruzione (Execute)
6. Torna al passo 1 per l’esecuzione dell’istruzione
successiva
Informatica - A.A. 2009/2010 - Software
2.5
3
Algoritmi e programmi sono diversi
• La programmazione consiste nello scrivere i
passi di un algoritmo in uno specifico
li
linguaggio
i (es., Java, C,
C Fortran, …))
• Esecuzione di un programma
– per avviare un programma si può “cliccare” sulla sua
icona (ad es., Word, Explorer, Firefox)
– così facendo si dice al computer di caricare il
programma in memoria principale e di far eseguire il
programma dalla CPU
Informatica - A.A. 2009/2010 - Software
2.6
Cos’è il software?
• “Il Software è un insieme di programmi che permettono
ad un calcolatore di eseguire determinate funzionalità”
• U
Un PROGRAMMA è un’entità
’ tità statica
t ti (descritta
(d
itt in
i un
dato LINGUAGGIO) che specifica:
– l’insieme di istruzioni che il calcolatore deve eseguire
– la sequenza in cui devono essere eseguite
• Nel momento in cui un PROGRAMMA VIENE MANDATO
IN ESECUZIONE,, si ha l’attivazione di un PROCESSO
• Il processo è l'entità utilizzata dal sistema operativo per
rappresentare una specifica esecuzione di un programma.
E’ quindi un'entità dinamica, che dipende dai dati che
vengono elaborati, e dalle operazioni eseguite su di essi.
Informatica - A.A. 2009/2010 - Software
2.7
4
Sinonimi comunemente adottati
• Programmi
• Applicazioni
• Servizi software
• Anche se non sono proprio sinonimi, nell’uso
comune sono considerati come tali
• Hanno, in effetti, la comune caratteristica di
essere implementazioni di algoritmi per
computer
Informatica - A.A. 2009/2010 - Software
2.8
Esecuzione di un programma
• L'esecuzione delle azioni nell'ordine specificato
dall'algoritmo consente di ottenere, a partire dai
dati di ingresso, i risultati che risolvono il
problema
UTENTE
Applicazioni
DATI
INPUT
RISULTATI
Sistema Operativo
OUTPUT
Hardware
Computer
Informatica - A.A. 2009/2010 - Software
2.9
5
I ruoli…
UTENTE
Formulazione
di un problema
Individuazione
di un algoritmo
Metodo risolutivo
(progetto)
Programma
(esecuzio
one)
DATI
Linguaggio di
Programmazione
(codifica)
INFORMATICO
(Sviluppo applicazioni)
INFORMATICO
(Tecnico)
Informatica - A.A. 2009/2010 - Software
2.10
Principali componenti software
• Due grandi famiglie di software
– Software di sistema: Sistema operativo
– Software applicativo: Applicazioni
Informatica - A.A. 2009/2010 - Software
2.11
6
Organizzazione a “strati”
Informatica - A.A. 2009/2010 - Software
2.12
Motivazioni
• Qual è l’obiettivo di un sistema costituito da
diversi “strati” (hardware, software di sistema,
software applicativo) ben definiti e separati?
Avere un sistema a livelli, dove lo strato
superiore mascheri quello inferiore
Perché? Qual è il vantaggio?
Informatica - A.A. 2009/2010 - Software
2.13
7
Perché costruire un “sistema a livelli”?
OBIETTIVO RIVOLTO AGLI “UTILIZZATORI”
“Virtualizzazione” Æ far apparire la realtà in modo diverso
(tipicamente più semplice e/o più gradevole)
L’hardware ha molte virtù (veloce, miniaturizzato), ma non
è né semplice né gradevole! Quindi farlo risultare tale è un
problema molto complesso per i progettisti informatici
Quindi, un sistema a livelli (“modulare”) consente ai progettisti
di semplificare la soluzione del problema complesso di progettare,
realizzare e successivamente modificare un sistema informatico e
renderlo facilmente utilizzabile da chiunque (o quasi …)
Informatica - A.A. 2009/2010 - Software
2.14
Componenti di un Sistema di
Elaborazione + Utente
Hardware
Software
UTENTE
…
APPLICAZIONI
Sistema Operativo
?
Controller
SCSI
Controller
Keyboard
Controller
Mouse
Controller
PCI Bus
Controller
Floppy
Controller
ATAPI
SCSI Bus
Tastiera
Mouse
PCI Bus
Floppy
CD-ROM
Informatica - A.A. 2009/2010 - Software
2.15
8
NOTA
• Sono stati introdotti 4 termini importanti e non
banali:
– Software
– Programma
– Linguaggio (di programmazione)
♦ Ne
esistono tantissimi. Alcuni noti linguaggi di alto
livello: C, Java, Fortran.
[NO, NO, NO: HTML!!!]
– Processo
Informatica - A.A. 2009/2010 - Software
2.16
Quanti sono gli applicativi software?
• Esistono tantissimi tipi di software
–
–
–
–
–
–
per calcolo scientifico
per videoscrittura
per memorizzazione e recupero dati
per comunicazione
per svago
…
• Per ogni tipo di software, esistono innumerevoli
applicativi software prodotti da “fonti” molto varie
–
–
–
–
–
–
Multinazionali del software: IBM
IBM, Microsoft
Microsoft, EDS
EDS, …
Grandi software house
Gruppi di sviluppatori “free software”
Gruppi di ricerca per prototipi
Singole persone (per interesse o svago personale)
…
Informatica - A.A. 2009/2010 - Software
2.17
9
Esempi
• Software per l’elaborazione testi
– creazione, modifica e stampa di un documento: Word, Editor,
OpenOffice, ...
• Foglio elettronico
– tabella di valori disposti in righe e colonne: Excel, Lotus, …
• Software per Database
– sistema per l’archiviazione ed il recupero efficiente di dati in
formato digitale: Access
Access, Oracle
Oracle, MySQL
MySQL, …
• Software per presentazioni
– creazione di testi/immagini per la creazione di diapositive e
prospetti: PowerPoint, Acrobat, …
Informatica - A.A. 2009/2010 - Software
2.18
Esempi (cont.)
• Software per la comunicazione
– creazione, invio e ricezione di posta elettronica: Outlook,
Eudora, Pine, ...
– Navigazione su Web: Explorer, Firefox, …
• Software per il calcolo
– Simbolico e/o numerico: MatLab, …
• Software di utilità
– Antivirus,
Antivirus antispyware,
antispyware …
• Cos’è un virus informatico?
E’ parte del software anche lui…
Informatica - A.A. 2009/2010 - Software
2.19
10
La rappresentazione
delle informazioni
Informatica - A.A. 2009/2010 - Software
2.20
Scelta della rappresentazione
• Di solito è una scelta convenzionale
• A volte ci sono vincoli da rispettare
• Nel caso dei computer il vincolo è la
rappresentazione binaria (o digitale) di tutte le
informazioni (testo, immagini, video, suoni, ...)
• L’alfabeto di base con cui il computer codifica
ognii informazione
i f
i
consiste
i t di due
d soli
li simboli:
i b li
“0” e “1”
Informatica - A.A. 2009/2010 - Software
2.21
11
Codifica di tutta l’informazione su
computer
• I programmi operano su dati
• Sia i dati sia i programmi devono risiedere in
memoria centrale (RAM) per poter essere
eseguiti
• Sia i dati sia i programmi sono codificati in
modo opportuno per il computer
• CODIFICA BINARIA: insiemi di 0 e 1
Informatica - A.A. 2009/2010 - Software
2.22
Esempi di segnali binari
levetta:
alta/bassa
contatto:
aperto/chiuso
lampadina:
accesa/spenta
tensione elettrica:
High/Low
cristallo liquido:
trasparente/opaco
Informatica - A.A. 2009/2010 - Software
corrente elettrica:
presente/assente
2.23
12
Motivo della scelta di solo 2 simboli
• Ragioni prevalentemente di tipo tecnologico
• I due simboli corrispondono, ad esempio:
– al passaggio/non passaggio di corrente
attraverso un cavo conduttore
– ai due diversi stati di polarizzazione di una
g
sostanza magnetizzabile
– ai due stati di carica elettrica di una sostanza
– al passaggio/non passaggio di luce attraverso
un cavo in fibra ottica
Informatica - A.A. 2009/2010 - Software
2.24
Bit
• L'entità minima di informazione in un
calcolatore si chiama bit (binary digit – cifra
binaria)
• Può assumere solo due valori, cioè può
permettere la rappresentazione di due
informazioni associate ad uno dei due stati “0”
e “1”
• Per poter rappresentare più informazioni devo
usare più bit mettendoli in sequenza
Informatica - A.A. 2009/2010 - Software
2.25
13
Esempio: sequenza di due bit
• Con due bit possiamo avere quattro
configurazioni:
00
01 10 11
• E’ possibile far corrispondere quattro
informazioni a tante cose. Es.,
– le prime quattro lettere dell'alfabeto
– oppure i numeri da 1 a 4
– oppure i colori, oppure altre cose ...
00 Æ
a
1
verde
01 Æ
b
2
rosso
10 Æ
c
3
giallo
11 Æ
d
4
blu
Informatica - A.A. 2009/2010 - Software
2.26
Codifica dell’informazione
• Processo secondo cui si fa corrispondere ad
un’informazione una configurazione di cifre
binarie
• E’ importante ricordare quante informazioni
riesco a codificare avendo un certo numero di
bit:
–
–
–
–
–
Con 1 bit codifico 2 informazioni
Con 2 bit ne codifico 4
Con 3 bit ne codifico 8
...
Con n bit codifico 2n informazioni
Informatica - A.A. 2009/2010 - Software
2.27
14
Byte
• In informatica assume particolare importanza
un’aggregazione di 8 bit, che prende il nome di
byte
• Simbologia: b
bit
B
byte
• Poiché un byte è fatto di 8 bit
Î un byte consente di codificare 256 informazioni
(ad esempio, tutti i 111 elementi della tavola
periodica)
Informatica - A.A. 2009/2010 - Software
2.28
Unità di misura
• Multipli di bit o di byte
1 KiloByte= 1.024 byte
x1024
= 1 MegaByte
x1024
= 1 GigaByte
x1024
= 1 TeraByte
x1024
= 1 PetaByte
• Abbreviazioni
Kb = Kilobit
Mb = Megabit
M
bit
Gb = Gigabit
(per reti)
Informatica - A.A. 2009/2010 - Software
=
=
=
=
1.048.576 byte
1.073.741.824 byte
1.099.511.627.776 byte
circa un biliardo di byte
KB = KiloByte
MB = MegaByte
M
B t
GB = GigaByte
(per memoria)
2.29
15
Codifica dei caratteri alfanumerici
• L'insieme dei caratteri alfabetici (anglosassoni),
numerici, di punteggiatura,
gg
le parentesi e gli
g
operatori aritmetici può essere codificato usando
7 bit (128 configurazioni)
• Per poter interagire e scambiarsi dati in modo
comprensibile, è necessario usare la stessa
codifica
• Quindi, è necessario “mettersi d’accordo” per
definire un metodo standard per effettuare la
codifica
Informatica - A.A. 2009/2010 - Software
2.30
Codice ASCII
• E’ il metodo di codifica più diffuso fra
produttori di hardware, software e dispositivi di
rete
• ASCII = American Standard Code for
Information Interchange
• Nota: non è l'unico!
• Abbastanza diffuso anche EBCDIC = Extended
Binary Coded Decimal Interchange Code
• Un codice “completo” (perché rappresenta
caratteri dalle lingue di tutto il mondo) è
UNICODE, a 16 bit
Informatica - A.A. 2009/2010 - Software
2.31
16
Esempio di codifica ASCII standard
(usa 7 bit)
•
•
•
•
•
•
0100001
0100110
0110000
0111110
1000001
1100001
!
&
0
>
A
a
• I numeri, così come le lettere, sono consecutivi
Sono però insiemi separati
Informatica - A.A. 2009/2010 - Software
2.32
Codice ASCII standard – 7 bit
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
000
NUL
SOH
STX
ETX
EOT
ENQ
ACK
BEL
BS
HT
LF
VT
FF
CR
SO
SI
001
DLE
DC1
DC2
DC3
DC4
NAK
SYN
ETB
CAN
EM
SUB
ESC
FS
GS
RS
US
010
!
“
#
$
%
&
‘
(
)
*
+
,
.
/
011
0
1
2
3
4
5
6
7
8
9
:
;
<
=
>
?
100
@
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
101
P
Q
R
S
T
U
V
W
X
Y
Z
[
\
]
^
_
110
°
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
111
p
q
r
s
t
u
v
w
x
y
z
{
|
}
~
DEL
Per ottenere la codifica a 7 bit, si legge prima
il numero della colonna e poi quello di riga
Informatica - A.A. 2009/2010 - Software
2.33
17
Codifica di una parola
• Parola = sequenza di caratteri
parola = sequenza
q
delle codifiche
• Codifica della p
dei singoli caratteri
• ES: parola “cane”
•
c
a
n
e
• 01100011 01100001 01101110 01100101
• Esistono anche simboli per lo spazio bianco,
bianco il
simbolo di fine riga, ...
• Si possono rappresentare testi complessi
Informatica - A.A. 2009/2010 - Software
2.34
Codifica dei numeri
• Col codice ASCII posso codificare anche le
cifre decimali da “0” a “9”
• Parola = sequenza di caratteri
• Numero = sequenza di cifre
• Es: 324 si potrebbe rappresentare come
• 00110011 00110010 00110100
3
2
4
Informatica - A.A. 2009/2010 - Software
2.35
18
Codifica dei numeri - continua
• Ma usare la codifica ASCII per i numeri è una
rappresentazione non efficiente perché i primi
quattro bit sono uguali e, soprattutto, non è
adatta per eseguire le operazioni aritmetiche
sui numeri
• Esiste un modo molto più naturale per
codificare i numeri che prende spunto dal
sistema di numerazione tradizionale, che è un
sistema decimale e posizionale
Informatica - A.A. 2009/2010 - Software
2.36
Sistema di numerazione: decimale e
posizionale
• Usa 10 cifre [0..9]
g cifra ha un valore che dipende
p
dalla
• Ogni
posizione che occupa all’interno del numero
• La rappresentazione “645” (la cifra 6 seguita
dalla cifra 4 seguita dalla cifra 5) denota, nel
sistema decimale, il numero 645
p
• Il numero 645 ha in realtà l’interpretazione
seguente:
– 6 centinaia, 4 decine, 5 unità
– 6*(102) + 4*(101) + 5*(100) = 600+40+5 = 645
Informatica - A.A. 2009/2010 - Software
2.37
19
Esempio: sistema decimale
Il numero 135 decimale può essere rappresentato come segue:
B = 10
n=3
base
numero cifre
cifra
1
3
5
posizione
2
1
0
10 1
10 0
peso
10 2
(ricordare che si parte da 0)
1 • 10 2 + 3 • 101 + 5 •100 = 135
Informatica - A.A. 2009/2010 - Software
2.38
Sistema di numerazione decimale
• In generale la rappresentazione:
cncn-1...c1c0
in cui ogni cifra ci è compresa fra 0 e 9, denota:
c0 * 100
c1 * 101
...
n1
cn-1 * 10n-1
cn * 10n
Informatica - A.A. 2009/2010 - Software
+
+
+
(ossia c0 unità)
(ossia c1 decine)
...
2.39
20
Rappresentazione binaria
• E’ una codifica “posizionale” che invece di
usare 10 cifre, ne usa solo 2
• Quindi, tutti i numeri vengono codificati usando
le due cifre “0” e “1” e uno schema posizionale
in cui si usa la base 2 invece della base 10
• cncn-1...c1c0 in cui ogni cifra ci vale 0 o 1, denota:
n 1+c * 2n
c0 * 20+c1 * 21+...+cn-1 * 2n-1
n
• Esempio: 1110(base 2) denota:
1*23+1*22 +1*21+0*20+= 8+4+2+0 = 14 (base 10)
Informatica - A.A. 2009/2010 - Software
2.40
Esempio: Sistema binario
Valore decimale corrispondente al numero binario 1101 ?
cifra2
1
1
0
1
peso
23
22
21
20
valore
1•8
1•4
0•2
1•1
11012 = 1 • 23 + 1 • 22 + 0 • 21 + 1 • 20 = 1310
Informatica - A.A. 2009/2010 - Software
2.41
21
Da base decimale a binaria: numeri interi
• Per ottenere il valore binario di un numero intero codificato
nel sistema decimale si procede utilizzando un metodo
iterativo di successive divisioni per 2
• Il resto delle divisioni fornisce le cifre del numerale binario
(a partire dalla meno significativa)
2610
26
Cifra a destra
(meno significativa) 0
2
13
1
2
6 2
0
(26) 10= (11010)2
3 2
1
1 Cifra a sinistra
(più significativa)
Informatica - A.A. 2009/2010 - Software
2.42
Massimo numero rappresentabile?
• Sappiamo che con quattro cifre decimali è
possibile rappresentare tutti i numeri fra 0 e
9999 in quanto il numero successivo (10000)
richiederebbe una quinta cifra (non disponibile)
• In informatica si parla di overflow: quando un
numero “esce” dal numero di cifre destinate
alla rappresentazione
• Date n cifre decimali, è possibile rappresentare
i numeri da 0 a 10n-1
Esempio (n=4): 9999 = 10000-1 = 104-1
Informatica - A.A. 2009/2010 - Software
2.43
22
Massimo numero in binario
• Le stesse considerazioni del sistema decimale
valgono anche per il sistema binario prendendo
come base il numero 2 al posto del numero 10
• Quindi, date n cifre binarie, è possibile
rappresentare i numeri da 0 a 2n-1
• Ricordare: nel momento in cui si fissa il
numero di bit destinati alla rappresentazione di
un numero, si fissa anche il massimo numero
rappresentabile
Informatica - A.A. 2009/2010 - Software
2.44
Sistemi di numerazioni ottale ed
esadecimale
• Quando per la rappresentazione di un numero si utilizzano
molte cifre binarie può convenire usare altri sistemi di
numerazione
• I sistemi ottale ed esadecimale sono utilizzati
principalmente per rappresentare in modo più compatto i
numeri binari
• I simboli del sistema Ottale sono 8:
{ 0, 1, 2, 3, 4, 5, 6, 7}
• I simboli
i b li d
dell sistema
i t
E d i l sono 16:
Esadecimale
16
{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F }
• Si scelgono basi “potenza di 2” perché le regole di
conversione da/a numero binario sono molto semplici ed
efficienti
Informatica - A.A. 2009/2010 - Software
2.45
23
Conversioni di base
• Binario -> Ottale
• Per passare dalla codifica Binaria a quella Ottale, si
raggruppano le cifre binarie a gruppi di 3 a partire da
destra e le si sostituiscono con una cifra del sistema ottale
(aggiungere 0 a sinistra se il numero di cifre binarie non è
multiplo di 3)
• Esempio : 111 001 0102 = 7128
• Ottale ->
> Binario
• Per passare dalla codifica Ottale a quella Binaria, si
sostituisce ad ogni cifra ottale la corrispondente codifica
binaria (composta da 3 cifre).
• Esempio : 3028 = 011 000 0102
Informatica - A.A. 2009/2010 - Software
2.46
Conversioni di base (2)
• Binario -> Esadecimale
• Per passare dal codice Binario a quello Esadecimale, si
raggruppano le cifre a gruppi di 4 a partire da destra e le si
sostituiscono con una cifra del sistema esadecimale
(aggiungere 0 a sinistra se il numero di cifre binarie non è
multiplo di 3)
• Esempio: 1001 0001 11112 = 91F16
• E
Esadecimale
d i l -> Binario
Bi
i
• Per passare dal codice Esadecimale a quello Binario, si
sostituisce ad ogni cifra esadecimale la corrispondente
configurazione binaria (composta da 4 cifre).
• Esempio: A7F16 =1010 0111 11112
Informatica - A.A. 2009/2010 - Software
2.47
24
Codifica dei primi 16 numeri interi
Decimale
Binario
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
Ottale
Esadecimale
00
01
02
03
04
05
06
07
10
11
12
13
14
15
16
17
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
Informatica - A.A. 2009/2010 - Software
2.48
Esempi
Esempio 1
Codifica del numero 12510 = 11111012
In codice Ottale:
1 111 101
In codice Esadecimale:
111
1101
7D
175
Esempio 2
Decimale
5
12
78
149
Informatica - A.A. 2009/2010 - Software
Binario
101
1100
1001110
10010101
Ottale
5
14
116
225
Esadecimale
5
C
4E
95
2.49
25
Oltre i numeri interi positivi
• Con il metodo di codifica esaminato, è
possibile rappresentare qualunque numero
intero positivo rientra nel numero di bit
disponibili a rappresentarlo
• Tuttavia, esiste la necessità di rappresentare
anche altri tipi di numeri, quali:
– Numeri interi negativi: -34 -23456 ...
– Numeri frazionari positivi: 234,45 79,001 ...
– Numeri frazionari negativi: -234,45 -79,001 ...
• Si usano altri metodi di codifica (più complessi)
che non sono argomento di questo corso
Informatica - A.A. 2009/2010 - Software
2.50
26