Sei sulla pagina 1di 29

FONDAMENTI DI INFORMATICA - Paola Mello

informatica: scienza della rappresentazione e dell’elaborazione dell’informazione


calcolatore elettronico: strumento per la rappresentazione e l’elaborazione delle informazioni,
strumento in grado di eseguire insiemi di azioni elementari, richieste attraverso
istruzioni, su oggetti (dati) per produrre altri oggetti (risultati).
programmazione: attivitá con cui si predispone l’elaboratore ad eseguire un particolare insieme di azioni su
particolari dati, allo scopo di risolvere un certo problema.
unitá di misura:
segnali elettrici a 2 valori di tensione: Vlow=0, Vhigh=1
bit (binary digit): il suo dominio di variazione é {0,1}
byte = 8 bit
KB (kilobyte) = 210 byte = 1.024 byte » 103 byte
MB (megabyte) = 220 byte = 1.048.576 byte » 106 byte
GB (megabyte) = 230 byte » 109 byte
TB (terabyte) =240 byte » 1012 byte

risoluzione di problemi:
Processo che, dato un problema e individuato un opportuno metodo risolutivo, trasforma i dati iniziali nei
corrispondenti risultati finali, usando una sequenza di azioni elementari.
Esistono classi di problemi per le quali la soluzione automatica non é proponibile: infinite soluzioni, mancanza o
inesistenza di un metodo risolutivo.
funzioni calcolabili: problemi che ammettono un metodo risolutivo.
tecnologie di programmazione: strumenti per la realizzazione di programmi
metodologie di programmazione: metodi per l’utilizzo in modo corretto e efficace delle tecnologie di
programmaz.

ALGORITMO :
l’insieme ordinato delle azioni che risolve un dato problema: sequenza finita di passi effettuabili da una macchina
per risolvere una classe di problemi in tempo finito.
esecutore: macchina astratta in grado di eseguire le azioni specificate dal metodo risolutivo.
proprietá dell’algoritmo: a) eseguibilitá da parte dell’esecutore,
b) non ambiguitá - interpretazione univoca dell’azione da parte dell’esecutore
c) finitezza - il numero totale di azioni da eseguire, per ogni insieme di dati di
ingresso, é finito.
Deve essere
applicabile a qualsiasi insieme di dati di ingresso appartenenti al dominio di definizione dell’algoritmo,
costituito da operazioni appartenenti ad un determinato insieme di operazioni fondamentali (sistema formale).
Proprietá desiderabili: generalitá - terminazione - determinismo - efficienza

linguaggio di programmazione: formalismo che esprime le istruzioni (comandi elementari) che vengono applicate
sui dati.
programma: formulazione testuale di un algoritmo in un linguaggio comprensibile ad un elaboratore.
problema - processo risolutivo - algoritmo - linguaggio di programmazione - programma
variabili: nomi simbolici usati nell’algoritmo per denotare dati.
algoritmi equivalenti: stesso dominio di ingresso, stesso dominio di uscita, in corrispondenza degli stessi valori
nel dominio di ingresso producono gli stessi valori nel dominio di uscita; forniscono lo stesso risultato, ma possono
avere differente efficienza e possono essere profondamente diversi.

DIAGRAMMA DI FLUSSO:
Ogni azione elementare corrisponde ad un simbolo grafico (blocco) diverso. Ogni blocco ha un ramo in ingresso e
uno o piú rami in uscita. Linee orientate collegano i blocchi e specificano la sequenza di esecuzione (flusso del
controllo di esecuzione).
valori numerici - interi e reali
alfanumerici - stringhe
logici - vero/falso
grandezze costanti
variabili
espressioni sequenze di variabili e costanti combinate fra loro mediante operatori.

1
relazionali e logiche con risultato: vero/falso
istruzioni (blocchi fondamentali):
inizio esecuzione (uno solo) - cerchio
ingresso (lettura, read, input) variabili - rettangolo con angolo smussato in alto a destra
assegnamento (variabile := espressione) - rettangolo
condizioni (espressione relazionale o logica: v/f) - ellisse (2 uscite: sí/no)
alternativa: scelta tra due possibili azioni mutuamente esclusive
iterazione (ripetizione): inizializzazione: assegnazione dei valori iniziale alle var.caratt.del ciclo
corpo: esecuzione delle istruzioni fondamentali del ciclo (ripetizione)
modifica delle variabili che controllano l’esecuzione del ciclo
controllo:determina in base al valore delle variabili di controllo se il
ciclo deve essere ripetuto o meno.
uscita (stampa, type, print, output) espressioni - rettangolo con angolo smussato in basso a destra
fine esecuzione (almeno uno) - cerchio

ARCHITETTURA DI UN SISTEMA DI ELABORAZIONE:

SISTEMA INFORMATICO:

hardware - componenti fisici del sistema. tecnologia digitale. codificazione mediante sequenze di bit. linguaggio
macchina.
software - insieme di programmi eseguito dal sistema. eleva il livello di interazione utente- macchina,
avvicinando il linguaggio di interazione al linguaggio naturale.
firmware - componente intermedia tra i primi due (ex. bios): é costituito dal software memorizzato nelle ROM
(codice microprogrammato). strato di microprogrammi scritti su memorie permanenti dai costruttori che agiscono
direttamente al di sopra dello strato hardware.
Hardware
Firmware
Software di base:
Sistema operativo Software di comunicazione
Ambiente di programmazione
Programmi applicativi
Sistema operativo
Insieme di programmi che rendono usabile (operativo) l’elaboratore. Opera direttamente al di sopra di hardware e
firmware. Esplicita qualsiasi operazione di accesso a risorse della macchina implicitamente richiesta dal comando
di utente.
senza OS: sequenze di bit per esprimere istruzioni e dati
con OS: comandi (parole chiave), programmi, dati (interi, reali, caratteri)
Funzioni:
- gestione risorse disponibili
- interpretazione e esecuzione comandi elementari
- stampa, lettura e visualizzazione sul video
- gestione memoria centrale
- organizzazione e gestione memoria di massa
- gestione di sistemi multi-utente.
Classificazione:
in base al numero di utenti:
- mono-utente
- multi-utente
in base al numero di programmi in esecuzione:
- mono-programmato: un programma alla volta
- multi-programmato: gestione della CPU suddividendola tra i vari programmi
MS-DOS: mono-utente, mono-programmato
UNIX: multi-utente, multi-programmato
Win95, OS/2: mono-utente, multiprogrammato.
Software di comunicazione:
programmi che, utilizzando protocolli, consentono la comunicazione tra macchine collegate in rete.
Internet (TCP/IP): telnet: apertura sessione remota
ftp: trasferimento file

2
mail: posta elettronica
Programmi applicativi:
sono scritti in linguaggio di programmazione di alto livello (quindi portabilitá)
risoluzione di problemi specifici: word processor: elaborazione testi
fogli elettronici (spreadsheet): gestione tablle e grafici
data base: gestione archivi
Ambiente di programmazione:
programmi che consentono scrittura, verifica, esecuzione di nuovi programmi (fasi di sviluppo).
Sviluppo di un programma:
traduttore: traduce il programma scritto in un linguaggio di programmazione in linguaggio macchina.
conversione del programma sorgente in un programma eseguibile.
- compilatore: accetta in ingresso l’intero programma e produce in uscita la rappresentazione dell’intero
programma in linguaggio macchina (maggiore velocitá).
- interprete: lo schema viene attraversato per ogni singola istruzione che compone il programma; ad ogni
attivazione dell’interprete su una particolare istruzione, segue l’immediata esecuzione.
Fasi di sviluppo:
a) scelta del metodo risolutivo, rappresentazione mediante un algoritmo.
b) scrittura (editing): rappresentazione dell’algoritmo nel linguaggio di programmazione: programma sorgente.
c) compilazione: traduzione tramite il compilatore in linguaggio macchina: programma eseguibile.
d) debugging: analisi del corretto funzionamento mediante debugger (esecuzione controllata)
- esecuzione di una istruzione per volta
- visualizzazione dei valori di variabili
- punti di arresto (breakpoint)
- rilevazione di errori a tempo di esecuzione
e) esecuzione: risoluzione del problema.

MODELLO DI VON NEUMANN


quattro elementi funzionali fondamentali:
1) CPU - unitá centrale di elaborazione
2) memory - memoria centrale
3) periferiche
4) bus di sistema.

1) CPU (Central Processing Unit)

Esegue e controlla l’elaboorazione. Contiene i dispositivi elettronici per acquisire, interpretare e eseguire in
sequenza le istruzioni dei programmi. Dati e istruzioni vengono trasferiti da e verso la memoria centrale.
È attualmente realizzata da un unico circuito integrato (chip): il microprocessore.
Blocchi componenti:

ALU (unitá aritmetico-logica): esegue le operazioni elementari (aritmetiche e logiche) necessarie per
l’esecuzione delle istruzioni.
a) caricamento degli operandi nei registri A e B
b) attivazione dell’ALU tramite un codice operativo
inviato dalla CU che specifica il tipo di operazione.
c) caricamento in A del risultato dell’operazione
eseguita d)PSW riporta indicazioni sul risultato(riporto,
overflow)

CU (unitá di controllo): controlla e coordina l’attivitá della CPU. Trasferimento e decodifica delle
istruzioni dalla memoria centrale ai registri della CPU.
- fetch: reperisce dalla memoria centrale le istruzioni di un programma. Provoca il trasferimento
e la decodifica della prossima istruzione da eseguire (il cui indirizzo é nel registro PC).
- interpretazione
- execute: esecuzione. L’elaboratore esegue l’istruzione caricata nel registro IR.
ripeti
FETCH di una istruzione
EXECUTE dell’istruzione
finché istruzione = HALT oppure ERRORE

