Modulo 1- Lezione 1 di 4
Concetti di Base della teoria dell’Informazione
Fondamenti
La Tecnologia dell’Informazione
Tipi di Computer
Componenti principali del PC
Si dice algoritmo una sequenza di istruzioni
che può essere impiegata in un’attività di
elaborazione dei dati.
Un algoritmo è costituito da una serie di passi,
ognuno dei quali è semplice e porta alla
risoluzione del problema.
In un algoritmo è possibile definire dei cicli,
che ripetono più volte i passi, e delle
condizioni: in pratica alcuni passi possono
essere eseguiti solo sotto determinate
ipotesi.
Esempio: scrivere un algoritmo che individua il
maggiore di una serie.
L’algoritmo accetta in ingresso una serie di
numeri (input), e produce in uscita un
risultato (output).
Per rappresentare gli algoritmi utilizziamo la
rappresentazione a pseudocodice, la quale
descrive in linguaggio naturale le operazioni
che descrivono l’algoritmo.
Algoritmo NumeroMaggiore
Input: elenco non vuoto di numeri (E)
Output: il maggiore dei numeri in E
maggiore  E1
Per ogni numero in E fai
Se numero > maggiore, allora
maggiore  numero
Restituisci maggiore
maggiore = E1
Leggi numero
successivo
numero
>
maggiore
Si
maggiore = numero
Si
Ci sono
altri
numeri?
No
output maggiore
No
Nel sistema di numerazione decimale vengono
usate 10 cifre.
All’interno di un calcolatore le cifre vengono
memorizzate in un circuito elettronico che
può assumere solo 2 stati: assenza o
presenza di corrente, o in altre parole “0” e
“1”.
Questo sistema di rappresentazione è detto
sistema binario, poiché si basa su due sole
cifre.
Il sistema di numerazione decimale e binario
possono essere “collegati”, vediamo un
esempio.
Sistema decimale
Sistema binario
0
0
1
1
2
10 = 1*21 + 0*20
3
11 = 1*21 + 0*20
4
100 = 1*22 + 0*21 + 0*20
…
…
Per convertire un numero binario in un numero
decimale basta sommare le varie potenze di
due corrispondenti alla cifra binaria.
10011010010=
1 x 210 + 0 x 29 + 0 x 28 + 1 x 27 + 1 x 26 + 0 x
25 + 1 x 2 4 + 0 x 2 3 + 0 x 2 2 + 1 x 2 1 + 0 x 2 0 =
1 x 1024 + 0 x 512 + 0 x 256 + 1 x 128 + 1 x 64
+ 0 x 32 + 1 x 16 + 0 x 8 + 0 x 4 + 1 x 2 + 0 x
1 = 1234
Per convertire un numero da decimale a binario basta
dividere esaustivamente il numero decimale e utilizzare i
resti, scritti al contrario. Ad esempio, usando 1234
1234 : 2 = 617
resto: 0
617 : 2 = 308
resto: 1
308 : 2 = 154
resto: 0
154 : 2 = 77
resto: 0
77 : 2 = 38
resto: 1
38 : 2 = 19
resto: 0
19 : 2 = 9
resto: 1
9:2=4
resto: 1
4:2=2
resto: 0
2:2=1
resto: 0
Quoziente = 1 
Numero: 10011010010
Il computer per rappresentare i caratteri usa la
codifica ASCII (American Standard Code for
Information Interchange). Questa codifica
associa a ogni carattere un numero (da 0 a
255). Questo significa che il computer
utilizza 8 bit (1 byte) per rappresentare ogni
carattere.
Nella codifica ASCII possiamo trovare simboli
speciali, numeri, segni di punteggiatura,
lettere accentate.
Un’immagine all’interno di un computer viene
memorizzata tramite la modalità bitmap
(mappa di caratteri).
Questa modalità scompone l’immagine nei
singoli punti che la compongono, detti pixel.
Ad ogni pixel viene associato un colore, il
quale è suddiviso in 3 componenti: R (Red), G
(Green) e B (Blue).
A ognuno di questi componenti viene attribuito
un valore da 0 a 256, chiamato spazio.
Unendo i 3 livelli possiamo ottenere fino a 26
milioni di sfumature differenti.
Quindi ogni immagine bitmap è costituita da
triplette di byte RGB. Visto che ogni
componente viene definito da 1 byte (8 bit),
ogni pixel è costituito da 24 bit, ed è questo
il motivo per cui questa modalità di
rappresentazione delle immagini è chiamata
Bitmap a 24 bit.
Tuttavia esistono delle ottimizzazioni che
consentono di ridurre l’utilizzo di spazio di
memoria da parte dell’immagine.


