Sei sulla pagina 1di 142

Maxy Guida 2

__________________________________________________________________________________________
Indice

Introduzione.. Pag 3

CAP I
Struttura dellElaboratore...
Pag 4

CAP II
Linguaggi e Sistemi Operativi .....
Pag 23

CAP III
Sistemi di Numerazione
Pag 27

CAP IV
Logica delle Proposizioni..
Pag 36

CAP V
Struttura dei Dati..
Pag 41

CAP VI
LArte di Programmare...
Pag 49

CAP VII
Le Basi di Dati...
Pag 65

CAP VIII
Virus Informatici

Pag 95

Appendice A
Basi di HTML....
Pag 99

Appendice B
Installare MySQL.
Pag 126

Appendice C
Manuale del Dos....

Pag 128
Informatica di Base 3
__________________________________________________________________________________________
Massimiliano Teso
INTRODUZIONE
Lutilizzo del computer e i fondamenti dellinformatica sono diventati requisiti
indispensabili per chi vuole affrontare qualsiasi tipo di lavoro.
Le conoscenze di base dellinformatica sono ormai richieste in molti concorsi e
lutilizzo del computer praticamente obbligatorio in moltissimi ambiti di
lavoro o di studio.
Maxy Guida: Informatica di Base nasce quindi per rendere disponibile in
italiano una valida risorsa per chi vuole avvicinarsi a questo affascinante e
oscuro mondo. Nel libro infatti possibile trovare capitoli dedicati ai vari aspetti
dellinformatica, dalle nozioni basilari come la struttura di un elaboratore fino
agli argomenti pi complessi come le basi di dati.
Gli argomenti sono trattati in maniera semplice e concisa evitando lungaggini
che avrebbero appesantito troppo il testo. Quasi tutti i capitoli hanno inoltre una
serie di esercizi che consentono di mettere in pratica le nozioni apprese

Distribuzione:
Questo libro viene reso disponibile gratuitamente e pu essere distribuito sotto
qualsiasi forma (anche cartacea) alle seguenti condizioni:
il materiale dovr essere distribuito senza alcuna modifica ai suoi
contenuti;
niente sar dovuto da chi lo acquisisce a colui che lo distribuisce, salvo
rimborso di eventuali spese per il supporto che lo contiene;
Potete spedire critiche, commenti, suggerimenti, segnalazione di errori o
mancanze direttamente allautore contattabile all'indirizzo e-mail
maxy.t@tiscalinet.it.
2002 Copyright di Massimiliano Teso

Tutti i diritti riservati
Maxy Guida 4
__________________________________________________________________________________________
CAP I
STRUTTURA DELLELABORATORE
Introduzione

Quando andiamo in un negozio per comprare un computer, normalmente ci
viene presentato un foglio di questo tipo:

TIPO DESCRIZIONE
CASE ATX MIDITOWER
M/B ASUS CUV4X FCPGA
CPU PENTIUM III 800
MEMORIE 128 DIMM 133MHZ
HD SAMSUNG 30GB ULTRA66
SCHEDA VIDEO RIVA TNT2 32MB
CD-ROM CREATIVE 52X
FLOPPY 1,44 MB
MODEM 56K INTERNO
MULTIMEDIA SB CREATIVE 128 PCI
In fondo alla pagina del preventivo presente di norma un prezzo che pu
andare dai due ai quattro milioni. Naturalmente ognuno di noi vorrebbe sapere
per cosa sta spendendo quei soldi ma, per farlo, necessario sapere che cosa
un processore, un hard disk e che differenza c tra una marca e laltra, tra un
modello e laltro.
Scopo di questo corso proprio quello di farvi entrare in quella scatola
misteriosa chiamata Personal Computer per poter capire meglio cosa
linformatica moderna pu offrire.

Informatica di Base 5
__________________________________________________________________________________________
Massimiliano Teso
Un po di storia

La storia del computer, come lo conosciamo oggi, relativamente breve. Il
primo calcolatore venne infatti costruito durante la seconda guerra mondiale. Si
chiamava ENIAC (Electronic Numeric Integrator and Calculator).
Gi molto tempo prima per luomo cerc di realizzare macchine in grado di
fare calcoli in maniera automatica. Il primo esempio di questo tipo lo abbiamo
con Leonardo Da Vinci il quale disegn, ma non realizz, un piccolo dispositivo
in grado di fare calcoli. Fu realizzata successivamente dal dottor Roberto
Guatelli dellIBM nel 1968.
La prima macchina calcolatrice funzionante fu inventata e realizzata da Blaise
Pascal nel 1642 (allet di 21 anni!) mentre la prima calcolatrice prodotta in
grandi quantit fu quella di Thomas de Colmar nel 1820. Nel 1832 viene
realizzato il Difference Engine, il primo calcolatore a programma memorizzato.
La prima persona a concepire una macchina capace di computazionalit
programmabile fu Ada Lovelace Byron che lavor al progetto della Analytical
Machine. Questo calcolatore avrebbe dovuto sostituirsi alla Difference Engine
ma non venne mai realizzato praticamente.
Il grande stimolo a costruire macchine in grado di fare calcoli ad alta velocit fu
la guerra. Il primo computer, LENIAC, venne infatti realizzato in segreto
durante la seconda guerra mondiale. Il mondo seppe di questa straordinaria
macchina solamente nel 1946. Essa occupava un intero scantinato di un
dipartimento dellUniversit della Pennsylvania.
La svolta decisiva alla struttura del computer moderno per venne con lo
scienziato John Von Neuman il quale nel 1944 si interess al progetto ENIAC.
Egli elabor lo schema teorico con le caratteristiche fondamentali e le modalit
di funzionamento del computer moderno.
Solo nel 1951 venne costruito il primo esemplare di computer commerciale, si
chiamava UNIVAC I e costava un milione di dollari. Ne vennero vendute 48
unit. Il primo calcolatore dellIBM usc nel 1952 e ne furono venduti 19
esemplari.
Naturalmente si trattava ancora di computer estremamente costosi, lenti e
ingombranti. Nel 1965 usc il PDP-8 della DEC, la prima macchina a basso
costo (20.000 dollari!), detta minicalcolatore mentre solo nel 1971 la Intel
invent e commercializz il primo microprocessore, il 4004.
Nel 1977 lApple cre il primo personal computer ma solo nel 1981 lIBM ebbe
grande successo mettendo sul mercato il suo personal computer basato sul
processore 80X86 della Intel. Iniziavano a crearsi i primi standard: i processori
Intel e il sistema operativo Microsoft Ms-DOS.
Da allora levoluzione dellinformatica andata di pari passo con quella
dellelettronica. Sono usciti nuovi microprocessori, sempre pi potenti: 80X88,
80X286, 80X386, 80X486 e il Pentium della Intel mentre altre case si sono
tuffate in questo ricco business (come, ad esempio, lAMD). Il software si
evoluto sempre di pi e, per mantenere alte le prestazioni anche lhardware si
Maxy Guida 6
__________________________________________________________________________________________
dovuto evolvere di conseguenza. Lo sviluppo dellindustria dei computer stata
cos rapida che se lindustria dei trasporti avesse tenuto lo stesso ritmo, oggi si
potrebbero attraversare gli Stati Uniti da costa a costa in trenta secondi
spendendo meno di mille lire.

Ferramenta

Tutti noi ormai viviamo in una societ dominata dai computer e dai
microprocessori.
Vedremo pi avanti che il microprocessore solo una parte del computer, la
parte pi importante, quella che esegue i calcoli.
I microprocessori per non si trovano solo nei computer. Li troviamo nei
telefonini, negli elettrodomestici di casa, in alcune tessere magnetiche, insomma
dappertutto.
E importante quindi conoscere un minimo come funzionano e quali cose
possono fare.
Veniamo ora ad alcune definizioni prima di passare allo schema generale di un
computer:

Hardware:
Letteralmente ferramenta. Insieme di dispositivi fisici, meccanici ed
elettronici di un computer: scheda madre, CPU, memorie, periferiche, schede di
rete.

Software:
Insieme di linguaggi di programmazione e di programmi che agevolano, a vari
livelli, lutilizzo dellhardware.

Computer:
Calcolatore ovvero dispositivo elettronico che consente di immettere,
memorizzare, elaborare, emettere e trasmettere informazioni. Limmissione
avviene attraverso una variet di dispositivi di ingresso (Tastiera, Mouse), la
memorizzazione attraverso sistemi di memoria volatile e permanente (Ram,
Hard Disk), lelaborazione attraverso lunit centrale (CPU), lemissione
attraverso dispositivi di output (monitor, Stampante) e la trasmissione attraverso
collegamenti in rete (Modem).
Insomma, in generale, cosa fa un computer?

Legge un programma
Esegue in ordine stabilito le istruzioni del programma
Legge i dati in ingresso
Elabora i dati
Scrive i risultati dellelaborazione

Informatica di Base 7
__________________________________________________________________________________________
Massimiliano Teso
Per svolgere tutto questo un computer deve svolgere una serie di azioni:

Ricevere dallesterno le istruzioni, cio il programma e i dati iniziali
Memorizzare il programma
Momorizzare i dati
Elaborare i dati in base al programma
Comunicare allesterno i risultati ottenuti

La Macchina di Von Neumann

Lo schema a blocchi del computer ipotizzato da Von Neumann, detto anche
macchina di Harvard, questo:

Le linee grosse indicano il flusso dei dati, quelle tratteggiate i comandi di
controllo. I dati vengono prelevati dal dispositivo di ingresso (input) e mandati
allunit di calcolo la quale preleva il programma dalla memoria di programma.
Per svolgere il proprio lavoro lunit di calcolo deve poter leggere e scrivere
nella memoria dati ed per questo che ci sono due frecce tra le due unit citate.
Infine, una volta terminato il programma, lunit di calcolo manda i suoi risultati
al dispositivo di uscita (output).
Il tutto deve naturalmente essere fatto sotto il controllo di unaltra struttura
indipendente detta appunto unit di controllo.
Lunit di calcolo e quella di controllo formano la CPU, ovvero Central
Processing Unit (unit centrale di elaborazione).
Maxy Guida 8
__________________________________________________________________________________________
Il modello della macchina di Harvard risale al 1944. Da allora si sono fatti
enormi progressi nellelettronica e nellinformatica ma la base del calcolatore
fondamentalmente sempre la stessa.
Nel 1945 Von Neumann propose un modello pi efficiente e generale quando si
rese conto che dati e programmi potevano risiedere nella stessa memoria

Principali componenti del computer

Mother Board (Scheda Madre):
Supporto che permette la comunicazione tra CPU, Ram, dispositivi di input e
output

CPU (spesso chiamata processore o microprocessore):
Rappresenta il vero cuore del computer. I suoi componenti principale sono tre: i
registri, lunit aritmetico/logica (ALU) e lunit di controllo. La CPU svolge
semplici azioni in maniera sequenziale. La sua potenza sta nello svolgerne tante
in modo molto veloce

Registri: Sono contenitori di valori utilizzati dalla CPU per memorizzare al suo
interno dei dati. Altri registri sono utilizzati dallALU per fare calcoli come la
somma o la comparazione. Ogni processore ne ha un certo numero e possono
contenere un numero fisso di bit (8, 16, 32). Sono molto pochi ma rappresentano
lelemento di memorizzazione pi veloce che ci sia in quanto integrato
allinterno del processore.

Informatica di Base 9
__________________________________________________________________________________________
Massimiliano Teso
ALU (Arithmetic Logic Unit, unit aritmetico logica): Circuito logico digitale in
grado di elaborare uno o due ingressi e di svolgere semplici operazioni
aritmetico/logiche

ROM (Read Only Memory):
Memoria integrata con la scheda madre in cui risiede il cos detto BIOS (Basic
Input Output System =sistema di base di ingresso uscita), programma che serve
al computer per svolgere le azioni pi semplici al momento dellaccensione.
Esso infatti gestisce le operazioni iniziali quali laccensione, il controllo e
lutilizzo dei dispositivi di input e output oltre che delle memorie di massa (Hard
Disk, CD Rom, Floppy Disk)

RAM (Random Access Memory)
Componente elettronico che il processore utilizza per memorizzare i dati. E
costituita da un certo numero di celle (o locazioni) in grado di memorizzare
una cifra binaria (0 o 1, cifre conosciute anche con il termine bit) e ogni cella
numerata tramite un indirizzo. La Ram una memoria volatile in quanto il suo
contenuto va perduto allo spegnimento del computer.
Quando sentite che la RAM ha una capacit di 32 MegaByte, significa che
costituita da circa 32.000.000 di celle e che ognuna di esse pu ospitare 8 bit (8
bit sono detti 1 byte). La RAM immaginabile quindi come un grosso archivio
cartaceo organizzato a cassetti in cui si pu scrivere o leggere e ogni cassetto
identificato da un indirizzo.
Quando, ad esempio, la CPU desidera sapere cosa c nel cassetto numero
12345, manda una richiesta alla memoria la quale risponde aprendo quel
cassetto e inviandone il contenuto al processore.
Come fa la CPU ad indicare questo indirizzo? Essa ha un certo numero di
piedini (il 386 della Intel ne ha 132). Quando vuole accedere ad una cella di
memoria mander un impulso elettrico a un certo numero di piedini (32 nel
nostro esempio) per fare in modo che insieme formino un indirizzo binario della
cella a cui si vuole accedere. Nei piedini potr passare o meno corrente; il
piedino in cui passa corrente indica un 1 mentre quello in cui non passa uno 0.
La combinazione di 0 e 1 forma lindirizzo voluto.

Maxy Guida 10
__________________________________________________________________________________________
Dispositivi di Input e Output

Un computer senza periferiche non servirebbe a niente. Grazie ad esse
possibile immettere i dati e vedere i risultati delle elaborazioni del computer.

Input
Tastiera
E il dispositivo di input pi importante. Digitando su tasti possibile scrivere
un programma o immettere dati allinterno del computer.
Mouse
Questo dispositivo di input costituito da una sfera di gomma che fa muovere
due rotelline attraverso le quali il computer in grado di sapere dove si trova
lindicatore del mouse.

Informatica di Base 11
__________________________________________________________________________________________
Massimiliano Teso
Scanner
Grazie a un lettore ottico, questo dispositivo in grado di immettere immagini
allinterno del computer

Output
Monitor
Questo dispositivo basato su un tubo a raggi catodici che scrive limmagine
una riga alla volta dalle 30 alle 60 volte al secondo. Tale frequenza di
rigenerazione o rinfresco (refresh) dellimmagine consente di vedere
unimmagine stabile senza tremolii. La superficie dello schermo composta da
una matrice di elementi (detti pixel) che andranno a comporre la figura.
Un monitor a colori ha tre matrici per i tre colori base: rosso, verde e blu (RGB
con R=red, G=gree e B=Blue).

Stampante
In questo caso le informazioni, invece di apparire su uno schermo, vengono
stampate su fogli.

Memorie di Massa

Abbiamo visto che la RAM una memoria volatile. E necessario quindi poter
memorizzare programmi e dati in maniera permanente e sicura. Per questo scopo
vengono utilizzate le memorie di massa che qui di seguito elenchiamo:

Hard Disk
E formato da un blocco di dischi di materiale ferromagnetico simile a quello
impiegato nelle audiocassette. Per leggere e scrivere dati si utilizzato delle
testine legate a un braccio mobile. Limpiego di parti meccaniche come il
braccio mobile e i motorini che fanno girare i dischi comporta tempi di accesso
superiori rispetto a quelli delle memorie elettroniche (RAM) di fattori superiori
a 100.000.
I vari dischi si chiamano piatti: ogni piatto diviso in tracce e ogni traccia in
settori. La testina individua prima la traccia e poi deve aspettare che il settore
giusto le passi sotto (per questo laccesso detto semicasuale)

Maxy Guida 12
__________________________________________________________________________________________
Floppy Disk
Si chiamano floppy perch sono flessibili ma il funzionamento pressoch
identico a quello degli hard disk. I floppy attualmente in circolazione sono da 3
pollici e e hanno la capacit di circa 1,44 MegaByte.

CD Rom
Realizzati in materiale plastico, i CD Rom rappresentano lultima frontiera delle
memorie di massa. La loro capacit di circa 700 MegaByte. Fino a qualche
tempo fa erano dispositivi di sola lettura ma oggi la diffusione dei masterizzatori
e dei CD riscrivibili ha reso questo prodotto un sistema molto comodo dove
poter archiviare i propri dati.

Schede Multimediali

Sotto questo nome vanno annoverate schede video, schede audio e tutto ci che
permette al computer di far girare programmi multimediali.

Il Bus

Quando il processore deve effettuare una qualsiasi operazione sulla RAM o su
una periferica, deve poter muovere i dati da un punto allaltro dellelaboratore.
Il Bus funziona da canale di comunicazione attraverso il quale i dati
viaggiano. Un dato che caratterizza il BUS la sua ampiezza in termini di
bit. Un bus a 32 bit, ad esempio, pu trasportare 32 bit alla volta.
Nei computer esistono diversi tipi di Bus. Normalmente c un Bus degli
indirizzi (dove viaggiano solo le informazioni relative a gli indirizzi della RAM
e delle periferiche) e un Bus dei dati (dove viaggiano dati veri e propri).

Informatica di Base 13
__________________________________________________________________________________________
Massimiliano Teso
Approfondimento sulla RAM

Abbiamo visto che la Ram pu essere schematizzata come un insieme di
elementi, ciascuno dei quali contiene un bit di informazione. Questi elementi di
memoria sono organizzati in una rete di collegamento a matrice bidimensionale
che permette di individuare, tramite due decodificatori, la posizione di ciascuna
cella e di scambiare il contenuto con lesterno nelle operazioni di lettura e
scrittura.

Dalla figura si vede come lindirizzo, in questo caso di 12 bit, viene decodificato
dai decodificatori di riga e di colonna sei bit alla volta, attivando quindi una sola
delle 2
6
=64 linee e, conseguentemente, una sola delle 64X64=4096 celle di
memoria.
Poich per rappresentare un numero o altro ente significativo sono necessari
gruppi ordinati di pi bit, le celle di memoria sono organizzate in
configurazioni multiple, dette parole, la cui lunghezza fissata una volta per
tutte allatto della costruzione della macchina (di solito 8, 16, 32 bit per parola).
Maxy Guida 14
__________________________________________________________________________________________
La parola dunque lunit minima di informazione che ha significato per la
macchina: ogni dato o istruzione viene tradotto (codificato) usando una o pi
parole.
Allinterno della RAM le parole sono disposte sequenzialmente luna allaltra e
sono individuate in modo univoco da un indirizzo. Gli indirizzi sono
organizzati in modo che, scelta una qualunque parola (a caso), il tempo di
accesso sia sempre lo stesso, indipendentemente dalla posizione della parola.
Proprio per questo la RAM detta ad accesso casuale.
Lunit base di misura della quantit di memoria il byte (pari a 8 bit), un
blocco di memoria capace di contenere al massimo 256 elementi differenti.
Nella tabella sottostante sono indicati i multipli del byte usati per indicare la
dimensione della RAM e delle altre memorie.

Simbolo Nome Quantit
Kb Khilo byte 1.024 byte
Mb Mega byte 1.048.576 byte
Gb Giga byte 1.073.741.824 byte
Gerarchia di Memoria e Memoria Virtuale

Abbiamo visto che il computer memorizza nella RAM le informazioni che gli
servono per poter eseguire i vari programmi. La RAM per una memoria
relativamente piccola ma, soprattutto, volatile. E necessario quindi mantenere
memorizzati dati e programmi in un luogo sicuro e capiente come le memorie di
massa (Hard Disk, Floppy Disk, CD Rom).
Quando accendiamo il computer, il primo programma che viene eseguito il
BIOS attraverso il quale la macchina gestisce gli elementi hardware
fondamentali. Subito dopo viene caricato il sistema operativo (DOS, Linux,
Windows), un programma che, come vedremo, gestisce le risorse del computer
permettendo allutente di utilizzare altri programmi (programmi applicativi).
Questi programmi (come Word, Acces, etc.) vengono prelevati dallhard disk e
messi nella RAM per essere utilizzati dal processore.
Per poter velocizzare gli accessi ai dati in memoria si utilizza un altro elemento,
normalmente posto tra CPU e RAM, detto cache. La cache altro non che una
memoria molto piccola rispetto alla RAM ma estremamente veloce. In essa
vengono memorizzati i dati che, secondo il sistema operativo, verranno utilizzati
pi frequentemente.
Esiste quindi allinterno del computer una vera e propria gerarchia di memoria
come mostrato in figura:

Informatica di Base 15
__________________________________________________________________________________________
Massimiliano Teso
Come si vede dalla figura, man mano che ci allontaniamo dal processore la
capacit di memorizzazione aumenta mentre la velocit di accesso ai dati
diminuisce.
Il processore va a leggere il dato che gli serve prima nella cache, se non lo trova
allora lo prende dalla RAM e lo mette nella cache. Accedere ad una memoria
pi piccola e veloce molto pi agevole che non accedere ad una pi grande e
lenta.
Un altro problema la limitata quantit di memoria disponibile nella RAM. I
moderni sistemi oprativi permettono di lanciare pi programmi
contemporaneamente (multitasking) e questi devono naturalmente andare nella
RAM per poter essere processati dalla CPU. Molto spesso la quantit di
memoria che questi programmi occupano maggiore della RAM disponibile e
questo potrebbe causare diversi problemi. Per ovviare a questo inconveniente
stata inventato il concetto di Memoria Virtuale. Con questo termine si intende la
possibilit di avere una memoria virtualmente molto grande. Come elemento di
memorizzazione virtuale viene utilizzato lhard disk che molto lento ma anche
molto capiente.
Supponiamo che il processore richieda un dato non presente nella RAM e che
questultima sia tutta occupata da altri programmi. Il sistema operativo allora
cerca nella RAM dei dati che non sono momentaneamente indispensabili e li
memorizza sullhard disk (in questo modo libera memoria), recupera poi
dallhard disk il dato richiesto e lo mette nella RAM. La memoria virtuale
permette quindi una condivisione efficiente della memoria da parte di pi
programmi oltre a esonerare il programmatore dal preoccuparsi di gestire
direttamente la memorizzazione del programma.

Maxy Guida 16
__________________________________________________________________________________________
Reti di Computer

Prima che il concetto di rete fosse introdotto nellinformatica, lo scambio di dati
fra due computer presentava diverse difficolt, soprattutto se questi erano
distanti.
Diverso era il discorso nel caso in cui gli utenti, ad esempio, erano tutti nello
stesso palazzo. Esisteva infatti il cos detto centro di calcolo dove risiedeva un
computer grande e potente collegato a diversi terminali. Pi utenti , quindi,
condividevano le stesse risorse (processore, hard disk, etc.) e avevano la
possibilit di scambiarsi dati. Questo modello aveva per diversi problemi. In
primo luogo la condivisione delle risorse portava a rallentamenti dovuti al fatto
che, ad esempio, se un utente stava accedendo allhard disk, un altro utente
doveva attendere. Inoltre, nel caso in cui il centro di calcolo si fosse guastato,
lintera struttura era inutilizzabile. Quando poi lazienda voleva aggiornare il
sistema o aggiungere nuovi utenti, avrebbe dovuto cambiare lintera struttura.
Questi e altri problemi, oltre allo sviluppo dei sistemi di comunicazione,
portarono a un diverso concetto di collegamento tra computer: la rete di
computer.
Invece di un unico, grande computer, si pens di collegare tra loro computer pi
piccoli, economici e indipendenti. Questo permetteva di condividere risorse solo
quando era strettamente necessario. Inoltre un sistema di questo tipo era
estremamente affidabile in quanto, se un computer si fosse guastato, il resto
della rete avrebbe continuato a funzionare. Era poi possibile aggiungere utenti e
aggiornare il sistema mantenendo la stessa architettura della rete.
Analizziamo ora la struttura di una rete partendo dai concetti fondamentali:

In figura rappresentato un computer che si collega a un altro mediante un
qualsiasi tipo di collegamento (telefonico, fibre ottiche, satellitare, etc.). Il cos
detto client colui che chiede un servizio allaltro computer, detto server. In
questo modello la comunicazione generalmente ha la forma di un messaggio di
richiesta che parte dal client e arriva al server. Il server esegue il compito
richiesto e spedisce al client la risposta. Naturalmente un computer pu svolgere
entrambi i ruoli, sia quello di client che quello di server.
Informatica di Base 17
__________________________________________________________________________________________
Massimiliano Teso
Lo sviluppo delle reti ha consentito la realizzazione della pi grande e
complessa rete di computer al mondo: Internet. Grazie ad essa non solo grandi
aziende ma anche singoli cittadini hanno la possibilit di accedere a servizi e
risorse completamente inimmaginabili fino a qualche anno fa.
Alcuni di quest servizi sono: la posta elettronica, il World Wide Web, le
videoconferenze, le chat, etc

Vediamo ora di approfondire meglio gli aspetti hardware delle reti.
Esistono due tipi di tecnologie per la trasmissione:

Reti a diffusione globale (broadcast)
Reti punto-a-punto (point-to-point)
Le reti broadcast hanno un unico canale di comunicazione che condiviso da
tutte le macchine della rete. Brevi messaggi, detti pacchetti, inviati da una
qualsiasi macchina vengono ricevuti da tutte le altre. Un campo indirizzo
allinterno del pacchetto indica il computer a cui diretto. Dopo la ricezione del
pacchetto, un computer controlla il campo indirizzo; se coincide con il suo allora
lo elabora, altrimenti lo ignora.
Al contrario, le reti point to point consistono di molte connessioni fra coppie
individuali di macchine. Per andare dal mittente al destinatario, un pacchetto su
questo tipo di rete potrebbe dover visitare una o pi macchine intermedie.
Un altro criterio utilizzato per classificare le reti legato alla loro scala:

Maxy Guida 18
__________________________________________________________________________________________
Reti Locali
Le reti locali, generalmente chiamate LAN (Local Area Network), sono reti
private allinterno di un singolo edificio o universit, di dimensioni al pi di
qualche chilometro. Le LAN spesso usano una tecnologia di trasmissione a un
solo cavo al quale tutte le macchine sono collegate.
Sono possibili differenti tipologie per tali reti:

a) a bus
b) ad anello