3
Clock permette il sincronismo delle operazioni.

Registri: locazioni utilizzate per memorizzare dati, istruzioni, indirizzi all’interno della CPU. Accesso
veloce.
RD - registro dati: trasferimento dati da e verso la memoria centrale.
RI - registro indirizzi: memorizza l’indirizzo della cella corrente nella memoria centrale.
PC (progam counter) - registro contatore: contiene l’indirizzo della prossima istruzione da
eseguire.
IR (instruction register)-registro istruzione corrente: contiene l’istruzione attualmente in
esecuzione
registri accumulatori (di lavoro): contengono operandi e risultati delle operazioni svolte
nell’ALU.
RINT - registro interruzioni: stato periferiche.
PSW (program status word): informazioni sul risultato dell’ultima operazione dell’ALU
(overflow, zero, carry, segno).
Indirizzamento:
Se RI é lungo N bit, si possono indirizzare 2 N celle di memoria. Indirizzata una cella attraverso RI, si
possono eseguire operazioni di lettura e scrittura da e verso RD.
lettura: trasferisce il contenuto della cella di memoria indirizzata dal RI nel RD.
scrittura: trasferisce il contenuto del RD nella cella di memoria indirizzata dal RI.
Le operazioni vengono coordinate dalla CU.

2) Memoria centrale
Contiene istruzioni e dati relativi al programma in esecuzione, ha dimensioni limitate, é volatile (le informazioni
memorizzate vengono perse allo spegnimento del computer), é l’unico dispositivo con cui puó comunicare la CPU.
Struttura: sequenza di celle di memoria, ciascuna contenente un sequenza di bit chiamata parola (word) di
dimensione prefissata. Ogni parola é caratterizzata da un indirizzo.
Taccesso = 100 nsec
Capacitá: 1-256 MB
parola di memoria (word): dimensione dipende dal cacolatore (8, 16, 32, 64 bit).
capacitá: massima quantitá di byte memorizzabili.
La CPU seleziona una determinata cella di memoria mediante l’indirizzo contenuto nel RI.

RAM (Random Access Memory): memoria ad accesso casuale, su di essa si svolgono operazioni di lettura
e scrittura.
ROM (Read Only Memory): memoria a sola lettura, non volatile e non scrivibile, in essa vengono
contenuti i dati e programmi per inizializzare il sistema.
PROM (Programmable ROM): viene scritta una sola volta mediante apparecchi chiamati programmatori
di ROM.
EPROM (Erasable-Programmable ROM): si cancella sottoponendola a raggi ultavioletti.

3) Periferiche
scambio di informazioni fra l’elaboratore e l’esterno (I/O, memoria secondaria)

-MEMORIA SECONDARIA (memoria di massa): memorizzazione di grandi quantitá di informazioni in


modo persistente (sopravvivono all’esecuzione dei programmi), dimensioni elevate ma accesso meno
rapido rispetto alla memoria centrale.
2 classi fondamentali: - ad accesso sequenziale: ex. nastri.
- ad accesso diretto: ex. dischi.
dispositivi magnetici: l’informazione é presente in memoria come stato di polarizzazione magnetica
(positivo o negativo - codifica binaria).

nastri magnetici:
Capacitá bobina: 20-400 MB
Capacitá cassetta: 200-5000 MB
Fetucce di materiale magnetizzabile arrotolate su supporti circolari o in cassette.
Sulla fetuccia sono tracciate 9 piste orizzontali parallele: 1 byte di informazione + 1 bit di paritá.
Organizzazione dei dati in zone contigue dette record (registrazioni).
Tutte le elaborazioni sono sequenziali (quindi lettura lenta)

4
Funzione di backup (copia di riserva).
densitá in bpi (bit per inch).

dischi magnetici:
Taccesso = 10-20 msec
Capacitá: 80-2000 MB
Piatti di materiale magnetizzabile con due superfici che ruotano attorno ad un perno centrale.
Ciascuna superficie ha una serie di tracce (cerchi concentrici) e viene suddivisa in settori (spicchi).
Tutte le tracce equidistanti dal centro formano un cilindro. La testina si sposta longitudinalmente
lungo le tracce. I dati sono scritti occupando posizioni successive lungo le tracce. Corrispondo ad
uno stato di polarizzazione (+ o -) del materiale dei dischi. Ogni blocco di I/O é selezionabile
mediante la terna dell’indirizzo: <superficie, traccia, settore>
I/O: a) seek (spostamento della testina verso la traccia richiesta)
b) attesa affinché il settore arrivi sotto la testina
c) trasferimento dei dati in o da memoria centrale tramite il processore DMA (Direct
Memory Access).

dischetti:
Taccesso = 100 msec
Capacitá: 0.7-2 MB
Portatili, trasferimento dati tra computer diversi.
Unico disco con due superfici.
Diametro: 3.5, 5.25, 8 pollici
Formattazione dal OS che li suddivide in tracce e settori e ne determina densitá e capacitá.
Capacitá: 360 KB, 720 KB, 1.44 MB

dischi ottici (CD):


Capacitá: 600-4000 MB

-TERMINALI: tastiera + video, alfanumerici o grafici.


interfaccie di Input/Output:
-tastiera: dispositivo di ingresso che consente al calcolatore di acquisire dati dall’utente. I dati vengono
immessi come sequenze di caratteri.
-mouse: dispositivo di ingresso, integrazione o sostituzione della tastiera.
-video: dispositivo di uscita che consente la visualizzazione di dati. Parametri: numero di colori
rappresentabili, dimensione in pollici, risoluzione (no. di punti per pollice quadrato), capacitá grafica.
-stampante: dispositivo di uscita che produce la visualizzazione su carta dei dati. Parametri: velocitá (byte,
caratteri o pagine al secondo), risoluzione (no. di punti per pollice quadrato), capacitá grafica. rumorositá,
set di caratteri (font) stampabili. Tecnologie: aghi, margherita, getto d’inchiostro, laser, trasferimento
termico.

4) Bus di sistema
Collegamento degli elementi funzionali, supporto fisico per la trasmissione dei dati fra i vari elementi. Solo se la
dimensione del bus dati corrisponde a quella della parola, si puó trasmettere in parallelo, altrimenti occorrono piú
trasferimenti.
- interconnette la CPU, la memoria e le interfaccie verso le periferiche(I/O, memoria di massa)
- collega due unitá funzionali alla volta: una trasmette, l’altra riceve. Il trasferimento avviene sotto il controllo della
CU
data bus (bus dati): bidirezionale. Trasmette dati dalla memoria al registro dati e viceversa.
address bus (bus indirizzi): unidirezionale. Trasmette il contenuto del RI alla memoria. Viene selezionata
una cella di memoria per successive operazioni di lettura/scrittura.
command bus (bus comandi): unidirezionale.

SISTEMI DI CALCOLO
PC PERSONAL COMPUTER
hard disk (disco rigido) + floppy disk estraibile.
organizzazione dell’informazione in archivi (file) caratterizzati da un nome.
Classi di PC in base al processore (Intel, Macintosh,...)
IBM-compatibile: processore Intel 80x86: 8086, 80286, 80386, 80486, 80586 (=pentium)
Parametri: frequenza del clock, dimensione RAM, velocitá BUS.

5
Unitá di misura delle prestazione: MIPS (migliaia di istruzioni al secondo)
Mflops (migliaia di operazioni floating point per secondo)
WORKSTATION
capacitá di supportare piú attivitá contemporanee, prestazioni piú elevate dei PC.
MINI-CALCOLATORI
macchine capaci di servire decine di utenti contemporaneamente, collegati tramite terminale.
SUPER-CALCOLATORI
molti processori e grandi memorie di massa (centinaia o migliaia di terminali).
RETI DI CALCOLATORI
possibilitá di connettere assieme vari calcolatori anche di tipo diverso.
reti locali: collegano elaboratori fisicamente vicini - condivisione di risorse.
reti geografiche: collegano elaboratori distribuiti su aree geografiche estese (anche intercontinentali) tramite
protocolli di collegamento.

6
MS DOS (MICROSOFT DISK OPERATING SYSTEM)

Sistema operativo per PC Intel iAPX-86


- struttura gerarchica delle directory,
- dispositivi visti in modo omogeneo ai file
- possibilitá di ridirezione e di collegamento tra i programmi (pipes)

Interazione utente-macchina:
- comandi DOS (Job Control Language, JCL)
- programmi applicativi
- programmi di utente: equiparati ai comandi esterno (.EXE e .BAT)

Fasi di sviluppo:
problema - algoritmo - editing - programma sorgente - compilazione programma eseguibile- debugging -esecuzione

Componenti dell’ambiente di programmazione:


editor: costruzione di file che contengono testi (sequenze di caratteri). tramite esso si scrive il programma sorgente.
compilatore: traduce il programma sorgente in un programma oggetto, direttamente eseguibile dal calcolatore.
linker (collegatore, correlatore): se il programma é suddiviso in moduli (oggetto) separati compilati separamente,
provvede a collegarli per formare un unico programma eseguibile.
debugger (evidenziatore di bugs, errori): serve per scoprire e eliminare errori non rilevati durante la compilazione.