Compressione senza perdita di informazioni.
Un tipico esempio è il formato TIFF (Tagged
Image File Format), il quale elimina tutte le
ridondanze nei bit delle immagini.
Compressione con perdita di informazioni.
Un tipico esempio è il formato JPEG (Joint
Photographic Experts Group): in questo caso
vengono tolte dall’immagine tutti quei
dettagli che possono essere trascurati,
poiché l’occhio umano non riesce a catturarli
perfettamente. E’ il formato utilizzato
maggiormente dalle fotocamere digitali.
Come già detto, il computer è in grado di
comprendere solo gli stati binari “0” e “1”.
Così come per i numeri decimali, possiamo
eseguire delle operazioni tra bit, tramite
appositi operatori.
I tre principali operatori logici sono AND, OR e
NOT e ogni attività sul computer si basa su di
essi.
L’operatore NOT è il più semplice e opera solo
su un bit.
Il suo compito è quello di invertire il valore del
bit, trasformandolo da 0 a 1 e viceversa.
Cioè:
NOT 0 = 1
e
NOT 1= 0
L’operatore AND accetta due bit e restituisce
come risultato 1 se e solo se entrambi i valori
che gli abbiamo sottoposto sono uguali a 1.
0 AND
0 AND
1 AND
1 AND
0
1
0
1
=
=
=
=
0
0
0
1
AND
0
1
0
0
0
1
0
1
L’operatore OR accetta due bit e restituisce
come risultato 1 almeno uno dei valori che
gli abbiamo sottoposto è uguale a 1.
0 OR
0 OR
1 OR
1 OR
0=
1=
0=
1=
0
1
1
1
OR
0
1
0
0
1
1
1
1
Un linguaggio di programmazione è un linguaggio formale
dotato di una sintassi ben definita per scrivere programmi per
calcolatori, in una forma più vicina al linguaggio umano
scritto: l'alternativa sarebbe scrivere direttamente le
istruzioni nel codice macchina del particolare processore, un
compito improponibile per programmi meno che
semplicissimi.
In matematica, logica, informatica e linguistica, linguaggio
formale si intende un insieme di stringhe di lunghezza finita
costruite sopra un alfabeto finito, cioè sopra un insieme finito
di oggetti tendenzialmente semplici che vengono chiamati
caratteri, simboli o lettere.
Ogni linguaggio di programmazione possiede:

una sintassi, cioè l'insieme delle regole che una porzione di
codice deve seguire per essere considerata conforme a quel
linguaggio

una semantica, cioè l'insieme delle regole di associazione tra
costrutti del linguaggio sintatticamente corretti e le relative
azioni univoche ad esse associate
Vediamo un elenco dei più famosi linguaggi di programmazione:
Fortran (1957)
C (1972)
Cobol
HTML
XML
Basic (1964)
C++ (1986)
Visual Basic
Javascript
Pascal (1970)
Java (1995)
SQL
VBScript
Programmare in un dato linguaggio di programmazione
significa generalmente scrivere uno o più semplici file
di testo, chiamato codice sorgente.
Ad esempio questo è un programma scritto in C:
#include <stdio.h>
int main(void)
{
printf("Hello World!\n");
return 0;
}
Il codice sorgente può essere eseguito sul
computer in modi diversi a seconda del tipo di
linguaggio di programmazione utilizzato, è
necessario quindi distinguere tra due principali
famiglie di linguaggi:


linguaggi interpretati: in questi linguaggi il
codice sorgente viene passato direttamente ad
un programma interprete che esegue le
istruzioni presenti nel codice del programma
sorgente
linguaggi compilati: in questi linguaggi il codice
sorgente viene compilato, ovvero viene tradotto
in linguaggio macchina dal compilatore che
produce così un file binario eseguibile
direttamente sul computer
Vediamo come il codice sorgente del precedente programma
C viene convertito in linguaggio assembly:
#include <stdio.h>
int main(void)
{
printf("Hello World!\n");
return 0;
}
N.B.: questo non è un file
binario eseguibile è un file di
testo che contiene il codice
sorgente del programma scritto
in linguaggio assembly (un
passo prima della traduzione in
linguaggio macchina).
.file "hello.c"
.section .rodata
.LC0:
.string "Hello World!"
.text
.globl main
.type main, @function
main:
pushl %ebp
movl%esp, %ebp
subl$8, %esp
andl$-16, %esp
movl$0, %eax
addl$15, %eax
addl$15, %eax
shrl$4, %eax
sall$4, %eax
subl%eax, %esp
movl$.LC0, (%esp)
callputs
movl$0, %eax
leave
ret
Il linguaggio macchina è un linguaggio
comprensibile (praticamente) solo dal computer.
Ogni computer, o per meglio dire, ogni processore
ha un proprio codice macchina che può essere
diverso da processore a processore.
Il codice macchina è composto da un set di
istruzioni (detto ISA, Instruction Set Architecture)
codificate in codice binario.
Ad esempio i PC odierni utilizzano set di istruzioni
macchina chiamati:
 i386 (per processori a 32 bit)
 amd64 (per processori a 64 bit)
