Professional Documents
Culture Documents
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
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.
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)
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
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)
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
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
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
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:
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
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
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
11
LISTA COMANDI DOS:
APPEND [<DIR1>;<DIR2>;...<DIRn>]
senza argomento: visualizzazione append attuale
assegnazione significa perdita impostazione precedente
CD [nomedrive:][path]
senza parametri, visualizza il direttorio corrente
DEBUG debugger
DEL [nomedrive:][path]nomefile
accetta wildcards
DISKCOMP <sorgente><destinazione>
DISKCOPY [nomedrive1:][nomedrive2:]
ECHO ON/OFF
EDLIN editing
FC <nomefile1> <nomefile2>
visualizzazione differenze
12
KEYB codice_paese (IT, GR, EN)
MD [nomedrive:]path
vecchio nome: MKDIR
PATH [<DIR1>;<DIR2>;...<DIRn>]
senza argomento: visualizzazione path attuale
assegnazione significa perdita impostazione precedente
ricerca secondo ordine di citazione
PRN: stampante
RD [nomedrive:]path
solo se vuoto
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
TREE [nomedrive:][path]
TYPE [nomedrive:][path]nomefile
13
RAPPRESENTAZIONE DELL’INFORMAZIONE
NUMERI
sistema arabico:
-decimale (in base 10): cifre da o a 9
-posizionale (peso in funzione della posizione)
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
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
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
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
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)
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
18
LINGUAGGI DI PROGRAMMAZIONE:
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
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.
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)
JUMPZ IND1 Istruzione di salto condizionato: salto a IND1 solo se il contenuto di A é zero.
Set di istruzioni: insieme delle istruzioni che la macchina puó eseguire direttamente.
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
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.
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.
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.
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.
In una grammatica BNF possono esistere piú regole con la stessa parte sinistra (alternative).
X::={a} nB equivale a X::=B | aX (ricorsivo) equivale a X::=B | aB | aaB ... (a si ripete fino a n
volte)
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).
I file
22
CALCOLO NUMERICO
FUNZIONI TRIGONOMETRICHE
serie di Taylor
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.
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:
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)
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
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:
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
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
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.
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 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