Disk Drive: dispositivo di interfaccia per un disco (floppy, rigido), individuati univocamente attraverso lettere:
standard: A, B floppy disk drive; C drive del disco rigido
Drive di default: quello riferito preferenzialmente dal sistema nella fase di bootstrap (di solito un floppy)
Drive corrente: il drive relativo al disco che viene considerato in tutte le operazioni.
Prompt: simbolo mostrato all’utente per indicare che si attende l’immissione di un comando.
standard: nomedrive:\>
File: unitá logica di memorizzazione sui dispositivi di memoria di massa (per l’utente)
attributi: nome, dimensione (in byte), modalitá di accesso, data
nome: <prefisso>.<estensione> prefisso: stringa di 8 caratteri max, estensione: stringa di 3 caratteri max.
Estensioni standard: .EXE file contente codice eseguibile
.BAT file contente una sequenza di comando (file comandi, batch file)
.COM file contente codice eseguibile (da mantenere residente nella memory)
Ogni file é costituito da una sequenza di caratteri organizzati in linee.
tipi di file: testo, dati, programmi eseguibili
metacaratteri: \¦ / < > * ? vietati per i nomi dei file.
wildcards (caratteri JOLLY): * qualsiasi sequenza (anche nulla) di caratteri permessi
? un qualsiasi carattere singolo
FILE SYSTEM
struttura logica all’interno della quale vengono organizzati i file nella memoria secondaria.
MS-DOS: struttura gerarchica ad albero, suddivisioni in direttori.
Direttorio: insieme di file (e eventualmente sottodirettori).
Albero: quadrato-direttorio, cerchio-file.
-nodi, direttori
-foglie, files
-rami, appartenza
Direttorio radice (\)
Direttorio corrente (.): posizione attuale dell’utente all’interno della gerarchia.
Direttorio padre (..)
Pathname: cammino (assoluto, se riferito alla radice, relativo, se riferito al direttorio corrente)
[nomedrive:][path]prefisso.estensione identificazione file

File comandi (Batch files)


<prefisso>.BAT il contenuto del file viene sottoposto all’interprete comandi.
L’invocazione di un file comandi produce l’esecuzione sequenziale di tutti i comandi costituenti, nell’ordine
testuale. I comandi possono contenere ridirezione e piping.

File di Configurazione del Sistema:

7
AUTOEXEC.BAT: file comandi che contiene la sequenza di comandi da eseguire al termine della fase di
bootstrap (tipicamente, sono comandi di configurazione del sistema).
CONFIG.SYS: contiene l’elenco dei driver da caricare (viene riservato dello spazio nella memory); viene
letto prima di AUTOEXEC.BAT.
Direttive: device carica un driver installabile nel OS
buffers imposta la quantitá di memoria che MS-DOS riserva per il trasferimento delle
informazioni tra dischi e memory
file imposta il numero di file che MS-DOS consente di aprire contemporaneamente
ex device=c:\mouse\mouse.sys
buffers=30
files=30

Linguaggio comandi:
Attraverso di esso sono accessibili le utilitá del OS (shell), viene direttamente interpretato da un processore dei
comandi. L’ambiente comandi si attivo dopo il caricamento (bootstrap) del OS che risiede sul disco di sistema.
bootstrap:
Dopo l’accensione della macchina viene caricato in memoria centrale ed eseguito il codice di inizializzazione
residente su ROM:
a) attivazione e test dei componenti hardware
b) caricamento da disco del sistema operativo ed esecuzione di IO.SYS, MSDOS.SYS e COMMAND.COM
- lettura dei parametri di configurazione: CONFIG.SYS
- esecuzione della sequenza di comandi contenuta in AUTOEXEC.BAT
- attivazione del processore comandi: COMMAND.COM

Processore comandi:
macchina virtuale basata su:
- gestore della console
- interprete dei comandi da eseguire (parser)
- caricatore dei comandi (loader)
Comandi interni: parte del OS caricata in memory (integrati nel COMMAND.COM), tempo di latenza minimo:
copy, dir , del,...
Comandi esterni: caricato dal disco all’occorrenza (file .COM e .EXE):
print, format,...
Schema di funzionamento del processore comandi di MS-DOS:
repeat
(fase di bootstrap)
if < disco di sistema in A: > then
< carica il S.O. dal disco in A:>
else
if < disco rigido > then < carica da quello, default C:>
else < azioni alternative >;
( se c'è un disco di sistema presente nella drive A: lo si carica; altrimenti in caso di disco rigido si carica da quello, oppure azioni alternative: per esempio
errore o esecuzione del BASIC caricato da ROM)
(ambiente comandi JCL)
repeat
< attesa di un comando dalla console>
if < comando interno > then
case < comando > of
DIR : < esegui l'immagine di DIR >;
COPY: < esegui I'immagine di COPY >;
...
end
else
< ricerca del comando nel direttorio di default >
if < trovato file eseguibile > then
( si ricerca un file di estensione .COM o .EXE come estensione di default )
< caricamento ed esecuzione del comando >
else
if < trovato file comandi > then
(altrimenti si ricerca un file comandi con estensione di default .BAT)
else < segnala errore >;
( un <CTRL><BREAK> o un <CTRL>-C causa la terminazione del comando correntemente in esecuzione ed un ritorno al command processor )
until < re-inizializzazione: tasti <CTRL> <ALT><DEL> >
until false ( cioè si ripete per sempre )

Comandi MS-DOS

a) comandi di gestione dischi e file


b) comandi di interazione con le risorse del sistema
c) comandi di utilitá e ausilio per lo sviluppo di un programma
SINTASSI: <comando> [<opzioni>] [<argomenti>]

8
dispositivi che godono di omogeneitá con i file (operazioni simili supportate):
CON: console (video, tastiera)
ex copy file.dat con:
ex copy con: file.dat
PRN: stampante
ex copy file.dat prn:

ridirezione dei comandi


É possibile sostituire i canali standard di input e output con file o dispositivi.
filtri: SORT, FIND, MORE
standard input: tastiera
standard output: video
Metacaratteri: < ridirezione in ingresso
> ridirezione in uscita
>> ridirezione in uscita in modo append (aggiunta alla fine di un file preesistente)
ex dir b: >file.dat
ex type pippo >lpt1 (stampa in foreground)
ex type pluto >>pippo

piping di comandi |
concatenamento sequenziale di comandi (devono essere filtri) in modo che l’output del comando che precede
coincide con l’input del comando che segue (realizzazione tramite file temporanei). Forma di ridirezione.
ex DIR | SORT | MORE
ex DIR A: | FIND “.COM“ | SORT | MORE
ex TYPE elenco.dat | FIND “Rossi“ | SORT >LPT1
ex FIND “1993“ <iscrizioni.dat | SORT >LPT1
ex FIND “1993“ <iscrizioni.dat | SORT >iscritti.93

a) comandi di gestione dischi e file

formattazione: operazione che traduce il supporto magnetico grezzo in una forma strutturata suddividendo la
superficie mediante tracce e settori.
FORMAT nomedrive: [/S] [/V] [/F:b] [/U] formattazione
/S crea disco di sistema, copiando IO.SYS, MSDOS.SYS, COMMAND.COM
/V attribuisce una etichetta al disco da formattare
/F:b b specifica la capacitá del disco da formattare (ex. 360, 720,...)
/U rende inefficace il futuro recupero dei dati presenti prima della formattazione
UNFORMAT nomedrive: recupero dati presenti prima della formattazione
contenuto del direttorio:
DIR [nomedrive:][path] [/P][/W]
/P lista di informazioni fornita a videate
/W visualizzazione dei soli nomi
(accetta wildcards)
cambio direttorio:
CD [nomedrive:][path]
senza parametri, visualizza il direttorio corrente
crea sottodirettorio:
MD [nomedrive:]path
vecchio nome: MKDIR
distruzione sottodirettorio:
RD [nomedrive:]path
solo se vuoto
visualizzazione struttura gerarchica:
TREE [nomedrive:][path]
visualizzazione contenuto file:
TYPE [nomedrive:][path]nomefile
copia file:
COPY <file_sorgente> <file_destinazione>

9
concatenamento file:
COPY <file1> + <file2> [+...] [<file_destinazione>]
senza destinazione, si aggiunge al file1
copia file e sottodirettori:
XCOPY <path_sorgente> <path_destinazione> [/S] [/E] [/D:d]
/S file + subdirectory non vuoti
/E file + subdirectory
/D:d file modificati dopo la data d specificata.
cambiamento nome file:
REN [nomedrive1:][path]nomefile1 nomefile2
cancellazione file:
DEL [nomedrive:][path]nomefile
accetta wildcards
confronto file:
FC <nomefile1> <nomefile2>
visualizzazione differenze
COMP <nomefile1> <nomefile2>
posizione e valori esadecimali dei caratteri diversi
stampa file: (in background)
PRINT [<pathname>] [/D:p] [/C] [/T] [/P]
/D:p seleziona la stampante p
/C sospende la stampa
/T termina la stampa (svuota la coda)
/P aggiunta di file nella coda di stampa
senza nomefile, mostra la situazione della coda di stampa
accetta wildcards
TYPE [<pathname>] >>LPT1
cambio modalitá di accesso:
ATTRIB [+R][-R][+A] [-A] <pathname>
+R imposta attributo di sola lettura
-R cancella attributo di sola lettura
+A imposta attributo di archiviazione (rende possibile la compressione)
-A cancella attributo di archiviazione
senza parametri visualizza gli attributi attuali
copia fisica di dischi uguali:
DISKCOPY [nomedrive1:][nomedrive2:]
stato di allocazione disco (o frammentazione file):
CHKDSK <pathname> [/F]
/F ricompatta in file i byte frammentati sul disco e recupera le allocazioni perse
confronto di due dischi:
DISKCOMP <sorgente><destinazione>
salvataggio dei dati:
BACKUP <path_sorg> <drive_dest> [/S][/A][/M]
/S con subdirectories
/A aggiunge sul drive_dest senza cancellare file pre-esistenti
/M solo file modificati dopo l’ultimo backup (backup incrementale)
ripristino dati salvati con backup:
RESTORE <drive_sorg> <dest> [/S][/M][/N]
/S ripristino sottodirectories
/M ripristino dei soli file modificati dopo il backup
/N ripristino dei soli file non piú esistenti alla destinazione

