Info Appunti Miei
Info Appunti Miei
Info Appunti Miei
PROGRAMMAZIONE
La programmazione richede:
PROGRAMMAZIONE “C”
Uno dei linguaggi piu’ utilizzati.
PREGI: DIFETTI:
-Semplicita
ALGORITMO E CALCOLATORE
-PROBLEMA: classe di domande omogenee alle quali è possibile dare risposta mediante una procedura
uniforme
RISOLUZIONE DI UN PROBLEMA
Un problema classe di domande omogenee a cui e’ possibile rispondere in modo uniforme.Istanza puo’
essere visto come una domanda del specifica del problema.Fasi:
-Identificazione del problema
PASSO DI COMPUTAZIONE: ogni singolo passo elementare che un esecutore compie durante l’esecuzione di
un algoritmo
CARATTERISTICHE DI UN ALGORITMO
-Finitezza: ha un numero finito di istruzioni
-Univoco: Ogni istruzione deve essere univocamente interpretabile
-Effettivita’: Deve esistere un compilatore capace di eseguire le istruzioni in un tempo finito
-Correttezza: Calcola correttamente la funzione
-Efficienza: Poco utilizzo delle risorse per completare il problema
-Terminazione: L’esecutore termina in un numero finito di passi di computazione
ALGORITMO
Un algoritmo, e’ una procedura usata per la risoluzione del problema. Viene specificato mediante
una serie di piccole istruzioni.
Un algoritmo e’ composto da Variabili + Istruzioni. Un algoritmo e’ parametrico
Variabili hanno:
-nome e un valore
-localizzazione di memoria: per salvare il valore in memoria
-compaiono in istruzioni di assegnamento ed espressioni
Istruzioni(3 tipi):
-I/O
-aritmetico logiche: che servono per l’elaborazione dei dati
-controllo: che verificano le istruzioni dell’algoritmo
ISTRUZIONI ARITMETICO-LOGICHE
Aritmetiche:
- OPERANDI: variabili e costanti (si ipotizza di considerare solo numeri interi)
Relazionali:
-Operandi: variabili, costanti, espressioni aritmetiche
-Operatori: operatori relazionali di uguaglianza (==), diversità (!=), minoranza (<) e maggioranza
(>) fra numeri
ALGEBRA DI BOOLE
L’algebra di Boole è lo strumento matematico su cui si fonda anche il funzionamento dei circuiti digitali
(circuito aperto/chiuso).
SCHEMA A BLOCCHI
Anche chiamati diagrammi a blocchi, schemi a blocchi e flowchart, sono un formalismo grafico per
descrivere gli algoritmi. Ci sono simboli per indicare inizio e fine, operazioni di ingresso/uscita (I/O),
elaborazioni, condizioni, sottoprogrammi. 2 Proprieta:
-Correttezza: l’algoritmo risolve il problema per cui e’ stato progettato (-> efficacia)
SB GENERICI E SBS
-Il Teorema di Boem-Jacopini dice che: per ogni SB non strutturato esiste uno SBS debolmente equivalente
-SBS permette di risolvere ogni problema solubile (dal punto di vista funzionale la potenza di SBS=SB)
-SB non permette di rappresentare ogni possibile algoritmo(dal punto di vista algoritmico la potenza di
SBS<SB)
-Potenza Computazionale= SBS ammette almeno un algoritmo per ogni problema solubile.
-Potenza Espressiva= SBS ammette, permette di rappresentare, ogni possibile algoritmo per ogni problema
solubile
Due schemi a blocchi sono debolmente equivalenti se danno stessi risultati per ogni input (=risolvono lo
stesso problema).
Due schemi a blocchi sono fortemente equivalenti se danno la stessa sequenza di risultati per ogni input
2 PARTE
CODICE
Il calcolatore è il sistema che elabora l’informazione. L’informazione è un entità astratta, il supporto è
qualcosa di fisico. l’informazione, per esistere, ha bisogno di un supporto. Informazione es. traccia audio,
Supporto es. CD ROM.
Bit (Binary Digit= Misura la quantita’ delle informazioni. Una cifra binaria puo’ avere 2 configurazioni(1/0)
Il calcolatore distingue tra solamente 2 simboli (0/1). C’e’ un insieme di regole che:
Usate per indicare le grandezze dei dischi e per il Usate per il calcolo della misura dei file
networking(misura di download)
CODIFICA DI DATI NON NUMERICI
-ASCII (American Standard Code for Information
Interchange): Prevede successioni di 7 bit ed include anche la
codifica di caratteri speciali (CANC, ESC, INVIO, ecc.)
-Latin-1: Estensione di ASCII basato su successioni di 8 bit
con i quali è possibile rappresentare lettere accentate
-UNICODE: Basato su successioni di 16 bit che contiene
simboli di altri alfabeti, altri simboli (matematici, valute, ecc.)
e simboli utili per la scrittura in lingue orientali
-Codifica con modulo e segno: Dove il primo bit sta ad indicare il segno, e i restanti il valore assoluto
Reali:
in cui si vanno a memorizzare :
La IEEE(Institute of Electrical and Electronic Engineers) stabilisce il numero di bit per la mantissa e per
l’esponente, ed abbiamo 2 modelli:
-Numeri a precisione singola:32 bit -> 1 bit per il segno, 23 per la mantissa e 8 per l’esponente
-Numeri a precisione doppia:64 bit -> 1 bit per il segno, 52 per la mantissa e 11 per l’esponente
-CPU(Centra Process Unit)=Un unita centrale di elaborazione, che carica le istruzioni dei programmi in
memoria, le interpreta e manipola i dati di conseguenza
Bus= Un insieme di fili con cui i dispositivi possono essere collegati. Per evitare conflitti tra i dati in
comunicazione nel bus, la CPU fa dà controllore
Esistono 3 tipi di Bus:
I pregi sono:
-standardizzabilita’.
I difetti sono:
-la memoria presenta sul bus dati il dato della parola indirizzata
L’Alu e’ collegata a RA,RB e RC e anche le loro operazioni sono comandate dall’unita di controllo. I registri
servono per avere sottomano i dati che devono essere lavorati. Non ci sono collegamenti diretti tra la
memoria e la ALU. Ci sono diversi registri:
PSW(Processor Status): Verifica lo stato della CPU. Vengono utilizzati i bit per controllare
-Ra, RC, RB: Indicano i risultati dell’operazione eseguita
CICLO MACCHINA
1 Fase di FETCH: Acquisisce un istruzione del programma
3 Fase di EXECUTE: Manda i comandi alla ALU( per la selezione dell’operazione), ai registri della CPU( per la
lettura/scrittura) e al bus per accedere alla memoria.
PERIODO DI CLOCK
E’ un segnale che fornisce una scadenza temporale che quando scatta i dispositivi collegati devono agire. Le
CPU hanno un frequenza[Ghz] piu’ e’ alta e piu’ e’ veloce, pero’ non ci dobbiamo basare solo su questo per
capire se una CPU e’ realmente piu’ veloce dell’altra o meno, perche’ dato che il linguaggio macchina delle
Cpu lo sceglie il costruttore una Cpu potrebbe svolgere meno istruzioni di un’altra pur avendo una
frequenza maggiore. Per calcolare quanto ci mette una CPU a fare delle operazioni usiamo:
-Elapsed time: il tempo che passa dall’inizio di un programma alla sua fine contando anche i tempi morti
come l’attesa di input e altri tempi d’attesa
-Cpu time: Indica il tempo che ci impiega la Cpu per eseguire un programma. Ed e’ dato da (CPI x periodo di
clock). CPI= (cicli di clock x istruzione)
Abbiamo l’assemblatore che traduce da linguaggio assembly a quello macchina utilizzando la Tabella dei
codici (per Comparare i bit con le operazioni) e la Tabella dei simboli(Compara le variabili e le etichette con
gli indirizzi)
LA MEMORIA
Una memoria deve fornire alla Cpu dati e istruzioni velocemente. Deve conservare i dati anche col PC
spento e renderli reperibili anche dopo tanto tempo. L’obiettivo dovrebbe essere quello di avere una
memoria grande e veloce e ovviamente poco costosa. C’e’ pero’ un compromesso:
-Ovvero integrare memorie piccole e veloci con altri dispositivi grandi e lenti es ssd piccola e veloce e hdd
grande e lento.
-Costo
-Accesso casuale: Puoi accedere ad una parola indipendentemente dalle altre “memorie elettroniche”
-Accesso misto: L’indirizzo di un dato non determina la sua posizione fisica “disco magnetico”
-Accesso associativo: metodo ad accesso casuale che permette di confrontare alcuni bit specifici
dell’indirizzo della parola con quelli di alcune etichette “memoria cache”
Perché una struttura piramidale? Al vertice, ci sono le memorie con meno capacità. All base, invece, ci sono
le memorie più lente. Più si sale, più la CPU viene usata di frequente.
Memoria ROM(read only memory):Una memoria elettronica che serve per memorizzare dei
programmi di inizializzazione(programmi quando si accende il pc) e di diagnosi(se tutti i dispositivi interni
sono funzionanti)
Memoria RAM(random access memory): Utile per la memoria centrale del calcolatore
Cache: Una memoria estremamente veloce ma con poca capienza. Ha lo scopo di velocizzare l’esecuzione
dei programmi. Quando la cache e’ piena per inserire nuovi dati vengono “sacrificati” i dati che non
vengono usati da molto( LRU: least recent used)
DISCHI MAGNETICI
I Dischi magnetici sono divisi in tracce e settori
-tracce: sono sequenze di dati circolari sulla superficie del disco, che memorizzano informazioni tutte della
stessa quantita’.
Prima di poter memorizzare dei dati bisogna riformattare il disco(operazione con la quale si prepara per
l’uso un supporto di memorizzazione di massa). Ogni superficie del disco e’ costituita da una testina che
legge i dati.
Struttura:
-Ogni singolo disco viene utilizzato sia dal lato superiore che quello inferiore
-Sick time (5-15ms): Tempo necessario per spostare il braccio con le testine
-Latency time(5400-10800 rpm): Tempo necessario che il disco impiega a girare per permettere alla testina
di raggiungerlo
DISCHI OTTICI
-CD-Rom=Utile quando si vuole distribuire un software
INTERFACCE DI INGRESSO/USCITA
Piu’ comuni: tastiera, mouse, monitor. La comunicazione verso queste periferiche avviene attraverso
l’interfaccia di ingresso/uscita, che traduce i segnali dal calcolatore in un linguaggio comprensibile alle
periferiche. Le interfacce di I/O sono classificate in base al tipo di Indirizzamento:
-Mappato in memoria: Gli indirizzi che usiamo per le parole in memoria, possiamo usarli anche per i
dispositivi I/O
-isolato: Gli indirizzi che usiamo per le parole in memoria, non possiamo usarli anche per i dispositivi I/O
-Sincronizzazione:
-Ad accesso diretto della memoria: quando si devono trasferire dati non dalla CPU alle periferiche.