































Studia grazie alle numerose risorse presenti su Docsity
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Prepara i tuoi esami
Studia grazie alle numerose risorse presenti su Docsity
Prepara i tuoi esami con i documenti condivisi da studenti come te su Docsity
Trova i documenti specifici per gli esami della tua università
Preparati con lezioni e prove svolte basate sui programmi universitari!
Rispondi a reali domande d’esame e scopri la tua preparazione
Riassumi i tuoi documenti, fagli domande, convertili in quiz e mappe concettuali
Studia con prove svolte, tesine e consigli utili
Togliti ogni dubbio leggendo le risposte alle domande fatte da altri studenti come te
Esplora i documenti più scaricati per gli argomenti di studio più popolari
Ottieni i punti per scaricare
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Corso completo di informatica: informazione, codifica binaria , numeri relativi , numeri reali, rappresentazione di testo e immagine , logica booleana , modello esecutore , introduzione programmazione , dichiarazione di istruzioni elementari, strutture di controllo, introduzione sottoprogrammi , tipi di dati strutturati , sottoprogrammi-passaggio dei parametri
Tipologia: Appunti
1 / 39
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!
































Informatica: scienza della risoluzione dei problemi con l'aiuto degli elaboratori automatici Informazione : prodotto dell'informare, deriva da informatio ovvero dare forma, un senso a un concetto astratto Comunicare per aumentare l'informazione e diminuire l'incertezza attraverso un linguaggio comune, concetti per essere capiti (comprensione) tramite determinate regole Rappresentazione informazione Tramite suoni quindi volatile Scrittura si conservano Rappresentazione analogica e discreta O digitale Approssimazione analogica Rischematizzazione nel tempo e nei valori ( quantizzazione ) Frequenza di campionamento inverso del periodo Rappresentazione grandezze fisiche Le proprietà del fenomeno rappresentato sono omomorfe alla forma di rappresentazione (vinili, elettrocardiogramma) Senza approssimazione Informazione e regole di interpretazione Messaggio modo per veicolare l'informazione Diminuire incertezza nel destinatario , deve sapere qualcosa in più (^) Deve variare( non sempre lo stesso simbolo) e seguire regole Codifica : insieme di regole concordate tra mittente e destinatario dell'informazione per trasformarla in una sua rappresentazione decodifica Codici : sistema di simboli per dare una rappresentazione all'informazione costituiti da:
martedì 13 settembre 2022 18:
Le informazioni numeriche vengono quindi rappresentate mediante stringhe di bit di lunghezza l che producono configurazioni ( parole codice) diverse. Se si devono rappresentare k informazioni diverse occorrono bit per associare ad esse codici diversi, ovvero: Byte e Words Stringhe con l uguale a 8 sono dette byte Sequenze di bit più lunghe di un byte sono dette word ed l dipende dal sistema , ma è sempre un multiplo del byte: 16, 32, 64 o 128 bit ( i.e. 2,4, o 16 byte). Con otto bit ( un byte) si rappresentano solo (256) valori diversi Nel caso in cui un solo byte non fosse sufficiente per rappresentare i k valori dell'informazione, allora si individua il numero b di byte tale che La codifica quindi è a lunghezza fissa ed adotta parole codice con una lunghezza che ha valori multipli di 8 L'adozione di stringhe a lunghezza finita e definita implica che i numeri gestiti siano definiti all'interno di un prefissato intervallo di estremi ( min, max) determinati e la più piccola differenza tra due valori consecutivi è fissata Overflow Quando il risultato non appartiene all'insieme dei valori rappresentabili( maggiore del max e minore del min ). Un altro caso si verifica quando il risultato dell'operazione non è compreso nell'insieme dei valori rappresentabili, pur non essendo né troppo grande e né troppo piccolo. Approssimare quando il risultato non è rappresentabile Algebra con precisione finita La proprietà associativa ( a+(b-c) = ( a + b ) - c ) e la proprietà distributiva ( a x ( b-c) = a x b - a x c ) non sempre vengono rispettate poiché potrebbe generarsi un overflow in base all'ordine. L'algebra dei numeri a precisione finita ( es. gradi degli angoli e tempo) deve essere gestita applicando i criteri di period icità. Per la periodicità, i valori esterni all'intervallo di definizione vengono ricondotti ad esso prendendo il resto della divisi one dei valori per il periodo Sistema (di numerazione ) Binario Molto importante in informatica poiché consente di rappresentare numeri mediante la combinazione di due soli simboli, ovvero di codificare i numeri direttamente in bit. All'interno dei calcolatori viene adottata un'algebra dei numeri a precisione finita con un intervallo di definizione che dip ende dal numero di byte associato alla rappresentazione. In un byte il bit più a destra è quello con meno significato a posizione o peso 0 detto anche Least Significant Bit mentre quello più a sinistra è quello più significativo a posizione o peso 7 detto anche Most Significant Bit Poiché un byte può rappresentare valori diversi, si possono , ad esempio con 8 bit gestire i seguenti intervalli di numeri interi: [0,255] e [-127,128] Entrambi gli intervalli sono costituiti da 256 numeri Sistemi di Numerazione Insieme di simboli (cifre) e regole che assegnano ad ogni sequenza di cifre uno ed un solo valore numerico I sistemi di numerazione vengono classificati in:
Sono presenti due configurazioni dello zero , lo 0 positivo (00000000) e lo 0 negativo (10000000) quindi le operazioni di somma e sottrazione devono essere corrette nell'attraversamento dello zero Operandi concordi A>0 e B>0 A+B; A<B e B<0 A+B=-( ) Operandi discordi A>0 e B<0 se altrimenti A+B= A<0 e B>0 se altrimenti A+B= Complemento a due Le configurazioni che hanno il bit più significativo uguale a zero, comprese nell'intervallo [0, ], rappresentano se stesse ( numeri positivi) Le configurazioni col bit più significativo uguale a uno, cioè quelle rientranti nell'intervallo [ ] rappresentano i numeri negativi che si ottengono traslando a sinistra l'intervallo di , cioè l'intervallo [- Il complemento a 2 del valore si ottiene complementando alla base tutte le cifre del valore assoluto del numero x e sommando poi 1 al valore ottenuto. Analogamente partendo da destra si lasciano invariati tutti i bit fino al primo 1 compreso e poi si complementa bit a bit. Nella rappresentazione per complemento a 2 , i valori rappresentati sono compresi nell'intervallo [ - e sono sempre : [0, - 1] per i valori positivi e zero [- - 1] per i valori negativi L'intervallo non è simmetrico: valore assoluto del minimo
m numero frazionario detto mantissa che determina la precisione del numero ossia con quante cifre significative sarà rappresentato la base b numero naturale prefissato, ed e numero intero chiamato esponente o caratteristica che determina l' ampiezza dell'intervallo di valori preso in considerazione Con un numero finito di cifre è possibile rappresentare solo un numero razionale che approssima con un certo errore il numero reale dato. Le notazioni possibili sono due: Virgola fissa che dedica una parte (prestabilita) delle cifre alla parte intera e le altre alla parte frazionaria, la posizione della virgo la è fissata su un bit prestabilito; Virgola mobile (floating point) che dedica alcune cifre a rappresentare un esponente della base che indica l'ordine di grandezza del numero rappresentato Sfrutta la notazione scientifica E' utile perché permette di rappresentare in maniera compatta numeri molto grandi ma anche molto piccoli, sia positivi che negativi Estende l'intervallo di numeri rappresentati a parità di cifre, rispetto alla notazione in virgola fissa La rappresentazione in virgola mobile, fissata la base b, consente di esprimere lo stesso valore con infinite coppie <mantiss a, esponente> I numeri reali sono rappresentati tramite una coppia di numeri<m,e> m:mantissa (significante) normalizzata ( quando la prima cifra è diversa da zero e la parte intera un numero minore della base ) tra due potenze successive della base e:esponente I numeri reali rappresentabili sono definiti in un insieme limitato con estremi predefiniti [-minreal,maxreal] Overflow condizione che si verifica quando i valori sono: più piccoli di minreal, più grandi di maxreal Underflow condizione che si verifica quando un valore viene confuso con lo zero tra [-1,0000 x 10-^99 , 1,0000 x 10-^99 ] Operazioni in virgola mobile La somma e la sottrazione richiedono l'allineamento degli esponenti che potrebbe far scomparire alcune cifre rappresentative del numero Il prodotto e la divisione richiedono operazioni separate sulle mantisse e sugli esponenti ( es. le mantisse si moltiplicano e gli esponenti si sommano ) Standard IEEE 754 definisce principalmente tre formati numerici a virgola mobile: singola precisione (32 bit ) doppia precisione (64 bit ) precisione estesa ( 80 bit ) La mantissa è normalizzata per cui comincia sempre con un 1 seguito da una virgola binaria, e poi a seguire il resto delle ci fre. Lo standard prevede l'assenza sia del primo bit sia del bit della virgola perché sono sempre presenti ( valori normalizzati) Esempi
Rappresentazione testi Un testo digitale è una stringa di simboli ad ognuno dei quali viene associato un codice binario secondo un prefissato standa rd Rappresentazione dei caratteri Per rappresentare i caratteri esistono vari codici
Le immagini in movimento ( o video ) L'occhio umano ricostruisce l'informazione di movimento se riceve una successione sufficientemente rapida di immagini fisse ( video come sequenza di immagini ) La sequenza continua di immagini della realtà viene quindi discretizzata ottenendo una serie di immagini ( detti frame ) che variano velocemente, ma a intervalli stabiliti Il frame-rate è il numero di frame mostrati per secondo (fps) Lo standard MPEG ( moving picture expert group ) prevede la codifica di ciascun frame fisso. Oltre alla codifica dei suoni, attraverso tecniche di compressione dei dati, senza compressione 1 minuto di filmato a 24 fps occuperebbe 644 MB Compressione Per risolvere problemi connessi con le dimensioni elevate sono stati introdotti processi di compressione i quali riducono lo spazio occupato mediante: la diminuzione del numero di bit necessari per codificare una singola informazione ( compressione entropica ); oppure la diminuzione del numero di informazioni da memorizzare o trasmettere ( compressione differenziale , compressione semantica ) La compressione può conservare integralmente o no il contenuto della rappresentazione originale secondo due tecniche principali: la compressione senza perdita di informazione ( lossless , reversibile ) che sfrutta le ridondanze nella codifica del dato Avviene tramite una classe di algoritmi che consentono di ricostruire tutta l'informazione iniziale partendo da quella compre ssa la compressione con perdita di informazione ( lossy , irreversibile ) che invece sfrutta le ridondanze nella percezione dell'informazione Comporta riduzioni notevoli delle dimensioni, ma la ricostruzione dell'informazione da quella compressa non è identica a quel la iniziale Tali metodi rimuovono parti che possono non essere percepite come avviene nel caso di immagini, video e suoni Tra le tecniche di compressione lossy troviamo: Codifica dell'audio Il suono è un segnale analogico funzione del tempo consistente in vibrazioni che formano un'onda, la cui ampiezza misura l'al tezza dell'onda e il periodo è la distanza tra due onde Anche il suono deve essere campionato e quantizzato per poter essere digitalizzato L'operazione di campionamento discretizza il segnale con una frequenza dell'ordine delle decine di KHz ( migliaia di campioni al secondo ) perché è dimostrato che l'orecchio umano percepisce fedelmente il suono originale se il suo campionamento è non inferiore a 30KHz Per Nyquist la frequenza di campionamento deve essere almeno il doppio della frequenza del segnale audio analogico per non av ere perdita di informazione. La quantizzazione è un processo irreversibile che conduce a una sicura perdita di informazioni, tanto più l'operazione è accu rata tanto più la qualità del suono è preservata La quantità di bit usati per rappresentare il suono dipende allora dal numero di bit usato per la quantizzazione, chiamato an che profondità del suono, dalla frequenza di campionamento e quindi dalla durata del suono Informazioni, Dati e Metadati Dato Rappresentazione di fatti concreti in maniera formale, tale da permetterne l'elaborazione attraverso strumenti automatici L'uomo tratta informazioni, l'elaboratore tratta dati Il dato da solo ( senza contesto ) potrebbe non avere significato .L'ambiguità può essere risolta dando al dato un'interpretazione. L'informazione dipende dalla percezione del dato attraverso interpretazione Metadati Dati che descrivono altri dati riportandone struttura, significato o descrizione. Secondo le nuove proposte del Web Semantico, il metadato è l'informazione che dà significato al dato rendendolo comprensibile alle macchine I metadati possono essere distinti in : descrittivi finalizzati al recupero dei dati gestionali necessari alla gestione dei dati Operatori booleani Sulle stringhe di bit sono anche definiti operatori che lavorano bit a bit. Essi sono detti booleani e sono: AND : dati due bit restituisce il valore 1 se e solo se i bit erano entrambi posti a 1, in tutti gli altri casi il risultato è 0; AND è detto anche prodotto logico e indicato con il simbolo "•" OR : dati sue bit restituisce il valore 0 se e solo se i bit erano entrambi posti a 0, in tutti gli altri casi il risultato è 1, O R è anche detto somma logica e indicato anche con il simbolo " + " NOT : dato un bit restituisce il valore 0 se esso era posto a 1 , restituisce invece 1 se il bit era posto a 0; NOT viene anche d etto operatore di negazione o di complementazione e indicato anche con il simbolo "-".
negazione o di complementazione e indicato anche con il simbolo "-". Considerando 1 come vero e 0 come falso , gli operatori booleani su definiti corrispondono ad operatori logici. Altro operatore binario è OR disgiuntivo ( XOR ) che dati due bit restituisce il valore 1 se e solo se uno solo dei bit era posto a 1 , in tutti gli altri casi il risultato è 0; XOR è anche detto disgiunzione esclusiva a XOR b equivale ad ( a AND ( NOT b )) OR ((NOT a) AND b) Tavola di verità Le tavole ( o tabelle ) di verità prevedono un numero di colonne pari al numero di operandi dell'operatore più una ( corrispondente al risultato) , e un numero di righe pari a tutte le possibili combinazioni di valori di verità ( 2n^ con n numero degli argomenti ) Operazioni logiche per-bit su stringhe : esempi Operazioni logiche per-bit su stringhe : applicazioni Una stringa di bit può essere usata come bitmask (insieme di valori booleani,ciascuno detto flag ). In tal caso gli operatori bitwise hanno diversi usi:
Logica delle proposizioni La legge di dualità vale anche per la logica delle proposizioni. Da qualsiasi proposizione logica se ne può ricavare un'altra per dualità, sostituendo cioè ad ogni operatore e ai valori falso e vero il rispettivo duale : AND OR D V F Nei passaggi da una proposizione alla sua duale l'operatore NOT non subisce modifiche Due espressioni duali non sono equivalenti ma entrambe valide nell'algebra di Boole Regole di precedenza Le regole di precedenza tra gli operatori logici prevedono :
La relazione d'ordine ≤ equivale alla relazione di inclusione tra insiemi Algebra della logica L ' insieme K={ F, V } in cui siano definite le operazioni:
Il modello di Von Neumann si basa sul concetto di programma memorizzato La macchina immagazzina nella propria memoria i dati su cui lavorare e le istruzioni per il suo funzionamento Da cui ne deriva una grande flessibilità operativa Macchine nate per fare calcoli possono essere impiegate nella risoluzione di problemi di natura completamente diversa , come problemi di tipo amministrativo, gestionale e produttivo Memorie Insieme di contenitori fisici, detti anche registri , di dimensioni finite e fissate a cui si può far riferimento mediante la posizione occupata nell'insieme detta indirizzo di memoria La dimensione di un registro si misura in numero di bit I dispositivi per memorizzare i singoli bit possono essere fatti in diversi modi: Nelle memorie di tipo elettronico sono circuiti detti flip-flop che mostrano un valore di tensione a 5 volt o a 0 volt , nelle memorie di tipo magnetico è una sorta di calamita polarizzata o positivamente o negativamente , nelle memorie di tipo ottico è una superficie con o senza buco in modo da riflettere diversamente il raggio laser che la colpisce In ogni caso il dispositivo di lettura deve essere in grado di associare allo stato del bit il valore 1 ( ad esempio tensione a 5 volt, polo positivo, assenza di buco ) o il valore 0 ( ad esempio tensione a 0 volt, polo negativo, presenza di buco ) Operazioni sulla memoria Load : si preleva l'informazione contenuta nel registro senza però distruggerla Store : si inserisce un'informazione nel registro eliminando quella precedente Leggere informazioni a patto che vi siano state scritte La lettura non cancella quanto scritto La scrittura di nuove informazioni obbliga a cancellare quelle precedenti che pertanto vengono perse ( sovrascritte ) La memoria è un sistema che assolve al compito di conservare il dato, depositandolo in un registro nel caso di operazione di scrittura e di fornire il dato conservato in un registro , per l'operazione di lettura Funzionamento di una memoria La CPU indica preventivamente l'indirizzo del registro interessato dall'operazione. La memoria decodifica tale indirizzo abilitando solo il registro ad esso corrispondente affinchè:
Esegue operazioni:
Decode L'istruzione viene interpretata, prelevando eventualmente dalla memoria altri dati necessari ( operand assembly ) se l'istruzione completa non è contenuta nel dato prelevato in precedenza. In ogni caso, alla fine , PI punterà all'istruzione da eseguire successivamente. Execute Se , per esempio, l'istruzione da eseguire è una somma , i registri Op1 e Op2 verranno caricati con i numeri da sommare e la CU invia alla ALU il comando per l'esecuzione della somma. La ALU esegue l'operazione. Il risultato prodotto sarà conservato in uno dei registri ( ad es. ACC o in memoria ) e verrà aggiornato il CC. Il bus È un canale di comunicazione condiviso da più utilizzatori È fisicamente costituito da uno o più fili su cui possono transitare uno o più bit contemporaneamente A seconda delle informazioni trasportate si hanno:
una qualsiasi entità esterna alla CPU può richiederle attenzione. Le interruzioni Con la presenza del segnale di interruzione la CPU può attivare un processore periferico e disinteressarsi delle due attività Quando un processore dedicato termina il suo compito, avanza una richiesta di interruzione al processore centrale e aspetta che gli venga rivolta attenzione. Mentre i processori periferici lavorano, la CPU può lavorare anch'essa a meno che non sia indispensabile quanto richiesto all o specifico processore. ISR Per consentire alla CU di accorgersi del verificarsi di una interruzione il registro di condizione CC è stato dotato di un bit che diventa uguale a uno quando arriva una interruzione La CU controlla il bit al termine dell'esecuzione di ogni istruzione. Se è uguale zero (NO interrupt) procede normalmente con il prelievo dell'istruzione successiva (Fetch) In caso contrario (SI interrupt) comincia l'esecuzione di un programma di sistema operativo, detto ISR (Interrupt Service Routine) che ha come compito primario di capire la causa dell'interruzione, ossia quale dispositivo ha avanzato la richiesta. Nel caso si accorga della presenza di più richieste stabilisce quale servire per prima secondo criteri di importanza o priorità di intervento. Evoluzione del modello di Von Neumann: le cache Per ridurre i tempi di trasferimento dalla memoria centrale ai registri interni della CPU, viene replicata una porzione di memoria e posta tra memoria e CPU stessa. Tale memoria, molto veloce, viene chiamata cache e fa da buffer per il prelievo di informazioni dalla memoria centrale Con operazioni particolari, istruzioni e dati vengono trasferiti dalla memoria centrale nella cache secondo la capacità di qu est'ultima La CU procede nelle tre fasi del suo ciclo al prelievo di istruzioni e operandi dalla cache Quando la CU si accorge che il prelievo non può avvenire scatta un nuovo travaso dalla memoria centrale Se la cache è interna alla CPU viene detta di primo livello (L1) La cache di secondo livello (L2) sono invece esterne e solitamente un po' più lente di quelle di primo livello ma sempre più veloci della memoria centrale. I due livelli possono coesistere. Gerarchia di memorie Consente di offrire ai programmi l'illusione di avere una memoria grande e veloce Nella gerarchia i livelli più prossimi alla CPU ( le memorie cache ) sono quelli più veloci, ma sono anche quelli con dimensi oni più piccole visto il loro elevato costo. I livelli più lontani sono quelli che mostrano una capacità massima, ma anche tempi di accesso maggiori Firmware e software L'insieme dei microprogrammi composti dalle microistruzioni memorizzate nella memoria interna alla CU prende il nome di firmware L'insieme di tutte le applicazioni del computer, quindi di tutti i programmi per computer, prende il nome di software In una eccezione più ampia il termine software può essere inteso come tutto quanto può essere preteso dall'hardware: basta in fatti inserire in memoria un programma diverso perché il sistema cambi le sue attività. Tra tutte le macchine automatiche il computer è un sistema polifunzionale in quanto può eseguire infinite funzioni sempre che venga progettato un programma per ogni applicazione. Diversi tipi di software Programmi che servono a tutti gli utenti del sistema sono denominati software di base ( sistemi operativi, utilità e traduttori dei linguaggi di programmazione ) Programmi che risolvono problemi specifici sono denominati software applicativo Middleware È il software che fornisce un'astrazione di programmazione che maschera l'eterogeneità di elementi sottostanti: Reti, hardware, sistemi operativi, linguaggi di programmazione Il middleware definisce una macchina generalizzata fissandone le modalità di interazione con le applicazioni Sistema operativo Il Sistema Operativo (S.O.) è un insieme di programmi che deve garantire la gestione delle risorse hardware in modo semplice ed efficiente a tutti gli utenti del sistema. I primi calcolatori non avevano il sistema operativo. In essi il programmatore doveva prevedere tutto. Al termine dell'esecuzione del programma il programmatore o l'operatore del sistema doveva provvedere ad un nuovo caricamento in memoria ed ad una successiva attivazione. Con il sistema operativo il passaggio da un'applicazione ad un'altra è svolto in automatico. La CPU si trova così ad eseguire i programmi del sistema operativo in alternanza con quelli applicativi.
Sistema operativo e sviluppo Il sistema operativo offre una serie di funzionalità di base allo sviluppatore, tra cui l'accesso ai dispositivi di I/O (estr aendone i dettagli hardware). I driver del dispositivo sono la parte di codice del S.O. che comandano un modello di dispositivo I/O Per ogni linguaggio di programmazione, le funzionalità del S.O. sono accessibili tramite moduli software raggruppati in librerie di sistema. Linguaggi di basso/alto livello I linguaggi assembly richiedono un ragionamento ad un livello basso di astrazione : si lavora con i registri e le singole operazioni del processore Tale livello di dettaglio e controllo è necessario solitamente per:
Linguaggi di programmazione Il linguaggio di programmazione è una notazione formale per descrivere algoritmi ed è dotato di un alfabeto, un lessico, una grammatica, una sintassi ed una semantica. Un limitato insieme di regole definisce il lessico del programma, ovvero le parole del linguaggio. L'organizzazione delle parole in frasi è invece guidata da regole di grammatica. I periodi sono costruiti in base alla sintassi. L'attribuzione di un significato alle frasi è oggetto delle regole semantiche. Il linguaggio C/C++ Il linguaggio C è stato sviluppato nel 1972 da Dennis Ritchie presso i laboratori della AT&T Bell Labs ANSI C versione standardizzata dall'American National Standards Institute (ANSI) completata nel 1989. Pensato come linguaggio capace di operare ad alto livello Programmazione indipendente dalla macchina fisica ma che consente di controllare il comportamento dei singoli bit della memor ia. Grazie a questi elementi tipici dei linguaggi di basso livello i programmi C sono altamente flessibili e si traducono efficie ntemente in istruzioni