b) comandi di interazione con le risorse del sistema

visualizzazione on/off dei caratteri di ingresso (forniti da console):


ECHO ON/OFF
pulizia dello schermo:
CLS
visualizzazione data:
DATE

10
visualizzazione ora:
TIME
caricamento programma gestione tastiera:
KEYB codice_paese (IT, GR, EN)
stato dei dispositivi:
MODE LPT1: r,s,B
r lunghezza riga (in caratteri)
s spaziatura (in pollici)
B ritentare la scrittura in caso di non risposta
variabili di sistema:
SET [<variabile>=<valore>]
valore: stringa
variabili: PATH (cammino preferenziale per la ricerca dei file eseguibili);
APPEND (cammino preferenziale per la ricerca dei file di dati);
PROMPT
MIODIR
senza argomenti: visualizza valori correnti
ex set miodir=a:\dagmar
ex set prompt=Dagmar$p$g
cammino preferenziale per eseguibili:
ricerca di comandi, file eseguibili, file comandi (.BAT)
PATH [<DIR1>;<DIR2>;...<DIRn>]
senza argomento: visualizzazione path attuale
assegnazione significa perdita impostazione precedente
ricerca secondo ordine di citazione
cammino preferenziale per dati:
APPEND [<DIR1>;<DIR2>;...<DIRn>]
senza argomento: visualizzazione append attuale
assegnazione significa perdita impostazione precedente
comandi filtro:
(filtro = comando che accetta input da: tastiera, file, dispositivi,...)
SORT < <input> [/R] ordina alfabeticamente le linee di un file ASCII avuto per input
/R ordinamento inverso
FIND “<stringa>“ < <input> ricerca una <stringa> in un file di input.
MORE < <input> esegue una visualizzazione a pagine dell’input

c) comandi di utilitá e ausilio per lo sviluppo di un programma


Per ottenere un file eseguibile (.EXE o .COM) si passa attraverso:
-editing
-compilazione
-linking
-loading (loader, RTS: run time system)
(evt. -debugging)
editing:
EDLIN
debugging:
DEBUG

11
LISTA COMANDI DOS:

APPEND [<DIR1>;<DIR2>;...<DIRn>]
senza argomento: visualizzazione append attuale
assegnazione significa perdita impostazione precedente

ATTRIB [+R][-R][+A] [-A] <pathname>


+R imposta attributo di sola lettura
-R cancella attributo di sola lettura
+A imposta attributo di archiviazione (rende possibile la compressione)
-A cancella attributo di archiviazione
senza parametri visualizza gli attributi attuali

BACKUP <path_sorg> <drive_dest> [/S][/A][/M]


/S con subdirectories
/A aggiunge sul drive_dest senza cancellare file pre-esistenti
/M solo file modificati dopo l’ultimo backup (backup incrementale)

CD [nomedrive:][path]
senza parametri, visualizza il direttorio corrente

CHKDSK <pathname> [/F]


/F ricompatta in file i byte frammentati sul disco e recupera le allocazioni perse

CLS pulizia schermo

COMP <nomefile1> <nomefile2>


posizione e valori esadecimali dei caratteri diversi

CON: console (video, tastiera)

COPY <file_sorgente> <file destinazione>

COPY <file1> + <file2> [+...] [<file_destinazione>]


senza destinazione, si aggiunge al file1

DATE visualizzazione data

DEBUG debugger

DEL [nomedrive:][path]nomefile
accetta wildcards

DIR [nomedrive:][path] [/P][/W]


/P lista di informazioni fornita a videate
/W visualizzazione dei soli nomi
(accetta wildcards)

DISKCOMP <sorgente><destinazione>

DISKCOPY [nomedrive1:][nomedrive2:]

ECHO ON/OFF

EDLIN editing

FC <nomefile1> <nomefile2>
visualizzazione differenze

FIND “<stringa>“ < <input> ricerca una <stringa> in un file di input.

FORMAT nomedrive: [/S] [/V] [/F:b] [/U] formattazione


/S crea disco di sistema, copiando IO.SYS, MSDOS.SYS, COMMAND.COM
/V attribuisce una etichetta al disco da formattare
/F:b b specifica la capacitá del disco da formattare (ex. 360, 720,...)
/U rende inefficace il futuro recupero dei dati presenti prima della formattazione

12
KEYB codice_paese (IT, GR, EN)

MD [nomedrive:]path
vecchio nome: MKDIR

MODE LPT1: r,s,B


r lunghezza riga (in caratteri)
s spaziatura (in pollici)
B ritentare la scrittura in caso di non risposta

MORE < <input> esegue una visualizzazione a pagine dell’input

PATH [<DIR1>;<DIR2>;...<DIRn>]
senza argomento: visualizzazione path attuale
assegnazione significa perdita impostazione precedente
ricerca secondo ordine di citazione

PRINT [<pathname>] [/D:p] [/C] [/T] [/P]


/D:p seleziona la stampante p
/C sospende la stampa
/T termina la stampa (svuota la coda)
/P aggiunta di file nella coda di stampa
senza nomefile, mostra la situazione della coda di stampa
accetta wildcards

PRN: stampante

RD [nomedrive:]path
solo se vuoto

REN [nomedrive1:][path]nomefile1 nomefile2

RESTORE <drive_sorg> <dest> [/S][/M][/N]


/S ripristino sottodirectories
/M ripristino dei soli file modificati dopo il backup
/N ripristino dei soli file non piú esistenti alla destinazione

SET [<variabile>=<valore>]
valore: stringa
variabili: PATH (cammino preferenziale per la ricerca dei file eseguibili);
APPEND (cammino preferenziale per la ricerca dei file di dati);
PROMPT
MIODIR
senza argomenti: visualizza valori correnti

SORT < <input> [/R] ordina alfabeticamente le linee di un file ASCII avuto per input
/R ordinamento inverso

TIME visualizzazione ora

TREE [nomedrive:][path]

TYPE [nomedrive:][path]nomefile

TYPE [<pathname>] >>LPT1


stampa

UNFORMAT nomedrive: recupero dati presenti prima della formattazione

XCOPY <path_sorgente> <path_destinazione> [/S] [/E] [/D:d]


/S file + subdirectory non vuoti
/E file + subdirectory
/D:d file modificati dopo la data d specificata.

13
RAPPRESENTAZIONE DELL’INFORMAZIONE

informazione: testi, numeri, immagini, suoni,...


tecnologia digitale: tensione elettrica Vlow/Vhigh forma binaria (sequenza di bi): 0/1
-tensione elettrica (alta/bassa)
-differente stato di polarizzazione magnetica (pos/neg)
-luce/buio
unitá di informazione: bit

NUMERI

sistema arabico:
-decimale (in base 10): cifre da o a 9
-posizionale (peso in funzione della posizione)

Sistemi di numerazione posizionale: <a,b>


base b: numero degli elementi che compongono l’alfabeto
alfabeto a: insieme delle cifre disponibili per esprimere i numeri.
Ad ogni cifra corrisponde un valore tra 0 e (b-1)
Numerazione in base p:
a={0,1,2,...,p-1}
b=p
Con n cifre in base p é possibile rappresentare p n numeri naturali diversi da 0 a p n-1.

Sistema di numerazione:
decimale binario ottale esadecimale
0 0000 00 0
1 0001 01 1
2 0010 02 2
3 0011 03 3
4 0100 04 4
5 0101 05 5
6 0110 06 6
7 0111 07 7
8 1000 10 8
9 1001 11 9
10 1010 12 A
11 1011 13 B
12 1100 14 C
13 1101 15 D
14 1110 16 E
15 1111 17 F

NUMERI NATURALI

Conversione da base p a base 10:


numero generico Np=anan-1...a 1a0; ai  a, i=0,...n
conversione in base decimale: N10=anpn+an-1pn-1+...+a 1p1+a0
(numeri naturali)
ex b=2, N2=101001011: N10=1B 28+ 0B 27+ 1B 26+ 0B 25+ 0B 24+ 1B 23+ 0B 22+ 1B 2+
1=256+64+8+2+1=(331)10
ex (B7F)16=11B 162+7B 16+15=2816+112+15=(2943)10

Conversione da base 10 a base p:


a) N10 / p ® quoziente Q, resto R
b) (R)10 in (R)p conversione di R da base 10 in base p ® ...R3R2R1
c) se Q=0 fine altrimenti N=Q ritorna ad a)
(numeri naturali)
ex (331)10=(x)2: N R ex (44)10=(x)16: N R

