




























































































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
Lacodifica dell'informazione, disciplina che si occupa della trasformazione dell'informazione da analogica a digitale binaria. Vengono presentati i concetti di codice, alfabeto, bit e sistema di numerazione binario ed esadecimale. coperto da copyright e ne è vietata la riproduzione o il riutilizzo anche parziale.
Tipologia: Dispense
1 / 382
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!





























































































Attenzione! Questo materiale didattico è per uso personale dello studente ed è coperto da copyright. Ne è severamente vietata la riproduzione o il riutilizzo anche parziale, ai sensi e per gli effetti della legge sul diritto d’autore (L. 22.04.1941/n. 633).
Il termine informatica è stato introdotto nel 1957 da Karl Steinbuch “ Informatik ”, deriva dal
francese “ informatique ” ed è la contrazione dei termini: informazione e automatica.
L’informatica è la scienza che si occupa della raccolta, conservazione e trasmissione delle
informazioni attraverso l'elaborazione elettronica, con la quale è possibile gestire le grandi quantità
di dati prodotte dal moderno sviluppo sociale, scientifico e tecnologico.
La parola “informazione” deriva da “informare” ovvero “dare forma”.
L’informazione viene, in informatica, associata al concetto di messaggio, anche se esso ha
il solo compito di rappresentarla e trasportarla. Essa può essere rappresentata in due modalità
distinte: analogico e digitale.
In particolare, i sistemi di elaborazione rappresentano l’informazione utilizzando la modalità
digitale, ovvero soltanto con segnali a due valori (binari), quindi affinché un calcolatore riesca ad
elaborare l’informazione è necessario trasformare quest’ultima da analogica in digitale binaria.
Questo processo di trasformazione è definito codifica.
La codifica dell’informazione è una disciplina molto vasta che vede il suo inizio negli anni
‘50, con l’avvento dei primi calcolatori programmabili.
Oggi la codifica dell’informazione è strettamente legata all’elaborazione automatica e
molte sono le sfumature che essa assume.
Infatti, la stessa informazione può essere codificata in modi diversi a seconda del contesto:
ad esempio, consideriamo la seguente stringa numerica: “12”, espressa in decimale.
L’informazione di tale stringa deve rimanere la stessa se espressa con altri simboli, come espresso in
Figura 1.
Figura 1 : modi diversi di rappresentare la stessa informazione.
Attenzione! Questo materiale didattico è per uso personale dello studente ed è coperto da copyright. Ne è severamente vietata la riproduzione o il riutilizzo anche parziale, ai sensi e per gli effetti della legge sul diritto d’autore (L. 22.04.1941/n. 633).
I “simboli” “XII”, “C” e “14” costituiscono tre codifiche diverse della stessa informazione
numerica: nel sistema Romano, nel sistema esadecimale e nel sistema ottale.
Per interpretare le differenti codifiche dell’informazione è necessario conoscere il codice,
ovvero la regola, che a ogni configurazione ammessa associa un’entità di informazione.
Il codice è pertanto un insieme di parole in cui ogni parola è costituita da simboli. I simboli
utilizzati per costruire le parole vengono detti alfabeto.
Quando l’alfabeto e costituito da soli due simboli, si parla di codifica binaria. L’alfabeto a
cui si fa riferimento nell’ambito dell’informatica è costituito dai simboli 0 e 1. L’unità fondamentale
di rappresentazione dell’informazione è il bit.
Possiamo pensare ad un bit come ad una qualsiasi entità che può assumere solo due valori.
Ad esempio pieno/vuoto, 1/0, acceso/spento, etc.
Rappresentando il valore del bit con i simboli 0 e 1 posso creare codici numerici binari. È
possibile calcolare il numero minimo di bit (L) da utilizzare per rappresentare N informazioni,
considerando che deve essere soddisfatta la relazione 2L ≥ N.
Attenzione! Questo materiale didattico è per uso personale dello studente ed è coperto da copyright. Ne è severamente vietata la riproduzione o il riutilizzo anche parziale, ai sensi e per gli effetti della legge sul diritto d’autore (L. 22.04.1941/n. 633).
In generale, in un sistema posizionale di base b il valore numerico di ogni cifra, espresso nel
sistema decimale, viene moltiplicato per un’opportuna potenza di b il cui esponente, detto ordine
o posizione di quella cifra, è uguale al numero delle cifre che seguono, verso destra, quella
considerata.
Quindi, se x è un numero naturale espresso in base b e se
an an- 1 ……. a 1 a 0
sono le cifre della sua rappresentazione in tale base, allora
x = an • bn^ + an- 1 • bn-^1 + … + a 1 • b^1 + a 0 • b^0
poiché b^0 = 1 si ottiene:
x = an • bn^ + an- 1 • bn-^1 + … + a 1 • b^1 + a 0
I sistemi di numerazione posizionali più utilizzati sono:
2.1 Sistema di numerazione decimale
Il sistema di numerazione decimale, che utilizziamo tutti i giorni per i nostri calcoli, è un
classico sistema posizionale poiché il valore di un simbolo dipende dalla posizione che il simbolo ha
all’interno del numero.
Tale sistema è stato introdotto per la prima volta nel VI secolo in India, si chiama decimale
perché utilizza una notazione posizionale basata su 10 cifre (da 0 a 9) e sulle potenze di 10.
Ad esempio il numero 5028
La cifra 8, di ordine 0, è associata al valore 8 x 100 = 8 x 1 = 8
La cifra 2, di ordine 1, è associata al valore 2 x 101 = 2 x 10 = 20
Attenzione! Questo materiale didattico è per uso personale dello studente ed è coperto da copyright. Ne è severamente vietata la riproduzione o il riutilizzo anche parziale, ai sensi e per gli effetti della legge sul diritto d’autore (L. 22.04.1941/n. 633).
La cifra 0, di ordine 2, è associata al valore 0 x 102 = 0 x 100 = 0
La cifra 5, di ordine 3, è associata al valore 5 x 103 = 5 x 1000 = 5000
Quindi il numero 5028 si può scrivere in forma polinomiale così:
5028 = 5x10^3 + 0x10^2 + 2x10^1 + 8 = 5000 + 0 + 20 + 8
2.2 Sistema di numerazione binario
Un sistema di numerazione, molto importante per il calcolatore, è il sistema binario o sistema
di numerazione in base 2 poiché utilizza solo due cifre 0 e 1.
Nel linguaggio informatico le cifre binarie vengono indicate con il termine bit , dalla
contrazione delle due parole inglesi Binary digiT (cifra binaria).
Poiché i dati all’interno del computer sono rappresentati utilizzando le cifre binarie, il bit
diventa l’unità elementare per la misura dell’informazione o la più piccola unità di informazione.
Così come nel sistema decimale, le cifre del sistema binario 0 e 1 assumono un valore
posizionale nella scrittura del numero binario con riferimento alle potenze di 2, piuttosto che alle
potenze di 10.
Ad esempio il numero 100111 espresso in notazione binaria rappresenta il valore 39 in base
decimale, come si può facilmente vedere:
100111 = 1 x2^5 + 0 x 2^4 + 0 x 2^3 + 1 x 2^2 + 1 x 2^1 + 1 x 2^0 = 39
2.3 Sistema di numerazione esadecimale
Come il sistema binario e quello decimale anche Il sistema esadecimale fa parte della
categoria dei sistemi numerici posizionali ma con base 16.
Attenzione! Questo materiale didattico è per uso personale dello studente ed è coperto da copyright. Ne è severamente vietata la riproduzione o il riutilizzo anche parziale, ai sensi e per gli effetti della legge sul diritto d’autore (L. 22.04.1941/n. 633).
Per cambiamento di base o conversione di base si intende la trasformazione della
rappresentazione di un numero da una base ad un’altra, in particolare vedremo come convertire
la rappresentazione di un numero dalla base 10 a qualsiasi altra e viceversa.
Per effettuare cambiamenti di base da un sistema di numerazione qualunque al nostro
sistema decimale ci viene in aiuto la regola dei pesi, descritta dall’equazione seguente:
k k
k
Equazione 1 : regola dei pesi
Dove “r” è la base del sistema in cui viene espresso il numero N.
Dato il seguente numero espresso nel sistema di numerazione binario: 11012 , si ha,
applicando la regola dei pesi espressa in Equazione 1:
Si consiglia per le prime volte di seguire il seguente schema:
Peso 3 2 1 0
Cifra 1 1 0 1
evidenziando su ciascuna cifra il relativo peso, a partire da destra con 0, per poi eseguire la
somma espressa in Equazione 1.
Attenzione! Questo materiale didattico è per uso personale dello studente ed è coperto da copyright. Ne è severamente vietata la riproduzione o il riutilizzo anche parziale, ai sensi e per gli effetti della legge sul diritto d’autore (L. 22.04.1941/n. 633).
3.2 Cambiamento di base da decimale a binario
Si supponga di avere l’informazione numerica rappresentata nel sistema di numerazione
decimale e di volerla rappresentare nel sistema di numerazione decimale. La regola di
conversione prende il nome di regola delle divisioni successive ovvero:
Dividere il numero da convertire per 2, calcolando il quoziente e il resto della divisione;
Se il quoziente della divisione è diverso da 0, dividerlo per 2 e continuare a dividere ogni
nuovo quoziente per 2 fino a quando non si ottiene 0 come quoziente
seguito all’altro.
Il numero così ottenuto è la conversione in base 2.
Esempio:
Convertire il numero 12 da Base 10 a Base 2:
12 : 2 = 6 con resto= 0 cifra meno significativa
6 : 2 = 3 con resto = 0
3 : 2 = 1 con resto = 1
1 : 2 = 0 con resto = 1 cifra più significativa
quindi: (12) 10 = (1100) 2
Come vedete la cifra (resto) ottenuto dalla prima divisione rappresenta la cifra meno
significativa e, di conseguenza, il numero finale è letto dal basso verso l’alto.
Attenzione! Questo materiale didattico è per uso personale dello studente ed è coperto da copyright. Ne è severamente vietata la riproduzione o il riutilizzo anche parziale, ai sensi e per gli effetti della legge sul diritto d’autore (L. 22.04.1941/n. 633).
L’aritmetica nei vari sistemi di numerazione segue le stesse regole dell’aritmetica in base
decimale. La differenza è che anziché eseguire un riporto quando un risultato è maggiore o
uguale a 10, lo si esegue quando un risultato è maggiore o uguale alla base utilizzata. Ovviamente
tratteremo il sistema di numerazione binario.
La somma di due numeri binari viene eseguita sommando tra loro i bit partendo dai meno
significativi, in ordine di peso crescente. In particolare le regole dell’addizione in binario sono le
stesse del sistema decimale. Dati due cifre binarie, A e B, l’addizione segue la seguente regola:
A B A + B Ripoto (Carry)
0 0 0 0
0 1 1 0
1 0 1 0
1 1 0 1
Da notare: 1 + 1 = 10
Esempio:
0 1 0 0 1 1 1 riporti
Attenzione! Questo materiale didattico è per uso personale dello studente ed è coperto da copyright. Ne è severamente vietata la riproduzione o il riutilizzo anche parziale, ai sensi e per gli effetti della legge sul diritto d’autore (L. 22.04.1941/n. 633).
4.2 Sottrazione
Come per il sistema decimale si ha un prestito quando la sottrazione delle due cifre porta
ad un risultato negativo.
Dati due cifre binarie, A e B, la sottrazione segue la seguente regola:
A B A - B Prestito
(borrow)
0 0 0 0
0 1 1 1
1 0 1 0
1 1 0 0
Esempio:
0 1 0 0 0 1 1 1 prestiti
Attenzione! Questo materiale didattico è per uso personale dello studente ed è coperto da copyright. Ne è severamente vietata la riproduzione o il riutilizzo anche parziale, ai sensi e per gli effetti della legge sul diritto d’autore (L. 22.04.1941/n. 633).
essere eseguibile : le istruzioni devono poter essere eseguite materialmente
dall’esecutore;
essere non ambiguo : le istruzioni devono essere espresse in modo tale da essere
interpretate da tutti allo stesso modo;
essere generale : deve essere valido non solo per un particolare problema, ma per
una classe di problemi;
essere deterministico : partendo dagli stessi dati iniziali deve portare sempre allo stesso
risultato finale indipendentemente dall’esecutore;
essere completo : deve contemplare tutti i casi che si possono verificare durante
l’esecuzione.
Gli algoritmi possono venire classificati in:
passo successivo; in pratica esiste uno e un solo possibile percorso dell’algoritmo e
quindi a fronte degli stessi dati di partenza produrrà gli stessi risultati.
successivi che hanno la possibilità di essere scelti: l'algoritmo potrà produrre risultati
diversi a partire da uno stesso insieme di dati compiendo percorsi diversi
Tra gli algoritmi non deterministici troviamo quelli probabilistici nei quali almeno un’istruzione
ammette più passi successivi, ognuno dei quali ha una certa probabilità di essere scelto.
Attenzione! Questo materiale didattico è per uso personale dello studente ed è coperto da copyright. Ne è severamente vietata la riproduzione o il riutilizzo anche parziale, ai sensi e per gli effetti della legge sul diritto d’autore (L. 22.04.1941/n. 633).
Affinché un algoritmo sia interpretato ed eseguito correttamente da un’altra persona o da
una macchina, è necessario rappresentare i comandi (o istruzioni ) che lo compongono in modo
preciso e non ambiguo.
Considerando che l’algoritmo da dare al computer subirà un successivo passaggio
( codifica ) che lo convertirà da algoritmo a programma, in fase di progettazione del procedimento
risolutivo, è importante utilizzare un linguaggio appropriato, che rappresenti in modo efficace
l’algoritmo e ne faciliti la successiva traduzione.
Per soddisfare questo requisito, abbiamo due opzioni per descrivere un algoritmo:
Diagramma di Flusso o flow-chart
Pseudolinguaggio di programmazione o linguaggio di pseudo codifica
Per descrivere algoritmi in modo chiaro, ordinato e corretto si fa uso del linguaggio di
pseudo codifica, in cui si devono effettuare in ordine le seguenti fasi:
Intestazione: riga iniziale che assegna un nome all’algoritmo. Si usa la parola
Algoritmo seguita da un nome a piacere che lo identifica. Ad esempio, supponiamo
di volere effettuare la somma di 2 numeri, un nome appropriato per l’algoritmo può
essere Algoritmo Somma
Fase dichiarativa: prima di iniziare l’algoritmo è necessario dichiarare i dati che
entrano in gioco specificando il nome e il tipo di dato. I dati si distinguono in dati
variabili e dati costanti. Si usa la parola dichiara seguita dal nome o nomi del dato e
dal loro tipo. Nel caso dell’algoritmo per la somma si ha:
Variabili
Dichiara X, Y somma come numeri interi
Attenzione! Questo materiale didattico è per uso personale dello studente ed è coperto da copyright. Ne è severamente vietata la riproduzione o il riutilizzo anche parziale, ai sensi e per gli effetti della legge sul diritto d’autore (L. 22.04.1941/n. 633).
2.2 Diagramma di flusso
Un diagramma di flusso è una rappresentazione grafica di un algoritmo. In tale
rappresentazione ogni passo è descritto attraverso l’utilizzo di una serie di simboli standard
ciascuno avente un significato ben specifico.
In particolare il diagramma consente di visualizzare:
Le operazioni da compiere: rappresentate da forme quali ovali, rettangoli etc…
La sequenza in cui compiere tali operazioni, rappresentata da frecce.
Nella Tabella 1 sono elencati gli elementi propri di un diagramma di flusso.
Simbolo Significato
Inizio e fine della sequenza di istruzioni
Inserimento ed emissione dei dati
Istruzioni di Lettura o Scrittura
Istruzione da eseguire
Istruzione che implica una scelta tra due
possibili percorsi a seconda della valutazione di
una certa condizione
Tabella 1 : Simboli diagramma di flusso
Attenzione! Questo materiale didattico è per uso personale dello studente ed è coperto da copyright. Ne è severamente vietata la riproduzione o il riutilizzo anche parziale, ai sensi e per gli effetti della legge sul diritto d’autore (L. 22.04.1941/n. 633).
o Facciamo un esempio: pensiamo ai passi da fare quando prepariamo una camomilla:
Proviamo a disegnare il relativo diagramma di flusso:
Inizio
Scalda l’acqua
Metti filtro nella tazza
Versa acqua nella tazza
Lascia in infusione
Aggiungi zucchero
È dolce?
Camomilla pronta
Attenzione! Questo materiale didattico è per uso personale dello studente ed è coperto da copyright. Ne è severamente vietata la riproduzione o il riutilizzo anche parziale, ai sensi e per gli effetti della legge sul diritto d’autore (L. 22.04.1941/n. 633).
3.2 Classificazione dei linguaggi di programmazione
La classificazione dei linguaggi di programmazione è utile al fine di evidenziare le
caratteristiche di ciascun linguaggio così da capire se un linguaggio è più idoneo a risolvere un
problema rispetto ad un altro.
Le classificazioni più utilizzate sono:
Classificazione per paradigma (approccio alla soluzione del problema)
Classificazione per formato del codice
Classificazione per livello
Uno stesso linguaggio può essere inquadrato contemporaneamente in più classificazioni
In questa discussione analizzeremo la classificazione per livello.
Nella classificazione per livello, i linguaggi vengono suddivisi in:
Linguaggio macchina
Linguaggi di basso livello
Linguaggi di alto livello
Il Linguaggio macchina è quel linguaggio di programmazione strettamente dipendente
dall’hardware, utilizzato per eseguire le istruzioni direttamente da un processore o CPU di un
computer.
Ogni istruzione compilata seguendo le regole di questo codice potrà eseguire
solamente un’operazione ben precisa come ad esempio:
Scrivere dati in una cella di memoria;
Attenzione! Questo materiale didattico è per uso personale dello studente ed è coperto da copyright. Ne è severamente vietata la riproduzione o il riutilizzo anche parziale, ai sensi e per gli effetti della legge sul diritto d’autore (L. 22.04.1941/n. 633).
Saltare una cella di memoria e passare alla successiva;
Svolgere un’operazione logico-aritmetica, etc…
Essendo un linguaggio strettamente legato all’architettura del calcolatore, ha come
grande svantaggio, quello che un programma scritto in linguaggio macchina per un'architettura,
non funziona in un'altra architettura.
Per ovviare alle problematiche presentate dal linguaggio macchina, sono stati introdotti i
linguaggi di basso livello che risultano essere comunque linguaggi orientati alla macchina ma con
un linguaggio più elementare.
Un esempio di linguaggio a basso livello è il linguaggio assembly.
Tale linguaggio consente al programmatore di ignorare il formato binario del linguaggio
macchina, sostituendo ogni codice operativo del linguaggio macchina con una sequenza di
caratteri che lo rappresenta in forma mnemonica; per esempio, il codice operativo per la somma
potrebbe essere trascritto come ADD e quello per il salto come JMP.
Dal momento che le istruzioni sono molto semplici, per raggiungere un buon grado di
astrazione è necessaria una grossa mole di istruzioni, che rendono il programma molto lungo e di
difficile comprensione per un programmatore; per questo motivo, in un programma a basso livello
è molto più difficile effettuare i controlli sugli errori e la manutenzione del codice.
Un linguaggio di alto livello è un linguaggio più vicino al linguaggio umano che permette al
programmatore di scrivere programmi che sono più o meno indipendenti da un particolare tipo di
computer.