La rete a bus pi diffusa quella chiamata Ethernet e permette trasmissioni da
10 a 100 Mbps (Megabit per secondo, indicando con Megabit 1.000.000 di bit).

Reti metropolitane
Una rete metropolitana o MAN (Metropolitan Area Network) sostanzialmente
una versione ingrandita della LAN e, normalmente, usa tecnologie simili. Pu
coprire un gruppo di edifici vicini della medesima azienda oppure gli edifici di
unintera citt.

Reti geografiche
Una rete geografica o WAN (Wide Area Network), copre una grande area
geografica, spesso una nazione o un continente. In una WAN ci sono una serie
di computer chiamati host (ospiti) collegati tra loro in una LAN a sua volta
collegate a sottoreti. Nella maggior parte delle reti geografiche, la sottorete
costituita da due componenti distinte: le linee di trasmissione e gli elementi di
commutazione.
Le linee di trasmissione (dette anche circuiti o canali) spostano bit fra le varie
macchine, mentre gli elementi di commutazione sono calcolatori specializzati
usati per collegare due o pi linee di trasmissione. Quando i dati arrivano su una
linea di ingresso, lelemento di commutazione, in base allindirizzo dei singoli
pacchetti, deve scegliere una linea di uscita per farli proseguire. Il termine usato
per definire questi calcolatori Router.
Informatica di Base 19
__________________________________________________________________________________________
Massimiliano Teso
Se due Router che non condividono un cavo desiderano comunicare, devono
farlo in modo indiretto attraverso altri Router intermedi.
In questi computer il pacchetto viene ricevuto interamente, memorizzato fino a
che la linea di uscita richiesta non risulti libera e quindi viene fatto proseguire.
Una sottorete che utilizza questo principio detta point-to-poit store-and-
forward (memorizza e fai proseguire) o sottorete packet switched
(commutazione di pacchetto). Quasi tutte le reti geografiche utilizzano sistemi di
questo tipo.
Quando si utilizza una rete point-to-point, un aspetto importante del progetto
riguarda la topologia di interconnessione dei Router. La figura sottostante
mostra diversi tipi di topologia:

a) Stella
b) Anello
c) Albero
d) Completa
e) Anelli secanti
f) Irregolare

Maxy Guida 20
__________________________________________________________________________________________
Internetwork
Esistono molte reti con hardware e software differenti. Chi si collega a una rete
desidera spesso comunicare con persone collegate ad altre reti. Questo necessita
di collegare insieme reti diverse e spesso incompatibili, qualche volta usando
macchine chiamate gateway per realizzare la connessione e provvedere alle
necessarie traduzioni tra i diversi sistemi. Una collezione di reti collegate viene
detta internet (con la lettera minuscola). La rete Internet (con la lettera
maiuscola) linternetwork pi grande e complessa del mondo.
Una forma comune di internetwork una collezione di LAN collegate da una
WAN.
Per poter comunicare tra di loro i computer devono utilizzare delle regole
comuni per evitare ambiguit ed errori. Queste regole vanno sotto il nome di
protocollo grazie al quale si possono spedire e ricevere dati attraverso la rete.
Fondamentalmente un protocollo un accordo fra i partecipanti a una
comunicazione su come essa deve procedere.
In una rete molto importante il concetto di indirizzo. Ogni computer in rete
infatti individuato da un indirizzo univoco. In questo modo un qualsiasi altro
computer potr contattarlo per lo scambio di dati. Vedremo in maniera pi
approfondita quali protocolli vengono utilizzati in Internet e come viene
assegnato lindirizzo a un computer in rete.

La rete mondiale Internet

All'inizio degli anni '70 il Dipartimento della Difesa americano cre una rete di
collegamento chiamata ARPANET che metteva in connessione centri militari e
centri di ricerca. Essa era strutturata in modo insolito e finalizzata, tra l'altro, a
mantenere i collegamenti anche in caso di attacco atomico. Arpanet funzionava
con un criterio di trasmissione dei dati che si chiama TCP/IP (Trasmission
Control Protocol/Internet Protocol). La novit tecnologica rispetto alla
trasmissione telefonica delle informazioni era che i segnali non erano analogici
ma digitali, e che venivano spezzettati in "pacchetti" di segnali ognuno dei quali
conteneva l'indicazione del mittente e del destinatario, attraverso opportune
sigle.
Successivamente iniziarono a collegarsi a questa rete anche le Universit e
grandi aziende. Stava nascendo la rete globale Internet oggi diffusissima anche
tra i singoli cittadini. Internet quindi sostanzialmente una grande rete di reti
che sta crescendo a dismisura e che offre tanti e tali servizi da divenire quasi
indispensabile per aziende e per alcune categorie di privati cittadini (liberi
professionisti, giornalisti, etc.).
Finora abbiamo parlato di pacchetti invece che di dati ma non abbiamo
specificato di cosa si tratta. Quando fu inventata Internet ci si rese subito conto
che mandare i dati cos come erano non era vantaggioso per diversi motivi. In
primo luogo in termini di velocit: ogni nodo intermedio avrebbe dovuto
Informatica di Base 21
__________________________________________________________________________________________
Massimiliano Teso
ricevere lintero file che si voleva trasferire e poi rimandarlo al successivo nodo.
Questo avrebbe generato molti tempi morti. Inoltre se ad un certo punto il file
veniva perso, il mittente avrebbe dovuto rimandarlo nella sua interezza. Ci si
rese conto quindi che il metodo migliore per trasferire i dati era quello di
dividerli in tanti pacchetti autonomi. Una volta arrivati a destinazione sarebbero
stati riuniti per formare il dato originale.
Questo sistema si chiama Packet Switching e permette inoltre la comunicazione
di pi host contemporaneamente.
Tra la sorgente e la destinazione ci sono i cos detti Router che provvedono a
spedire i pacchetti nella giusta direzione. Il pacchetto, una volta arrivato al
Router, viene inserito in un input buffer, processato e infine messo in un output
buffer. Questo naturalmente crea un ritardo. Se il Router occupato a processare
altri pacchetti, il pacchetto appena arrivato viene messo in coda. Alcune volte
per la coda piena e quindi il nuovo pacchetto viene eliminato e perso. Il
mittente dovr quindi rispedire esclusivamente il pacchetto perso e non lintero
messaggio o file. Ogni pacchetto, per poter essere spedito dal mittente al
destinatario, deve contenere delle informazioni aggiuntive (oltre al dato
originale). Queste vengono inserite nel cos detto Header (intestazione) e
contengono fondamentalmente le informazioni relative allindirizzo del mittente
e del destinatario e un numero che indica la posizione del pacchetto
relativamente al dato originale. Grazie a questo Header il pacchetto pu arrivare
a destinazione ed essere assemblato con gli altri pacchetti ricreando il dato
spedito dal mittente.

I Protocolli di Internet

Internet offre diversi servizi ognuno dei quali utilizza uno specifico protocollo
(ovvero un insieme di regole per la comunicazione). I servizi pi utilizzati sono
il World Wide Web e la Posta Elettronica (o Email). Con il primo possiamo
visitare accattivanti pagine informative con testo, immagini e animazioni mentre
con lEmail possiamo comunicare in tempo quasi reale con qualsiasi parte del
mondo a bassissimo costo. Vediamo quindi un po meglio i protocolli che sono
alla base di questi importanti servizi.

TCP/IP
E' il protocollo base di rete per le comunicazioni su Internet, colui che organizza
la spedizione dei file, scompattandoli in pacchetti di bit spedibili in rete.
Allinizio e alla fine del pacchetto da mandare vengono messi dei segni di
riconoscimento relativi al mittente e al ricevente. Il pacchetto viene "instradato"
da apparecchi che si chiamano Router e fatto rimbalzare da nodo a nodo fino a
quando non arriva a destinazione.

Maxy Guida 22
__________________________________________________________________________________________
HTTP
Hyper Text Transfer Protocol il protocollo che permette allutente di
visualizzare sullo schermo le informazioni in formato testo e grafico che
risiedono sul Web. Quando si digita un indirizzo con la sigla "http://" prima del
"www" si vuole indicare lutilizzo del protocollo http.

FTP
File Transfer Protocol consente di trasferire file da un PC ad un altro accedendo
a centinaia di biblioteche di file di ogni tipo: software, giochi, documenti storici,
testi di canzoni, etc.

SMTP
Simple Mail Transfer Protocol il protocollo che serve per spedire messaggi di
posta elettronica dal computer al mail server.

POP3
Post Office Protocoll-versione 3 il protocollo utilizzato per scaricare la posta
dal mail server al computer.

Gli Indirizzi in Internet

Abbiamo pi volte detto che quando un computer in rete vuole comunicare con
un altro computer, anchesso collegato, deve specificare il suo indirizzo. Questo
significa che ad ogni computer collegato viene attribuito un indirizzo univoco in
modo che possa essere contattato senza ambiguit. Ogni computer ha quindi
associato quello che si chiama indirizzo IP, identificato da quattro campi di 8 bit
divisi da un punto (ad esempio 124.234.111.65). Se si vuole spedire un
messaggio al computer 124.234.111.65 tutti i pacchetti ad esso destinati
dovranno riportare questo indirizzo. Mentre per i computer agevole lavorare
con i numeri, noi umani preferiamo qualcosa di pi esplicativo e quindi
preferiamo indicare lindirizzo di un computer attraverso un nome mnemonico
(www.yahoo.com). Esistono quindi in rete dei computer che mediante un
database distribuito (DNS ovvero Domain Name System) traducono gli indirizzi
mnemonici in indirizzi IP.
Collegandoci quindi a www.yahoo.com il DNS lo trasforma nellindirizzo IP
relativo e quindi i Router (che leggono solo gli indirizzi IP) possono instradare
correttamente i pacchetti a destinazione.

Informatica di Base 23
__________________________________________________________________________________________
Massimiliano Teso
CAP II
LINGUAGGI E SISTEMI OPERATIVI
Introduzione

La comunicazione tra due individui possibile soltanto quando essi parlano la
stessa lingua. Se un italiano e un francese si incontrano essi riescono a
comunicare solo nei casi in cui:
- litaliano conosce il francese
- il francese conosce litaliano
- entrambi conoscono una terza lingua, ad esempio linglese.

Lo stesso vale nella comunicazione tra uomo e computer. Il computer conosce
solo il cos detto Linguaggio Macchina costituito da una successione di 0 e 1.
Storicamente i primi computer erano programmabili solo in linguaggio
macchina. Ben presto per si sent la necessit di avere dei linguaggi pi
comprensibili allutente e quindi maggiormente orientati alla soluzione dei
problemi. Nascono quindi i cos detti linguaggi ad alto livello come il Fortran
(1954), il Cobol (1959) e il C (1972). Da allora il numero dei linguaggi evoluti
notevolmente aumentato fino ad arrivare ai giorni nostri in cui si utilizza molto
la programmazione orientata agli oggetti mediante lutilizzo di linguaggi come il
C++ e Java.
E necessario subito porre in evidenza alcune caratteristiche sostanziali dei
linguaggi di programmazione che li distinguono dai linguaggi comuni. Questi
ultimi sono spesso ambigui e, in molte occasioni, il significato di una frase
dipende dal contesto in cui inserita.
La frase Ho visto Maria con un amico ambigua in quanto potrebbe assumere
i due significati: mentre ero con un amico ho visto Maria oppure ho visto
Maria che si trovava con un amico Consideriamo poi le due frasi il conto
salato e il pollo salato. La parola salato assume un diverso significato a
seconda del contesto.
Nei linguaggi di programmazione questo non pu avvenire: non infatti
ammessa alcun tipo di ambiguit e ogni parola ha in genera un'unico significato
non dipendente dal contesto. Queste regole servono ad evitare incomprensioni
tra il programmatore e il computer e quindi a generare programmi corretti.

Maxy Guida 24
__________________________________________________________________________________________
Dal Linguaggio Macchina allAssembler

Abbiamo gi detto che il computer comprende esclusivamente un linguaggio di
due simboli (0 e 1) chiamato linguaggio macchina. Ogni tipo di processore ha un
linguaggio macchina differente ed quindi necessario conoscerne la struttura
interna per poter programmare direttamente con questo tipo di linguaggio.
Si pu capire quanto sia difficile per un programmatore comunicare con il
computer tramite il linguaggio macchina. Fin dagli inizi dellinformatica si
quindi cercato di creare un linguaggio pi familiare rispetto allutente, il
linguaggio Assembler, avente un carattere simbolico anche se ancora molto
vicino alla struttura hardware della macchina.
Il linguaggio Assembler, in quanto simbolico, ha la necessit di essere tradotto
in linguaggio macchina e per questo scopo viene utilizzato un particolare
programma detto Assemblatore. Grazie allAssembler il programmatore non ha
a che fare con infinite sequenze di 0 e 1 ma con strutture di questo tipo:

MOVW R5, R0
ADD R1, R2

Che verranno poi tradotte dallAssemblatore nelle relative sequenze binarie.

Linguaggi ad alto livello

Malgrado lAssembler sia di tipo simbolico esso ancora molto legato alla
struttura hardware del processore e inoltre necessita di un numero molto grande
di istruzioni per svolgere un compito banale.
Si quindi cercato di creare linguaggi di programmazione pi semplici e veloci
da utilizzare ma soprattutto pi vicini al nostro modo di ragionare. I linguaggi di
questo tipo prendono il nome di linguaggi ad alto livello. In essi una singola
istruzione pu eseguire compiti anche molto complessi che richiederebbero
molte istruzioni assembler.
I programmi scritti con questi linguaggi devono naturalmente essere tradotti in
linguaggio macchina per poter essere compresi dal computer. Per ogni
processore, la casa costruttrice commissiona la produzione di programmi
software in grado di eseguire questa operazione. Questi programmi, a seconda
del loro modo di funzionare, sono chiamati compilatori o interpreti.
Informatica di Base 25
__________________________________________________________________________________________
Massimiliano Teso
Un compilatore ha come dato in ingresso un programma in linguaggio ad alto
livello scritto dallutente (detto programma sorgente), esegue su di esso le
conversioni necessarie e ottiene come prodotto finale in uscita un programma
scritto in linguaggio macchina (detto programma oggetto).
Se il programma sorgente corretto dal punto di vista sintattico il compilatore
esegue la traduzione nel programma oggetto che potr poi essere eseguito Nel
caso in cui ci sia un errore il compilatore lo segnala senza creare il programma
oggetto.
Un interprete invece agisce in maniera differente schematizzabile nei seguenti
passi:
- viene presa in esame la prima riga e su di essa si esegue lanalisi sintattica
per verificare se ammessa dal linguaggio
- se la risposta alla domanda precedente positiva, allora la riga viene
tradotta in linguaggio macchina e immediatamente eseguita
- altrimenti si ha linterruzione del programma e la segnalazione dellerrore

Questo ciclo viene ripetuto per ogni istruzione del programma.
A questo punto ci si potrebbe chiedere se sia meglio compilare o interpretare un
programma.
La compilazione richiede pi tempo rispetto allinterpretazione ma una volta
creato il programma oggetto questo naturalmente pi veloce del programma
interpretato. Si preferisce quindi utilizzare un programma interprete in fase di
debbugging in cui si cercano eventuali errori (detti bugs, ovvero insetti). In
questo modo si evita di compilare ogni volta lintero programma. In un secondo
tempo, quando si sicuri della correttezza del programma, si ricorre alla
compilazione per produrre leseguibile definitivo.

I Sistemi Operativi

I primi computer potevano svolgere solamente un programma alla volta. Un
operatore era incaricato di inserire le schede perforate allinterno della macchina
la quale, in base alle istruzioni, eseguiva le operazioni richieste. Questa forma di
elaborazione detta elaborazione batch monoutente. Questo metodo, oltre a
richiedere operatori umani specializzati, prevedeva dei tempi di elaborazione
molto lunghi e linevitabile presenza di tempi morti quando si dovevano inserire
nuove schede. Si sent quindi la necessit di creare un programma che sostituisse
loperatore umano. Nacquero i cos detti sistemi operativi allo scopo di rendere
pi agevole luso del computer. I primi sistemi gestivano una serie di compiti in
sequenza cercando di sfruttare al meglio le risorse. In questo modo aumentava il
carico di lavoro che i computer potevano sostenere.
Man mano che aumentava la potenza dei computer si cap che lelaborazione
batch monoutente non permetteva di sfruttare a pieno le loro potenzialit. Si
pens quindi che i computer potevano elaborare pi programmi
Maxy Guida 26
__________________________________________________________________________________________
contemporaneamente per permettere a pi utenti di utilizzare simultaneamente
lo stesso elaboratore. Negli anni 60 nacquero quindi i primi sistemi operativi
timesharing ( in inglese condivisione di tempo). Grazie a sistemi operativi di
questo tipo diversi utenti possono accedere allo stesso elaboratore e
condividerne le risorse. Il computer in realt non soddisfa simultaneamente tutte
le richieste degli utenti, ma esegue una piccola parte del compito di un utente,
quindi passa ad eseguire una piccola parte del compito di un altro utente e cos
via. Poich queste azioni vengono svolte molto velocemente, il computer pu
tornare sulla richiesta di un singolo utente diverse volte al secondo e si ha quindi
limpressione che tutti i compiti siano eseguiti simultaneamente. Quindi mentre
nei primi sistemi operativi un utente doveva attendere che il programma
dellutente precedente fosse concluso prima di poter eseguire il suo, con i
sistemi timesharing si possono eseguire i due programmi contemporaneamente
sfruttando al meglio le potenzialit del computer.

Informatica di Base 27
__________________________________________________________________________________________
Massimiliano Teso
CAP III
I SISTEMI DI NUMERAZIONE
Sistema di numerazione decimale

Il sistema di numerazione decimale posizionale (detto anche in base 10), ormai
comunemente usato in tutto il mondo, fu introdotto per la prima volta dagli
Indiani e si diffuse in Europa intorno al 1200, per merito del matematico italiano
Leonardo Fibonacci che laveva appreso dagli arabi in uno dei suoi viaggi.
Si basa sulluso di dieci simboli:

0 1 2 3 4 5 6 7 8 9
i quali, combinati opportunamente, danno luogo a tutti i numeri.
I numeri superiori a 9 vengono rappresentati con pi di una cifra, ciascuna delle
quali acquista valore particolare a seconda della posizione in cui si trova.
Ci che importa la posizione della cifra e quindi possiamo considerare la
seguente notazione posizionale:

94022
10
=9*10
4
+4*10
3
+0*10
2
+2*10
1
+2*10
0
Il pedice
10
sta ad indicare che ci troviamo in base 10.

Con lo stesso significato possiamo introdurre le cifre

0,1= 1/10=10
-1

0,01=1/100=10
-2
0,001=1/1000=10
-3

e quindi il numero

820,031 = 8*10
2
+ 2*10
1
+ 0*10
0
+ 0*10
-1
+ 3*10
-2
+ 1*10
-3

viceversa avendo il numero in notazione esponenziale possibile passare alla
notazione decimale eseguendo le operazioni proposte

8*10
2
+ 2*10
1
+ 3*10
0
+ 2*10
-1

diventa uguale a

800 + 20 + 3 + 0,2 = 823,2

Maxy Guida 28
__________________________________________________________________________________________
Sistemi di numerazione diversi dal decimale

Oltre al decimale esistono tantissimi altri sistemi di numerazione posizionali.
I sistemi di cui noi ci occuperemo sono:

binario (in base 2)
2 elementi
[0, 1]

ottale (in base 8)
8 elementi
[0, 2, 3, 4, 5, 6, 7]

esadecimale (in base 16)
16 elementi
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F]

Si potrebbero per concepire sistemi di numerazioni in base 5, 7 o 15.

Conversione da base N a base 10

Dato un numero N=(d
n
d
n-1
.d
2
d
1
d
0
)
N
in base N, per convertilo in base 10
occorre effettuare la somma dei singoli termini pesati opportunamente in base
alla loro posizione:

d
n
*N
n
+ d
n-1
*N
n-1
+ + d
2
*N
2
+ d
1
*N
1
+d
0
*N
0
Esempio
1101
2
= 1*2
3
+ 1*2
2
+ 0*2
1
+ 1*2
0
= 8 + 4 + 0 + 1= 13
10

Informatica di Base 29
__________________________________________________________________________________________
Massimiliano Teso
Conversione da base 10 a base N

Supponiamo di avere un numero decimale, ad esempio, 109, e di volerlo portare
in notazione N-aria. Quello che si deve fare dividere 109 per N, scrivere il
risultato e calcolare il resto. A sua volta il resto verr nuovamente diviso per N e
cos via fino a che il dividendo non risulti pari a zero. I resti ottenuti, letti al
contrario, danno il valore nella base N.

Esempio
Volgiamo portare 109 dalla base 10 alla base 5

109 : 5 = 21 con resto 4
21 : 5 = 4 con resto 1
4 : 5 = 0 con resto 4

quindi

109
10
= 414
5
Sistema di numerazione binario

E sicuramente il pi semplice tra tutti i sistemi di numerazione con base diversa
da 10. E dotato di due soli simboli 0 e 1, comunemente detti bit, ed per questo
che viene chiamato a base due. Anche in questo caso siamo di fronte a un
sistema posizionale e, quindi, ogni cifra assume un diverso valore a seconda
della sua posizione.
Si ha che:

1102 = 1*2
2
+ 1*2
1
+ 0*2
0
e la lettura suonerebbe come 1 quartina, 1duina e 0 unit.

Vediamo quindi come possiamo passare dal sistema binario a quello decimale.

101,1101 = 1*2
2
+ 0*2
1
+ 1*2
0
+ 1*2
-1
+ 1*2
-2
+ 0*2
-3
+ 1*2
-4
=
= 4 + 0 + 1 + 0,5 + 0,25 + 0 + 0,065 = 5,8125

Mentre abbiamo visto precedentemente come sia possibile passare dalla
notazione decimale a quella binaria.

Maxy Guida 30
__________________________________________________________________________________________
Sistema di numerazione ottale
Il sistema di numerazione ottale, ovvero in base otto, si avvale di otto cifre per
rappresentare i valori
0 1 2 3 4 5 6 7
La tecnica di conversione di un numero ottale in un numero decimale la stessa
mostrata a titolo esemplificativo per il sistema decimale, con la differenza che la
base di numerazione otto.
Per esempio, per convertire il numero ottale
12345
8
si procede come segue:
1*8
4
+ 2*8
3
+ 3*8
2
+ 4*8
1
+ 5*8
0
= 4096 +1024 + 192 + 32 + 5 = 5349
Per passare dal sistema decimale a quello ottale si procede nel modo usuale:

5349 / 8 = 668 con il resto di 5
668 / 8 = 83 con il resto di 4
83 / 8 = 10 con il resto di 3
10 / 8 = 1 con il resto di 2
1 / 8 = 0 con il resto di 1

Ecco che cos si riottiene il numero ottale 12345
8
.
Sistema di numerazione esadecimale

La numerazione esadecimale, ovvero in base 16, funziona in modo analogo a
quella ottale, con la differenza che si avvale di 16 cifre per rappresentare i
valori. Si usano le cifre numeriche da zero e nove, pi le lettere da A a F
per i valori successivi. In pratica, la lettera A nelle unit corrisponde al
numero 10 e la lettera F nelle unit corrisponde al numero 15. La tecnica di
conversione la stessa gi vista per il sistema ottale, tenendo conto della
difficolt ulteriore introdotta dalle lettere aggiuntive. Per esempio, per convertire
il numero esadecimale
19ADF
16
,
si procede come segue:
1*16
4
+ 9*16
3
+ 10*16
2
+ 13*16
1
+ 15*16
0
= 105.183
Per passare dalla base 10 alla base 16 si procede nel medesimo modo illustrato
per il sistema binario e ottale.

Aritmetica binaria

Vediamo ora come si eseguono le operazioni tra i numeri binari.
Fondamentalmente si seguono le stesse regole della notazione decimale riferite
per alla nuova base considerata.

Informatica di Base 31
__________________________________________________________________________________________
Massimiliano Teso
Addizione

0+0=0
0+1=1
1+0=1
1+1=0 con riporto di 1
Esempio
1111
1101+
111=
-----------
10100

Moltiplicazione

0 * 0 = 0
1 * 0 = 0
0 * 1 = 0
1 * 1 = 1
Esempio
1101*
11=
------------
1101
1101-
-----------
100111

Maxy Guida 32
__________________________________________________________________________________________
Divisione

Si usa lo stesso algoritmo dei decimali riferito per alla base due

____
1111101 |1011
------
1
11111101 |1011
1011 ------
----- 1
100
--
1111101 |1011
1011 ------
----- 10
1001
--
1111101 |1011
1011 ------
----- 101
10010
1011
---------
111

--
1111101 |1011
1011 ------
----- 1011
10010
1011
---------
1111
1011
-----------
100

Il risultato quindi 1011 con resto 100
Informatica di Base 33
__________________________________________________________________________________________
Massimiliano Teso
Sistemi di numerazione in programmazione

Risulta evidente limportanza in informatica della rappresentazione binaria. A
che cosa servono allora le rappresentazioni ottale e esadecimale?
Esaminiamo questa tabella:

decimale binario ottale esadecimale
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
0
1
10
11
100
101
110
111
1000
1001
1010
1011
1100
1101
1110
1111
0
1
2
3
4
5
6
7
10
11
12
13
14
15
16
17
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
Si pu notare che con tre bit posso rappresentare tutti e soli i numeri che vanno
da 0 a 7 mentre, con 4 bit, tutti e soli i numeri che vanno da 0 a 15.
Quindi 3 e 4 bit rappresentano rispettivamente tutti e soli i simboli dei sistemi
ottale e esadecimale.
Questo facilita molto la conversione da un sistema ottale/esadecimale a quello
binario e viceversa.

Ottale -> Binario

Ogni cifra pu essere rappresentata da tre bit quindi la conversione veloce si
svolge in questo modo.
Se, ad esempio, vogliamo convertire il numero 673
8
6 diventa 110
7 diventa 111
3 diventa 011

quindi

673
8
= 110111011
2
Maxy Guida 34
__________________________________________________________________________________________
Binario-> Ottale

In questo caso si divide il numero binario in blocchi di tre bit che verranno
convertiti singolarmente in base 8.

110111011
2
viene diviso in