14
331 1 (331/2=165+1 R) 44 12=C (44/16=2+12 R)
165 1 (165/2=82+1 R) 2 2 (2/16=0+2 R)
82 0 (82/2=41+0 R) 0 Þ (44)10=(2C)16
41 1 (41/2=20+1 R)
20 0 (20/2=10+0 R)
10 0 (10/2=5+0 R)
5 1 (5/2=2+1 R)
2 0 (2/2=1+0 R)
1 1 (1/2=0+1 R)
0 Þ (331)10=(101001011)2

Conversione da base 2 a base 8:


8=23 Þ scomposizione del numero binario di triple, conversione delle triple.
(numeri naturali)
ex (101100)2=(x)8: (101 100)2 = (54)8

Conversione da base 2 a base 16:


16=24 Þ scomposizione del numero binario di quadruple, conversione delle
quadruple.
(numeri naturali)
ex (101100)2=(x)16: (0010 1100)2 = (2C)16

Somma in base 2:
Per sommare due numeri positivi di lunghezza K servono K+1 posti, altrimenti si verifica un overflow (trabocco).
(numeri naturali)
ex 11011 +
00110
100001

Sottrazione in base 2:
(numeri naturali)
ex 1100 -
0011
1001

Moltiplicazione in base 2:
(numeri naturali)
ex 1011B 1101
1011
1011
10001111

Divisione in base 2:
(numeri naturali)
ex 101101 / 11 = 1111
101
100
011
00

NUMERI RELATIVI

Rappresentazione con modulo e segno:


Tramite m cifre in base 2 é possibile rappresentare 2 m-1 numeri diversi, da -(2m-1-1) a +(2m-1-1)
primo bit: bit di segno = (0 se positivo, 1 se negativo), gli altri bit indicano il modulo.
(numeri interi)
ex parola di 5 bit: +0=(00000)2; -0=(10000)2; +5=(00101)2; -10=(11010)2
parola di 16 bit: +13=(0000000000001101) 2; -13=(1000000000001101)2 ;

15
Rappresentazione in complemento alla base:
Si fa il complemento solo dei numeri negativi!
Tramite m cifre in base 2 é possibile rappresentare 2 m numeri diversi, da -(2m-1) a +(2m-1-1)
numero X in base b di n cifre Þ complemento alla base= bn-X
(in binario: l’ultimo 1 e tutto alla sua destra rimane, il resto viene invertito)
(in binario: tutte le cifre vengono invertite, e poi si somma 1)
(bn=1 con n volte 0)
In binario, i numeri negativi hanno sempre il bit significativo = 1, e per i numeri positivi é =0.
In binario, si ha una sola rappresentazione dello 0 (fare il complemento a 2 di 0 provoca overflow).
ex n=5: si possono rappresentare i numeri da -16 a +15 (da 10000 a 01111)
ex X=64, b=10, n=2 Þ -X=100-X=36
ex X=01011, n=5, b=2 Þ -X=100000-01011=10101

Rappresentazione in complemento alla base - 1:


Si fa il complemento solo dei numeri negativi!
numero X in base b di n cifre Þ complemento alla base=(bn-1)-X
(in binario: tutte le cifre vengono invertite)
(bn-1=n volte 1)
In binario, i numeri negativi hanno sempre il bit significativo = 1, e per i numeri positivi é =0.
In binario, si hanno due rappresentazione dello 0.
ex X=01011, n=5, b=2 Þ -X=11111-01011=10100

Binario: somma (in complemento a 2):


si sommano i numeri per colonna incluso il bit del segno, ignorando l’eventuale riporto sul bit del segno.
ex 0 000101 (+5) 1 111011 (-5) 1 111011 (-5)
1 111000 (-8) 0 001000 (+8) 1 111000 (-8)

1 111101 (-3) (1)0 100011 (+3) (1)1 110011 (-13)

Moltiplicazione e divisione tra numeri relativi:


utilizzare i numeri in valore assoluto, determinando il segno in base al segno degli operandi.
L’applicazione delle operazioni direttamente sui numeri in complemento é in generale scorretta.
ex (-3)B (+3): -11B 11
11
-00001001=11110111

Shift verso sinistra:


Lo scorrimento di k posizioni verso sinistra equivale a moltiplicare il numero per b k.
(inserimento di uno zero nella posizione liberatasi a destra).
b=base

Shift verso destra:


Lo scorrimento di k posizioni verso destra equivale a moltiplicare il numero per b -k.
(inserimento di uno zero nella posizione liberatasi a sinistra).
b=base

NUMERI FRAZIONARI (reali compresi fra 0 e 1):


0<N<1
a={0,1,2,...,p-1}
b=p
Conversione da base p a base 10:
numero generico Np=0,a-1a-2a-3...a -n; ai  a, i=0,...n
conversione in base decimale: N10=a-1p-1+a-2p-2+...+a -np-n
(conversione di a-1a-2a-3...a -n in base 10, poi divisione per pn)
(numeri frazionari)
ex (0,1011)2=(2-1+2-3+2-4)10=(0,5+0,125+0,0625)10=(0,6875)10

16
Conversione da base 10 a base p:
a) N10 B p ® I,F (I parte intera, F parte frazionaria)
b) (I)10 in (I)p conversione di I da base 10 in base p ® 0,I1I2I3...
c) se F=0 fine altrimenti N=f ritorna ad a)
(numeri frazionari)
ex (0,875)10=(x)2 0 875 B 2 (0,875)10=(x)8 0 875 B 8 (0,875)10=(x)16 0 875 B
16
1 750 7 000 Þ x=0,7 E=14 000
Þ x=0,E
1 500
1 000 Þ x=0,111

NUMERI REALI:
numero generico R=I,F (I parte intera, F parte frazionaria)

Rappresentazione in virgola fissa:


Un numero prefissato di cifre viene dedicato alle parti intera e frazionaria.
parte intera Ip=anan-1...a 1a0; ai  a, i=0,...n
(n cifre riservate) I10=anpn+an-1pn-1+...+a 1p1+a0
parte frazionaria Np=0,a-1a-2a-3...a -m; ai  a, i=0,...m
(m cifre riservate) N10=a-1p-1+a-2p-2+...+a -mp-m
R=I,F
Precisazione scarsa per numeri prossimi allo zero.

Rappresentazione in virgola mobile (floating point):


Si associa ad un numero reale r due numeri:
m= mantissa
n = esponente (o caratteristica)
r = m B bn
b = base utilizzata per la notazione esponenziale (in generale, b diversa dalla base del sistema di numerazione,
p¹b)
Mantissa: numero frazionario con segno. Il suo valore é compreso in ]-1,+1[
Mantissa normalizzata: La prima cifra dopo la virgola é diversa da 0. Il suo valore assoluto é compreso in ]1/p,1[
Esponente: numero intero con segno.
ex (1100,1)2; m=0,110012; n=1002

Rappresentazione binaria in virgola mobile in 32 bit: (1a modalitá)


a) 1 bit di segno della mantissa (0=pos, 1=neg)
b) 1 bit di segno dell’esponente (0=pos, 1=neg)
c) 8 bit valore assoluto dell’esponente
d) 22 bit mantissa (cifra a destra della virgola)
a | b | cccccccc | dddddddddddddddddddddd
ex r=0,1101012 B 21012 0 | 0 | 00000101 | 1101010000000000000000
ex r=0,1012 B 2-12 0 | 1 | 00000001 | 1010000000000000000000

Rappresentazione binaria in virgola mobile in 32 bit: (2a modalitá)


invece di riservare un bit per il segno dell’esponente, in alcuni casi si adotta la rappresentazione in complemento a
2 per l’esponente.
a) 1 bit di segno della mantissa (0=pos, 1=neg)
b) 8 bit valore dell’esponente (in compl. a 2)
c) 23 bit mantissa (cifra a destra della virgola)
a | bbbbbbbb |ccccccccccccccccccccccc
ex r=0,1012 B 2-12 0 | 11111111 | 1010000000000000000000

Precisione nella rappresentazione dei numeri reali:


maggior numero di bit per la mantissa - maggiore precisione.
maggior numero di bit per l’esponente - maggior ordine di grandezza.
precisione=numero di cifre in base 10 rappresentabili con la mantissa.

17
ex mantissa di 20 bit Þ 220-1=1048576 » 106 numeri rappresentabili Þ p=6

Troncamento e arrotondamento:
ex 10bit mantissa, 5bit esponente:
r=1029 10=0,10000000101B 21011
con troncamento: 0 | 01011 | 1000000010 =(1028) 10
con arrotondamento: 0 | 01011 | 1000000011 =(1030) 10
r=0,8 10=0,1100 B 20
con troncamento/arrotondamento: 0 | 00000 | 1100110011 =(0,7998) 10

Valori massimi e minimi rappresentabili:


Dipende dall’esponente e dal metodo di rappresentazione.
esponente di n bit Þmax numero reale = 1 B 2 elevato a (2n-1)
min numero reale = (0,1) 2 B 2 elevato a - (2 n-
1)
(valori assoluti)
ex espon. di 10 bit: max= 21023 »10307; min= (0,1)2 B 2-1023 » 0,5 B 10-307

Accuratezza della macchina:


Il piú piccolo numero che, aggiunto a 1,0 produce un risultato diverso da 1,0.
Per n=32 é circa 3 B 10-8.

Somma di numeri reali:


A<B
a) aumento esponente di A, spostando mantissa di A a destra
fino a quando esp di A = esp di B
b) somma mantisse
c) normalizzazione del risultato.
® errori di incolonnamento: ogni volta che si sposta la mantissa a destra, viene persa l’ultima cifra!
errori di cancellazione: durante normalizzazione, la mantissa viene completata a destra con degli zeri!

