Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
IMMAGINI VETTORIALI
Un’ immagine vettoriale è descritta come un insieme di primitive geometriche (punti, linee, segmenti e triangoli) alle
quali possono essere attribuiti colori e anche sfumature. L’immagine è espressa in una forma direttamente comprensibile
dall’uomo e quindi direttamente modificabile. Tra i vantaggi delle immagini vettoriali vi è lo spazio per memorizzare
l’immagine, notevolmente inferiore alle immagini raster e un ingrandimento potenzialmente infinito senza perdite di
qualità.
CODIFICA DEI NUMERI NATURALI
Una stringa binaria come “1101” può essere riportata in sistema decimale attraverso l’utilizzo di potenze del 2 come
riportato di seguito:
1 x 2^3 + 1 x 2^2 + 0 x 2^1 + 1 x 2^0 = 8+4+0+1=13
Per cui possiamo dire che la stringa binaria “1101” nel sistema decimale corrisponde al numero 13.
CODIFICA
CONVERSIONE DA SISTEMA DECIMALE A BINARIO
Per convertire la sola parte intera, si divide il numero per 2, eliminando l’eventuale resto e continuando a dividere per 2 il
quoziente ottenuto fino a quando non si ottiene quoziente uguale a 0. Il numero binario si ottiene scrivendo la serie di resti
delle divisioni, iniziando dall’ultimo resto ottenuto (Attenzione: non fermarsi quando si ottiene quoziente 1, ma
proseguire fino a 0). Supponiamo di voler codificare il numero 18 in numero binario:
Poiché il sistema binario è composto da due (2) cifre,
dividiamo il numero da codificare per 2 fino ad arrivare
al quoziente uguale a 0, in questo caso il numero 18 del
sistema decimale corrisponde alla stringa binaria
“10010”. Un altro esempio è il numero decimale 137 che
viene codificato in sistema binario come “10001001”.
CODIFICA ESADECIMALE
È una codifica di 16 cifre (0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F). Se volessimo codificare il numero 933 in base 10 in un
numero in base 16 dovremmo utilizzare lo stesso metodo di divisione ma invece di dividere per 2, divideremo per 16
(N.B. va letto sempre dal basso verso l’alto).
933 | 16 = 58 resto 5
58 | 16 = 3 resto 10 (il numero 10 in questo caso corrisponde alla lettera A)
3 | 16 = 0 resto 3
Il numero 933 in base 10 diventa “3A5” in base 16.
CODIFICA DEI NUMERI NATURALI (DECODIFICA IN BASE DECIMALE)
Supponiamo di avere un sistema di base β ( la base β comprende i numeri da “0” a “β-1”), dove i numeri naturali
maggiori o uguali a β possono essere rappresentati da una sequenza di n cifre. Supponiamo di voler riportare in base
…
decimale il numero in base β composto dalla sequenza di n cifre: . Per poter fare ciò, utilizziamo la
!"# !"$ # %
seguente formula: !"# & !"# !"$
= & = + + ⋯ + +
& !"# !"$ # %
&'% =
Per esempio, se volessimo decodificare “3A5” (composto da n=3 cifre, dove “3” corrisponde alla posizione ,
$ !"#
= =
“A” corrisponde alla posizione e “5” corrisponde alla posizione ) da base esadecimale (β=16) a
# !"$ % !"(
base decimale, basterebbe utilizzare la formula di sopra:
("# ("$ ("( $
(
3 16 + 10 ) 16 + 5 16 = 3 16 + 10 16 + 5 = 933
N=
QUANTI BIT SERVONO PER CODIFICARE UN NUMERO DECIMALE IN BASE 2?
)
"2 − 1".
K bit rappresentano tutti i numeri che vanno da “0” a Ad esempio, il numero 7, compreso tra 0 e 8 (2^3), ha
bisogno di 3 bit per essere rappresentato; infatti, in codice binario equivale alla stringa “111” (3 bit).
I VARI TIPI DI CODIFICHE:
• Modulo e segno
• Complemento a uno
• Complemento a due
CODIFICA MODULO E SEGNO:
In questa codifica il primo bit rappresenta il segno (“0” corrisponde a “+” e “1” corrisponde a “-”) e gli altri bit
rappresentano il valore assoluto del numero come binario puro. Per esempio, se volessimo usare la codifica modulo e
segno per convertire il numero decimale “-64”, questa si svolgerebbe come riportato di seguito:
1. Rappresentare il segno con il primo bit (in questo caso il segno “-” corrisponde alla cifra “1”): 1
2. Calcolare i bit necessari per codificare il numero assoluto in binario (per codificare “64” servono 7 bit)
3. Codificare il numero assoluto in binario riportando il bit iniziale del segno (“64” equivale a “1000000”): 1 1 0 0 0
0 0 0
Il difetto di questo tipo di codifica è la duplice rappresentazione del valore 0: +0 ( 0 0 ) e -0 (1 0 ). Ciò non permette di
utilizzare le usuali regole di calcolo per eseguire le operazioni:
sistema decimale: 5 + (-5) = 0
codifica modulo e segno: “0 0 1 0 1” + “1 0 1 0 1” = “1 1 0 1 0” (corrisponde a “-10”, non “0”)
COMPLEMENTO A UNO:
La rappresentazione dei numeri positivi è uguale a quella del Modulo e Segno, la rappresentazione dei negativi si ottiene
dalla rappresentazione del numero positivo invertendo i bit. Per esempio, il numero decimale “+5” si traduce come “0 0 0
0 0 1 0 1” e il numero decimale “-5” diventa “1 1 1 1 1 0 1 0”, per cui se volessimo fare
Sistema decimale: 5 + (-5) = 0
Codifica complemento a uno: “0 0 0 0 0 1 0 1” + “1 1 1 1 1 0 1 0” = “1 1 1 1 1 1 1 1” (corrisponde a -0)
Il difetto di questo tipo di codifica è lo stesso del modulo e segno in quanto il valore 0 è rappresentato come “+0”= “0 0”
e “-0”= “1 1”
COMPLEMENTO A DUE:
La rappresentazione dei numeri positivi è uguale a quella del Modulo e Segno, la rappresentazione dei numeri negativi si
*
(−)
= 2 − .
ottiene con la codifica a K bit: Per esempio, se volessimo codificare il numero “+35” questo sarebbe “
* (−35)
=
0 0 1 0 0 0 1 1” (sono 8 bit), invece se volessimo rappresentare il numero decimale “-35”, dovremmo fare: +
+
2 − 35 = 256 − 35 = 221 e il numero “221” nella codifica binaria diventa “ 1 1 0 1 1 1 0 1”. Un altro modo per
calcolare la rappresentazione in complemento a due di un numero negativo è la seguente:
1. Rappresentare il valore assoluto in binario ( “35” diventa “0 0 1 0 0 0 1 1” scritto con 8 bit)
2. Invertire tutte le cifre ( invertiamo “0 0 1 0 0 0 1 1” in “1 1 0 1 1 1 0 0”)
3. Sommare 1 (“1 1 0 1 1 1 0 0” + “0 0 0 0 0 0 0 1” = “1 1 0 1 1 1 0 1”)
OSSERVAZIONE DELLA RAPPRESENTAZIONE DELLO 0
Codifica “Modulo e Segno”: rappresentazione ambigua “+0” = “0 0” e “-0”= “1 0”
Codifica “Complemento a uno”: rappresentazione ambigua “+0” = “0 0” e “-0”= “1 1”
Codifica “Complemento a due”: rappresentazione univoca “0” = “0 0”
OPERAZIONI ALGEBRICHE: SOMMA E SOTTRAZIONE SU INTERI
Somme fra “cifre”: 0 + 0 = 0; 1 + 0 = 1; 0 + 1 = 1; 1 + 1= 10
Esempio di somma e differenza La codifica “complemento a due” ha come vantaggio
che per effettuare una sottrazione, questa equivale alla
somma del minuendo con il complemento del sottraendo
[per esempio invece di fare 12 – 14 possiamo fare 12 +
(-12) utilizzando il complemento a due].
OPERAZIONI ALGEBRICHE: ERRORI
Gli elaboratori elettronici utilizzano un numero fissato di bit per rappresentare un dato tipo di numeri. Un’operazione può
produrre un valore non rappresentabile, distinguiamo in particolare due casi:
• OVERFLOW: i
l valore assoluto del risultato è maggiore della massima quantità rappresentabile. Supponiamo
che il computer supporti una rappresentazione dei numeri a 8 bit e si voglia eseguire la seguente operazione:
11111111 (255) + 00000001 (1) = * * * * * * * * * (errore di overflow). L’elaborazione si arresta e viene
segnalato un errore di overflow perché il risultato verrebbe 100000000 (256) composto da 9 bit.
• UNDERFLOW: il risultato è minore (in valore assoluto) della minima quantità rappresentabile. Nella
rappresentazione in virgola mobile, corrisponde ad un overflow dell’esponente. Il risultato è approssimato con 0
(e si segnala la condizione). PYTHON
ELEMENTI BASE DEL LINGUAGGIO
Python è un linguaggio di programmazione di alto livello, diverso dai linguaggi di basso livello chiamati anche
“linguaggi macchina” che possono eseguire soltanto programmi scritti in linguaggio di basso livello. I linguaggi di alto
livello, invece, devono essere elaborati prima di poter essere eseguiti e questo processo di elaborazione impiega tempo e
costituisce un piccolo svantaggio nei linguaggi di alto livello. Nonostante ciò, i linguaggi di alto livello hanno
innumerevoli vantaggi tra cui la portabilità, ovvero questi programma possono essere eseguiti su tipi di computer diversi
con poche modifiche o addirittura nessuna. I programmi di alto livello vengono trasformati in programmi di basso livello
eseguibili dal computer tramite due tipi di elaborazione: l’interpretazione e la compilazione.
Un interprete legge il programma di alto livello e lo esegue, trasformando ogni riga di istruzione in un’azione (i
programmi Python vengono eseguiti da un interprete).
Un compilatore legge il programma di alto livello (chiamato anche codice sorgente) e lo traduce completamente in basso
livello (chiamato codice oggetto o eseguibile), prima che il programma venga eseguito.
Figura 1 Un interprete (fig. 1) elabora il programma un po’ per
volta, leggendo le righe ed eseguendo i calcoli
alternativamente.
Un compilatore (fig. 2) traduce il codice sorgente in
codice oggetto, che viene avviato da un esecutore
hardware.
Figura 2
Esistono due modalità di usare l’interprete: la modalità interattiva e la modalità script.
In modalità interattiva (detta “a riga di comando”) si scrivono i programmi in Python e l’interprete elabora
immediatamente il risultato (scrivendo 1+1 otteniamo 2). Questa modalità è conveniente per eseguire piccoli pezzi di
codice, perché si possono inserire ed eseguire immediatamente.
In modalità script si può scrivere e salvare un programma in un file di testo semplice, chiamato script, ed usare
l’interprete per eseguire il contenuto del file. Questa modalità è preferibile per eseguire un codice di più di poche righe,
salvandolo in uno script per poterlo esegu