110 111 011 = 673
8
Esadecimale -> Binario

Il metodo identico a quello per il sistema ottale.

7E
16
= 0111 1110 = 01111110
2
Binario -> Esadecimale

Anche in questo caso il sistema il medesimo.

1010 1011 0101 = A B 5

Come si vede, il sistema esadecimale in grado di rappresentare un
raggruppamento di 8 bit (1 byte) con due soli simboli e questa sua sinteticit
sicuramente di pi rapida memorizzazione da parte di un utente. E questa
ultima caratteristica che determina il largo impiego quando si vuole, ad esempio,
fare riferimento a un indirizzo di memoria. E infatti pi agevole scrivere 8
caratteri esadecimali piuttosto che 32 caratteri binari per indicare un indirizzo di
memoria.
Informatica di Base 35
__________________________________________________________________________________________
Massimiliano Teso
Esercizi

1. Di quanti simboli dotato il sistema di numerazione in base 4
2. Quanti numeri con due cifre si possono ottenere con un sistema binario, se
ciascuna di esse non pu essere ripetuta?
3. Quanti numeri diversi di 3 cifre si possono ottenere con le cifre binarie?
4. Qual il massimo numero decimale rappresentabile da un numero binario
costituito di 16 bit?
5. Scrivere i seguenti numeri in base 10 secondo la notazione esponenziale
(6835; 381; 408; 9875,324)
6. Trovare la rappresentazione binaria dei seguenti numeri decimali (34,
159, 512, 255, 254)
7. Eseguire le seguenti somme: (1101 + 1101); (11011 + 101); (1110111 +
111); (101101 + 110 + 11101); (11111 + 11)
8. Eseguire le seguenti moltiplicazioni: (111011 * 11); (10011*10);
(111011*1001)
9. Eseguire le seguenti sottrazioni: (1011 101); (10101 11); (11011
111); (11000 - 101)
10. Eseguire le seguenti divisioni: (1101/10); (100110/101); (11010/111)
11. Convertire in binario i seguenti numeri ottali: (37; 121, 7032; 976)
12. Convertire in binario i seguenti numeri esadecimali: (37; 7032; 976;
5A7B)
13. Convertire in ottale i seguenti numeri binari (101111100; 1001000;
11011110)
14. Convertire in esadecimale i seguenti numeri binari (10111100;
111110101010000; 101101110111)

Maxy Guida 36
__________________________________________________________________________________________
CAP IV
LOGICA DELLE PROPOSIZIONI
Introduzione

La logica, come scienza autonoma, nasce con la filosofia greca; il primo a
trattare largomento fu Aristotele (385-322 a.C.) il quale si propose di indagare
sulla correttezza formale del ragionamento concentrando la sua attenzione sulla
forma del sillogismo, ovvero su una forma specifica di deduzione del
ragionamento filosofico. E merito per di Gorge Boole (1815-1864) se la logica
ha assunto le caratteristiche di uno strumento di calcolo potente per indagare le
proposizioni elementari e le regole formali della loro composizione. Questa
algebra ha assunto notevole importanza sia nel campo della matematica pura che
in quella della teoria dei calcolatori.
Definiamo proposizioni semplici le espressioni in forma orale o scritta per le
quali si possa dire se sono vere o false (ad esempio 20 un numero pari)
Definiamo proposizione composta la combinazione di pi proposizioni
semplici.
Dora in avanti faremo uso di variabili del tipo a, e, r per indicare una
generica proposizione semplice, con lovvia convenzione che due proposizioni
diverse saranno indicate con variabili diverse.

Negazione (NOT)
Data la proposizione 20 un numero pari (che vera) posso creare la sua
negata 20 NON un numero pari (che falsa). La negazione si indica con i
simboli ~ o b. Si ha quindi la seguente tavola delle verit

a b
V
F
F
V
Si ha naturalmente che
~(~a) = a

Congiunzione (AND)

Supponiamo di avere le proposizioni il sole splende, una bella giornata e
indichiamo la prima con a e la seconda con e. La proposizione composta
dallaffermazione contemporanea delle due risulta il sole splende ed una bella
giornata e verr scritta con il simbolo a.r (oppure a*r) e si legge <<a ed r>> .
La congiunzione ha la seguente tavola di verit

Informatica di Base 37
__________________________________________________________________________________________
Massimiliano Teso
a r a.r
V
V
F
F
V
F
V
F
V
F
F
F
La congiunzione gode delle seguenti propriet:
associativa, cio (a.e).r a.(e.r)
commutativa, cio a.e e.a
idempotenza a.a a
Disgiunzione non esclusiva (OR)

Abbiamo le proposizioni a: leggo il giornale, r: mangio una mela. La
proposizione composta leggo il giornale o mangio una mela viene indicata con
il simbolo avr (oppure a+r) e si legge <<a o r>>. Essa esprime il fatto che
possono essere eseguite contemporaneamente due azioni oppure una soltanto.
Questa la tavola delle verit

a r avr
V
V
F
F
V
F
V
F
V
V
V
F
La congiunzione gode delle seguenti propriet:
associativa, cio (ave)vr av(evr)
commutativa, cio ave eva
idempotenza ava a
Regole di composizione delle proposizioni logiche

I connettivi introdotti, da soli o combinati in vario modo, formano proposizioni
composte a volte anche di notevole complessit.
Per definire la tavola delle verit di una proposizione composta opportuno
definire uno schema di procedimento utilizzabile nella generalit dei casi e di
facile comprensione.

Maxy Guida 38
__________________________________________________________________________________________
Esempio 1
Analizziamo la proposizione ~(avr).

Si tratta di costruire una tabella che presenti nella testata tutte le proposizioni
elementari e le operazioni logiche presenti nella proposizione da analizzare. Le
colonne relative alle due proposizioni elementari a ed r saranno completate da
tutte le possibili combinazioni dei valori di verit.

~ a
v
r
F
F
F
V
V
V
F
F
V
V
V
F
V
F
V
F
(2) (1)
I numeri ai piedi della tabella indicano lordine di esecuzione delle operazioni. Il
numero maggiore, nellesempio (2), rappresenta la colonna dei valori di verit
della proposizione composta ~(avr).

Esempio 2
Analizziamo la proposizione (e.~a)vr
e
.
~a a
v
r
V
V
V
F
V
F
F
F
F
F
V
F
V
F
F
F
F
F
V
F
V
F
V
V
V
V
F
V
F
V
F
F
V
F
V
V
V
F
V
F
V
F
V
V
F
F
V
F
(2) (1) (3)
Informatica di Base 39
__________________________________________________________________________________________
Massimiliano Teso
Propriet aggiuntive

Esistono ulteriori propriet fondamentali che legano la congiunzione alla
disgiunzione non esclusiva:

Propriet distributiva della congiunzione e disgiunzione luna rispetto
allaltra:
o (a.e)vr (avr) . (evr)
o (ave) .r (a.r) v (e.r)

Leggi di De Morgan
o ~(a.e) ~a v ~e
o ~(ave) ~a . ~e

Disgiunzione esclusiva (XOR)

La frase composta vado in macchina o a piedi implica una scelta indiscutibile
e alternativa tra due possibilit, poich non possono verificarsi
contemporaneamente entrambe. La disgiunzione esclusiva si indica con il
simbolo ar e si legge << a xor b>>.
La tavola delle verit la seguente:

a r ar
V
V
F
F
V
F
V
F
F
V
V
F
Si ha che:
ar ~[(a.r) v (~a.~r)]

Maxy Guida 40
__________________________________________________________________________________________
Esercizi

1. Se a la proposizione Anna parla francese e r la proposizione Anna
parla inglese, si traduca la forma simbolica delle seguenti proposizioni
nel linguaggio naturale: a.r ; avr; ~a.r; ~av~r; ~(~a.~r)
2. Usando De Morgan, scrivere gli enunciati seguenti: non vero che
conosce linglese o il francese; non vero che le vendite aumentano e i
prezzi calano; non mango e non bevo
3. Scrivere la tavola delle verit delle seguenti proposizioni: (a.r)v(~a.r);
[a.(~avr)]v~a
4. Risolvere le seguenti funzioni (a= Vero, r= Falso, q= Falso, p=Vero):
[a.(~avr)]v[~av(qvp).~(avr)] ; ~{~[(a.~p)v~(q.p)] v
[(a.~p)v~(q.p)]}

Informatica di Base 41
__________________________________________________________________________________________
Massimiliano Teso
CAP V
STRUTTURA DEI DATI
Introduzione

Lo scopo del capitolo quello di precisare quali sono i tipi di dato computabili e
come essi vengono rappresentati fisicamente a livello della macchina, ben
sapendo che, pur essendoci delle convenzioni comunemente accettate dai
costruttori di hardware, esistono delle varianti nei diversi sistemi.
Prima di entrare nel dettaglio ricordiamo che allinterno del computer le
informazioni sono memorizzate in binario, cio utilizzando solamente due
simboli: 0 e 1.
Lunit minima di memorizzazione una sequenza di 8 bit detto byte e la
memoria del computer si misura in multipli di questa quantit.

Variabili di tipo boolean

Questo tipo di dato permette di rappresentare due valori di verit: true (vero) e
false (falso). Nei computer normalmente convertito automaticamente nei valori
interi 1 e 0.
Dal punto di vista della rappresentazione fisica delle variabili booleane ciascuna
di esse esigerebbe teoricamente un solo bit per memorizzare i due valori. In
pratica, poich lunit minima indirizzabile il byte si avr che il valore true
uguale alla combinazione 00000001 mentre false a 00000000.

Tipo degli Interi

Consideriamo linsieme dei numeri Interi
Z={-, ..., -1, 0, +1,... +}
Vogliamo rappresentare gli elementi di questo insieme in forma binaria.
Avendo a che fare con multipli di byte, non possiamo naturalmente
rappresentare lintero insieme ma solamente una parte di esso.. Questa
restrizione limita naturalmente lesecuzione delle operazioni. Se prendiamo ad
esempio la somma, bisogna fare attenzione alla grandezza dei singoli addendi
poich, qualora i valori siano prossimi ai limiti dellintervallo, il risultato
potrebbe cadere fuori dallintervallo rappresentabile (overflow ovvero
straripamento). Lunica operazione non soggetta a rischi di overflow la
divisione di due interi mentre la pi esposta chiaramente lelevamento a
potenza.

Maxy Guida 42
__________________________________________________________________________________________
Una possibile rappresentazione quella con modulo e segno in cui lottavo bit
viene utilizzato per rappresentare il segno del numero mentre gli altri sette bit il
suo modulo. Per un numero rappresentato con 8 bit avremo questo intervallo di
rappresentazione:

-127s N s 127

Si noti che lo zero rappresentato sia da 10000000 che da 00000000.
Questa rappresentazione presenta per problemi quando si devono eseguire le
operazioni aritmetiche elementari. Si vedano questi due esempi:

3+ 00000011+
2= 00000010 =
___ __________
5 00000101

5+ 00000101+
-2= 10000010 =
___ _________
3 10000111 (= -7)

Subentrano quindi dei problemi quando si sommano due numeri negativi o uno
negativo e laltro positivo.

Per uscire da questa difficolt si introduce la rappresentazione in complemento a
due. Per rappresentare un numero negativo (ad esempio 2) si prende la
rappresentazione del numero positivo ( 2: 00000010) e si complementa bit a bit,
mettendo cio al posto di zero luno e al posto di uno lo zero (-2: 11111101).
In questo caso lo zero ha ununica rappresentazione, 00000000, mentre
10000000 rappresenta il numero 128. Quindi nella rappresentazione in
complemento a due si ha il seguente intervallo.

-128s N s 127

Proviamo a ripetere la somma proposta precedentemente.

5+ 00000101+
-2= 11111101 =
___ _________
3 00000010

Lultimo riporto di 1 non viene naturalmente preso in considerazione dovendo il
numero rientrare negli 8 bit previsti.
Informatica di Base 43
__________________________________________________________________________________________
Massimiliano Teso
Tipo dei Reali

Consideriamo linsieme dei numeri reali R. Come per gli interi non possiamo
rappresentarli tutti ma solo un sottoinsieme finito. Oltre a un limite inferiore e
superiore, inoltre, abbiamo il problema dellarrotondamento.
Ogni elemento di R, in generale, pu essere espresso come somma di un intero
con un numero frazionario.In pratica, un numero reale individuato
univocamente da:
una parte intera I
una parte frazionaria F

Rappresentazione dei reali in virgola fissa:
In questa rappresentazione un numero prefissato di cifre viene dedicato alla
parte intera ed a quella frazionaria (rappresentazione in virgola fissa).

<+,-> <rappresentazione I> . <rappresentazione F>

ad esempio:
331,697510= 00101001011,10110
(riservando 11 bit per la parte intera e 5 per quella frazionaria).

Rappresentazione dei numeri reali in virgola mobile:
In questa rappresentazione ad un numero reale r vengono associati due numeri:
m = mantissa
n = esponente (o caratteristica)

La mantissa un numero frazionario con segno. Il suo valore quindi compreso
nellintervallo ]-1, +1[ ,mentre lesponente un intero con segno.
la mantissa e lesponente sono legati dalla relazione:

r = m* b
n
dove b e' un numero intero che indica una base utilizzata per la notazione
esponenziale (normalmente b= 10 oppure b= 2 in binario)
Per portare un numero reale in base dieci nella notazione in virgola mobile in
base due si passa attraverso due passi:
il numero viene prima convertito in base due
(123,45)
10
= (1111011.01110011)
2
Il punto decimale viene spostato in modo che tutti i bit si trovino alla sua
destra (0.111101101110011*2
7
)
Per ogni numero reale vengono quindi utilizzati n bit:
Maxy Guida 44
__________________________________________________________________________________________
n n-1 n-2 l
1
segno
numero
segno esponente
valore assoluto esponente
mantissa (cifre a
destra della virgola)
In una rappresentazione a 32/64 bit si ha:
1 bit per il segno della mantissa;
1 bit per il segno dell'esponente;
7/10 bit per il valore assoluto dell'esponente;
23/52 bit per la mantissa.

Spesso invece di utilizzare il bit di segno lesponente rappresentato in
complemento a due.
Lesponente per una rappresentazione a 32 bit potr quindi andare da 128 a
127. La mantissa di 23 bit consente di rappresentare 23 cifre binarie che
corrispondono a un numero decimale con un massimo di sette cifre (2
23
-1=
8.388.607).
Quindi lintervallo numerico rappresentabile :

-0.8388608* 2
-128
s N s+0,8388607*2
127

Poich 2
127
approssimabile con il valore 1,7*10
38
e la mantissa assume valori
nellintervallo ] 1, +1 [ possiamo approssimativamente dire che un numero
reale rappresentato con 32 bit varia nellintervallo

-1,7*10
-38
s N s 1,7*10
38

Abbiamo detto che si presentano degli errori dovuti allarrotondamento. Si pu,
in generale, osservare che:

Quanto maggiore il numero di bit riservati alla mantissa tanto maggiore il
numero di cifre significative che possono essere memorizzate (precisione=
data dal numero di cifre in base 10 rappresentabili con la mantissa). Le cifre
meno significative della mantissa che non possono essere rappresentate nel
numero di bit a disposizione vengono eliminate mediante troncamento od
arrotondamento.
Quanto maggiore il numero di bit riservati allesponente tanto maggiore
lordine di grandezza della cifra che pu essere rappresentata.
Informatica di Base 45
__________________________________________________________________________________________
Massimiliano Teso
Tipo dei Caratteri

Esistono molti problemi in cui necessario confrontare o eseguire operazioni su
variabili non numeriche ma costituite da sequenze di caratteri, alfabetici e non.
Per poter costruire programmi che operano su caratteri necessario definire un
nuovo tipo di dati che chiameremo char (abbreviazione della parola carattere
in inglese).
Il tipo char costituito da un insieme di elementi quali i caratteri alfabetici, le
cifre numeriche, simboli speciali e di punteggiatura, di ciascuno dei quali dovr
essere data una codifica univoca per rappresentarlo simbolicamente sulla
macchina.
Il sistema di codifica pi usato e' il codice ASCII (American Standard Code for
Information Interchange). Esso utilizza 8 bit per rappresentare 256 caratteri.

Tabella del codice ASCII