ex base 10, 5bit per mantissa normalizzata:


A=0,32999 B 10-2; B=0,12465 B 101
a) A=0,00032 B 101
b) A+B=0,12497 B 101
errore di incolonnamento: A+B=0,0032999+1,2465=1,2497999
errore=1,2497999-1,2497=0,0000999=0,999 B 10-4

Moltiplicazione di numeri reali:


moltiplicazione mantisse, somma esponenti, normalizzazione:
mR=0,m 1 B 0,m 2 eR=e1 + e2 R= mR B eR

CODIFICA DEI CARATTERI

codice ASCII (American Standard Code for Information Interchange):


7 bit (128 caratteri) + 1 bit di paritá: (la sequenza di 1 deve essere pari)
codice ASCII esteso: 8 bit (256 caratteri)

CODIFICA DELLE IMMAGINI

bit map (sequenze binarie)


matrice di punti (pixel): ad ogni punto é associato un numero (colore o livello di grigio)
punti per pollici (dpi: dot per inch), 1 pollice=2.54 cm
palette: numero di colori
standard di codifica: TIFF (Tagged Image File Format)

18
LINGUAGGI DI PROGRAMMAZIONE:

programma: rappresentazione di un algoritmo in un particolare linguaggio di programmazione.


sintassi: insieme di regole formali per la composizione di programmi nel linguaggio.
frasi: combinazioni tra le parole chiave (keywords) per costruire istruzioni.
semantica: insieme dei significati da attribuire alle frasi sintatticamente corrette costruite nel linguaggio.

LINGUAGGIO MACCHINA (per macchine von Neumann)


direttamente eseguibile dall’elaboratore, senza traduttore.

Istruzioni:
- codice operativo: specifica l’azione da compiere.
- operandi: individuano le celle di memoria a cui si riferiscono le azioni.
n bit riservati per il codice operativo e m bit riservati per l’indirizzamento degli operandi.
insieme di istruzioni: al piú 2n istruzioni diverse.
memoria indirizzabile: al piú 2 m celle di memoria diverse.

Registri:
RI registro indirizzi
RD registro dati
PC program counter (prossima istruzione)
IR instruction register (istruzione corrente)
A,B registri accumulatori

Esecuzione istruzione:
1) fetch: acquisizione dalla memory
2) decode: interpretazione del codice operativo
3) execute: esecuzione

FETCH: caricamento istruzione


PC ® RI
read(memory, RI) ® RD
RD ® IR
PC + 1 ® PC
read trasferisce dalla memory (indirizzo RI) a RD.

READ IND1 caricamento di dati da una periferica in una cella di memoria IND1 (LETTURA)
RDP ® RD
op(IR) ® RI
write(memory, RI,RD)
RDP registro dati della periferica
op(IR) seleziona l’operando dell’istruzione contenuta in IR.
write trasferisce il contenuto di RD in memory (indirizzo RI)

WRITE IND1 caricamento di dati da una cella di memoria IND1 su una periferica (SCRITTURA)
op(IR) ® RI
read(memory, RI,RD)
RD ® RDP
RDP registro dati della periferica
op(IR) seleziona l’operando dell’istruzione contenuta in IR.
read trasferisce dalla memory (indirizzo RI) a RD.

LOADA IND1 caricamento di una cella di memoria IND1 in un registro A


op(IR) ® RI
read(memory, RI,RD)
RD ® A
op(IR) seleziona l’operando dell’istruzione contenuta in IR.

19
read trasferisce dalla memory (indirizzo RI) a RD.

STOREA IND1 caricamento del contenuto di un registro A in una cella di memoria IND1
A ® RD
op(IR) ® RI
write(memory, RI,RD)
op(IR) seleziona l’operando dell’istruzione contenuta in IR.
write trasferisce il contenuto di RD in memory (indirizzo RI)

Istruzioni aritmetiche: ADD, DIF, MUL, DIV

JUMP IND1 Istruzione di salto incondizionato: la prossima istruzione é in IND1


op(IR) ® PC

JUMPZ IND1 Istruzione di salto condizionato: salto a IND1 solo se il contenuto di A é zero.

NOP attesa: fa trascorrere un ciclo senza svolgere nessuna operazione

HALT fine: termina l’esecuzione

Set di istruzioni: insieme delle istruzioni che la macchina puó eseguire direttamente.

ex: VAX della Digital 304! 14 istruzioni (4 bit)

op_code istruzione
0000 LOADA
0001 LOADB
0010 STOREA
0011 STOREB
0100 READ
0101 WRITE
0110 ADD
0111 DIF
1000 MUL
1001 DIV
1010 JUMP
1011 JUMPZ
1100 NOP
1101 HALT

Macchine RISC (Reduced Instruction Set Computer):


ridotto set di istruzioni - formati regolari - prestazioni migliori

LINGUAGGIO ASSEMBLER
- Le istruzioni corrispondono univocamente a quelle macchina, ma vengono espresse tramite keywords.
- I riferimenti alle celle di memoria sono fatti tramite identificatori.
- Gli identificatori rappresentano dati (costanti o variabili) oppure etichette (istruzioni).
- Un assemblatore traduce il programma in linguaggio macchina.

LINGUAGGI DI ALTO LIVELLO


- indipendenza dalla specifica macchina
- traduzione: interpretazione (ex BASIC) o compilazione (C, Fortran, Pascal)

Sintassi:
V alfabeto (vocabolario, lessico): insieme dei simboli con cui si costruiscono i programmi (caratteri, keywords)
V* universo linguistico su V: insieme di tutte le sequenze finite di lunghezza arbitraria di elementi di V. Gli
elementi di V* sone le frasi o stringhe di V.
L linguaggio sull’alfabeto V: é un sottoinsieme di V*.

20
Grammatica formale:
nozione matematica che consente di esprimere in modo rigoroso la sintassi del linguaggio.

Grammatica BNF (Backus-Naur Form)


insieme di 4 elementi:
- un alfabeto terminale V
- un alfabeto non terminale N
- un insieme finito di regole (produzioni) P
- un assioma (simbolo iniziale) S

Left-most (derivazione)
Data una grammatica G e due stringhe b, g di elementi di (NÈV)*, si dice che g deriva direttamente da b
(b®g), se le stringhe si possono decomporre in: b=hAd, g=had ed esiste la produzione A::=a.

Si dice che g deriva da b se b=b0®b1®b2®...®bn =g

Data una grammatica G, si dice linguaggio generato da G, LG, l’insieme delle frasi di V derivabili, applicando le
produzioni, a partire dal simbolo iniziale S.

Le frasi di un linguaggio di programmazione vengono dette programmi di tale linguaggio.

In una grammatica BNF possono esistere piú regole con la stessa parte sinistra (alternative).

EBNF Extended BNF

X::=[a]B equivale a X::=B | aB

X::={a} nB equivale a X::=B | aX (ricorsivo) equivale a X::=B | aB | aaB ... (a si ripete fino a n
volte)

X::=(a | b) D | c equivale a X::=aD | bD | c

FUNZIONI E PROCEDURE
vantaggi: - riutilizzo del codice
- leggibilitá
- sviluppo top-down
- testo breve

astrazioni funzionali: definizione di nuove istruzioni che agiscono sui dati utilizzati dal programma, nascondendo
la sequenza delle operazioni effettivamente eseguite dalla macchina:
--> sottoprogrammi: costrutti per la definizione
meccanismi di chiamata
definizione: identificatore
codice eseguito dal sottoprogramma
modalitá di comunicazione (parametri formali)
chiamata: viene sospesa l’esecuzione del programma che contiene l’invocazione
il controllo passa al sottoprogramma
parametri formali: quelli definiti nel sottoprogramma
parametri attuali: valori (o variabili) specificati all’atto della chiamata.
(corrispondono in numero, posizione, tipo)
esempio:
#include <stdio.h>
int f(int a, float b, char c)
{
/*definizione della funzione f*/
}
main ()
{
int p;
float q;

21
char r;
f(p,q,r);
}
PROCEDURA
astrazione della istruzione, istruzione non primitiva attivabile in qualsiasi punto del programma.
FUNZIONE
astrazione dell’operatore (funzione o predicato) su un tipo di dati (primitivo o definito dall’utente), attivabile
durante la valutazione di una qualsiasi espressione, restituisce un valore.
esempio:
{
leggi(N); /*procedura*/
fatt=fattoriale(n);/*funzione*/
};
In C, i sottoprogrammi sono soltanto funzioni; le procedure si realizzano come funzioni che non restituiscono alcun
valore (void).

Tecniche di legame dei parametri:


- legame per valore: C, Pascal
- legame per indirizzo o per riferimento: Pascal, Fortran
- legame per valore-risultato: non presente in C
P.. sottoprogramma
pf.. parametro formale
pa.. parametro attuale
Legame per valore: (fornimento dei valori di ingresso al sottoprogramma)
Nella locazione viene scritto il valore assunto dal parametro attuale all’atto della chiamata.
chiamata di P:
- allocazione di una cella di memoria associata a pf
- valutazione pa, copia di pa in pf
esecuzione di P:
- pf viene trattata come una variabile locale in P
- pa rimane invariato
- pf nuovo valore
Legame per indirizzo:
Nella locazione viene scritto l’indirizzo della variabile che compare come parametro attuale all’atto della chiamata.
- allocazione di una cella di memoria associata a pf
- calcolo indirizzo di pa (pa deve essere una variabile)
- assegnazione dell’indirizzo di pa a pf
esecuzione di P:
- pf viene trattata come una variabile locale in P
- pa puó essere modificato, utilizzando come riferimento il valore di pf.