La nuova società dell’informazione è caratterizzata da
un impiego più ampio delle risorse informatiche.
Che cos'è l'informatica?
 è la tecnologia che viene utilizzata per la
progettazione e la realizzazione di moderni
elaboratori
Conseguenze sul lavoro e sulla vita quotidiana sono:
 nascita di una New Economy
 aumento della produttività in tutti i campi
 riduzione dei tempi e delle attese per i servizi
In questi anni si vedrà la diffusione capillare di
applicazioni generalizzate della ”Tecnologia
dell’informazione” anche detta ICT (Information and
Communication Technology)
New Economy: termine coniato alla fine degli anni '90 per indicare
ciò che si riteneva un'evoluzione da un'economia basata sulla
produzione industriale/manifatturiera, verso un'economia basata
sui servizi ed in particolare sulle nuove tecnologie informatiche e
telematiche gestibili su internet.
Conseguenze della New Economy:
 aumento di efficienza in fase di produzione ed erogazione dei
servizi da parte delle aziende
 perdita dei posti di lavoro tradizionali e nascita di nuovi impieghi
Il telelavoro
 riduce il pendolarismo
 i lavoratori possono concentrarsi su un compito specifico
 orari più flessibili
 non sono più necessari grandi spazi aziendali
 diminuzione dei rapporti umani
 mancanza del lavoro di gruppo (dipende)
Vediamo adesso alcuni possibili impieghi dei computer.
 In ambiente casalingo:









ricerca e studio
Giochi
tv, musica, film e fotografie (multimedia e intrattenimento)
telefonia e video-telefonia (VoIP), segreteria e fax
email e newsgroup
acquisti on-line (e-commerce)
on-line banking (o home banking)
Chat
In ambiente amministrativo:
registrazione pubblica (censimenti e registri)
 dichiarazione dei redditi
 voto elettronico


In ambiente ospedaliero:





catalogazione dei pazienti
controllo delle ambulanze
apparecchiature diagnostiche (ad esempio la TAC)
apparecchiature chirurgiche (ad esempio bracci
meccanici di precisione)
In ambiente scolastico:





registrazione degli studenti
preparazione dell'orario (in maniera automatica)
CBT (Computer Based Training) per l'autoapprendimento
apprendimento a distanza (e-learning)
esercitazioni in rete via internet
Impatto sull'individuo
 il primostress determinato da ritmi sempre più frenetici
 riduzione dell'attività fisica e dei contatti interpersonali
 necessità di continui aggiornamenti sulle nuove tecnologie
 nuovi problemi nei settori di privacy e sicurezza
Evoluzione delle tecnologie elettroniche
 Il primo calcolatore della storia dell'informatica si chiamava
ENIAC ed aveva delle capacità di calcolo ridicole rispetto anche
ad un semplice telefono cellulare odierno
Il progresso è dovuto a vari fattori:
 miniaturizzazione dei componenti elettronici
 riduzione dei prezzi dei componenti
 maggiore facilità di uso delle apparecchiature hardware e
software
 ricerca di algoritmi e tecniche matematiche sempre più efficienti
Il computer è una apparecchiatura elettronica che possiede le
seguenti caratteristiche:
 è rapido nell'effettuare calcoli matematici (anche complessi)
 è preciso nell'esecuzione delle operazioni assegnategli
 è versatile
E' importante fin da ora distinguere le due componenti
implementative che costituiscono ciò che noi oggi chiamiamo
semplicemente “computer”:
 HARDWARE (HW): è la parte fisica di un personal computer,