dec hex char binario
1 0 00 00000000
2 1 01 00000001
3 2 02 00000010
4 3 03 00000011
5 4 04 00000100
6 5 05 00000101
7 6 06 00000110
8 7 07 00000111
9 8 08 00001000
10 9 09 00001001
11 10 0A 00001010
12 11 0B 00001011
13 12 0C 00001100
14 13 0D 00001101
15 14 0E 00001110
16 15 0F 00001111
17 16 10 00010000
18 17 11 00010001
19 18 12 00010010
20 19 13 00010011
21 20 14 00010100
22 21 15 00010101
23 22 16 00010110
dec hex char binario
129 128 80 10000000
130 129 81 10000001
131 130 82 10000010
132 131 83 10000011
133 132 84 10000100
134 133 85 10000101
135 134 86 10000110
136 135 87 10000111
137 136 88 10001000
138 137 89 10001001
139 138 8A & 10001010
140 139 8B 10001011
141 140 8C 10001100
142 141 8D 10001101
143 142 8E 10001110
144 143 8F 10001111
145 144 90 10010000
146 145 91 10010001
147 146 92 10010010
148 147 93 10010011
149 148 94 10010100
150 149 95 10010101
151 150 96 10010110
Maxy Guida 46
__________________________________________________________________________________________
24 23 17 00010111
25 24 18 00011000
26 25 19 00011001
27 26 1A 00011010
28 27 1B 00011011
29 28 1C 00011100
30 29 1D 00011101
31 30 1E 00011110
32 31 1F 00011111
33 32 20 SPAZIO 00100000
34 33 21 ! 00100001
35 34 22 " 00100010
36 35 23 # 00100011
37 36 24 $ 00100100
38 37 25 % 00100101
39 38 26 & 00100110
40 39 27 ' 00100111
41 40 28 ( 00101000
42 41 29 ) 00101001
43 42 2A * 00101010
44 43 2B + 00101011
45 44 2C , 00101100
46 45 2D - 00101101
47 46 2E . 00101110
48 47 2F / 00101111
49 48 30 0 00110000
50 49 31 1 00110001
51 50 32 2 00110010
52 51 33 3 00110011
53 52 34 4 00110100
54 53 35 5 00110101
55 54 36 6 00110110
56 55 37 7 00110111
57 56 38 8 00111000
58 57 39 9 00111001
59 58 3A : 00111010
60 59 3B ; 00111011
61 60 3C < 00111100
152 151 97 10010111
153 152 98 10011000
154 153 99 10011001
155 154 9A 10011010
156 155 9B 10011011
157 156 9C 10011100
158 157 9D 10011101
159 158 9E h 10011110
160 159 9F 10011111
161 160 A0 10100000
162 161 A1 10100001
163 162 A2 10100010
164 163 A3 10100011
165 164 A4 10100100
166 165 A5 10100101
167 166 A6 10100110
168 167 A7 10100111
169 168 A8 10101000
170 169 A9 10101001
171 170 AA 10101010
172 171 AB 10101011
173 172 AC 10101100
174 173 AD 10101101
175 174 AE 10101110
176 175 AF w 10101111
177 176 B0 10110000
178 177 B1 10110001
179 178 B2 10110010
180 179 B3 10110011
181 180 B4 10110100
182 181 B5 } 10110101
183 182 B6 10110110
184 183 B7 10110111
185 184 B8 10111000
186 185 B9 10111001
187 186 BA 10111010
188 187 BB 10111011
189 188 BC 10111100
Informatica di Base 47
__________________________________________________________________________________________
Massimiliano Teso
62 61 3D = 00111101
63 62 3E > 00111110
64 63 3F ? 00111111
65 64 40 @ 01000000
66 65 41 A 01000001
67 66 42 B 01000010
68 67 43 C 01000011
69 68 44 D 01000100
70 69 45 E 01000101
71 70 46 F 01000110
72 71 47 G 01000111
73 72 48 H 01001000
74 73 49 I 01001001
75 74 4A J 01001010
76 75 4B K 01001011
77 76 4C L 01001100
78 77 4D M 01001101
79 78 4E N 01001110
80 79 4F O 01001111
81 80 50 P 01010000
82 81 51 Q 01010001
83 82 52 R 01010010
84 83 53 S 01010011
85 84 54 T 01010100
86 85 55 U 01010101
87 86 56 V 01010110
88 87 57 W 01010111
89 88 58 X 01011000
90 89 59 Y 01011001
91 90 5A Z 01011010
92 91 5B [ 01011011
93 92 5C \ 01011100
94 93 5D ] 01011101
95 94 5E ^ 01011110
96 95 5F _ 01011111
97 96 60 ` 01100000
98 97 61 a 01100001
99 98 62 b 01100010
190 189 BD 10111101
191 190 BE 10111110
192 191 BF 10111111
193 192 C0 11000000
194 193 C1 11000001
195 194 C2 11000010
196 195 C3 11000011
197 196 C4 11000100
198 197 C5 11000101
199 198 C6 11000110
200 199 C7 11000111
201 200 C8 11001000
202 201 C9 11001001
203 202 CA 11001010
204 203 CB 11001011
205 204 CC 11001100
206 205 CD 11001101
207 206 CE 11001110
208 207 CF 11001111
209 208 D0 11010000
210 209 D1 11010001
211 210 D2 11010010
212 211 D3 11010011
213 212 D4 11010100
214 213 D5 11010101
215 214 D6 11010110
216 215 D7 11010111
217 216 D8 11011000
218 217 D9 11011001
219 218 DA 11011010
220 219 DB 11011011
221 220 DC 11011100
222 221 DD 11011101
223 222 DE 11011110
224 223 DF 11011111
225 224 E0 11100000
226 225 E1 11100001
227 226 E2 11100010
Maxy Guida 48
__________________________________________________________________________________________
100 99 63 c 01100011
101 100 64 d 01100100
102 101 65 e 01100101
103 102 66 f 01100110
104 103 67 g 01100111
105 104 68 h 01101000
106 105 69 i 01101001
107 106 6A j 01101010
108 107 6B k 01101011
109 108 6C l 01101100
110 109 6D m 01101101
111 110 6E n 01101110
112 111 6F o 01101111
113 112 70 p 01110000
114 113 71 q 01110001
115 114 72 r 01110010
116 115 73 s 01110011
117 116 74 t 01110100
118 117 75 u 01110101
119 118 76 v 01110110
120 119 77 w 01110111
121 120 78 x 01111000
122 121 79 y 01111001
123 122 7A z 01111010
124 123 7B { 01111011
125 124 7C | 01111100
126 125 7D } 01111101
127 126 7E ~ 01111110
128 127 7F 01111111
228 227 E3 11100011
229 228 E4 11100100
230 229 E5 11100101
231 230 E6 11100110
232 231 E7 11100111
233 232 E8 11101000
234 233 E9 11101001
235 234 EA 11101010
236 235 EB 11101011
237 236 EC 11101100
238 237 ED 11101101
239 238 EE 11101110
240 239 EF 11101111
241 240 F0 11110000
242 241 F1 11110001
243 242 F2 11110010
244 243 F3 11110011
245 244 F4 11110100
246 245 F5 11110101
247 246 F6 11110110
248 247 F7 11110111
249 248 F8 11111000
250 249 F9 11111001
251 250 FA 11111010
252 251 FB 11111011
253 252 FC 11111100
254 253 FD 11111101
255 254 FE 11111110
256 255 FF 11111111
Informatica di Base 49
__________________________________________________________________________________________
Massimiliano Teso
CAP VI
LARTE DELLA PROGRAMMAZIONE
Il concetto di algoritmo

Spesso sentiamo dire che i computer si programmano ma non abbiamo
unidea precisa di cosa voglia dire.
I computer si chiamano anche elaboratori elettronici e sono strumenti utili per
risolvere una vasta gamma di problemi in maniera rapida e corretta. Questo
deriva dal fatto che sono macchine programmabili, cio accettano istruzioni e
comandi secondo modalit ben precise. Un computer infatti svolge le azioni
indicate in un programma il quale scritto in un linguaggio che occupa una
posizione intermedia tra quello naturale (linglese) e quello binario (composto
da cifre 0 e 1).
Ci che il programmatore deve fare quindi analizzare un problema, dividerlo
in istruzioni semplici e tradurre queste istruzioni secondo determinate regole in
modo che il computer possa interpretarle.
Vediamo un esempio

Problema: Determinare larea del cerchio circoscritto ad un quadrato avente il
lato di misura L.

La prima cosa da fare individuare le grandezze che ci interessano anche se non
esplicitamente riportate nel testo del problema e determinare il procedimento
attraverso il quale si giunge alla soluzione:

AC = L *
R = AC/2
Area = 3,14 * R
2
Avendo indixcato con AC la diagonale del quadrato inscritto al cerchio.

Il metodo utilizzato pu essere schematizzato nei seguanti passi:

1) Individuazione dei dati e dei risultati
2) Ricerca del procedimento
3) Scomposizione del procedimento con lindicazione delle operazioni
necessarie per il calcolo di eventuali risultati intermedi

Maxy Guida 50
__________________________________________________________________________________________
Prima di programmare dobbiamo quindi definire il progetto dellalgoritmo che,
in linea di massima, rispetta i seguenti punti:

Passo 1) Definire eventuali dati iniziali
Passo 2) Richiedere eventuali dati che lutente deve immettere (input)
Passo 3) Effettuare eventuali controlli sui dati immessi dallutente
Passo 4) Svolgere le operazioni necessarie per la risoluzione del problema
utilizzando i dati a disposizione
Passo 5) Scrivere loutput

Questa fase non deve rispettare particolari regole formali
ma limportante che sia chiara ed esaustiva. Vediamo ad esempio il progetto
dellalgoritmo del problema che abbiamo visto precedentemente:

1) Chiedi allutente di inserire il lato del quadrato
2) Calcola la diagonale del quadrato (AC = L * )
3) Calcola il raggio del cerchio circoscritto al quadrato (R = AC/2)
4) Calcola larea del cerchio (Area = 3,14 * R
2
)
5) Stampa larea del Cerchio

Con lelencazione dei passi da svolgere per risolvere il problema, abbiamo dato
origine a un algoritmo, termine che deriva dal matematico arabo Al Khwarismi.
Eccone la definizione:

a) E una successione finita di azioni, o passi, che determinano la risoluzione
di un problema. Si intuisce che, dati due algoritmi che risolvono lo stesso
problema, viene preferito quello col minor numero di passi.
b) Le azioni specificate devono essere univocamente interpretabili ovvero
devono essere comprensibili senza ambiguit da colui che le esegue
(solitamente un computer)
c) Se la successione di azioni viene ripetuta in momenti diversi ma con gli
stessi dati iniziali, allora deve essere restituito sempre lo stesso risultato;
si dice che lalgoritmo deve essere non casuale.
d) In ogni istante, lazione successiva da interpretare deve essere
univocamente determinabile a partire dallanalisi del valore di particolari
dati.

Informatica di Base 51
__________________________________________________________________________________________
Massimiliano Teso
Struttura dei Flow-Chart

Il secondo passo da fare disegnare il cos detto diagramma di flusso o flow-
chart. Il diagramma di flusso del problema precedente questo:

Ogni diagramma contiene un blocco iniziale e uno finale, almeno un blocco
intermedio che indica unazione da svolgere e pu contenere uno o pi blocchi
di controllo o schemi condizionali. Tutti i blocchi sono collegati da linee nelle
quali contrassegnata, mediante una freccia, la direzione di percorrenza del
flusso. I simboli sono rispettivamente:

Per ogni blocco che indica unazione si ha una sola linea di ingresso e di uscita;
per ogni blocco di esame condizione si ha una sola linea di ingresso e due linee
di uscita.
Per indicare le operazioni di input useremo il simbolo di azione nel quale verr
indicato lelenco dei dati da immettere seguiti dal punto interrogativo, dalla
parola immissione o dalla parola input.
Maxy Guida 52
__________________________________________________________________________________________
Per indicare le operazioni di output useremo sempre lo stesso simbolo di azione
con lindicazione delle variabili precedute dalla parola stampa, mostra o
output.
In altri testi sono usati simboli diversi per le azioni di input e output ma qui
abbiamo preferito utilizzare sempre il simbolo di azione per non sovraccaricare
il diagramma di flusso con simboli non strettamente necessari.

Rappresentazione con Pseudo-Codice

Lultimo passo prima della programmazione vera e propria la traduzione
dellalgoritmo in pseudo-codice, un codice che assomiglia pi ad un linguaggio
di programmazione che a quello umano (si avvicina molto al PASCAL). Ci che
si ottiene una descrizione discorsiva soggetta per a regole ben precise (in
gergo informatico si dice che sono soggette ad una precisa sintassi).
Se la progettazione dellalgoritmo e il diagramma di flusso sono abbastanza
esplicativi e ben fatti, questa fase si pu anche saltare passando direttamente alla
programmazione su computer.

Lo pseudo-codice del problema precedente questo:

program Area
begin
{
Input L
AC:= L*
R:=AC/2
Area:=3,14*R
2
Output Area
}
end
Analizziamone la struttura

Viene dato un nome al programma
Si definisce la struttura begin..end
Si scrive il corpo principale del programma con le operazioni di input e
output.

Vediamo ora le principali istruzioni di programmazione.

Informatica di Base 53
__________________________________________________________________________________________
Massimiliano Teso
Istruzione IF-ELSE

Il comando IF-ELSE permette la selezione tra due possibili alternative in base
al valore di verit di una espressione iniziale.

IF (condizione)
{istruzioni_1}
ELSE
{istruzione_2}
Le istruzioni_1 vengono eseguite se la condizione vera altrimenti
vengono eseguite le istruzioni_2. Nel caso in cui ci sia una sola istruzione
le parentesi graffe possono essere omesse.

Vediamo meglio come funziona analizzando un esempio.

Problema: Dati due numeri A e B appartenenti allinsieme dei numeri naturali,
eseguire la differenza in N.

Il diagramma di flusso del problema il seguente

Maxy Guida 54
__________________________________________________________________________________________
Che tradotto in pseudo-codice diventa:

program Differenza
begin
{
Input A, B
IF (A>B)
DIF:= AB
ELSE
DIF:= BA
Output DIFF
}
end
Istruzione SWITCH

Quando si devono eseguire tanti IF uno dopo laltro, preferibile usare
listruzione SWITCH:

SWITCH (espressione)
{
Valore 1:
istruzioni_1
Valore 2:
istruzioni_2
..
Valore n:
istruzioni_n
}
In questo caso viene valutato il valore dellespressione e confrontato con i
Valori elencati. Verranno svolte esclusivamente le istruzioni il cui
Valore coincide con il risultato dellespressione.

Problema: Il prezzo di un abbonamento tranviario mensile di 30.000 lire. Su
tale prezzo vengono fatte le seguenti riduzioni:
il 50% per i bambini sotto i 10 anni;
il 40% per gli studenti;
l80% per i militari;
il 30% per i pensionati
Determinare le diverse tariffe di abbonamento ogni volta che lutente lo
richiede
Informatica di Base 55
__________________________________________________________________________________________
Massimiliano Teso
Il diagramma di flusso del problema il seguente
Che tradotto in pseudo-codice diventa:

program Sconti
begin
{
PREZZO= 30.000
SBAM= 0.5 //sconto bambini
SSTU=0.4 //sconto studenti
SMIL= 0.8 //sconto militari
SPEN= 0.3 //sconto pensionati
SORD= 0 //nessuno sconto
Input UTENTE;
SWITCH (UTENTE)
{
BAMBINO : SCONTO:=SBAM
STUDENTE : SCONTO:=SSTU
MILITARE : SCONTO:=SMIL
PENSIONATO: SCONTO:=SPEN
NORMALE : SCONTO:=SORD
}
Maxy Guida 56
__________________________________________________________________________________________
TARIFFA:= PREZZOPREZZO*SCONTO
Output TARIFFA
}
end
Istruzione WHILE
E una struttura iterativa che esegue un determinato numero di istruzioni fino a
quando la condizione valutata ad ogni ciclo non diventa falsa. In questo caso il
programma esce dal ciclo while.

WHILE (condizione)
{istruzioni}
Le istruzioni vengono eseguite in maniera iterativa fino a che la
condizione rimane vera. Quando la condizione diventa falsa il
programma esce dal ciclo WHILE. Nel caso in cui ci sia una sola istruzione le
parentesi graffe possono essere omesse.

Problema: Dato il numero intero N determinare se primo
Il diagramma di flusso del problema il seguente

Informatica di Base 57
__________________________________________________________________________________________
Massimiliano Teso
Che tradotto in pseudo-codice diventa:

program Numero Primo
begin
{
Input N
PRIMO:= TRUE
DIV:= N-1
WHILE (DIV = == = 1)
{
Q:= N/DIV
IF (Q= INT(Q))
{
PRIMO:= FALSE
DIV:= DIV-1
}
IF (PRIMO)
Output (N primo)
ELSE
Output (N non primo)
}
}
end

Istruzione DO-WHILE

Listruzione viene eseguita in maniera iterativa fino a che la condizione rimane
vera. Quando la condizione diventa falsa il programma esce dal ciclo.

DO
{
Istruzioni
}WHILE(condizione)
La struttura DO-WHILE esegue almeno una volta il gruppo delle istruzioni al
suo interno anche se la condizione falsa, mentre nella struttura WHILE se la
condizione iniziale falsa non viene eseguita alcuna istruzione al suo interno.

Maxy Guida 58
__________________________________________________________________________________________
Problema: Determinare il massimo comun divisore (MCD) tra due
numeri A e B

Il diagramma di flusso del problema il seguente

Che tradotto in pseudo-codice diventa:

program Massimo Comun Divisore
begin
{
Input A, B
IF (A<B)
{
C:= A
A:= B
B:= C
}
DO
{
Q:= INT(A/B)
R:= A-B*Q
A:= B
B:= R
}WHILE(R= 0)
Informatica di Base 59
__________________________________________________________________________________________
Massimiliano Teso
MCD:= A
Output MCD;
}
end
Istruzione FOR

Listruzione esegue un blocco di istruzioni per un determinato numero di volte.

FOR (valore iniziale) TO (valore finale)
{Istruzioni}
Il blocco di istruzioni viene ripetuto un numero di volte pari allintervallo
tra il valore iniziale e il valore finale.
Problema: Determinare la somma degli interi compresi tra N1 e N2

Il diagramma di flusso del problema il seguente

Maxy Guida 60
__________________________________________________________________________________________
Che tradotto in pseudo-codice diventa:

program Somma;
begin
{
Input N1, N2
FOR (I:= N1) TO (N2) DO
{
SOMMA:= SOMMA+1
}
Output SOMMA
}
end
Istruzioni BREAK e CONTINUE

Queste due istruzioni si utilizzano in presenza di cicli.
Quando il programma incontra listruzione BREAK esce immediatamente dal
ciclo corrente senza eseguire il resto delle istruzioni. Quando invece incontra
CONTINUE salta al ciclo successivo.

Sottoprogrammi e Procedure

Abbiamo visto come sia possibile scomporre un problema e come creare i
relativi flow-chart e pseudo-codice. I problemi complessi per richiedono di
norma luso di una tecnica specifica per realizzare una scomposizione modulare
del programma in sottoproblemi. Ciascun sottoproblema costituisce ora un
programma di pi facile soluzione che verr quindi affrontato secondo gli
schemi visti precedentemente. Per eseguire la scomposizione modulare
necessario:

individuare sottoprogrammi il pi possibile autonomi e indipendenti tra loro;
definire dei caratteri per collegare tra loro i singoli moduli in un insieme
organizzato, o programma principale, che indichi lordine di esecuzione dei
vari sottoprogrammi

Problema: Per i numeri da 1 a 100, stampare una tavola che contenga in ogni
riga il numero, il quadrato, il cubo e la radice dello stesso. Dare una veste
grafica soddisfacente alle singole pagine stampate.

Scomponiamo il problema:
se sei allinizio della pagina allora stampa la testata del foglio;
Informatica di Base 61
__________________________________________________________________________________________
Massimiliano Teso
calcola il valore dei dati richiesti (quadrato, cubo e radice);
stampa la riga di dettaglio;
se hai scritto 20 righe allora volta pagina;

Queste istruzioni devono essere ripetute cento volte.
Le quattro righe in cui stato scomposto il problema possono essere pensate
come piccoli sottoproblemi ciascuno dei quali deve essere ripetuto pi volte.
Nello pseudo-codice ciascuno di questi sottoproblemi prende il nome di
funzione; per distinguere le une dalle altre a ciascuna deve essere assegnato un
nome convenzionale e ciascuna deve essere sviluppata indipendentemente dalle
restanti.
Anche per le singole funzioni si pu disegnare il diagramma di flusso con
lunica accortezza di inserire il nome della funzione stessa nel blocco inizio del
diagramma. Saltiamo questa fase e presentiamo esclusivamente lo pseudo-
codice delle funzioni:

FUNZIONE Stampa Testata
begin
{
Output ( TAVOLA NUMERICA )
Output (________________________)
Output (| N | QUA | CUBO | RAD |)
Output (________________________)
INIZIO:= FALSE
}
end
FUNZIONE Calcolo
begin
{
Q:= N*N
C:= Q*N
R:= SQR(N)
}
end
FUNZIONE Stampa Dettaglio;
begin
{
Output (|,N,|,Q,|,C,|,R,|);
}
end
Maxy Guida 62
__________________________________________________________________________________________
FUNZIONE Volta Pagina
begin
{
NewPage
INIZIO:= TRUE
RIGA:= 0
}
end

Abbiamo visto che le procedure vanno poi richiamate da un programma
principale il cui diagramma di flusso il seguente

Informatica di Base 63
__________________________________________________________________________________________
Massimiliano Teso
Che tradotto in pseduo-codice diventa:

program Tabella
begin
{
TOT= 100
RIGA:= 0
INIZIO:= TRUE

FOR N:= 1 TO TOT DO
{
IF (INIZIO)
{
Stampa Testata
}
Calcolo
Stampa Dettaglio
RIGA:= RIGA + 1

IF (RIGA= 20)
{
Volta Pagina
INIZIO = TRUE
}
}
}
end
Nel blocco variabili del programma principale sono inseriti tutti gli identificatori
necessari per lesecuzione, non solo del programma, ma anche di tutte le
procedure che vanno scritte prima del programma principale. Tutte le variabili
definite quindi sono comuni al programma e ai sottoprogrammi che ne fanno
uso. Variabili di questo tipo si chiamano globali.
Variabili definite allinterno di una singola procedura non sono utilizzabili dal
programma principale n tantomeno da altre procedure. Variabili di questo tipo
si chiamano locali.
Maxy Guida 64
__________________________________________________________________________________________
Esercizi

1. Data una misura di tempo espresso in H (ore), M (minuti), S (secondi),
determinare la misura equivalente in secondi.
2. Costruire un convertitore lire/euro e viceversa secondo una scelta iniziale
dellutente.
3. Dati tre numeri A, B, C, trovarne il minimo e il massimo.
4. Dati due numeri naturali A e B, verificare se uno multiplo dellaltro.
5. Suddividendo gli individui in 4 classi di et: 0-12 bambini, 13-18
adolescenti, 19-60 adulti, da 61 in poi anziani, costruire un programma
che dopo aver immesso let di un individuo risponda indicando la classe
di et di appartenenza, rispettivamente bambino, adolescente, adulto,
anziano. Inserire inoltre un men di scelta con cui lutente pu decidere o
meno di interrompere il programma oppure continuare con linserimento
di un nuovo dato.
6. Esegui il prodotto di due numeri interi positivi utilizzando al meglio
esclusivamente laddizione.
7. Scrivere un programma in cui lutente inserisce un numero N
rappresentate il numero di valori che vuole inserire in input.
Successivamente inserisce gli N valori e come uscita deve ottenere la
media dei valori immessi.
8. Scrivere un programma che consenta il seguente gioco interattivo: il
computer genera un numero casuale da 1 a 100, senza mostrarlo,
utilizzando la funzione Number(100). Il giocatore deve indovinare per
tentativi il numero immettendo le prove da tastiera (per un massimo di 20
tentativi); ad ogni tentativo la macchina risponder a seconda dei casi:
troppo grande, troppo piccolo, hai esaurito i tentativi, gioco
concluso, hai indovinato. In questo ultimo caso dovr scrivere anche
quanti sono stati i tentativi necessari e se stato migliorato il risultato
della sessione di gioco, producendo il messaggio questa la migliore
prestazione ottenuta in ... tentativi, la precedente era di ... tentativi.
Risolvere il problema con luso dei sottoprogrammi.

Informatica di Base 65
__________________________________________________________________________________________
Massimiliano Teso
CAP VII
LE BASI DI DATI
Introduzione

Un sistema informativo sistema che permette la disponibilit e la gestione
delle informazione. Lesistenza di un sistema informativo indipendente dalla
sua automazione; lo dimostra il fatto archivi e servizi anagrafici esistono da vari
secoli. Per indicarne la porzione automatizzata viene utilizzato il termine
sistema informatico. La diffusione dellinformatica ha fatto si che la quasi
totalit dei sistemi informativi siano anche sistemi informatici.
Le informazioni vengono rappresentate e scambiate in varie forme, quali la
lingua, i disegni, le figure e i numeri. In alcuni casi pu anche non esistere una
rappresentazione esplicita delle informazioni, come nel caso di informazioni
trasmesse oralmente e ricordate a memoria. Col progredire delle attivit umane,
tuttavia, nata lesigenza di individuare opportune codifiche per la
memorizzazione dei dati.
Nei sistemi informatici il concetto di rappresentazione e codifica viene portato
allestremo: le informazioni vengono rappresentate per mezzo di dati, che hanno
bisogno di essere interpretati per fornire informazioni.

Basi di dati, la definizione

La pi generale definizione di una base di dati : collezione di dati utilizzati
per rappresentare le informazioni di interesse per un sistema informativo.
Tale definizione molto semplicistica e troppo generale. Pi avanti si cercher
di definire il termine in maniera pi precisa.
Occorre tuttavia trarre una prima considerazione sulle basi di dati. Se prendiamo
come esempio i dati relativi alle applicazioni bancarie noteremo che essi hanno
una struttura sostanzialmente invariata da decenni, mentre le procedure che
agiscono su di essi variano con una certa frequenza. Inoltre, quando viene
introdotta una nuova procedura, occorre prima di tutto ereditare (cio
importare) i dati da quella vecchia, se pur con le necessarie trasformazioni.
Questa caratteristica di stabilit porta ad affermare che i dati costituiscono una
risorsa per lorganizzazione che li gestisce, un patrimonio significativo da
sfruttare e proteggere.
Lapproccio convenzionale alla gestione dei dati sfrutta la presenza di archivi
(o file) per memorizzare i dati in modo persistente sulla memoria di massa. Tale
approccio presenta delle macroscopiche deficienze per quanto riguarda la ricerca
e la condivisione dei dati. Con una simile metodologia di lavoro, infatti, ogni
utente lavora con la propria copia locale, con i relativi problemi ridondanza e
possibilit di incoerenze.
Maxy Guida 66
__________________________________________________________________________________________
Le basi di dati sono state concepite in buona parte per ovviare ad inconvenienti
di questo tipo.
Un sistema di gestione di basi di dati, detto DBMS (Data Base Management
System) un sistema software in grado di gestire collezioni di dati che siano
grandi, condivise e persistenti assicurando la loro affidabilit e privatezza.
Inoltre, in quanto prodotto informatico, deve essere efficiente e efficace. Una
base di dati quindi una collezione di dati gestita da un DBMS.
Alcuni dei pi famosi DBMS sono Access, Db2 dell' Ibm, Oracle e MySQL che,
oltretutto, OpenSource..
Riassumendo, un DBMS si occupa di basi di dati con le seguenti caratteristiche:

Grandi: nel senso che possono avere anche dimensioni enormi e quindi
oltre le capacita della memoria centrale di un elaboratore. Di conseguenza
un DBMS deve essere in grado di gestire memorie secondarie.
Condivise: perch un DBMS deve permettere a pi utenti di accedere
contemporaneamente ai dati comuni. In tal modo viene anche ridotta la
ridondanza e inconsistenza dei dati, dato che esiste una sola copia dei
dati. Per controllare laccesso condiviso di pi utenti il DBMS dispone di
un meccanismo apposito, detto controllo di concorrenza .
Affidabilit: dato che un DBMS deve garantire lintegrit dei dati anche
in caso di malfunzionamento hardware e software, prevedendo per lo
meno procedure di recupero dei dati. I DBMS forniscono, per tali scopi,
procedure di salvataggio e ripristino della base di dati (backup e
recovery).
Privatezza: i DBMS gestiscono un sistema di autorizzazioni che definisce
i diritti di ciascun utente ( lettura, scrittura ecc.).

Nellappendice B sono riportate le istruzioni per installare MySQL, un potente
DBMS scaricabile gratuitamente allindirizzo www. mysql.com.
Basi di dati relazionali
La maggior parte dei sistemi di basi di dati oggi sul mercato si basa sul modello
relazionale, proposto in una pubblicazione scientifica nel 1970 al fine di
superare le limitazioni logiche dei modelli allora utilizzati, che non
permettevano di realizzare efficacemente la propriet di indipendenza dei dati,
gi riconosciuta come fondamentale. Sebbene i primi prototipi di basi di dati
basati sul modello relazionale risalgano ai primi anni settanta bisogner
aspettare la met degli anni ottanta perch tale modello acquisisca una frazione
significativa di mercato.
Il modello relazionale si basa su due concetti fondamentali : relazione e tabella.
Mentre il concetto di tabella facilmente intuibile, quello di relazione proviene
dalla matematica, ed in particolare dalla teoria degli insiemi. E opinione diffusa
Informatica di Base 67
__________________________________________________________________________________________
Massimiliano Teso
che parte del successo del modello relazionale derivi dalla presenza
contemporanea di questi due concetti, uno intuitivo ed uno formale. Infatti,
mentre le tabelle risultano naturali e facilmente comprensibili, le relazioni
garantiscono una formalizzazione semplice e chiara che ha permesso uno
sviluppo teorico del modello finalizzato al raggiungimento di risultati di
interesse concreto.
Il modello relazionale risponde al requisito dellindipendenza dei dati e,
pertanto, prevede un livello fisico ed un livello logico. Utenti e programmatori
interagiscono solo col livello logico e quindi non necessario che essi
conoscano le strutture fisiche della base di dati. Anche questo aspetto
responsabile del suo successo dato che i suoi principali concorrenti (reticolare e
gerarchico) obbligavano gli utilizzatori a conoscerne, almeno a grandi linee, la
struttura realizzativa.
Il concetto di relazione legato al concetto puramente matematico di prodotto
cartesiano tra due insiemi. Avendo due insiemi D
1
e D
2
il prodotto cartesiano
(D
1
x D
2
) linsieme delle coppie ordinate (v
1
e v
2
) tale che v
1
un elemento di
D
1
e v
2
un elemento di D
2
. Quindi il prodotto cartesiano linsieme di tutti le
combinazioni tra gli insiemi dati.
La relazione un sottoinsieme prodotto cartesiano tra due insiemi ed
rappresentata da un insieme di tuple omogenee, dove per tuple si intende un
elemento definito tramite i suoi attributi.
Ad esempio dati due insiemi A e B dove A= {1,2,3} e B={h,k} il prodotto
cartesiano uguale allinsieme A x B={(1,h),(2,h),(3,h),(1,k),(2,k),(3,k)} mentre
una relazione possibile {(1,h),(1,k),(3,h)}.
Generalizzando la relazione ad un numero di insiemi n>0 avremmo D
1
,D
2
,,D
n
,
il prodotto D
1
x D
2
x x D
n
e un sottoinsieme che descriver la relazione. Il
numero n delle componenti dellinsieme detto grado del prodotto cartesiano e
della relazione. Il numero degli elementi che della relazione detta cardinalit
della relazione.
Le tabelle nascono dallesigenza di rappresentare graficamente le relazioni
presentandole in una forma pi facilmente comprensibile. In questo caso le righe
della tabella saranno rappresentate dalle tuple mentre le colonne ne
rappresentano i campi (detti anche attributi).
E importante chiarire che in una relazione, in quanto insieme, non vi alcun
ordinamento fra le tuple che la compongono; nelle tabelle che la rappresentano
lordine c per necessit, ma occasionale in quanto due tabelle con le stesse
righe, ma in ordine diverso, rappresentano la stessa relazione. Inoltre le tuple di
una relazione sono distinte luna dallaltra, in quanto tra gli elementi di un
insieme non possono essere presenti due elementi uguali; da cui si deduce che
una tabella pu rappresentare una relazione solo se le righe che la formano sono
diverse luna dallaltra.
Una base di dati quindi costituita da pi relazioni, le cui tuple contengono
valori comuni, ove necessario per stabilire corrispondenze.
Consideriamo ad esempio la seguente base di dati:
Maxy Guida 68
__________________________________________________________________________________________
STUDENTE
Matricola Cognome Nome Anno_Iscrizione
276545 Rossi Maria 1990
485784 Neri Anna 2000
569885 Verdi Fabio 1997
452587 Rossi Luca 1995
125847 Bruni Mario 2000
ESAME
MtrStudente Corso Data_Esame Voto
276545 Analisi 14/04/2001 28
485784 Chimica II 21/07/2001 27
125847 Chimica I 13/04/2001 25
125847 Analisi 08/05/2001 24
CORSO
Nome Anno_di_ Corso
Analisi Primo
Chimica I Primo
Chimica II Terzo
In essa abbiamo che:
la prima relazione contiene informazioni relative a un insieme di studenti,
con numero di matricola, cognome, nome e data di nascita
la terza relazione contiene informazioni su alcuni corsi con codice, titolo e
docente
la seconda relazione contiene informazioni relative agli esami: il numero di
matricola dello studente, il codice del corso e il voto; questa relazione fa
riferimento ai dati contenuti nelle altre due.

Nei sistemi relazionali ammissibile la presenza del valore null che viene
utilizzato per indicare una serie di situazioni che possibile trovare in un campo
di una tabella. Ad esempio ci si pu trovare di fronte ad una tabella del tipo:

Citt Indirizzo_prefettura
Roma Via Quattro Novembre
Firenze Null
Tivoli Null
Prato Null
Informatica di Base 69
__________________________________________________________________________________________
Massimiliano Teso
In questo esempio il valore null indica tre diverse situazioni:

Valore sconosciuto : nel primo caso dato che Firenze un capoluogo di
provincia e avr sicuramente una prefettura; significa che il DBMS non
dispone del suo indirizzo.
Valore inesistente : nel caso di Tivoli, dato che questa citt non ha di
Prefettura.
Senza informazione : siccome la provincia di Prato di recente
istituzione significa che non sappiamo se la mancanza di un indirizzo
dipenda dal fatto che essa ancora non esista, oppure da un deficit del
DBMS.

Le strutture del modello relazionale ci permettono di organizzare le informazioni
di interesse per le nostre applicazioni. In molti casi per non vero che qualsiasi
insieme di tuple sullo schema rappresenti informazioni corrette per
lapplicazione. Ad esempio nella base di dati dellesempio precedente i voti
devono essere compresi tra 18 e 30 e si deve imporre che due studenti differenti
abbiano matricole differenti.
I vincoli di un DBMS si dividono in intrarelazionali, se riguardano l'interno
nella relazioni, ed extrarelazionali, pi pesanti perch riguardano i legami fra le
relazioni e quindi la natura stessa di un DBMS relazionale.
Il pi caratterizzante esempio di violazione di un vincolo extrarelazionale si ha
qualora non vi sia corrispondenza tra le istanze di due tabelle che, per ragioni
intrinseche allo schema della base di dati, sono legate tra loro da un vincolo
detto di integrit referenziale, il quale impone che per ogni valore di una tabella
vi sia un corrispondente nell'altra. Nellesempio precedente c un vincolo di
integrit referenziale tra il campo Matricola della tabella STUDENTI e il campo
Studente della tabella ESAMI.
Un vincolo intrarelazionale, al contrario, trova il suo soddisfacimento rispetto
alle singole relazioni del DBMS; esso pu essere :

vincolo su valori, o vincolo di dominio : quando si impone a certi valori del
database di rientrare in determinate caratteristiche (ad esempio il voto di un
esame universitario deve obbligatoriamente rientrare tra il 18 ed il 30, ed un
DBMS incaricato raccogliere tali dati deve prevederlo).

vincolo di tupla: che esprime delle condizioni sui valori di ciascuna tupla,
indipendentemente dalle altre tuple.

Consideriamo l'esempio dei voti degli esami universitari e ipotizziamo di avere
un DBMS che debba memorizzarli; poniamo, inoltre, di destinare un campo
all'eventuale lode (campo di tipo booleano, vero/falso). In questo caso avremmo
che l'attributo "lode" potr essere vero solo se il voto di quella tupla uguale a
trenta. Cercando di dare una forma a tale vicolo potremmo scrivere che:
Maxy Guida 70
__________________________________________________________________________________________
( not ( lode =vero ) ) or ( voto = 30 )

mentre in questo caso il vincolo di dominio (visto precedentemente) potrebbe
essere espresso con la formula:

( voto >= 18 ) and ( voto <= 30 )

Il pi importante vincolo del modello relazionale il cos detto vincolo di
chiave utilizzato per identificare in maniera univoca le tuple di una relazione.
Nellesempio precedente il campo Matricola della tabella STUDENTI identifica
univocamente ogni studente.
Ciascuna relazione deve quindi avere una chiave rappresentata da uno o pi
attributi detta chiave primaria. Gli attributi che fanno parte della chiave
primaria vengono spesso evidenziati attraverso la sottolineatura e su di essi si
vieta la presenza di valori nulli.

Progettazione di una base di dati

Il primo passo per la realizzazione di una base di dati la progettazione che
prevede i seguenti passaggi:

Definizione dei processi: in questa fase si acquisiscono le conoscenze dei
processi aziendali tramite interviste per avere unidea chiara di come
dovr funzionare la base di dati.

Definizione degli oggetti aziendali: in questa fase si dovranno
individuare gli elementi che costituiscono il processo come ad esempio il
cliende e la videocassetta nel caso di una videoteca. Per ogni oggetto
vanno poi definite le cratteristiche che lo descrivono (come nome,
cognome, data di nascita etc per il cliente).

Definizione delle regole aziendali: in questa fase si identificano i vincoli
che la base di dati deve rispettare. In una videoteca, ad esempio, il cliente
potrebbe non poter affittare pi di due videocassette alla volta.

Realizzazione del modello di database: in questa fase finale della
progettazione si realizza uno schema (detto schema ER) che rappresenti in
maniera chiara completa lintero progetto.

Informatica di Base 71
__________________________________________________________________________________________
Massimiliano Teso
Un semplice schema ER di un possibile progetto per la gestione degli esami
universitari il seguente:

Una delle fasi pi importanti la realizzazione delle relazioni tra le varie entit.
Esistono tre tipi di relazioni:

Relazione uno a uno: in cui un record di una tabella corrisponde a un
record di unaltra tabella. Ad esempio la relazione che potrebbe
intercorrere tra la tabella Ordine e la tabella Bolla di accompagno in
quanto un ordine fa rifermento a una sola bolla e viceversa.

Relazione uno a molti: in cui un record di una tabella pu corrispondere
a pi record di una seconda tabella mentre non vale il viceversa. Tale
relazione potrebbe intercorrere tra la tabella Studente ed Esame in
quanto uno studnete pu fare pi esami ma un esame pu essere sostenuto
da un solo studente.

Maxy Guida 72
__________________________________________________________________________________________
Relazione molti a molti: in cui un record di una tabella pu
corrispondere a pi record d una seconda tabella e viceversa. Tale
relazione potrebbe intercorrere tra le tabelle Impiegato e Progetto in
quanto un impiegato pu partecipare a pi progetti e ogni progetto pu
essere realizzato da pi impiegati.

Le relazioni molti a molti possono creare diversi problemi se lasciate cos
come sono in fase di progettazione ed quindi utile inserire una tabella
intermedia che colleghi le altre due.

Una volta finita la fase di progettazione possibile creare le tabelle vere e
proprie consideranzo il fatto che ogni relazione diventa una tabella con i campi
specificati pi le chiavi delle tabelle a essa collegate.
La base di dati dello schema ER per la gestione degli esami universitari
linsieme delle seguenti tabelle:

STUDENTE
Matricola Cognome Nome Anno_Iscrizione
ESAME
MtrStudente Corso Data_Esame Voto
CORSO
Nome Anno_di_ Corso
Informatica di Base 73
__________________________________________________________________________________________
Massimiliano Teso
Cenni di algebra e calcolo relazionale

Lalgebra relazionale un linguaggio procedurale basato su concetti di tipo
algebrico che deriva da quella parte della matematica che si occupa degli
insiemi.
I concetti trattati sono molto astratti, poco legati al pratico utilizzo dei DBMS.
In questo paragrafo ci limiteremo a descrivere i concetti generali senza entrare
nel dettaglio delle formule e delle dimostrazioni. Di seguito descriveremo gli
operatori fondamentali dellalgebra relazionale, lo stretto necessario per
comprendere da cosa deriva lSQL, il linguaggio di interrogazione delle basi di
dati.
L'algebra relazionale definisce una serie di operatori e regole per la creazione e
la modifica delle relazioni. Di seguito vengono trattati i pi comuni.

Unione: Appurato che le relazioni sono insiemi, ha senso intervenire sulle
relazioni con gli operatori dellalgebra insiemistica, quali lunione la
differenza e lintersezione. Tuttavia, dato che una relazione un insieme di
tuple omogenee (ovvero definite dagli stessi attributi), questi operatori
potranno essere usati solo con relazioni aventi gli stessi attributi, o almeno
degli attributi comuni. Detto questo possibile dire che l'unione tra due
relazioni r1 ed r2, definite sullo stesso insieme di attributi X ( si scrive r1(X)
e r2(X) ), indicata con r1 U r2 ed una relazione ancora su X contenente
le tuple che appartengono ad r1 oppure ad r2, oppure ad entrambe.
Nella fattispecie delle basi di dati l'unione di due tabelle l'insieme delle
righe che appartengono alle tabelle ( alla prima, alla seconda o a entrambe).
Intersezione: L'intersezione di r1(X) ed r2(X) indicata con r1 r2 ed
una relazione su X contenente le tuple che appartengono sia ad r1 che ad r2.
Riferito alle tabelle l'intersezione di due di queste l'insieme delle righe che
appartengono a entrambe.
Differenza: La differenza di r1(X) ed r2(x) indicata con r1 - r2 ed una
relazione su X contenente le tuple che appartengono a r1 e non appartengono
ad r2. Quindi la differenza tra due tabelle l'insieme delle righe che
appartengono alla prima tabella e non alla seconda.
Ridenominazione: Per risolvere il problema derivante dal fatto che gli
operatori sopra citati possono essere usati solo con attributi uguali, l'algebra
relazionale ci mette a disposizione l'operatore di ridenominazione.
Questo operatore ci permette di ridefinire il nome dell'attributo in modo da
poter usare le operazioni di unione, differenza ed intersezioni anche su
relazioni con diversi attributi (sempre ammesso che ci possa avere un
senso).
Maxy Guida 74
__________________________________________________________________________________________
Selezione: La selezione produce un sottoinsieme di tuple su tutti gli attributi.
La selezione introduce un concetto fondamentale dell'algebra relazionale e,
di conseguenza, delle basi di dati: il concetto di condizione. Infatti la
discriminante che permette di stabilire quali tuple andranno a formare il
risultato della selezione il fatto che esse rispondano o meno a una
determinata condizione.
Proiezione: La proiezione un concetto simile a quello della selezione.
Essa produce, alla pari della selezione, un sottoinsieme della relazione
genitrice ma, a differenza della selezione, il sottoinsieme prodotto contiene
tutte le tuple originali ma con un numero inferiore di attributi.
Join: L'operatore di join il pi caratteristico dell'algebra relazionale. Il join
naturale un operatore che correla i dati di due relazioni sulla base di valori
uguali in attributi con lo stesso nome. Esistono diversi tipi di join, a seconda
delle diverse situazione di relazioni, che sono tuttavia riconducibili al
modello del join naturale. Un'analisi pi approfondita esula dai compiti di
questo lavoro volto all'aspetto pratico delle basi di dati. Ulteriori
informazioni circa il join si possono trovare nel paragrafo successivo, che
mostra limplementazione di tale operatore nel linguaggio SQL.
Data la seguente base di dati vediamo degli esempi pratici degli operatori
appena visti:
IMPIEGATI
Cognome Agenzia Stipendio
Rossi Roma 45
Neri Milano
53
Verdi Latina
33
OPERAI
Cognome Fabbrica Salario
Verdi Latina 33
Bruni Monza 32
Prima di poter utilizzare gli operatori di unione, intersezione e differenza
necessario rinominare alcuni attributi della tabella OPERAI (Fabbrica in
Agenzia e Salario in Stipendio). A questo punto sia ha che:

Informatica di Base 75
__________________________________________________________________________________________
Massimiliano Teso
IMPIEGATI OPERAI

Cognome Agenzia Stipendio
Rossi Roma 45
Neri Milano
53
Verdi Latina
33
Bruni Monza 32
IMPIEGATI OPERAI

Cognome Agenzia Stipendio
Verdi Latina 33
IMPIEGATI - OPERAI

Cognome Agenzia Stipendio
Rossi Roma 45
Neri Milano
53
SELEZIONE (Stipendio > 40) [IMPIEGATI]

Cognome Agenzia Stipendio
Rossi Roma 45
Neri Milano
53
PROIEZIONE (Cognome,Stipendio) [IMPEGATI]
Cognome Stipendio
Rossi 45
Neri 53
Verdi 33
Maxy Guida 76
__________________________________________________________________________________________
Data la seguente base di dati:

IMPIEGO
Impiegato Reparto
Rossi vendite
Neri produzione
Verdi produzione
DIREZIONE
Reparto Capo
produzione Mori
vendite Bruni
IMPIEGO JOIN DIREZIONE

Impiegato Reparto Capo
Rossi vendite Bruni
Neri produzione Mori
Verdi produzione Mori
Informatica di Base 77
__________________________________________________________________________________________
Massimiliano Teso
Il linguaggio SQL

SQL lacronimo di Structured Query Language, ed un linguaggio di
interrogazione delle basi di dati sviluppato dallIBM nella seconda met degli
anni settanta. LSQL largamente diffuso e riveste una notevole importanza nel
mondo delle applicazioni per basi di dati. Tale diffusione nasce principalmente
dalla sua standardizzazione che lo pone come il linguaggio "universale" di
accesso ai database. Infatti quasi tutti i DBMS, nonostante abbiano delle
caratteristiche proprietarie, riconoscono i comandi SQL in modo che ci si possa
interfacciare con essi in modo univoco.
Per definiere la sintassi dei comandi SQL utilizeremo le parentesi quadre per
indicare che il termine opzionale, quelle graffe che il termine racchiuso pu
non comparire o essere ripetuto un numero arbitrario di volte mentre le barre
verticali per indicare che deve essere scelto uno tra i termini proposti (lelenco
dei termini pu essere racchiuso tra parentesi angolate).
Le parentesi tonde dovranno essere sempre intese come termini del linguaggio
SQL.

SQL pu gestire diversi tipi di dato tra cui i seguenti
Carattere : singoli caratteri oppure stringhe
o Varchar [ ( lunghezza ) ]
Tipi numerici esatti : per i valori interi o per valori decimali a virgola
fissa.
o Numeric [ ( Precizione [ , Scala ] ) ]
o Decimal [ ( Precizione [ , Scala ] ) ]
o Int
Tipi numerici approssimativi :
o Float [ ( Precisione ) ]
o Double precision
o Real
Data e ora
o Date con i campi year, month, day
o Time [ ( Precisione ) ] i campi hour, minute, second
Per prima cosa necessario creare una base di dat con il comando

Create DataBase Nome;
Maxy Guida 78
__________________________________________________________________________________________
Una volta creato lo schema occorre inserire il comando

Use Nome;
per indicare il database in uso.
A qusto punto occorre inserire le tabelle che andranno a creare la base di dati.
Successivamente le tabelle verranno popolate mendiante linserimento delle
tuple che costituiranno la vera risorsa della base di dati.

Definizione delle tabelle:
Una tabella SQL costituita da una collezione di attributi e da un insieme
(eventualmente vuoto) di vincoli.
La sintassi :

CREATE TABLE NomeTabella
(
NomeAttributo Dominio [ valore di default ] [ vincoli ]
{ , NomeAttributo Dominio [ valore di default ] [ vincoli ] }
);
quindi una tabella viene definita associandole un nome ed elencandone gli
attributi che ne compongono lo schema.
Ecco un esempio:

CREATE TABLE Studente
(
Matricola INT PRIMARY KEY NOT NULL,
Cognome VARCHAR(20) NOT NULL,
Nome VARCHAR(20),
Anno_Iscrizione DATE,
);
I valori di default sono i valori che deve assumere lattributo quando viene
inserita una riga nella tabella senza che venga specificato il valore dellattributo
stesso. La parola chiave primari key indica che la Matricola una chiave
primaria.

Possiamo naturalmente definire dei vincoli, cio delle propriet che devono
essere verificate da ogni istanza della base di dati.
Esistono vincoli intrarelazionali, ovvero interni alla tabella, e vincoli
interelazionali, che rappresentano i vincoli di integrit referenziale (detti anche
vincoli di riferimento).

Informatica di Base 79
__________________________________________________________________________________________
Massimiliano Teso
Vincoli intrarelazionali:
In SQL i vincoli intrarelazionali che possono essere definiti sugli attributi di una
tabella sono i vincoli di not null, unique e primary key.

Not null: significa che l'attributo deve essere sempre specificato.
Unique: si applica a uno o pi attributi imponendo che righe differenti
abbiano valori differenti. Viene fatta eccezione solo per il valore null.
Primary Key: specifica quali attributi rappresentano la chiave
primaria. Gli attributi che fanno parte della chiave primaria devono
essere indicati come Not Null.

Mentre i vincoli not null e unique possono essere definiti pi volte, la primary
key pu essere definita una volta sola (sia che sia specificata a livello di attributo
che in calce per indicare una serie di attributi).

Esempio:

CREATE TABLE Persona
(
Nome VARCHAR(20) NOT NULL,
Cognome VARCHAR(20) NOT NULL,
Indirizzo VARCHAR(20),
Citt VARCHAR(20),
PRIMARY KEY (Nome, Cognome)
);
crea una tabella in cui la chiave primaria rappresentata dall'insieme del nome e
del cognome.

CREATE TABLE Persona
(
Matricola VARCHAR (6) PRIMARY KEY NOT NULL,
Nome VARCHAR(20) NOT NULL,
Cognome VARCHAR(20) NOT NULL,
Indirizzo VARCHAR(20),
Citt VARCHAR(20),
UNIQUE (Nome, Cognome)
);

crea una tabella in cui la chiave primaria il codice di matricola e gli attributi
nome e cognome devono essere obbligatoriamente specificati (per via del not
null) ed in cui non possono comparire due righe aventi stesso nome e cognome.

Maxy Guida 80
__________________________________________________________________________________________
Vincoli interelazionali:
In SQL tali vincoli si definisco tramite l'apposito costrutto della chiave esterna
(vincolo di foreign key).
Lattuale versione di MySQL non supporta questo tipo di vincoli che quindi, per
ora, devono essere realizzati a livello di applicazione.
Questo vincolo impone che ogni valore dell'attributo di una tabella (se diverso
da null) sia presente tra i valori di un attributo delle righe appartenenti ad
un'altra tabella (detta tabella esterna).
I vincoli interelazionali possono essere definiti in due modi: con l'uso del
costrutto sintattico references, con il quale si specificano la tabella esterna con
il quale l'attributo deve essere legato, oppure con l'uso del costrutto foreign key.
Di seguito compare un esempio con la definizione di un vicolo di integrit
referenziale con un'altra tabella ("Dipartimento"). Il vincolo specificato tramite
l'uso di references per fare in modo che nella tabella Persona l'attributo Dipart
sia obbligatoriamente un valore contenuto nella tabella esterna nell'attributo
NomeDipart.
CREATE TABLE Persona
(
Matricola VARCHAR(6) PRIMARY KEY NOT NULL,
Nome VARCHAR(20) NOT NULL,
Cognome VARCHAR(20) NOT NULL,
Indirizzo VARCHAR(50),
Dipart VARCHAR(15)
REFERENCES Dipartimento(NomeDip),
Citt VARCHAR(20),
UNIQUE (Nome, Cognome)
);

Invece il costrutto foreign key (posto non a livello di attributo ma in calce e
seguito da references) offre delle possibilit maggiori. Innanzitutto permette di
definire dei vincoli per un'insieme di attributi; inoltre permette di definire la
reazione del DBMS ad eventuali forzature dei vincoli di integrit referenziale.
Infatti, trovandosi di fronte ad una relazione tra tabelle, occorre prendere in
considerazione quale sar la reazione della tabella interna (o master) all'atto
della modifica di una riga della tabella esterna (detta slave). Le operazioni che
possono mettere in crisi il nostro sistema di vincoli sono, ovviamente, le
operazioni di cancellazione e modifica sulla tabella esterna, operazioni alle quali
la tabella interna dovr adeguarsi.
SQL ci permette di definire, come opzioni del costrutto foreign key, quattro
reazioni del DBMS del caso di modifica (update) e cancellazione (delete):

Informatica di Base 81
__________________________________________________________________________________________
Massimiliano Teso
On update On delete
Cascade Il nuovo valore viene
riportato su tutte le relative
righe della tabella master
Tutte le relative righe della
tabella master vengono
cancellate
Set null Nella tabella master viene
inserito null al posto dei
valori relativi all'attributo
modificato
Nella tabella master viene
inserito null al posto dei
valori relativi all'attributo
modificato
Set default Nella tabella master viene
inserito il valore di default
al posto dei valori relativi
all'attributo modificato
Nella tabella master viene
inserito il valore di default
al posto dei valori relativi
all'attributo modificato
No action Non viene eseguita alcuna
operazione. Il DBMS
respinge la richiesta di
update.
Non viene eseguita alcuna
operazione. Il DBMS
respinge la richiesta di
cancellazione.
Esempio di utilizzo del foreign key:
CREATE TABLE Persona
(
Matricola VARCHAR(6) PRIMARY KEY NOT NULL,
Nome VARCHAR(20) NOT NULL,
Cognome VARCHAR(20) NOT NULL,
Indirizzo VARCHAR(50),
Dipart VARCHAR(15)
REFERENCES Dipartimento(NomeDip),
Citt VARCHAR(20),

FOREIGNKEY(Dipart)
REFERENCES Dipartimento(NomeDip)
ON DELETE SET NULL,
ON UPDATE CASCADE,

UNIQUE (Nome, Cognome)
);

Maxy Guida 82
__________________________________________________________________________________________
Modifica delle tabelle:
Il linguaggio implementa anche delle istruzioni dedicate alla modifica delle
strutture esistenti. Tali comando sono alter, che permette di modificare domini e
schemi di tabelle, e drop , che permette di rimuovere dei componenti siano essi
schemi, domini o tabelle.
Ecco un esempio che aggiunge un attributo alla tabella Dipartimenti.

ALTER TABLE Dipartimenti ADD COLUMN NroUffici INT;

in questo modo la tabella ha una colonna in pi che rappresenta, ad esempio, il
numero degli uffici.

Invece il comando :

DROP TABLE Dipartimenti;

cancella la colonna appena creata.

Interrogazioni:
La parte di SQL dedicata all'interrogazione del DBMS probabilmente la parte
pi importante ed utilizzata del linguaggio.
Per essere eseguita, l'interrogazione deve essere analizzata dall'interprete SQL
(che un componente del DBMS) per essere tradotta in un'interrogazione
equivalente in linguaggio procedurale.
Le interrogazioni in SQL sono specificate tramite l'uso dell'istruzione select la
cui struttura essenziale la seguente :

SELECT ListaAttributi
FROM ListaTabelle
[ WHERE Condizione ]

L'interrogazione SQL seleziona, tra le righe che appartengono al prodotto
cartesiano delle tabelle elencate nella clausola from, quelle che soddisfano la
clausola where (se assente vengono selezionate tutte le righe).
Se al posto della ListaAttributi c un asterisco (*) vengono selezionati tutti gli
attributi del prodotto cartesiano.

Nella ListaAttributi possono essere definiti degli alias, ovvero dei nomi che
possono essere usati, successivamente, per richiamare il campo.
Ad esempio, data la base di dati:

Informatica di Base 83
__________________________________________________________________________________________
Massimiliano Teso
DIPARTIMENTO
NomeDip Indirizzo Citta
Amministrazione Via Milano 7 Roma
Produzione Via Torino 4 Milano
Ricerca Via Roma 10 Firenze
Direzione Via Morone 6 Aosta
IMPIEGATO
Nome Cognome Dipart Stipendio
Mario Rossi Amministrazione 500
Carlo Neri Direzione 800
Maria Meli Richerca 650
Marco Bruni Sviluppo 950
Paola Bruni Direzione 900
Linterrogazione

SELECT Stipendio AS Salario
FROM Impiegato
WHERE Cognome = "Rossi";
prende il valore dello stipendio di "Rossi" dalla tabella Impiegato ridefinendolo
come Salario.
Nella ListaAttributi possono essere inserite anche espressioni generiche
(addizione, sottrazione, moltiplicazione ecc.). Ad esempio :

SELECT Stipendio AS Salario, Stipendio/12 AS SalarioMensile
FROM Impiegato
WHERE Cognome = "Rossi";

Per quanto riguarda la clausola from essa rappresenta l'insieme delle tabelle a
cui si vuole accedere e delle quali verr eseguito il prodotto cartesiano.
Considerando l'esempio del paragrafo precedente (tabelle Impiegato e
Dipartimento) e volendo prendere valori da entrambe le tabelle:

SELECT Impiegato.Nome, Impiegato.Cognome, Dipartimento.Citta
FROM Impiegato, Dipartimento
WHERE Impiegato.Dipart = Dipartimento.NomeDip;

Rispetto agli esempi precedenti si nota l'uso del punto per indicare a quali a
quale tabella si riferisce l'attributo.
La clausola where ammette una serie di espressioni booleane; possibile,
all'interno della clausola, combinare predicati semplici con gli operatori logici
Maxy Guida 84
__________________________________________________________________________________________
and, or e not. Ciascun predicato semplice confronta (con gli operatori
=,<>,<,>,<= e >=) una espressione costruita a partire dai valori degli attributi
per la riga o con un valore costante o con il risultato della valutazione di un'altra
espressione.

Ad esempio:

SELECT Nome
FROM Impiegato
WHERE Cognome = Rossi and
(Dipart = Amministrazione OR Dipart = Produzione);
seleziona l'impiegato di nome "Rossi" appartenente al dipartimento
Amministrazione o Produzione.
Oltre agli operatori standard gi citati SQL mette a disposizione l'operatore like
per il confronto di stringhe. Tale operatore si comporta come l'operatore di
uguaglianza ma, a differenza di quest'ultimo, supporta anche i caratteri "%"
(percentuale) e "_" (trattino sottolineato). Il primo rappresenta una sringa
arbitraria (anche vuota) mentre il secondo un carattere arbitrario.
Ad esempio:

SELECT *
FROM Impiegato
WHERE Cognome like _o%i;

seleziona tutti gli impiegati il cui cognome termina con la lettera "i" e la cui
seconda lettera una "o".
Di particolare importanza la gestione dei valori nulli nella valutazione dei
predicati. Infatti nell'algebra booleana convenzionale si prendono in
considerazione unicamente due valori (vero o falso) mentre abbiamo visto che
avendo a che fare con delle basi di dati, possiamo avere anche il valore null
(cio sconosciuto). Le ultime versioni di SQL gestiscono i campi null
considerandoli nella valutazione di relazioni complesse, estendendo a tre valori,
vero | falso | null, il possibile risultato.
Quindi avremmo invece delle classe tabelle di verit le nuove tabelle
comprensive del valore null.
Not
Falso Vero
Null Null
Vero Falso
Informatica di Base 85
__________________________________________________________________________________________
Massimiliano Teso
And Vero Null Falso
Vero Vero Null Falso
Null Null Null Falso
Falso Falso Falso Falso
Or Vero Null Falso
Vero Vero Vero Vero
Null Vero Null Null
Falso Vero Null Falso
Diciamo inoltre che la selezione dei campi null si effettua tramite la sintassi:

Attributo IS [NOT] NULL

Tale predicato risulta vero solo se il valore null. Il predicato not null il suo
contrario. Si potrebbero ad esempio selezionare tutte le righe con il campo
stipendio non nullo mediante la condizione

WHERE Stipendio IS NOT NULL
Inserimento nelle tabelle:
Il comando di inserimento di righe nella base di dati presenta due sintassi
alternative:

INSERT INTO NomeTabella [( ListaAttributi) ]
< VALUES ( ListaDiValori ) | SelectSQL >;

Questa sintassi permette di inserire una riga specificandone i valori dei suoi
attributi.
Ad esempio:

INSERT INTO Dipartimento(NomeDip, Citta)
VALUES(Produzione, Torino);

Una seconda sintassi, meno usata ma pi consona all'impostazione SQL che ha
come oggetto le tabelle e non le singole righe, permette di aggiungere degli
insiemi di righe mediante il comando SELECT.
La sua sintassi :

INSERT INTO NomeTabellaDestinazione [( ListaAttributi) ]
SELECT ListaAttributi
FROM NomeTabellaOrigine
WHERE Condizione;
Maxy Guida 86
__________________________________________________________________________________________
Ad esempio il seguente comando:

INSERT INTO ProdottiMilanesi (codice, descrizione)
SELECT codice, descrizione
FROM Prodotto
WHERE LuogoProd=Milano;
Inserisce nei campi codice e selezione della tabella ProdottiMilanesi il
risultato della selezione della relazione Prodotto di tutte le righe aventi
Milano come valore dellattributo LuogoProd.
Cancellazione delle righe:
Il comando SQL delete permette di eliminare delle righe dalle tabelle di una
base di dati.
La sintassi :

DELETE FROM NomeTabella [ WHERE Condizione ];

Quando la condizione della clausola where non viene specificata, il comando
cancella tutte le righe della tabella, altrimenti vengono rimosse solo le righe che
soddisfano la condizione.
La condizione rispetta la sintassi SQL, per cui potremmo avere al suo interno
delle interrogazioni nidificate che fanno riferimento ad altre tabelle. Un
semplice esempio che elimina i dipartimenti con sede a Roma:

DELETE FROM Dipartimento WHERE Citta= Roma
E' da notare la differenza tra il comando delete ed il comando drop. Ad esempio
il comando:

DELETE FROM Dipartimento;

elimina tutte le righe della tabella dipartimento, ma lo schema rimane immutato;
il comando, infatti, canceller solo le istanze della tabella.
Mentre il comando:

DROP TABLE Dipartimento;

elimina tutte le istanze della tabella, nonch lo schema.

Informatica di Base 87
__________________________________________________________________________________________
Massimiliano Teso
Modifica delle righe:
In SQL la modifica delle righe avviene mediante l'utilizzo del comando update,
seguendo la sintassi:

UPDATE NomeTabella
SET Attributo = < Espressione | SelectSQL | Null | default >
{ , Set Attributo = < Espressione | SelectSQL Null | default> }
[ WHERE Condizione ];
Questo comando permette di aggiornare uno o pi attributi delle righe di
NomeTabella che soddisfano l'eventuale condizione. Se la condizione non
compare ovviamente si suppone di default il valore vero e si esegue la modifica
su tutte le righe della tabella.
Ecco un esempio che aumenta del 20% lo stipendio degli impiegati che si
chiamano "Mario":

UPDATE Impiegato SET Stipendio = Stipendio * 1.2
WHERE Nome = 'Mario'

Uso del join:
Supponiamo di voler sapere i nomi di tutti gli studenti che hanno sostenuto un
esame in base alle tabelle riportate a pagina 68. Per farlo dobbiamo realizzare un
join confrontando lattributo Matricola della tabella Studente e lattributo
MtrStudente della tabella Esame.
Si deve quindi scrivere:

SELECT S.Nome
FROM Studente AS S, Esame AS E
WHERE S.Matricola = E.MtrMatricola;
L'ultima versione di SQL (SQL-2) ha introdotto una sintassi alternativa per
l'espressione di join che permette di distinguere tra le condizioni che
rappresentano le selezioni di join e quelle che rappresentano di selezioni di riga.
Inoltre il linguaggio stato arricchito di nuove espressioni di join.
La sintassi la seguente:

SELECT AttrExpr [ [AS] Alias ] {, AttrExpr [ [AS] Alias ] }
FROM Tabella [ [AS] Alias ]
{, TIPOJOIN Tabella [ [AS] Alias ] ON CondizioneDiJoin }
[ WHERE AltraCondizione ]

Maxy Guida 88
__________________________________________________________________________________________
Mediante questa sintassi la condizione di join non compare come argomento
della clausola where, ma viene invece spostata nell'ambito della clausola from,
associata alle tabella che vengono coinvolte nel join.
Il parametro TipoJoin specifica quale il tipo di join da usare, e ad esso si
possono sostituire i termini INNER, RIGHT OUTER, LEFT OUTER o FULL.
L'operatore inner join il pi comune e prorio per questo la parola chiave
INNER pu essere omessa.
Ad esempio l'interrogazione realizza precedentemente con l'utilizzo del where
ora pu essere riscritta:

SELECT S.Nome
FROM Studente AS S
JOIN Esame AS E D ON S.Matricola = E.MtrStudente;

Questo il caso di un join interno, perch le righe che vengono coinvolte nel
join sono in un sottoinsieme delle righe di ciascuna colonna. Pu infatti capitare
che alcune righe non vengano considerate in quanto non esiste una
corrispondente riga nell'altra tabella per cui la condizione sia soddisfatta. Questo
comportamento molto spesso non rispetta le esigenze delle applicazioni, le quali,
alla eliminazione delle righe operata dal join, possono preferire di mantenere le
righe, ponendo eventualmente opportuni valori null. Il join esterno (outer join)
ha proprio questo compito.
Esistono tre diversi tipi di join esterno: left, right e full.
Il left join fornisce come risultato il join interno con le righe della relazione che
compare a sinistra nel join per le quali non esiste una corrispondente riga nella
tabella di destra; il right join restituisce invece, oltre al join interno, le righe
escluse della relazione di destra; infine il full join restituisce il join interno
esteso con le righe eslcuse di entrambe le relazioni.
Ad esempio, sulla base delle tabelle riportate a pagina 83, la selezione:

SELECT *
FROM Dipartimento
LEFT JOIN Impiegato
ON (Dipartimento.NomeDip=Impiegato.Dipart);
fornisce la seguente tabella

NomeDip Indirizzo Citta Nome Cognome Stipendio
Amministrazione Via Milano 7 Roma Mario Rossi 500
Produzione Via Torino 4 Milano NULL NULL NULL
Ricerca Via Roma 10 Firenze Maria Meli 650
Direzione Via Morone 6 Aosta Carlo Neri 800
Direzione Via Morone 6 Aosta Paola Bruni 900
Informatica di Base 89
__________________________________________________________________________________________
Massimiliano Teso
SELECT *
FROM Impiegato
FULL JOIN Dipartimento
ON (Impiegato.Dipart= Dipatimento.NomeDip)
fornisce la seguente tabella

Nome Cognome Stipendio Dipart Indirizzo Citta
Mario Rossi 500 Amministrazione Via Milano 7 Roma
Carlo Neri 800 Direzione Via Morone 6 Aosta
Paola Bruni 900 Direzione Via Morone 6 Aosta
Maria Meli 650 Richerca Via Roma 10 Firenze
Marco Bruni 950 Sviluppo NULL NULL
NULL NULL NULL Produzione Via Torino 4 Milano
Talvolta necessario convolgere pi tabelle in una selezione. Supponiamo
infatti di voler conoscere oltre al nome di tutti gli studenti che hanno sostenuto
un esame, anche il nome dellesame e lanno di corso. Queste informazioni sono
riportate su tre tabelle differenti e quindi linterrogazione sar la seguente:

SELECT S.Nome, C.Nome, C.Anno_di_Corso
FROM Studente AS S, Esame AS E, Corso AS C
WHERE S.Matricola = E.MtrMatricola
AND E.Corso = C.Nome;
Ordinamento:
Abbiamo visto che una relazione costituita da un insieme non ordinato di
tuple. Spesso per nell'uso reale delle basi di dati sorge il bisogno di costruire un
ordine sulle righe delle tabelle. SQL permette di costituire un ordine con
l'istruzione order by posta dopo la clausola where. La sintassi :

ORDER BY AttrDiOrdinamento [ ASC | DESC ]
{ , AttrDiOrdinamento [ ASC | DESC ] }
In questo modo si specificano gli attributi che devono essere presi in
considerazione per realizzare l'ordinamento (crescente o decrescente). Se
loperatore omesso si assume un ordine ascendente.
Ad esempio:

SELECT *
FROM Impiegato
ORDER BY Nome DESC, Cognome;
Maxy Guida 90
__________________________________________________________________________________________
Ordina la tabella degli Impiegato in maniera discendente per nome e in maniera
ascendente per i cognomi nel caso ci siano nomi uguali.

Operatori aggregati:
Tali operatori sono una serie di parole chiave del linguaggio SQL dedicate
all'aggregazione dei dati, grazie ai quali possibile definire interrogazioni di
notevoli interesse applicativo. E' necessario ricorrere a questi operatori ogni qual
volta occorra valutare delle propriet che dipendono da insiemi di righe.
Lo standard SQL prevede cinque operatori aggregati, divisibili in due gruppi:
count da una parte e sum, max, min, avg dall'altra.
L'operatore count permette di determinare il numero di righe di una
interrogazione; la sintassi la seguente:

COUNT ( * | [ DISTINCT ] | [ ALL ] ListaAttributi );

L'opzione * restituisce il numero delle righe; l'opzione distinct, invece,
restituisce il numero dei diversi valori degli attributi mentre l'opzione all
restituisce il numero dei valori diversi da null.
Ad esempio:

SELECT COUNT(DISTINCT Stipendio)
FROM Impiegato;

restituisce il numero dei diversi valori dell'attributo Stipendio fra tutte le righe
della tabella Impiegato.
Oppure:

SELECT COUNT(ALL Nome, Cognome)
FROM Impiegato;
restituisce il numero delle righe che possiedono un valore diverso da null sia per
l'attributo Nome che per l'attributo Cognome.
Gli altri operatori di aggregazione richiedono invece solo un attributo o
un'espressione, eventualmente preceduta dalle parole chiave distinct o all. Le
funzioni sum ed avg ammettono come argomento solo espressione numeriche
mentre max e min accettano anche intervalli di tempo e stringhe.
Gli operatori hanno il seguente significato:

sum: restituisce la somma dei valori posseduti dall'attributo su tutte le
righe;
max e min: restituiscono il massimo ed il minimo valore tra quelli di
ciascuna riga (su questi operatori distinct o all non hanno alcun effetto)
avg: restituisce il valore medio tra quelli dell'attributo;
Informatica di Base 91
__________________________________________________________________________________________
Massimiliano Teso
Ad esempio:

SELECT SUM(Stipendio)
FROM Impiegato
WHERE Dipart= Ricerca;
restituisce la somma degi stipendi del dipartimento Ricerca

SELECT MAX(Stipendio)
FROM Impiegato, Dipartimento
WHERE Dipart= NomeDip
AND Citta=Milano;
restituisce il massimo stipendio tra quelli degli impiegati che lavorano in un
dipartimento con sede a Milano.

Interrogazioni con raggruppamento:
Qualora occorra produrre delle aggregazioni occorre fare ricorso alla clausola
group by. Questa istruzione pu essere utilizzata con un operatore aggregato e
permette di creare dei raggruppamenti parziali, mostrando una sola riga per ogni
insieme che ha uno stesso valore nell'attributo passato come parametro.
Ad esempio:

SELECT Dipart, SUM(Stipendio)
FROM Impiegato
GROUP BY Dipart;

Esegue in sequenza i seguenti passi:

per prima cosa viene eseguita la clausola where come se il group by non
esistesse
Il risultato viene proiettato su tutti gli attributi che compaiono o come
argomento della group by o allinterno dellespressione argomento
delloperatore aggregato

Dipart Stipendio
Amministrazione 500
Direzione 800
Richerca 650
Sviluppo 950
Direzione 900
Maxy Guida 92
__________________________________________________________________________________________
La tabella viene poi raggruppata secondo le indicazioni del group by

Dipart Stipendio
Amministrazione 500
Direzione 800
Direzione 900
Richerca 650
Sviluppo 950
Infine viene applicato loperatore aggregato

Dipart Stipendio
Amministrazione 500
Direzione 1700
Richerca 650
Sviluppo 950
Una volta eseguito un raggruppamento in sottoinsiemi con la clausola group by
possibile selezionare solo alcuni gruppi usando la clausola Having.
La clausola having il corrispondente per i gruppi della clausola where per gli
attributi. Essa descrive le condizioni che si devono applicare al termine
dell'esecuzione di una interrogazione che fa uso della clausola group by.
Ad esempio:

SELECT Dipart, SUM(Stipendio) AS SommaStipendi
FROM Impiegato
GROUP BY Dipart
HAVING SommaStipendi>800

fornisce la seguente tabella:

Dipart Stipendio
Direzione 1700
Sviluppo 950
Volendo riassumere la sintassi SQL dell'istruzione select con tutte le clausole
analizzate avremmo che:

SELECT ListaAttributiOEspressioni
FROM ListaTabelle
[ WHERE CondizioniSemplici ]
[ GROUP BY ListaAttributiDiRaggruppamento ]
[ HAVING CondizioniAggregate ]
[ ORDER BY ListaAttributiDiOrdinamento ]

Informatica di Base 93
__________________________________________________________________________________________
Massimiliano Teso
Interrogazioni nidificate:
Nella clausola where lSQL ammette anche luso di predicati con una struttura
pi complessa rispetto a quelli visti. In questo caso si confronta un valore
(ottenuto come risultato di una espressione valutata sulla singola riga) con il
risultato dellesecuzione di uninterrogazione SQL. Linterrogazione che viene
usata per il confronto viene definita direttamente nel predicato interno alla
clausola where. Si parla in questo caso di interrogazioni nidificate.
Se in un predicato si confrontano un attributo con il risultato di una
interrogazione sorge il problema di disomogeneit dei termini del confronto.
Infatti, da una parte abbiamo il risultato dellesecuzione di uninterrogazione
SQL, in genere un insieme di valori, mentre dallaltra abbiamo il valore
dellattributo per la particolare riga. La soluzione consiste nellestendere, con le
parole all e any, i normali operatori di confronto relazionale (=, <>, <, >, <= e
>=). La parola chiave any specifica che la riga soddisfa la condizione se risulta
vero il confronto tra il valore dellattributo per la riga e almeno uno degli
elementi restituiti dallinterrogazione. La parola chiave all invece specifica che
la riga soddisfa la condizione solo se tutti gli elementi restituiti
dallinterrogazione nidificata rendono vero il confronto.
Ecco un esempio di interrogazione nidificata:

SELECT *
FROM Impiegato
WHERE Dipart = ANY
(
SELECT Nome
FROM Dipartimento
WHERE Citta=Firenze
);
Lattuale versione di MySQL non supporta le query nidificate.
Maxy Guida 94
__________________________________________________________________________________________
Esercizi

1. Data la seguente base di dati

CLIENTE
Cliente_ID Nome Cognome Anno_Nascita Telefono
LIBRO
Libro_ID Nome_Autore Cognome_Autore Titolo Pagine Genere Anno Prezzo
ORDINE
Ordine_ID Cliente_ID Libro_ID Data
Realizzare le sequenti query in SQL
a) Trovare i Titoli dei libri pubblicati dopo il 1980
b) Trovare i Titoli dei libri ordinati da Mario Rossi
c) Trovare i titoli di tutti i libri ordinati con i relativi acquirenti
d) Raddoppia il prezzo a tutti i libri pubblicati prima del 1960
e) Calcolare il prezzo medio dei libri
f) Contare i numero di clienti che hanno effettuato un ordine
g) Trovare Nome e Cognome di tutti i clienti che hanno fatto un
ordine e indicare per ognuno di essi il numero di libri acquistati.
Ordina i dati in maniera decrescente relativamente al nome e al
cognome.Trovare il peso medio degli articoli di colore rosso
h) Trovare Titolo e numero di copie vendute di tutti i libri pubblicati
dopo il 1980

2. Creare e popolare la base di dati precedente in MySQL. Realizzare in
codice SQL le query proposte.

3. Progettare e realizzare una base di dati per la gestione dei noleggi di una
videoteca. Creare le tabelle e definire le interrogazioni necessarie per la
corretta gestione dellattivit.

Informatica di Base 95
__________________________________________________________________________________________
Massimiliano Teso
CAP VIII
VIRUS INFORMATICI
Introduzione

Al giorno doggi quasi tutti i possessori di PC hanno avuto la brutta esperienza
di contrarre un virus informatico. Pochi sanno per cosa sia in realt, come
agisca e come sia possibile debellarlo.
Un virus non altro che un programma scritto con lo scopo di creare un danno
sul computer che lo ospita o, nella migliore delle ipotesi, procurare dei disagi
allutente. A differenza dei programmi tradizionali, un virus fa di tutto per non
rendere visibile la sua presenza fino a quando non entra in azione provocando
danni al computer che ha infettato.
La prima persona che parl di virus informatico pubblicamente, fu il dr. F.
Cohen nel 1983 che defin il virus come << un programma che pu infettare
altri programmi, trasformandoli in modo da aggiungervi una copia (in alcuni
casi evoluta) di se stesso>>. Quindi la caratteristica principale di questi
programmi sta nellautoreplicazione, come avviene per i virus biologici.

Cosa fanno e cosa non fanno

I virus possono creare danni di diversa entit ai programmi residenti sul
computer. In particolare possono:
- infettare programmi, fogli di calcolo, documenti di testi e alcune parti del
sistema operativo
- infettare floppy disk e hard disk modificando i programmi di avvio del
sistema operativo memorizzati in particolari aree del disco chiamate Dos
Boot Sector (per i floppy) e Master Boot Record (per gli hard disk)

Ci sono per cose che, malgrado si senti dire il contrario, i virus non possono
assolutamente fare:
- danneggiare elementi hardware del sistema
- danneggiare fisicamente i dischi
- infettare dischi protetti da scrittura
- infettare le e-mail in quanto semplice testo. Il virus pu per risiedere
nelleventuale file allegato alle-mail.

E importante infine ricordare che il codice di un virus per essere pericoloso deve
essere eseguito, non sufficiente che sia consultato o letto.
Si pu tranquillamente affermare che non esiste sistema operativo inattaccabile
dai virus. Poich lautore di un virus vuole ottenere la massima visibilit del suo
Maxy Guida 96
__________________________________________________________________________________________
prodotto, gli ambienti maggiormente colpiti sono i sistemi pi diffusi come
lMS-DOS prima e Microsoft Windows adesso.

Tipi di Virus

In base alla definizione di Cohen, solo i programmi in grado di replicarsi sono
virus. Esistono molti altri tipi di programmi dannosi, che assieme ai virus in
senso stretto, costituiscono il cosiddetto malware, neologismo dato dalla fusione
dei termini MALicious e softWARE (software dannoso).

Virus in senso stretto:
I virus possono essere a loro volta divisi in diverse categorie:

Program virus:
Si tratta di virus che infettano applicazioni e sistemi operativi. Attaccano
file con estensioni COM, EXE, SYS, DLL, OVL o SCR.
Il virus si attiva caricandosi in memoria per poi attaccare altri programmi.
Esso pu inserire il proprio codice nel file infettato oppure pu sostituire
completamente il file. In ogni caso il file attaccato risulta modificato ed
anche su questo che si basa lazione di ricerca ed eliminazione degli
antivirus.

System o Boot-Sector Virus:
Il primo settore di un floppy disk, chiamato Dos Boot Sector, contiene il
codice di avvio del sistema operativo mentre il primo settore di un hard
disk, detto Master Boot Sector, contiene la tabella delle partizioni,
indicazioni su come suddiviso il disco e altre informazioni importanti.
Entrambi i settori sono fondamentali per lavvio del sistema operativo e
proprio per questo vengono attaccati dai virus che generalmente infettano
prima il Master Boot Sector dei dischi fissi e poi il Dos Boot Sector dei
dischetti. In questo modo il virus si pu trasferire da un computer allaltro.

Macro Virus:
Con lavvento di Word Processor, capaci di supportare le cos dette
macro, si sono diffusi anche questo genere di virus. Le macro sono una
serie di istruzioni da poter inserire in programmi come ad esempio
Microsoft Word. La loro potenza aumentata a tal punto da permettere ai
virus di replicarsi e danneggiare il contenuto del documento.

Polimorfici:
Sono virus in grado di mutare il proprio codice mediante algoritmi
particolari che li rendono diversi ad ogni generazione. In questo modo
diventano pi difficili da individuare. Questa caratteristica permette loro
Informatica di Base 97
__________________________________________________________________________________________
Massimiliano Teso
di mimetizzarsi allinterno dei programmi infettati rendendo difficile
allantivirus il compito di rivelarne la presenza.

Esaminiamo ora alcuni tipi di malware:

Worm:
Il Worm (dallinglese verme) non un vero e proprio virus ma un programma
progettato per replicarsi e diffondersi attraverso sistemi di elaborazione connessi
in rete. Il Worm non cerca di danneggiare il sistema che lo ospita. Esso si limita
ad autoreplicarsi in memoria sprecando tutte le risorse del sistema che
inevitabilmente diventa inutilizzabile. Lesempio pi famoso probabilmente
lInternet Worm che nel 1988 si diffuse su oltre 6.000 sistemi di reti collegati in
tutto il mondo

Troijan:
Questi programmi devono il loro nome al famoso espediente escogitato da
Ulisse per conquistare la citt greca. Come il famoso cavallo di legno offerto in
dono agli abitanti di Troia nascondeva al suo interno soldati armati cos i
programmi di questa categoria sembrano allapparenza software normali, ma in
realt svolgono funzioni tuttaltro che utili. I Troijan infatti installano
silenziosamente un virus vero e proprio mentre il programma apparentemente
innocuo in esecuzione. Questo genere di virus individuabile solo quando si
carica in memoria e inizia a spargersi, quando quindi troppo tardi per
unazione preventiva.

Backdoor:
Una backdoor, permette al nostro computer di diventare un server della rete. Chi
ha diffuso il programma quindi in grado di prendere possesso della nostra
macchina da qualsiasi parte del mondo. Affinch sia possibile questo per il
nostro computer deve essere collegato in rete.
Le backdoor pi diffuse sono BO (Back Orifice, Il nome tutto un programma)
e NetBus. Esse sfruttano i malfunzionamenti costruttivi di Windows,
permettendo laccesso al PC tramite alcune porte che questo sistema operativo
lascia aperte.

Gli Antivirus

Lenorme diffusione di questi programmi dannosi ci fa comprendere quanto sia
necessario avere installato un buon antivirus sul proprio computer. Ne esistono
di diverso tipo, sia gratuiti che commerciali. Generalmente le due tecniche
utilizzate dagli antivirus sono le seguenti:
- A confronto di pattern: lantivirus ha una lista con le stringhe che
identificano i vari virus e la usa per individuare linfezione nei file
Maxy Guida 98
__________________________________________________________________________________________
sottoposti a scansione. Se in un file viene rilevata una stringa nota viene
eliminata e il file ripristinato.
- A ricerca euristica: lantivirus ricerca allintero del programma il codice
che potrebbe essere utilizzato da un virus.

Entrambi i metodi sono buoni ma hanno dei limiti. Il primo ha la necessit di
essere aggiornato frequentemente per rinnovare la lista delle stringhe mentre il
secondo potrebbe indicare infetti dei file che in realt non lo sono.
Per essere efficace un antivirus dovrebbe utilizzare entrambi i metodi di
scansione e per maggiore sicurezza sarebbe utile avere a disposizione due
antivirus diversi. E fondamentale poi aggiornare frequentemente lantivirus
visto che vengono scoperti circa 300 virus nuovi ogni mese.
Un buon antivirus gratuito lAVG, scaricabile allindirizzo www.grisoft.com.
Informatica di Base 99
__________________________________________________________________________________________
Massimiliano Teso
APPENDICE A
BASI DI HTML
Il linguaggio utilizzato dalle pagine World Wide Web, lHyperText Markup
Language (HTML), non un linguaggio di programmazione ma un Markup
Language, una serie di istruzioni che definiscono le caratteristiche di un
documento e ne guidano la composizione sullo schermo. In questo paragrafo
vengono descritti sinteticamente tutti i principali comandi dei quali vengono
proposte le opzioni pi utili.
I comandi principali vengono scritti con font Courier New grassetto
mentre le relative opzioni in semplice Courier New. Gli elementi da inserire
che non fanno parte del linguaggio (come immagine, colore, etc..) sono
scritti in font Times New Roman. Nel testo sono riportati alcuni esempi di
pagine web per chiarire meglio lutilizzo dei comandi HTML.
Alla fine di questo paragrafo trovate inoltre le tabelle con i codici dei colori e
dei caratteri speciali.

Struttura di base della pagina

La struttura elementare di una pagina HTML la seguente:

<HTML>
<HEAD>
<TITLE>
Titolo della Pagina
</TITLE>
</HEAD>
<BODY>
Corpo del documento
</BODY>
</HTML>

<HTML>
...
</HTML>
Apre e chiude una pagina Html.
<HEAD>
...
</HEAD>
Apre e chiude la parte relativa allintestazione
della pagina. Quanto riportato nellintestazione
non viene visualizzato nella pagina ma serve
per fornire informazioni sul documento..

<TITLE>
Titolo della Pagina
</TITLE>
Assegna un titolo alla pagina che viene
visualizzato nella barra superiore del browser.
Maxy Guida 100
__________________________________________________________________________________________
<BODY>
...
</BODY>
Racchiude il corpo del documento HTML.
BGCOLOR=colore Colore dello sfondo della pagina.

BACKGROUND=immagine Nome o URL dellimmagine da disporre come
sfondo della pagina.

BGPROPIERTIES=FIXED Fissa lo sfondo della pagina.

TEXT=colore Colore di default del testo della pagina.

<META>
Inserisce alcune informazioni sul documento
utili ad esempio ai motori di ricerca per creare
riferimenti corretti alla pagina in questione.

NAME=nome Tipo di informazione. Due dei valori possibili
sono DESCRIPTION e KEYWORDS.
CONTENT=contenuto Contenuto dellinformazione. Se NAME di tipo
DESCRIPTION allora CONTENT sar una
stringa che descrive sommariamente il
contenuto del documento, se invece di tipo
KEYWORDS sar una serie di parole chiave
separate da virgole.

Suoni

<BGSOUND SRC=percorso/suono.est> Riproduce il file audio specificato
non appena viene visualizzata la
pagina.

LOOP=volte Numero di volte per cui riprodurre il
file (-1 o INFINITE indica di
riprodurre a ciclo continuo).
Informatica di Base 101
__________________________________________________________________________________________
Massimiliano Teso
Titoli e Paragrafi

<H1>...</H1>
<H2>...</H2>
<H3>...</H3>
<H4>...</H4>
<H5>...</H5>
<H6>...</H6>
Il testo diventa un titolo e quindi viene
rappresentato in grassetto e viene
lasciata una riga di spazio rispetto al
resto del testo. Pi alto il numero
minore la dimensione del carattere.
<P>
...
</P>

Definisce un paragrafo normale. Il tag
</P> opzionale.
ALIGN=[LEFT/CENTER/RIGHT] Allinea il contenuto del paragrafo a
sinistra, centro o destra.

<DIV>
...
</DIV>
Definisce unarea di testo da
formattare..
ALIGN=[LEFT/CENTER/RIGHT] Allinea il contenuto dellarea di testo a
sinistra, centro o destra.

Attributi del Testo e Altri Elementi

<EM>...</EM>
<I>...</I>

Testo in corsivo.
<STRONG>...</STRONG>
<B>...</B>

Testo in Grassetto.
<KBD>...</KBD>
<CODE>...</CODE>
Font di testo inserito da tastiera
(solitamente Courier).

<BASEFONT SIZE=grandezza> Si inserisce allinizio di ogni pagina e
definisce la grandezza di default del
testo.

<FONT >
...
</FONT>

Definisce il carattere del testo con la
grandezza e il colore indicati.
Maxy Guida 102
__________________________________________________________________________________________
SIZE=grandezza Dimesione del carattere. Pi il valore
grande pi il carattere grande.
La grandezza del carattere pu anche
essere relativa a quella definita in
BASEFONT inserendo numeri con
segno positivo o negativo.

COLOR=colore Colore del carattere.

<BR>
Interruzione di riga.

<HR>
Linea orizzontale.

<BLINK>
...
</BLINK>
Fa lampeggiare il testo.

<CENTER>
...
</CENTER>
Centra testo e immagini.
<!-- Commento -->
Crea un commento che non viene
visualizzato nella pagina.

Con i comandi precedenti gi possibile creare una semplice pagina web.
Editare il testo che segue con un qualsiasi editor di testo e salvarlo con il nome
esempio1.htm. Per visionare il file necessario aprirlo con un browser come
Netscape o Internet Explorer.

<HTML>
<HEAD>
<TITLE>La mia prima pagina</TITLE>
<META NAME=DESCRIPTION CONTENT=pagina web con alcuni
elementi tipografici>
<META NAME=KEYWORDS CONTENT=internet, pagina, web, corsivo,
grassetto, titoli, font, colori>
</HEAD>
<BODY BGCOLOR="gray" BACKGROUND="sfondo.gif" TEXT="blue">
<BGSOUND SRC=base.mid LOOP=INFINITE>
<BASEFONT SIZE=4> <!-- Font di defalut pari a 4 -->
<CENTER><H1>Corsivo e Grassetto</H1></CENTER>
<P> Pagina di prova per testare le potenzialit
del linguaggio HTML4.
<P><I> Scritta in corsivo</I>
<P><B> Scritta in grassetto<B>
<P><I><B> Scritta in grassetto corsivo</B></I>

Informatica di Base 103
__________________________________________________________________________________________
Massimiliano Teso
<BR>
<BR>
<HR>

<CENTER><H1>Font e Colori</H1></CENTER>

<P><FONT SIZE=-1 COLOR="red">
Scritta rossa con font pi piccolo
</FONT>

<P><FONT SIZE=+1 COLOR="green">
Scritta verde con font pi grande
</FONT>

<BR>
<BR>
<HR>

</BODY>
</HTML>

Maxy Guida 104
__________________________________________________________________________________________
Liste:

<UL>
<LI>
...
</LI>
...
</UL>

Lista non ordinata in cui ogni elemento
della lista, inserito tra i due tag
<LI>...</LI>, individuato da un
pallino.
<OL>
<LI>
...
</LI>
...
</OL>

Lista ordinata in cui ogni elemento
della lista, inserito tra i due tag
<LI>...</LI>, individuato da un
numero crescente.
<DL>
<DT>
...
</DT>
<DD>
...
</DD>
...
</DL>
Elenco di definizioni in cui il termine
della definizione tra i due tag
<DT>...</DT> mentre la definizione
tra i due tag <DD>...</DD>.
Ecco una pagina che utilizza i comandi appena definiti.

<HTML>
<HEAD>
<TITLE>
Pagina con liste
</TITLE>
</HEAD>
<BODY >
<CENTER><H1>Pagina con liste</H1></CENTER>
<P>Lista non ordinata
<UL>
<LI>Primo elemento</LI>
<LI>Secondo elemento</LI>
<LI>Terzo elemento</LI>
<LI>Quarto elemento</LI>
</UL>

<BR>

<P>Lista ordinata
Informatica di Base 105
__________________________________________________________________________________________
Massimiliano Teso
<OL>
<LI>Primo elemento</LI>
<LI>Secondo elemento</LI>
<LI>Terzo elemento</LI>
<LI>Quarto elemento</LI>
</OL>

<BR>

<P>Elenco di definizioni
<DL>
<DT>Definizione 1</DT>
<DD>Spiegazione della prima definizione</DD>
<DT>Definizione 2</DT>
<DD>Spiegazione della seconda definizione</DD>
<DT>Definizione 3</DT>
<DD>Spiegazione della terza definizione</DD>
</DL>

</BODY>
</HTML>

Maxy Guida 106
__________________________________________________________________________________________
Link

<A HREF=indirizzo>
...
</A>
Tutto ci che viene compreso da
questo comando diventa un link
allindirizzo specificato che pu essere
un indirizzo esterno
(http://www.nomesito.com), un
indirizzo di posta elettronica
(mailto:nome@provider.it) o un
indirizzo interno (vedi sotto)
TARGET=nome_frame Nome del frame in cui deve apparire il
documento collegato.

<A HREF=#Marc>...</A>

<A NAME=Marc>...</A>
Tutto ci che viene compreso dal
primo comando diventa un link interno
alla pagina stessa collegandosi con il
punto della pagina dove compare il
secondo comando (chiamato ancora).

Immagini

<IMG SRC=percorso/nome.est> Inserisce limmagine specificata.

ALT=testo alternativo Testo alternativo che verr
visualizzato se limmagine per
diversi motivi non viene caricata.

ALIGN=[LEFT/RIGHT/
TOP/MIDDLE/BOTTOM]
Con LEFT o RIGHT limmagine
viene allineata a destra o sinistra e il
testo che segue scorre ai lati.
TOP, MIDDLE e BOTTOM
determinano lallineamento verticale
dellimmagine con altri elementi
sulla stessa riga.

VSPACE=spazio verticale Spazio tra limmagine e il testo
sopra e sotto di essa.

HSPACE=spazio orizzontale Spazio tra limmagine e il testo ai
lati.

Informatica di Base 107
__________________________________________________________________________________________
Massimiliano Teso
BORDER=bordo Disegna un bordo dello spessore
specificato in pixel attorno
allimmagine.

Vediamo meglo cosa succede al testo e alle immagini quando si inserisce
lopzione ALIGN.
ALIGN=LEFT: Allinea l'immagine sul bordo sinistro della finestra di
visualizzazione del browser, il testo che segue circonda la parte destra
dell'immagine.
Allineamento di tipo
left, il contorno
immagine e stato
riempito volutamente
per meglio risaltare questo tipo di
allineamento. Provate a variare le
dimensioni della finestra del browser
per meglio capirne l'allineamento.
ALIGN=RIGHT: Allinea l'immagine sul bordo destro della finestra di
visualizzazione del browser, il testo che segue circonda la parte sinistra
dell'immagine.
Allineamento di tipo
right, il contorno
immagine e stato
riempito volutamente
per meglio risaltare questo tipo di
allineamento. Provate a variare le
dimensioni della finestra del browser
per meglio capire l'allineamento.
Maxy Guida 108
__________________________________________________________________________________________
ALIGN=TOP: Allinea il testo che segue l'immagine con la parte superiore
dell'elemento pi alto nella riga.
Allineamento di tipo
top, il contorno immagine e stato
riempito volutamente per meglio
risaltare questo tipo di allineamento.
Provate a variare le dimensioni della
finestra del browser per meglio capire
l'allineamento.
ALIGN=MIDDLE: Allinea la linea di base della riga corrente con la parte
centrale dell'immagine.
Allineamento di tipo
middle, il contorno immagine e stato
riempito volutamente per meglio
risaltare questo tipo di allineamento.
Provate a variare le dimensioni della
finestra del browser per meglio capire
l'allineamento.
ALIGN=BOTTOM: Allinea il testo che segue l'immagine con la parte inferiore
dell'elemento pi basso nella riga di testo.
Allineamento di tipo
bottom, il contorno immagine e stato
riempito volutamente per meglio
risaltare questo tipo di allineamento.
Provate a variare le dimensioni della
finestra del browser per meglio capire
l'allineamento.
Informatica di Base 109
__________________________________________________________________________________________
Massimiliano Teso
Ecco un esempio di pagina che utilizza i link e le immagini:

<HTML>
<HEAD>
<TITLE>
Link e immagini
</TITLE>
</HEAD>
<BODY >
<CENTER><H1>Pagina con link e immagini</H1></CENTER>
<BR>
<P ALIGN="CENTER"><B>Link a elementi di questa pagina</B>
<P>
<A HREF="#ancora1">Collegamento a Immagine 1</A><BR>
<A HREF="#ancora2">Collegamento a Immagine 2</A><BR>
<A HREF="#ancora3">Collegamento a Immagine 3</A><BR>
<A HREF="#ancora4">Collegamento a Immagine 4</A><BR>
<A HREF="#ancora5">Collegamento a Immagine 5</A><BR>
<A HREF="#ancora6">Collegamento a Immagine 6</A><BR>

<BR>
<BR>
<HR>

<P ALIGN="CENTER">
<B>Link a pagine esterne e a indirizzi e-mail</B>
<P>
<A HREF="http://www.yahoo.com">Link a Yahoo</A><BR>
<A HREF="mailto:indirizzo@tiscli.it">
Link a indirizzo e-mail</A>

<BR>
<BR>
<HR>

<P ALIGN="CENTER"><B>Immagini</B>
<P><FONT COLOR="red">
<A NAME="ancora1">Immagine 1</A></FONT>
<P> Immagine con link
<P ALIGN="CENTER">
<A HREF="http://www.astavista.com">
<IMG SRC="tarta.jpg"></A>
<BR>
<P><HR>

<P><FONT COLOR="red">
<A NAME="ancora2">Immagine 2</A></FONT>
<P><IMG SRC="tarta.jpg" ALIGN="LEFT">
Allineamento di tipo left,il contorno immagine e stato
riempito volutamente per megliorisaltare questo tipo di
allineamento. Provate a variare le dimensioni della
finestra del browser per meglio capirne l'allineamento.
Maxy Guida 110
__________________________________________________________________________________________
<BR>
<P><HR>

<P><FONT COLOR="red">
<A NAME="ancora3">Immagine 3</A></FONT>
<P><IMG SRC="tarta.jpg" ALIGN="RIGHT">
Allineamento di tipo right,il contorno immagine e stato
riempito volutamente per megliorisaltare questo tipo di
allineamento. Provate a variare le dimensioni della
finestra del browser per meglio capirne l'allineamento.
<BR>
<P><HR>

<P><FONT COLOR="red">
<A NAME="ancora4">Immagine 4</A></FONT>
<P><IMG SRC="tarta.jpg" ALIGN="TOP">
Allineamento di tipo top,il contorno immagine e stato
riempito volutamente per megliorisaltare questo tipo di
allineamento. Provate a variare le dimensioni della
finestra del browser per meglio capirne l'allineamento.
<BR>
<P><HR>

<P><FONT COLOR="red">
<A NAME="ancora5">Immagine 5</A></FONT>
<P><IMG SRC="tarta.jpg" ALIGN="MIDDLE">
Allineamento di tipo middle,il contorno immagine e stato
riempito volutamente per megliorisaltare questo tipo di
allineamento. Provate a variare le dimensioni della
finestra del browser per meglio capirne l'allineamento.
<BR>
<P><HR>

<P><FONT COLOR="red">
<A NAME="ancora6">Immagine 6</A></FONT>
<P><IMG SRC="tarta.jpg" ALIGN="BOTTOM">
Allineamento di tipo left,il contorno immagine e stato
riempito volutamente per megliorisaltare questo tipo di
allineamento. Provate a variare le dimensioni della
finestra del browser per meglio capirne l'allineamento.
<BR>
<P><HR>

</BODY>
</HTML>

Informatica di Base 111
__________________________________________________________________________________________
Massimiliano Teso
Tabelle

<TABLE>
...
</TABLE>

Crea una tabella.

BORDER=bordo Inserisce un bordo esterno del
numero di pixel indicati.

WIDTH=grandezza Indica la grandezza della tabella
espressa in pixel (ad esempio 100)
oppure come percentuale dellintera
pagina (ad esempio 80%).

CELLSPACING=bordo tra celle Indica il numero di pixel che c tra
due celle.

CELLPADDING=bordo nelle celle Indica il numero di pixel che c tra
la cella il suo contenuto.

ALIGN=[LEFT/CENTER/RIGHT] Allinea la tabella come indicato.

BGCOLOR=colore Colore di sfondo dellintera tabella.

Per inserire righe e colonne nella tabella si utilizzano i seguenti comandi:

<TR>
...
</TR>
Definisce una riga della tabella.
ALIGN=[LEFT/CENTER/RIGHT] Allineamento orizzontale del
contenuto della cella nella riga.

VALIGN=[TOP/MIDDLE/BOTTOM] Allineamento verticale del contenuto
delle celle nella riga.

BGCOLOR=colore Colore di sfondo di tutte le celle
nella riga.

Maxy Guida 112
__________________________________________________________________________________________
<TH>
...
</TH>
Definisce una cella di intestazione
della quale possiamo definire
lallineamento (orizzontale e
verticale) e il colore di sfondo
utilizzando le stesse opzioni viste per
<TR></TR>.
<TD>
...
</TD>
Indica una cella della quale
possiamo definire lallineamento
(orizzontale e verticale) e il colore di
sfondo utilizzando le stesse opzioni
viste per <TR></TR>. Se questi
elementi non sono definiti si fa
riferimento a quelli definiti per la
riga.

Ecco un esempio di pagina con una tabella:

<HTML>
<HEAD>
<TITLE>Le Tabelle</TITLE>
</HEAD>
<BODY>
<CENTER><H1>Pagina con Tabelle</H1></CENTER>
<P><TABLE BORDER=2 WIDTH=100%
CELLSPACING=3 CELLPADDING=3 BGCOLOR="yellow">
<CAPTION>commento della tabella</CAPTION>
<TR>
<TH> Lista </TH>
<TH> Foto </TH>
</TR>
<TR ALIGN="CENTER" VALIGN="CENTER">
<TD WIDTH=20%>
<P>Lista non ordinata
<UL>
<LI>Primo elemento</LI>
<LI>Secondo elemento</LI>
<LI>Terzo elemento</LI>
<LI>Quarto elemento</LI>
</UL>
</TD>
<TD BGCOLOR="white">
<H1>Titolo della Pagina</H1>
<IMG SRC="foto.gif">
</TD>
</TR>
<TR ALIGN="LEFT" VALIGN="TOP">
<TD>
Informatica di Base 113
__________________________________________________________________________________________
Massimiliano Teso
<P>Lista non ordinata
<UL>
<LI>Primo elemento</LI>
<LI>Secondo elemento</LI>
<LI>Terzo elemento</LI>
<LI>Quarto elemento</LI>
</UL>
<TD BGCOLOR="white">
<H1>Titolo della Pagina</H1>
<IMG SRC="foto.gif">
</TD>
</TR>
</BODY>
</HTML>

Maxy Guida 114
__________________________________________________________________________________________
Moduli

<FORM>
...
</FORM>

Indica un modulo di input.
ACTION=URL URL dove il modulo verr inviato. Se
inviato per posta si scrive ad esempio:
mailto:nome@tin.it

METHOD=metodo Indica il modo con cui vengono inviati
i dati. I valori possibili sono GET e
POST.
<INPUT>
Elemento di input per un modulo.

TYPE=tipo Tipo dellelemento di input. I valori
possibili sono: TEXT (area di testo),
SUBMIT (pulsante di spedizione),
RESET (pulsate di reset dei campi),
RADIO (caselle a scelta esclusiva),
CHECKBOX (caselle a scelta multipla),
HIDDEN (elemento nascosto).

NAME=nome Nome dellelemento.

VALUE=valore Per un elemento di testo o nascosto, il
valore di default. Per una casella di
controllo o un pulsante di opzione, il
valore da inviare. Per pulsanti di reset
o invio, letichetta del pulsante.

CHECKED Per caselle di controllo e pulsanti di
opzione, indica che il controllo
attivato.

Informatica di Base 115
__________________________________________________________________________________________
Massimiliano Teso
<TEXTAREA>
...
</TEXTAREA>

Elemento per linput di testo su pi
righe.
NAME=nome Nome dellelemento.

ROWS=righe Numero di righe visualizzate dallarea
di testo .

COLS=colonne Numero di colonne(caratteri)
visualizzate dallarea di testo.

WRAP Permette di andare a capo
automaticamente nellarea di testo.

<SELECT>
...
</SELECT>

Crea un men o elenco a discesa di
elementi.
NAME=nome Nome dellelemento.

SIZE=dimensione Numero di elementi da visualizzare.
Se specificato diventa un men a
scorrimento altrimenti diventa un
men a discesa.

MULTIPLE Consente di selezionare pi elementi
dallelenco.

<OPTION>
Indica un possibile elemento
allinterno di una SELECT

SELECTED Lelemento viene selezionato per
default.

VALUE=valore Valore da inviare se questa OPTION
viene selezionata.

Maxy Guida 116
__________________________________________________________________________________________
Ecco un esempio di pagina con un modulo:

<HTML>
<HEAD>
<TITLE>I Moduli</TITLE>
</HEAD>
<BODY>
<CENTER><H1>Pagina con un Modulo</H1></CENTER>
<P>Questo testo non fa parte del modulo
<HR>
<FORM METHOD=POST ACTION="mailto:indirizzo@tiscali.it">
<P>Nome e Cognome <INPUT TYPE="TEXT" NAME="Nome" SIZE=30>

<P>Quanti anni hai?<BR>
<INPUT TYPE="RADIO" NAME="eta" VALUE="10-20">
10-20<BR>
<INPUT TYPE="RADIO" NAME="eta" VALUE="20-50" CHECKED>
20-50<BR>
<INPUT TYPE="RADIO" NAME="eta" VALUE="50-70">
50-70<BR>
<INPUT TYPE="RADIO" NAME="eta" VALUE=">70">
>70<BR>

<P>Quanto sei alto?<BR>
<SELECT NAME="altezza">
<OPTION> Meno di 1 metro</OPTION>
<OPTION> tra 1 metro e 1 metro e 20</OPTION>
<OPTION SELECTED>
tra 1 metro e 20 e 1 mentro e 50</OPTION>
<OPTION> tra 1 metro e 50 e 1 mentro e 80</OPTION>
<OPTION> Pi di 1 metro e 80</OPTION>
</SELECT>

<P>Cosa acquisti normalmente?<BR>
<SELECT NAME="acquisti" SIZE=4 MULTIPLE>
<OPTION> Quotidiano</OPTION>
<OPTION> Riviste di Computer</OPTION>
<OPTION> Riviste Scientifiche</OPTION>
<OPTION> CD Musicali</OPTION>
<OPTION> Videocassette</OPTION>
<OPTION> DVD</OPTION>
</SELECT>

<P>Quali sono i tuoi interessi?<BR>
<INPUT TYPE="CHECKBOX" NAME="musica"> Musica<BR>
<INPUT TYPE="CHECKBOX" NAME="cinema"> Cinema<BR>
<INPUT TYPE="CHECKBOX" NAME="internet"> Internet<BR>
<INPUT TYPE="CHECKBOX" NAME="sport"> Sport<BR>

<P>Hai commenti o suggerimenti da proporre?<BR>
<TEXTAREA NAME="consigli" ROWS=7 COLS=25 WRAP>
</TEXTAREA>
<HR>
Informatica di Base 117
__________________________________________________________________________________________
Massimiliano Teso
<CENTER>
<INPUT TYPE="RESET" VALUE="Resetta Tutto">
</CENTER><BR>
<CENTER>
<INPUT TYPE="SUBMIT" VALUE="Spedisci i dati">
</CENTER>
</FORM>
</BODY>
</HTML>

Maxy Guida 118
__________________________________________________________________________________________
Applet

<APPLET>
...
</APPLET>

Inserisce un applet Java a esecuzione
automatica.

CLASS=nome.class Nome dellapplet.

SRC=percorso URL della directory dove si trova
lapplet compilato. Non si deve
includere il nome dellapplet
specificato con lattriuto CLASS.
ALIGN=[TOP/MIDDLE/BOTTOM] Indica come allineare lapplet rispetto
al testo che lo segue.

WIDTH=larghezza Larghezza dellarea di output
dellapplet, in pixel.

HEIGHT=altezza Altezza dellarea di output dellapplet,
in pixel.

<PARAM>
Parametri specifici del programma.

NAME=tipo Tipo di informazioni fornite allapplet.
VALUE=valori Informazioni da fornire allapplet.
Ecco un esempio di pagina con un applet:
<HTML>
<HEAD>
<TITLE>
Pagina con Applet
</TITLE>
</HEAD>
<BODY >
<CENTER><H1>Pagina con Applet</H1></CENTER>
<P ALIGN="CENTER">
<APPLET CODE="FadesInOut2b.class" WIDTH=510 HEIGHT=32>
<PARAM NAME="TextToDisplay"
VALUE="
Questo Applet;
Visualizza una scritta che sfuma;
passando il testo da visualizzare;
come parametro;">
Informatica di Base 119
__________________________________________________________________________________________
Massimiliano Teso
<PARAM NAME="FontSize" VALUE="30">
<PARAM NAME="FontName" VALUE="TimesRoman">
<PARAM NAME="FontStyle" VALUE="BOLD">
<PARAM NAME="Steps" VALUE=10>
<PARAM NAME="Delay" VALUE=120>
<PARAM NAME="bgCOLOR" VALUE=255,255,255>
<PARAM NAME="textCOLOR" VALUE="255,0,0">
<PARAM NAME="Author" VALUE="George Eleftheriou">
<PARAM NAME="Email" VALUE="gele@egnatia.ee.auth.gr">
</APPLET>
</BODY>
</HTML>

Maxy Guida 120
__________________________________________________________________________________________
Frame

<FRAMESET>
...
</FRAMESET>
Suddivide la finestra principale in una
serie di frame che possono
visualizzare ciascuno un documento
separato

ROWS=righe Suddivide verticalmente la finestra o i
frame in un numero di righe
specificato come numero (esempio 7),
come percentuale della larghezza
totale della finestra (esempio 25%) o
come asterisco (*) per indicare che il
frame deve occupare tutto lo spazio
rimanente o che tale spazio va
suddiviso tra i frame (se sono
specificati pi frame con lasterisco).

COLS=colonne Funziona in modo simile a ROWS
eccetto per il fatto che la finestra o i
frame sono suddivisi orizzontalmente
in colonne.

FRAMEBORDER=[YES/NO] Visualizza o meno i bordi dei frame.

FRAMESPACING=spessore Spazio tra i frame in pixel.

<FRAME>
Definisce un singolo frame.

SRC=sorgente URL del documento da visualizzare.

NAME=nome Nome da utilizzare per assegnare un
target al frame. Ad esso si far
riferimento nellattributo TARGET
presente in collegamenti <A HREF>.
SCROLLING=[YES/NO/AUTO] Determina se un frame presenta o
meno barre di scorrimento. Nel caso
di AUTO verranno inserite solo se
necessario.

Informatica di Base 121
__________________________________________________________________________________________
Massimiliano Teso
NORESIZE Impedisce allutente di ridimensionare
il frame con il mouse.

<BASE TARGET=NomeFrame> Da inserire in una pagina se tutti i
documenti a cui fa riferimento devono
essere necessariamente visualizzati nel
frame indicato.

Per creare un sito con frame necessario realizzare una prima pagina che
contenga la suddivisione in righe e colonne. In questa pagina al posto del tag
<BODY> ci sar il tag <FRAMESET>.
Ecco un esempio di pagina con tre frame (due righe di cui la prima occupa il
20% dellintera pagina e due colonne di cui la prima occupa il 15% dellintera
pagina):

index.html
<HTML>
<HEAD>
<TITLE>
Pagina con Frame
</TITLE>
</HEAD>
<FRAMESET ROWS="15%,*">
<FRAME SRC="testa.html" NAME="Testa" SCROLLING="NO">
<FRAMESET COLS="20%,*">
<FRAME SRC="menu.html" NAME="Menu" SCROLLING="AUTO">
<FRAME SRC="pagina1.html" NAME="Corpo" SCROLLING="AUTO">
</FRAMESET>
</FRAMESET>
</HTML>

Ed ecco i codici delle singole pagine che vengono richiamate allinterno dei
frame:

testa.html
<HTML>
<HEAD>
<TITLE>
Testa
</TITLE>
</HEAD>
<BODY >
<P ALIGN="CENTER">
<APPLET CODE="FadesInOut2b.class" WIDTH=680 HEIGHT=32>
<PARAM NAME="TextToDisplay"
Maxy Guida 122
__________________________________________________________________________________________
VALUE="
Pagina di presentazione con Frame;
La pagina divisa in tre frame;
un'intestazione, un men e il corpo della pagina;">
<PARAM NAME="FontSize" VALUE="30">
<PARAM NAME="FontName" VALUE="TimesRoman">
<PARAM NAME="FontStyle" VALUE="BOLD">
<PARAM NAME="Steps" VALUE=10>
<PARAM NAME="Delay" VALUE=120>
<PARAM NAME="bgCOLOR" VALUE=255,255,255>
<PARAM NAME="textCOLOR" VALUE="255,0,0">
<PARAM NAME="Author" VALUE="George Eleftheriou">
<PARAM NAME="Email" VALUE="gele@egnatia.ee.auth.gr">
</APPLET>
</BODY>
</HTML>

menu.html
<HTML>
<HEAD>
<TITLE>
Menu
</TITLE>
</HEAD>
<BODY >
<BASE TARGET="Corpo">
<P ALIGN="CENTER"><IMG SRC="toto.gif">
<P><H3>Men</H3>
<P><A HREF="pagina1.html">Pagina 1</A><BR>
<P><A HREF="pagina2.html">Pagina 2</A><BR>
<P><A HREF="pagina3.html">Pagina 3</A><BR>
</BODY>
</HTML>

pagina1.html
<HTML>
<HEAD>
<TITLE>
Menu
</TITLE>
</HEAD>
<BODY >
<BASE TARGET="Corpo">
<CENTER><H1>Pagina 1</H1></CENTER><BR>
<P ALIGN="CENTER"><IMG SRC="programm.jpg"><BR>
<HR>
</BODY>
</HTML>
Informatica di Base 123
__________________________________________________________________________________________
Massimiliano Teso
pagina2.html
<HTML>
<HEAD>
<TITLE>
Menu
</TITLE>
</HEAD>
<BODY >
<BASE TARGET="Corpo">
<CENTER><H1>Pagina 2</H1></CENTER><BR>
<P ALIGN="CENTER"><IMG SRC="sciacqua.jpg"><BR><BR>
<HR>
</BODY>
</HTML>

pagina3.html
<HTML>
<HEAD>
<TITLE>
Menu
</TITLE>
</HEAD>
<BODY >
<BASE TARGET="Corpo">
<CENTER><H1>Pagina 3</H1></CENTER><BR>
<P ALIGN="CENTER"><IMG SRC="bunny.gif"><BR><BR>
<P ALIGN="CENTER"><IMG SRC="astro.gif"><BR><BR>
<P ALIGN="CENTER"><IMG SRC="drago.gif"><BR><BR>
<P ALIGN="CENTER"><IMG SRC="tuoni.gif"><BR><BR>
<HR>
</BODY>
</HTML>

Maxy Guida 124
__________________________________________________________________________________________
Caratteri Speciali

Per inserire nelle pagine caratteri o simboli particolari necessario fare ricorso al
loro codice numerico o nominale ( preferibile utilizzare sempre il primo).
Ecco dunque un elenco non esaustivo dei codici da inserire in un listato HTML
per ottenere determinati caratteri.
Carattere Codice Numerico Codice Nominale
&#224; &agrave;
&#192; &Agrave;
&#225; &aacute;
&#193; &Aacute;
&#232; &egrave;
&#200; &Egrave;
&#233; &eacute;
&#201; &Eacute;
&#236; &igrave;
&#204; &Igrave;
&#237; &iacute
&#205; &Iacute;
&#242; &ograve;
&#210; &Ograve;
&#243; &oacute;
&#211; &Oacute;
&#249; &ugrave;
&#217; &Ugrave;
&#250; &uacute;
&#218; &Uacute;
&#241; &Utilde;
&#209; &Ntilde;
< &#60; &lt;
> &#62; &gt;
&#171; nessuna
&#171; nessuna
&#174; &reg;
& &#38; &amp;
&#169; &copy;
" &#34; &quot;
Informatica di Base 125
__________________________________________________________________________________________
Massimiliano Teso
Tabella dei Colori
Per alcuni dei colori pi diffusi possibile utilizzare il loro nome inglese. Questi
i sedici valori standard: green (verde), silver (argento), lime (cedro), gray
(grigio), olive (verde oliva), white (bianco), yellow (giallo), maroon( castano),
navy (blue), red (rosso), blue (azzurro), purple (porpora), teal (verde scuro),
fucsia (fucsia) e acqua (acquamarina). Per gli altri colori necessario utilizzare
un codice esadecimale.
Ecco un elenco non esaustivo:
Colore Codice
NERO #000000
BIANCO #FFFFFF
ROSSO #FF0000
CICLAMINO #FF3296
ARANCIONE #F19600
GIALLO #FAFA50
GIALLO CANARINO #EBFF64
OCRA #FAC878
VERDE #00FF00
VERDE SCURO #00641E
VERDE CHIARO #00FF96
VIOLA #6432C8
LILLA #BE6EFA
AZZURRO #0096C8
AZZURRO SCURO #3C5AC8
BLU CHIARO #3232C8
BLU #0000FF
Maxy Guida 126
__________________________________________________________________________________________
APPENDICE B
INSTALLARE MYSQL
MySQL nato per sistemi Unix ed uno dei pi diffusi database utilizzati su
Internet. Veloce, affidabile, disponibile pressoch per tutti i sistemi operativi e
privo di bugs, la soluzione ideale per siti Web di qualsiasi dimensione e
traffico. Gratuito nelle versioni per Linux e recentemente anche per Windows.
Prima di tutto necessario prelevare i file necessari allindirizzo internet
http://www.mysql.com/. Una volta entrati nella pagina si vada nella sezione
downloads per scaricare lultima versione stabile del programma.
Sempre da questo sito consiglio di scaricare il manuale completo (in inglese)
dove si possono trovare maggiori dettagli sulle varie funzionalit supportate.
Nella pagina dedicata alle utilities troviamo anche moltissimi strumenti che
facilitano il nostro lavoro di gestione e manutenzione del database.

Ora possiamo installare MySQL sul nostro computer Windows.
Installazione quanto di pi semplice si possa desiderare: sufficiente
decomprimere il file zip e lanciare il file setup.exe. Il programma verr
installato nella directory c:\mysql.
A questo punto dobbiamo portarci nella directroy

c:\mysql\bin\
e avviare prima di tutto il server con il comando:

mysqld

Possiamo controllare in ogni momento se il server attivato con il comando

mysqladmin ping

E poi necessario lanciare il client SQL richiamabile con il comando:

mysql

A questo punto MySQL stato avviato. Nella shell possiamo inviare
direttamente i comandi per creare, modificare, cancellare e visualizzare i
database.
In MySQL tutti i comandi devono terminare con un punto e virgola. Si tratta di
una misura resa necessaria dalla possibilit di distribuire una medesima
istruzione su pi righe.

Informatica di Base 127
__________________________________________________________________________________________
Massimiliano Teso
E necessario ora creare un database con il comando:

mysql>CREATE DATABASE nomeDatabase;
ad esempio creiamo il database di nome agenda

mysql>CREATE DATABASE agenda;

Per usare il database appena creato si scrive

mysql>USE agenda;

A questo punto possibile utilizzare il lingaggio SQL per creare la struttura
della propria base di dati e per popolarla.

Per semplificare il lavoro possibile creare con un editor di testo un file con
tutti i comandi per la creazione della base di dati che pu essere poi importato in
mysql con il comando

mysql>source NomeFile.txt;
Per chiudere il client si deve digitare il comando

mysql> QUIT;

mentre per disattivare il server necessario digitare il comando

mysqladmin u root shutdown;

Maxy Guida 128
__________________________________________________________________________________________
APPENDICE A
MANUALE DEL DOS
Indice

Introduzione al DOS Pag 129
Il comando help Pag 129
Il comando dir Pag 130
Il comando cls Pag 131
Il comando cd Pag 131
Il comando del Pag 132
Il comando ren Pag 132
Il comando md Pag 133
Il comando rd Pag 133
Il comando copy Pag 133
Il comando xcopy Pag 134
Il comando move Pag 134
Il comando mem Pag 135
I Comandi date e time Pag 136
Il comando attrib Pag 137
I comandi label e vol Pag 138
Il comando chkdsk Pag 139
Il comando diskcopy Pag 139
Il comando sys Pag 140
Il comando edit Pag 140
Il comando type Pag 141
Il comando find Pag 141
Informatica di Base 129
__________________________________________________________________________________________
Massimiliano Teso
Introduzione al DOS
Il DOS uno dei primi sistemi operativi scritti per i computer ed
labbreviazione di Disk Operative System (MSDOS sta per Microsoft DOS, dal
nome dellazienda che lo ha implementato). In queste dispense vengono
presentati dei comandi che potrebbero non essere supportati dalle ultime
versioni di DOS presenti nei sistemi operativi Microsoft Windows.
Una volta acceso il computer il DOS ci appare con una linea di testo di questo
tipo:

C:\> (detta root principale)

La lettera C: indica lhard disk mentre il simbolo > il cos detto prompt e
indica che il computer si aspetta dei dati in ingresso immessi attraverso la
tastiera.
Allinterno dellHard Disk i fle sono organizzati in Directory che potrebbero
essere paragonate alle cartelle presenti nel sistema operativo Windows. Per
accedere a questi file DOS non supporta uninterfaccia grafica come Windows e
quindi tutte le operazioni si svolgono in maniera testuale immettendo comandi
attraverso la tastiera.
Il DOS non Case Sensitive cio non distingue le maiuscole dalle minuscole
come invece fanno altri sistemi operativi (ad esempio Linux).
Per accedere a un nuovo disco basta digitare la lettera relativa al disco seguita
dai due punti. Ad esempio, per accedere al Floppy Disk basta digitare

C:\> a:

e premere invio. Il computer si posizioner sul prompt di A

A:\>
Il comando help
Mostra sul monitor una spiegazione di ciascun comando DOS, la sua sintassi e il
significato delle opzioni utilizzabili.
sintassi: help comando
il comando uno qualsiasi dei comandi DOS.
Esempio:

C:\> help dir
Maxy Guida 130
__________________________________________________________________________________________
mostra il significato del comando DIR, la sua sintassi e le opzioni a
disposizione.

Parlando della sintassi dei comandi DOS, abbiamo visto che sono presenti delle
opzioni, cio dei parametri che modificano leffetto del comando al seguito del
quale sono stati digitati.
Il DOS 5 ha introdotto una opzione valida per tutti i comandi.
Digitando

C> dir /?
otteniamo lo stesso effetto del comando help: appare sul monitor una
spiegazione del comando, la sua sintassi, e il significato delle opzioni
utilizzabili.
Questo parametro a disposizione di qualunque comando DOS e deve essere
usato da solo, senza alcuna indicazione di drive, path, nomefile o altre opzioni.
Quando, nel corso di queste dispense, indichiamo i parametri a disposizione di
ciascun comando, non indicheremo mai lopzione /?, ma utile tenere
presente che in caso di dubbio sulla esatta sintassi di un comando sempre
possibile utilizzarla.
Il comando dir
Uno dei comandi pi utilizzati dir il quale elenca tutti i file di una determinata
directory. Il DOS permette di inserire, dopo un comando, una serie di parametri
che permettono di rendere pi specifico il comando stesso. Vediamo un elenco
di parametri relativi al comando dir:
Comando Azione
C:\>dir /p
Lista i file e le sotto cartelle e aspetta che si prema un tasto
per accedere alle altre schermate
C:\>dir /s
Lista tutti i file nella cartella corrente e in tutte le sotto
cartelle
C:\>dir /ah Lista solo i file nascosti
C:\>dir /ad Lista solo le sottocartelle
C:\>dir /as Lista solo i file di sistema
C:\>dir /w Mette i file in quattro colonne
C:\>dir /on Lista i file ordinati per nome
C:\>dir /os Lista i file ordinati per grandezza
C:\>dir /? elenca tutte le opzioni...
Informatica di Base 131
__________________________________________________________________________________________
Massimiliano Teso
Si pu usare il carattere asterisco "*" come una specie di accumulatore di nomi.
Se, ad esempio, si vogliono elencare tutti i files con estenzione "txt" basta
digitare

dir *.txt

Se si vogliono elencare tutti i file che iniziano per marco (ad esempio
marcopeppe.txt, marco2.doc, marcone.exe), basta digitare

dir marco.*

Il comando cls
Digitando

C:\> cls

che sta per Clear Screen si cancella lo schermo da tutte le scritte presenti.
Il comando cd
Per potersi spostare nelle varie directory si usa il comando cd che sta per
Change Directory. Se quindi si nella directory

C:\WINDOWS>

e si vuole andare in

C:\WINDOWS\SYSTEM>

basta digitare il comando

cd system

Per tornare indietro si deve digitare il comando

cd..

mentre se si vuole tornare direttamente alla root principale si deve digitare il
comando

cd\
Maxy Guida 132
__________________________________________________________________________________________
Se si vuole raggiungere una determinata directory da un qualunque punto
dellhard disk necessario indicare tutto il percorso.
Se, ad esempio, ci si trova nella cartella C:\GIOCHI\ e e sio vuole accedere
alla cartella C:\WINDOWS\SYSTEM\ si possono fare i seguenti passi:

C:\GIOCHI\> cd\
C:\>cd windows
C:\WINDOWS\>cd system
Ma preferibile accedere direttamete scrivendo il percorso assoluto:

C:\GIOCHI\> cd\windows\system

oppure

C:\GIOCHI\>cd c:\windows\system
Il comando del
Per cancellare un file si usa il comando del (abbreviazione di delete da to
delete che in inglese significa appunto cancellare ).
Anche in questo caso possibile utilizzare lasterisco come accumulatore.
Se volgiamo cancellare da una directory tutti i file con estensione txt basta
scrivere il comando

del *.txt

Se invece volgiamo eliminare tutti i file della directory necessario inserire il
comando

del *.*

Il comando ren ren ren ren
Per cambiare nome ad un file ad un file si usa il comando
C:\> ren nome1.estensione1 nome2.estensione2
Il file nome1.estensione1 non esiste pi e al suo posto apparso il file
nome2.estensione2 che ha lo steso contenuto.
Anche in questo comando si pu usare il carattere asterisco.
Informatica di Base 133
__________________________________________________________________________________________
Massimiliano Teso
Comando ren:
Rinomina i file.
sintassi: ren [drive:] [path] nomefile1 nomefile2
il drive quello in cui si trova il disco con il file da rinominare
la path quella in cui si trova il file da rinominare
il nomefile1 il nome del file da rinominare. E possibile usare i caratteri ?
e *. Si usa ? per sostituire un carattere, e * per un gruppo imprecisato di
caratteri
il nomefile2 il nuovo nome del file. E possibile usare i caratteri ? e *.
Si usa ? per sostituire un carattere, e * per un gruppo imprecisato di
caratteri.

Il comando md
Per creare una nuova directory si utilizza il comando md che sta per Make
Directory seguito dal nome della directory che si vuole creare.
Se, ad esempio, siamo nella root principale e volgiamo creare una directory di
nome temp, basta digitare il comando

md temp

Il comando rd
Per rimuovere una directory si usa il comando rd che sta per Remove
Directory. La directory deve essere completamente vuota altrimenti il DOS
visualizza un messaggio di errore.
Per rimuovere la directory temp basta digitare il comando
rd temp
Il comando copy
Per copiare un file da una parte allaltra dellHard Disk o dallHard Disk a un
dischetto si utilizza il comando copy con la seguente sintassi:

copy [drive1:][path1]nomefile1
[drive2:][path2]nomefile2 [Opzioni]
drive1 quello in cui si trova il disco con il file originale,
path1 quella della subdirectory in cui si trova il disco con il file originale,
Maxy Guida 134
__________________________________________________________________________________________
nomefile1 il nome del file che si vuole copiare. E possibile usare i caratteri
? e *. Si usa ? per sostituire un carattere, e * per un gruppo imprecisato
di caratteri
drive2 quello in cui si trova il disco in cui si vuole copiare il file
path2 quella della subdirectory in cui si vuole copiare il file
nomefile2 leventuale nome finale del file copiato. Se si omette, il DOS gli
attribuisce lo stesso nome di quello originale.
Lopzione principale :
/v per verificare la corretta duplicazione del file

Il comando xcopy
Questo comando permette di copiare oltre ai file anche le sottodirectory di una
determinata directory. La sintassi la seguente:

xcopy [drive1:] path1 [drive2:] [path2] [opzioni]

drive1 quello in cui si trova il disco la subdirectory originale
path1 quella della directory originale
drive2 quello in cui si trova il disco dove si vuole registrare la directory
path2 quella della directory in cui si vuole registrare.
le opzioni principali sono:
/s espande lesecuzione della copia a tutte le subdirectory contenute in quella
originale, tranne quelle vuote
/e aggiunge, allopzione precedente, anche le subdirectory vuote
/d date effettua la copia solo dei file modificati dalla data indicata in poi
/v per verificare la corretta duplicazione

Il comando move
Per spostare un file da una directory allaltra si usa il comando move.
Ad esempio il comando

C:\TEMP\>move a:*.exe

Sposta tutti i files exe dal floppy alla cartella corrente TEMP.

Informatica di Base 135
__________________________________________________________________________________________
Massimiliano Teso
Il comando mem
Questo comando serve per visualizzare la quantit di memoria disponibile e
utilizzata dal computer.
Digitando
C:\> mem

Avrete come risposta un elenco dettagliato dello stato della memoria nel vostro
PC.
Si ottiene normalmente una risposta di questo tipo:
656384 bytes total conventional memory
655360 bytes available to MS-DOS
608640 largest executable program size
3145728 bytes total contiguos extended memory
MS-DOS resident in High Memory Area
nella quale possono variare con molta probabilit sia le cifre che le frasi che le
accompagnano, in quanto entrambi corrispondenti alle diverse configurazioni di
memoria e di sistema.
Lo schema che il computer ci ha appena mostrato, ci da le seguenti indicazioni:
- la memoria convenzionale di 656384 bytes (pari a 640Kb);
- di questa, il DOS pu lavorare con 655360 bytes;
- di questi, 608640 bytes sono ancora liberi a disposizione dei programmi e
dei dati da caricare in memoria, mentre il resto occupato dal DOS
stesso;
- inoltre sono presenti 3145728 bytes (pari a 3Mb) utilizzati come memoria
estesa per quei programmi che la possono utilizzare;
- il DOS si installato nella parte alta di memoria, cio nei primi 64Kb
della memoria estesa, per lasciare libera la maggiore quantit possibile di
memoria convenzionale per i programmi ed i dati.
Tirando le somme, la RAM presente nel computer dei classici 640Kb pi una
espansione di 3Mb per la memoria estesa. Ma se esiste la memoria estesa, vuol
dire che esistono anche 384Kb di memoria (chiamata upper memory area)
utilizzata, ad esempio per la gestione del monitor, e non disponibile per il DOS
ed i programmi.
Il totale della memoria installata quindi di 4Mb:

Maxy Guida 136
__________________________________________________________________________________________
- 1Mb costituita da 640Kb di memoria convenzionale e da 384Kb di upper
memory area (non utilizzabile)
- 3Mb memoria estesa.
le opzioni del comando mem sono:
/program mostra anche i programmi caricati in memoria
/debug mostra informazioni utili ai programmatori sullo stato della memoria
/classify mostra i programmi caricati nella memoria convenzionale e nella
upper memory area con informazioni utili ai programmatori
Si pu usare solo una opzione per ciascuna volta che si introduce il comando.

I comandi time e date
Per visualizzare lora digitate

C:\> time
il computer vi chieder inoltre se volete cambiarla. Per cambiarla immettete
lora esatta nella forma
15:21:00
Altrimenti premete invio
Per visualizzare la data digitate
C:\> date
Anche in questo caso vi viene chiesto se volete cambiarla. Se volete farlo
immettete la giusta data nella forma:
21/11/92

Comando date:
Mostra la data corrente o resetta il calendario del computer.
sintassi: date [giorno/mese/anno]
Lespressione giorno/mese/anno deve essere immessa nella forma
XX/XX/XXXX di due cifre per il giorno, due per il mese e quattro per lanno.
Se il comando DATE viene usato senza alcuna indicazione, il DOS mostra la
data registrata nel calendario del computer.

Informatica di Base 137
__________________________________________________________________________________________
Massimiliano Teso
Comando time:
Mostra lora attuale o resetta lorologio del computer.
sintassi: time [ore:minuti:secondi]
Lespressione ore:minuti:secondi deve essere immessa nella forma XX:XX:XX
di due cifre per lora, due per i minuti e due per i secondi.
Se il comando TIME viene usato senza alcuna indicazione, il DOS mostra lora
registrata nellorologio del computer.

Il comando attrib
I file possono avere vari attributi che ne specificano alcune caratteristiche, come
ad esempio se un file nascosto oppure se un file di sistema e via dicendo.

Attrib Significato
A Archivio, ossia normalmente un file ha questo attributo
H nascosto, i file con questo attributo non vengono listati con un
comando dir standard
R Lettura, i file con questo attributo possono essere solo letti
S Sistema, ossia i file di sistema come MSDOS.SYS e IO.SYS
Le lettere che contrassegnano gli attributi sono le iniziali delle rispettive voci in
lingua inglese, ossia, Archive, Hidden, Read Only, System.
Per modificare gli attributi di un file esiste il comando attrib, che ha la
seguente sintassi:
attrib nomedelfile.estenzione + Attributo (per attivarlo) oppure
Attributo (per disattivarlo)
Dove attributo specificato dalla lettera corrispondente nella tabella sopra.
Ad esempio per rendere un file di sola lettura sufficiente scrivere:
(supponiamo che vogliamo rendere di sola lettura il file leggimi.txt che si trova
in C:\DOC)

C:\DOC\> attrib leggimi.txt +R
Gli attributi possono essere messi in cascata quindi ad esempio:

C:\DOC\> attrib leggimi.txt +R +H A

un comando legittimo.

Maxy Guida 138
__________________________________________________________________________________________
I comandi label e vol
Se non avete attribuito unetichetta ad un dischetto, o se volete modificare quella
esistente, possibile dare un nome a un disco anche dopo la preparazione. Il
comando
C:\> label A:nuovo_nome
che attribuisce al disco presente nel drive A il nome di nuovo_nome.
Letichetta deve essere al massimo di 11 lettere.
Il comando label senza alcuna opzione
C:\> label a:
ci mostra sul video il nome attuale del disco presente nel drive A, il suo numero
di serie, e ci propone di inserire una nuova etichetta. Premendo solo il tasto
Invio il DOS chiede se si vuole cancellare il nome attuale del disco o se si
vuole lasciarlo inalterato.
Il numero di serie non pu essere modificato.
Se si vuole solo conoscere letichetta attuale di un disco, senza volerla
modificare, basta il comando
C:\> vol a:
che mostra nome e numero di serie del disco nel drive A senza altra possibilit.
Comando label:
Modifica, cambia o cancella letichetta di un disco
sintassi: label [drive:] [nomedisco]
il drive: quello nel quale si trova il disco
il nomedisco letichetta da attribuire al disco; pu essere lungo fino a 11
caratteri.
Se nel comando non viene specificato un nomedisco il DOS mostra letichetta
attuale e chiede se si vuole modificarla, confermarla o cancellarla.
Comando vol:
Visualizza nome e numero di serie di un disco
sintassi: vol [drive:]
il drive: quello nel quale si trova il disco di cui si vuole conoscere
lidentificazione

Informatica di Base 139
__________________________________________________________________________________________
Massimiliano Teso
il comando chkdsk chkdsk chkdsk chkdsk
Se un dischetto provoca errori di scrittura o lettura, bene dare il comando
C:\> chkdsk a:
che effettua un controllo approfondito dello stato del dischetto e cerca eventuali
errori. Vengono inoltre testati tutti i settori del disco ed eventuali blocchi
difettosi vengono segnati come inutilizzabili. Alla fine viene mostrata sullo
schermo una sintesi dello stato del disco: capacit, numero dei file invisibili,
numero delle subdirectory, dei file ordinari, dei settori difettosi, e lo spazio
ancora libero.
Comando chkdsk:
Controlla un disco e ne visualizza lo stato.
sintassi: chkdks [drive:] [path] [opzioni]
il drive: quello nel quale si trova il disco da controllare
la path leventuale subdirectory che si vuole controllare
le opzioni sono:
/f ripara automaticamente gli errori incontrati nella verifica
/v visualizza il nome dei documenti mentre vengono controllati
Se non viene utilizzata lopzione /f il DOS chiede conferma della riparazione
ad ogni errore incontrato.

Il comando diskcopy
Di tanto in tanto sar necessario fare la copia di un dischetto per darlo a un
collega o un amico.
Il comando
C:\> diskcopy a: a:
serve a copiare un dischetto da 3,5 pollici utilizzando lo stesso drive. Il DOS
avvertir prima di inserire il dischetto originale, e quindi di estrarlo per inserire
quello di destinazione. Questo scambio sar ripetuto pi volte.
Se il dischetto di destinazione non formattato, il DOS provveder a farlo con
lo stesso numero di tracce, settori e capacit del dischetto originale.
Prima delloperazione di copiatura al dischetto di destinazione verr attribuito
un numero di serie diverso da quello delloriginale, di modo che il DOS possa
distinguere i due dischetti durante i vari scambi nel drive.
Maxy Guida 140
__________________________________________________________________________________________
Comando diskcopy:
Effettua la copia di un disco
sintassi: diskcopy [drive1:] [drive2:] [opzione]
il drive1: il drive nel quale si trova il dischetto originale
il drive2: il drive nel quale si trova il dischetto destinazione
lopzione principale :
/v verifica la corretta copiatura del disco
Se drive1: e drive2: sono uguali il DOS provvede a richiedere
linserimento alternato del disco originale e di quello di destinazione.
I dischi indicati nel drive1: e nel drive2: devono avere lo stesso formato e
la stessa formattazione.

Il comando sys
Se si vuole creare un disco di sistema sufficiente digitare
C:\> sys a:
che registra i file di sistema nel dischetto del drive A, rendendo possibile
caricare da questo disco, allaccensione del computer, il sistema operativo.
Comando sys:
Rende di sistema un disco di dati
sintassi: sys drive:
il drive: quello nel quale si trova il disco da rendere di sistema

Il comando edit
Per creare un file nel quale scrivere del testo o dei comandi necessario digitare
il comando

C:\> edit nomefile.estensione

Se il file gi esiste verr aperto e visualizzato dalleditor altrimenti leditor sar
vuoto e potrete creare un nuovo file salvando prima di uscire dal programma.
Informatica di Base 141
__________________________________________________________________________________________
Massimiliano Teso
Il comando type
Se vogliamo vedere il contenuto di un file possibile digitare
C:\> type command.com
Il DOS legge il file indicato e ne visualizza il contenuto sullo schermo.
Naturalmente si avr un risultato comprensibile solamente se il file formato da
testo, negli altri casi verranno visualizzati un insieme di simboli incomprensibili.
Un risultato incomprensibile, ad esempio, si ottiene con
C:\> type c:\dos\fdisk.exe
Comando type:
Visualizza su schermo il contenuto di un file.
sintassi: type [drive:] [path] nomefile
il drive: quello in cui si trova il disco con il file da visualizzare
la path quella in cui si trova il file da visualizzare
il nomefile il nome del file da visualizzare.

Il comando find
E possibile cercare un testo allinterno di un file, con il comando FIND.
C:\> find Caro amico C:\lettere\giovanni.doc
cerca le parole Caro amico nel file giovanni.doc contenuto nella
subdirectory C:\lettere e mostra il risultato negativo o positivo della
ricerca.
Comando find:
Esamina il contenuto di un file alla ricerca di un testo.
sintassi: find [opzioni] testo [drive:] [path] nomefile
il testo il testo da cercare, va compreso fra virgolette
il drive: quello in cui si trova il disco con il file da esaminare
la path quella in cui si trova il file da esaminare
il nomefile il nome del file da esaminare
le opzioni principali sono:
/v mostra le righe del file che non contengono il testo cercato
/c mostra il numero di righe che contengono il testo da cercare
/n mostra numerate le righe del file
/i cerca il testo senza differenza fra maiuscolo e minuscolo
Maxy Guida 142
__________________________________________________________________________________________