I file

file = unitá logica di memorizzazione dei dati su memoria di massa.


- memorizzazione persistente,
- non limitata dalle dimensioni della memoria centrale.
É una sequenza di componenti omogenee (record logici).
Sono gestiti dal OS sottostante.

Organizzazione degli archivi


dispositivi di memoria di massa:
-ad accesso sequenziale: per accedere a un blocco occorre scandire tutti quelli che precedono (ex nastri).
-ad accesso diretto: ciascun blocco é indirizzabile (ex dischi).
obiettivi:
-memorizzazione compatta di molti dati su dispositivi di capacitá limitata
-capacitá di recuperare in modo efficiente i dati.
Metodo base per l’organizzazione di strutture dati:
-sequenziale
-ad accesso diretto (o casuale)
-ad indice
A ogni struttura corrispondono diversi metodi di elaborazione.

22
CALCOLO NUMERICO

risoluzione di modelli matematici complessi con l’uso di metodo di calcolo approssimato.


- quando non esistono algoritmi esatti
- quando gli algoritmi esatti non sono efficienti (tempo, memoria): alto costo computazionale.
tecniche: - discretizzazione di domini continui in dominii discreti
- metodi iterativi: approssimazioni successive; =precisione desiderata.

FUNZIONI TRIGONOMETRICHE
serie di Taylor

RADICI DELLE EQUAZIONI


ricerca delle (eventuali) radici reali di una funzione definita e continua in un intervallo dell’asse X
continuitá: se f(x) assume in a e b valori di segno oppost, esiste almeno un valore c (o un numero dispari di
punti) compreso fra a e b in cui f(x)=0.

metodo della bisezione --> intervallo [a,b] < 2.

approssimazione della funzione con la retta che passa per i punti:


(a,sign(f(a)))
(b,sign(f(b)))

corde, secanti, Newton-Raphson

c zero di f appartenente a [a,b]


x0 arbitraria approssimazione di c in [a,b]
approssimazione della funzione con una retta passante per (x 0,f(x0)) la cui equazione é:
y=K0(x-x0)+f(x0)
Ki é il coefficiente angolare
l’intersezione tra la retta e l’asse X genera x 1, la nuova approssimazione.
ad ogni iterazione:
K0(x-xi)+f(xi)=0
xi é lo zero ottenuto all’iterazione precedente.
1) CORDE (regula falsi)
Ki=( f(xi)-f(xlim) ) / (xi-xlim)
xa,xb appartenenti a [a,b] con segno opposto
retta per f(xa) e f(xb) intersezione con asse X x1
xlim= xa se sign(f(xa))!=sign(f(xi))
xb se sign(f(xa))=sign(f(xi))

2) SECANTI
Ki=( f(xi)-f(xi-1) ) / (xi-xi-1)
x0 appartenente a [a,b]
si tracci la retta per f(x0) e f(xa) se sign(f(x0))!=sign(f(xa))
per f(x0) e f(xb) se sign(f(x0))!=sign(f(xb))
intersezione della retta con l’asse X --> x 1
questo metodo puó non convergere!
in caso di convergenza é piú efficiente delle corde.

2) TANGENTI (Newton-Raphson)
K=f ’(xi)
il coefficiente angolare é la derivata della funzioni nel punto x i
É necessario che la funzione sia derivabile nell’intervallo.
questo metodo puó non convergere!
condizione: la derivata seconda deve essere contigua e deve mantenere segno costante nell’intervallo:
f(X)*f ’(X)> 0

23
é la condizione sufficiente per la convergenza del metodo.

soluzione di sistemi lineari

equazione lineare
a1x1+a2x2+...+a NxN=b
soluzione: (x1,...,x N)

sistema lineare
a11x1+a12xy+...+a 1NxN=b1
...
aM1x1+aM2xy+...+a MNxN=bM
caso M=N: soluzione unica
M<N soluzione non unica
M>N sistema indeterminato oppure alcune equazioni sono dipendenti da altre.
Rappresentazione compatta: MATRICI
A* X = B
matrice completa:
a11 a12 ... a1N b1
a21 ... a2N b2
... ...
aN1 ... aNN bN
soluzione unica se det(A)¹0 (matrice non singolare)

RISOLUZIONE
- metodi diretti: soluzione esatta numero operazioni finito e prefissato, dipende da
dim.
- metodi indiretti: (iterativi) soluzione approssimata conviene se la matrice é sparsa (tanto el
nulli).

metodi diretti:

- eliminazione: si ricava una incognita in una equazione e la si sostituisce nelle rimanenti:


- dim = dim-1
- determinazione di un valore --> tutti gli altri
- equivalenza: 2 sist.lin. nello stesso numero di incognite che hanno le stesso soluzioni sono equivalenti:
- scambio a 2 a 2 delle equazioini
- moltiplicazione delle equazioni per una costante ¹0
- somma di una equazione moltiplicata per una costante alle altre equazioni.

METODO DI GAUSS
- triangolarizzazione della matrice dei coefficienti
- eliminazione all’indietro --> calcolo della soluzione
triangolazione:
- eliminazione di X1 dalle righe 2,3,...,n :
riga i = riga i + riga 1 * m i1 mi1= - ai1 /
a11
- ripetizione del procedimento (n-1 volte):
eliminazione di Xk : --> matrice triangolare superiore
mik= - aik(k)/ akk(k) (i=k+1,...,n)
aij(K+1)=aij(K) - mikakj(k) (i=K+1,...,n) (j=k+1,...,n+1)
soluzione:
XN = bN(k) / aNN(k)
Xi = ( bi(k) - S j aij(k) * Xj ) / aii(k) ( j=i+1,...,N )
numero di calcoli proporzionale a n 3/3

[ metodo di Jordan:

24
ad ogni passo k l’eliminazione viene effettuata sulle righe sia prima che dopo la k-esima. Dopo n passi si ottiene
un
sistema diagonale. É computazionalmente piú costoso del metodo di Gauss (n 3/2) ]

pivoting:
problema: se akk=0 la triangolazione fallisce. (div/0)
soluzione: scambio dell’equazione k con l’equazione r. (a rk¹0)

|akk|<<1 amplificazione della propagazione di errori (valore assoluto di a kk vicino a zero)


soluzione: scambio dell’equazione k con l’equazione r.
scelta di r t.c. ark=max{aik} (i=k,...,N) pivoting parziale (ricerca sulla colonna della
sottomatrice)
ark=max{aij} (i=k,...,N) (j=k,...,N) pivoting completo (ricerca sulle righe e
colonne della sottomatrice, evt. scambio di incognite se j¹k)
pivoting completo: procedimento costoso.
pivoting parziale: generalmente soddisfacente.

scaling:
problema: se tutti gli elementi di A hanno valore vicino allo zero
gli elementi di A hanno valori molto diversi tra loro (ordine di grandezza)
- normalizzazione degli elementi di ciascuna riga assumendo come valore di riferimento quello del pivot della riga
di
(dimensione) di=max| aij | ( j=1,...,N)
- al passo k-esimo si assume come equazione pivotale (fra le n-k rimanenti) la r-esima, in modo tale che
| ark | / dr = maxi=k,..,N | aik | / di

Decomposizione LU in una matrice triangolare alta e una matrice triangolare bassa


AX=B --> LUX=B L.. triangolare inferiore
A=LU U.. triangolare superiore
sistema: LY=b forward substitution (sostituzione in avanti)
UX=Y backward substitution (sostituzione indietro)
aij=a i1b 1j+ a i2b 2j+...+ a iNb Nj
a di L b di U
semplificazioni (molti elementi di L e U sono nulli):
i<j aij=a i1b 1j+ a i2b 2j+...+ a iib ij

i=j aii=a i1b 1i+ a i2b 2i+...+ a iib ii


i>j aij=a i1b 1j+ a i2b 2j+...+ a ijb jj

Se poniamo aii=1 arbitrariamente, gli elementi di L e U si possono mappare in un unica matrice.


algoritmo di Crout
Si pone aii=1 (i=1,...,N);
 j=1,..,N  i=1,..,j bij=aij-Skaikbkj (k=1,...,i-1)
 i=j+1,..,N aij=(1/bjj)( aij-Skaikbkj) (k=1,...,j-1)
- considera una colonna per volta della matrice LU
- ad ogni passo utilizza valori calcolati precedentemente
- problema: instabilitá --> necessita pivoting.

matrice inversa
A matrice quadrata di ordine N non singolare
A-1 matrice inversa di A (quadrata di ordine N) t.c.
A-1A=I
I matrice identica di ordine N
utilizzato per risolvere piú sistemi lineari con la stessa matrice dei coefficienti:
AX=b’
AX=b’’
...

25
AX=b --> X=A-1b
qij elementi di A-1
 j=1,...,N  k=1,..,N
Siaikqkj = 0 se i¹k (i=1,...,N)
1 se i=k
risoluzione di N² equazioni lineari in N² incognite.
basta risolvere N sistemi lineari ognuno di essi ottenuto per un valore di j.
ciascun sistema lineare di n equazioni in n incognite rappresenta la colonna j di A -1.

metodi iterativi:

alternativa ai metodi diretti quando la matrice é di ordine elevato o sparsa.


non alterano mai la matrice iniziale.
esempio:
- ricavo da ogni funzione un diversa incognita in funzione delle altre.
- si prende una soluzione di tentativo e poi itera fino a trovare una soluzione soddisfacente.