ovvero tutte quelle parti magnetiche, ottiche, meccaniche ed
elettroniche che gli consentono di funzionare. Generalmente è
anche riferito a qualsiasi componente fisico di una periferica o di
una apparecchiatura elettronica.
 SOFTWARE (SW): indica un programma o un insieme di programmi
in grado di funzionare su un elaboratore.
Tanto per intendersi, il software “non si tocca con mano”,
l'hardware sì!
Esaminiamo adesso alcune delle caratteristiche principali dei
calcolatori.
Vantaggi:
 Rapidità
 Precisione
 capacità di eseguire numerose operazioni ripetitive
 capacità di riuscire a gestire grandi moli di dati
 capacità di riuscire ad integrare e memorizzare grandi moli di
dati
Svantaggi:
 mancanza di intelligenza e di creatività
 difficoltà in situazioni nuove non previste
 possibilità di guasti (sia a componenti HW sia a componenti SW)*
* Vedi ad esempio il “Millennium Bug”: errore software dovuto al
cambio del tipo di data in alcuni programmi (Problema Y2K).
Problema di alcuni software ormai risolto.
E' possibile suddividere l'insieme dei calcolatori
in varie categorie:
 Mainframe
 Minicomputer
 Network Computer
 Personal Computer
 Laptop Computer (o Notebook o Computer
Portatili)
 Palmari (o PDA – Personal Digital Assistant)
Personal Computer dovrebbe essere, nel significato
originale del termine, un qualsiasi computer che sia
stato progettato per l'uso da parte di una singola
persona (in opposizione per esempio ai mainframe a
cui interi gruppi di persone accedono attraverso
terminali remoti).
Al giorno d'oggi il termine personal computer è invalso
ad indicare una specifica fascia del mercato
dell'informatica, quella del computer ad uso privato,
o casalingo, per uffici, o per la piccola azienda.
Caratteristiche principali:
 basse prestazioni, ma adatte all'uso domestico
 basso costo
 impiegato per l'utilizzo individuale
Il computer portatile, conosciuto anche con i nomi
inglesi laptop e notebook, è un computer
caratterizzato principalmente dalla riduzione del
peso e delle dimensioni, per essere trasportato
con facilità. Stanno rapidamente sostituendo i
tradizionali PC desktop, offrendo a parità di
prestazioni una maggiore comodità.
Caratteristiche principali:
 basse prestazioni, ma adatte all'uso domestico
 basso costo (leggermente superiore a quello di
un PC Desktop)
 impiegato come sistema di elaborazione
portatile individuale
 possiede una alimentazione autonoma a batteria
E’ un’ulteriore evoluzione dei computer
portatili. Un tablet è dotato di un ampio
schermo sensibile al tatto. Per interagire
spesso si utilizza una penna o le dita.
Alle volte il tablet è costituito da un portatile
con lo schermo sensibile al tatto e ribaltable
su se stesso.
Un computer palmare (detto anche palmare), spesso indicato in
lingua inglese con l'acronimo PDA (Personal Digital Assistant), o
con l'ormai desueto termine palmtop, è un computer di
dimensioni contenute, tali da essere portato sul palmo di una
mano, dotato di uno schermo sensibile al tocco (o Touch Screen).
Originariamente concepito come agenda elettronica (organizer),
o sistema non particolarmente evoluto dotato di un orologio, di
una calcolatrice, di un calendario, di una rubrica dei contatti, di
una lista di impegni/attività e della possibilità di emorizzare note
e appunti (anche vocali) (personal information manager), si è nel
corso degli anni arricchito di funzioni sempre più potenti ed
avanzate.
Caratteristiche principali:
 basse prestazioni (meno potenti di Notebook e PC)
 basso costo (inferiore a quello di un Laptop o Desktop PC)
 impiegato come sistema tascabile in grado di prendere appunti
fare da agenda, ed effettuare semplici elaborazioni
 possiede una alimentazione autonoma a batteria
 è limitata la possibilità di collegamento con altre periferiche
Periferiche di INPUT
Tastiera
Mouse
Trackball
Scanner
Touchpad
Dispositivi di archiviazione
Hard disk interni/esterni
Unità di calcolo
CPU
Memoria principale
RAM
Periferiche di OUTPUT
CD/DVD
Penna USB
Speaker
Monitor
Stampante
Alimentatore
Lettore/Masterizzatore
CD/DVD
CPU
RAM
Scheda video
Scheda di rete
Hard disk
Scheda madre
Tastiera/Mouse
Porte USB
Porte Audio
Monitor
Porta FireWire
Porta Ethernet (di rete)
Porta Parallela