metodo di Jacobi (delle sostituzioni simultanee)


A matrice quadrata di dimensione N,
aii¹0  i
b vettore
a partire di un vettore tentativo X(0) si costruisce la successione X(k):
 i=1,...,N Xi(k+1) = 1/aii (bi - S jaijXj(k) ) j=1,...,N; j¹i
- il metodo richiede due vettori xold (incognite all’iterazione precedente) e
xnew (incognite all’iterazione corrente).
- alla fine di ogni ciclo si pone xnew --> xold.
- capacitá di parallelismo: le componenti sono costruite in modo indipendente.
- il metodo puó non convergere (dipende dai valori del primo tentativo).

metodo di Gauss-Seidel
appena si calcola un valore, lo si utilizza.
se converge, converge piú rapidamente del metodo di Jacobi.
il metodo richiede un solo vettore X
 i=1,...,N Xi(k+1) = 1/aii (bi - S j=1,...,i-1aijXj(k+1) - S j=i+1,...,NaijXj(k))

INTERPOLAZIONE

tabella di valori per una funzione f:


Xi-->f(Xi) i=1,...,N (punti distinti)
 n>0 esiste e é unico il polinomio
Pn-1(X) detto polinomio di interpolazione t.c.
- il grado di Pn-1(X) é al piú n-1
- Pn-1(X)=f(Xi)
piú alto il numero dei punti conosciuti, piú alto il grado del polinomio, migliore l’approssimazione.
teorema di Weierstrass:
ogni funzione continua f(X) , continua in un intervallo (a,b) , puó essere rappresentata in quell’intervallo con la
precisione richiesta mediante un polinomio
P(X) t.c. | f(X) - P(X) | <=   >0
Pn(X)=a0 + a1X + a2X² +...+ anXn
n+1 coefficienti
- imponiamo al polinomio di passare per gli n+1 punti dati --> sistema:
f(X0)= Pn(X0)=a0 + a1X0 + a2X0² +...+ anX0n
...
f(Xn)= Pn(Xn)=a0 + a1Xn + a2Xn² +...+ anXnn
questo sistema ha determinante ¹0, quindi l’unica soluzione fornisce i coefficienti del polinomio.

polinomio di interpolazione di Lagrange:

26
Pn(X)=S j=0,nLj(X) f(Xj)
Lj sono polinomi di grado <= n
condizione di passaggio per i punti dati: Pn(Xi)=f(Xi) , quindi:
Li(Xi) = 1
Li(Xj) = 0  j¹i

Lj(X)=P j (X- Xi) / (Xi - Xj)


(j=0,...,n j¹i)
metodo computazionalmente costoso. circa n² operazioni. conveniente per il calcolo di pochi valori di X.

metodo di Newton (delle differenze divise)


metodo meno costoso.
- aggiunta di un’ulteriore osservazione Xk al metodo di Lagrange.
- idea: approssimazione f con un polinomio P k(X) di grado <=k che passa nei punti (X i ,f(Xi) ) i=0,...,k
Pn(X)= a0 + a1(X-X0)+ a2(X-X0)(X-X1)+...+ an(X-X0)...(X-Xn-1)
differenza divisa di ordine 1: f [X0,X1] = ( f(X1) - f(X0) ) / (X1-X0)
differenza divisa di ordine 2: f [X0,X1,X2] = ( f[X2,X1] - f[X0,X1] ) / (X2-X0)
...
differenza divisa di ordine n: f [X0,X1,...,X n] = ( f[X1,X2,...,X n] - f[X0,X1,...,X n-1] ) / (Xn-X0) =
f [X0,X1,...,X n] = S k=0,..,n ( f(Xk) / P j=0,..,n (Xk-Xj) j¹k
la differenza divisa é invariante rispetto alle permutazioni degli argomenti.
P(Xi)=f(Xi) polinomio di grado i interpolante f(X) per X=X 0,X1,...,X i (per i nodi).
a0=f(X)
a1=f [X0,X1]
a2=f[X0,X1,X1]
...
an=f[X0,X1,...,X n]
f(X)=f(X0) + (X-X0) f[X,X0]
f(X)=Pn(X) + En(X)
En(X)= (X-X0)...(X-Xn) f [X,X0,X1,...,X n]
- la costruzione del polinomio richiede n² sottrazioni e n²/2 divisioni.
- costruzione di Pn+1(X)= Pn(X) +(X-X0)...(X-Xn) f [X,X0,X1,...,X n+1]

Metodo dei minimi quadrati


- risoluzione di sistemi lineari rettangolari (numero di incognite < numero di equazioni)
- determinazione dell’espressione analitica di una curva passante per i punti dati.
- conviene se il numero di punti dati é molto grande: il polinomio approssimante é di grado m<<n
- conviene se il valore dei punti é approssimato
- utilizzo del peso wi di una misura sperimentale (X i,Yi)
funzione approssimante:
y=f(X)=a0 +a1X + a2X2 +...+ amXm
- sostituzione degli n punti in questa funzione --> sistema lineare di n equazioni lineari in m+1 incognite.
- ogni equazione é soddisfatta a meno di un residuo Ri.
 i=1,...,n
yi=f(Xi)=a0 + a1Xi + a2Xi² +...+ amXim + Ri
Ri = yi - (a0 + a1Xi + a2Xi² +...+ amXim)
principio dei minimi quadrati:
Il polinomio approssimante ottimo degli n punti dati é quello che rende minima la somma pesata dei quadrati
dei residui.
- ricerca del minimo della funzione:
f(a0, a1,..., am)=w1R1²+w2R2²+...+wnRn²
- il minimo si ha per quei valori di a j che
annullano le m+1 derivate parziali di f(a 0, a1,...,
am) fatte rispetto ai parametri a j (j=1,...,m).
sistema lineare di m+1 equazioni in m+1 incognite a j:
(df/daj) = 2 {w1R1(dR1/daj) + w2R2(dR2/daj) +...+ wnRn(dRn/daj) } = 0 (j=1,...,m)

27
(dRi/dak) = - Xik k=1,...,m i=1,...,n ==>
Si=1,..,nwiRiXik=0  k=0,...,m dove Ri=Yi - Sj=0,..,majXj ==>
 k=0,...,m
sistema di m+1 equazioni in m+1 incognite a j:
S i=1,..,nwiXikYi = S i=1,..,nwiXikS j=0,..,majXj
risolvendo il sistema (m+1)(m+1) (se il determinante é ¹0 ) si ottengono i coefficienti a j del polinomio
approssimante.

tecnica del best fit


determinazione del grado m del polinomio approssimante gli n punti dati.
- si parte da una retta e si determinano i parametri coi minimi quadrati;
- poi una parabola, una cubica,...(polinomi di grado crescente), fino a raggiungere l’approssimazione richiesta.
scarto quadratico medio: (S segnato, valutazione del grado di approssimazione)

S = sqrt( (S i=1,..nwiRi²) / (n - (m+1)) )


n.. numero dei punti dati
(n-(m+1)).. gradi di libertá del problema
tanto minore S, tanto migliore l’approssimazione.
- si prova con m=0,1,2,... e ci si arresta quando S aumenta oppure la diminzione é minore di un valore fissato.

INTEGRAZIONE NUMERICA
calcolo del valore di un integrale definito di una funzione f mediante un insieme discreto di valori noti di f
nell’intervallo dato.
- tecniche numeriche: se l’integrale della funzione é difficilmente calcolabile
se la funzione é nota solo per punti.
data: funzione f(X) integrabile in [a,b]
calcolo: I=xf(x)dx (da a a b)
- suddivisione di [a,b] in n subintervalli di ampiezza h = (b-a)/n
- successione di valori: a=X 0 , X1 , .. Xn=b Xi=Xi-1 + h (i=1,...,n)
- in ogni intervallo i-esimo [Xi-1 , Xi ] si approssima f(X) con una funzione Fi(X).

metodo rettangolare
Fi(X)=f(Xi) i=1,2,...,n
- area del rettangolo di base h ed altezza f(Xi)
- in ogni sub-intervallo, le funzioni approssimanti la f integranda sono delle costanti:
Ii=f(Xi)h i=1,2,...,n
I = h S i=1,..,nf(Xi)

metodo dei trapezi (Bezout)


Fi(X) = retta passante per i punti di coordinate (X i-1,f(Xi-1)) e (Xi,f(Xi))
Fi(X) = f(Xi-1) + ( (f(Xi-1) - f(Xi)/h) (X-Xi-1)
Ii = (h/2) ( f(Xi-1) + f(Xi) i=1,...,n

I = h { (f(X0) + f(Xn))/2 + S i=1,..,n-1f(Xi) }

metodo di Simpson
si consideri n pari.
-  i pari (i=0,2,4,...,n-2) si considera la coppia di intervalli
[Xi,Xi+1] e [Xi+1,Xi+2]
- si approssima la funzione in ogni sub-intervallo con la parabola passante per i 3 punti di coordinate
(Xi,f(Xi) e (Xi+1,f(Xi+1)) e (Xi+2,f(Xi+2))
Fi(X) = aiX² + biX + ci
- imponendo Fi(X)=f(Xk) per k=i, i+1, i+2 si ottengono ai, bi, ci (sistema lineare di 3 equazioni in 3
incognite)
formula di integrazione di Simpson:
I = (h/3) S i=0,..,nKi f(Xi)

28
dove Ki = 1 se i=0 o i=n
2 se i pari
4 se i dispari

29