You are on page 1of 67

UD1

U.D. Algoritmi e Rappresentazione


dell’Informazione

Prof. Fabio Cantaro


Obiettivi
 Questo modulo permetter à al discente di comprendere i concetti fondamentali delle
Tecnologie dell’Informazione e della Comunicazione (ICT) ad un livello generale
 conoscere le varie parti di un computer, quindi, sar à in grado di :
Comprendere cosa è l’hardware, conoscere i fattori che influiscono sulle prestazioni di
un computer e sapere cosa sono le periferiche.
Comprendere cosa è il software e fornire esempi di applicazioni di uso comune e di
sistemi operativi.
Comprendere come vengono utilizzate le reti informatiche e cono scere le diverse
modalità di collegamento a Internet.
Comprendere cosa sono le Tecnologie dell ’Informazione e della Comunicazione (ICT) e
fornire esempi della loro applicazione pratica nella vita quotid iana.
Comprendere le problematiche di igiene e sicurezza associate al l’impiego dei computer.
Riconoscere importanti problematiche di sicurezza informatica a ssociate all’impiego dei
computer.
Riconoscere importanti problematiche legali relative al diritto di riproduzione (copyright)
e alla protezione dei dati associate all ’impiego dei computer.
Algoritmo: definizione
 In informatica, con il termine algoritmo si
intende un metodo per la risoluzione di un
problema adatto a essere implementato sotto
forma di programma.
 Dunque, più dettagliatamente esso è:
“una sequenza logica di istruzioni elementari
(univocamente interpretabili) che, eseguite in
un ordine stabilito, permettono la soluzione di
un problema in un numero finito di passaggi ”.
Proprietà algoritmi
 la sequenza di istruzioni deve essere finita;
 essa deve portare ad un risultato;
 le istruzioni devono essere tutte eseguibili
dall’esecutore;
 le istruzioni devono essere espresse in modo
non ambiguo.
Esempio: somma di due
numeri digitati dall’utente
INIZIO
a) Ci vogliono i due numeri interi (ingredienti);
b) Acquisisci il primo numero dalla tastiera;
c) Acquisisci il secondo numero dalla tastiera;
d) Somma i due numeri;
e) Mostra il risultato sullo schermo.
FINE
Rappresentazione degli
Algoritmi
 prima di passare al codice (programma)
utilizzando un linguaggio di programmazione,
si usa utilizzare un diagramma di flusso o
diagramma a blocchi o flow-chart
 Fa uso di:
 SIMBOLI GRAFICI (figure geometriche), per la
sequenza di Istruzioni
 DATI:
 Costanti: stesso valore nell’esecuzione
 Variabili: possono variare durante l’esecuzione
Simboli dei FLOW-CHART
Esempio

La somma di due numeri


Altro esempio
 Dato un numero n, calcolare il cubo se
n>0 il quadrato se è negativo
Start

Leggi n

F V
N>0
Ris= n * n Ris= n * n* n

Scrivi Ris

End
Rappresentazione dei Dati
 UD 2
Informazione
 Tutto ciò che possiede un significato per l ’uomo e
che viene comunicato o conservato in vista di una
utilità pratica.
 Le informazioni si presentano in varie forme:
 Caratteri
 Numeri
 Immagini
 Luce
 suoni
 Ecc…
Trasmissione delle
informazioni
 Affinchè 2 entità possano comunicare è necessario che
riescano a capirsi (esempio 2 persone che parlano lingue
diverse).
 Allora occorre che siano stabiliti e rispettati:
 Il CODICE della trasmissione, cioè le regole secondo
cui viene TRADOTTO il messaggio prima dell ’invio (es.
alfabeto comune e le parole in italiano)
 La TECNICA di trasmissione (es. telefono)
 Il PROTOCOLLO della trasmissione, cioè le Regole
per uno scambio corretto delle informazioni (es. regole
grammaticali per creare frasi che abbiano un senso
compiuto in Italiano)
Esempio
 Giochiamo a carte: a poker
 Il codice sono il tipo di carte (francesi)
 Il protocollo sono le regole del poker
 La tecnica: visualizzazione delle carte
 Se decido di giocare a Texas Holdem => modifico il protocollo

regole
Esempio 2
 Giochiamo a carte: a briscola
 Il codice è diverso (carte napoletane o siciliane)
 Il protocollo sono le regole della briscola
 Se decido di giocare a scopa => modifico il protocollo

regole
Trasmissione delle informazioni(2)
 I caratteri e i simboli che compongono il
Messaggio e che vengono trasformati per
viaggiare sul mezzo trasmissivo sono detti
SEGNALI
 I Segnali possono essere:
 DIGITALI: se associati a cifre binarie (0,1)

 ANALOGICI: se sono rappresentati da


grandezze che variano con continuit à nel
tempo
Trasmissione delle informazioni(3)

0110011001110011

Comunicazione Digitale

Comunicazione Analogica
Rappresentazione dei dati
 Come rappresentare i numeri e le operazioni
nel pc? (sistemi di numerazione)
 Come rappresentare i caratteri?
 E come rappresentare immagini, suoni,
ecc…?
Rappresentazione dei numeri
 Sistemi posizionali.
 Es. Decimale, binario, esadecimale, ottale

 Sistemi non posizionali


 Es. Romano
Rappresentazione dei numeri
 Sistemi non posizionali .
Esempio: Sistema Numerazione I=1
Romano.
V=5
X = 10
L = 50
Esempio: MCD = CDM
C = 100
Infatti. 1000+100+500=100+500+1000
D = 500
M = 1000
Rappresentazione dati
 Sistemi posizionali
La posizione è importante!!!

Esempio 853  358 (sistema decimale)


Posto 2 Posto 0
Posto 1

Infatti:
853= 8*10 2 + 5*101 + 3*100 =800 + 50 + 3
358= 3*10 2 + 5*101 + 8*100 =300 + 50 + 8
Sistema Decimale
 B=10 => A={0,1,2,3,4,5,6,7,8, 9 (=10-1) }

 Ogni cifra decimale deve essere una


dell’alfabeto
Sistema Binario
 B=2 => A={0,1}
 Il Sistema Binario è un sistema posizionale
basato su due sole cifre: 0 e 1 detti BIT
(Binary Digit)

Esempi di numeri binari :


101
10010101
1010211 non è binario, infatti 2{0,1}
Perché il sistema binario?
 I computer non parlano la nostra stessa
lingua, ma utilizzano un sistema formato da
due numeri 0 e 1 (On e Off, passaggio o
assenza di corrente elettrica)
Conversione 2 -> 10
Si moltiplica ogni cifra per la potenza di 2 in base alla posizi one occupata.

• Esempio: convertiamo 1011 in decimale

corrisponde a 1*23 + 0*22 + 1*21 +1*20 = (11)10 in decimale


esercizio
 Convertire i seguenti numeri binari in
decimale:
 1101
 10001
 111
Soluzione
 Convertire i seguenti numeri binari in
decimale:
 (1101)2 = 1*23+1*22+0*21+1*20 =8+4+0+1=13
 (10001) 2 = (17)10
 (111)2 = (1101) 2
Conversione 10->2
 Si divide ripetutamente il numero decimale per
2 e si prendono i resti in ordine inverso

Esempio: 20 in binario.
Esercizio
 Convertire da decimale a binario i seguenti
numeri:
 (15)10
 (63)10
 (64)10
 (1045)10
Esercizio: SOLUZIONE
 Convertire da decimale a binario i seguenti
numeri:
 (15)10 = (1111) 2
 (63)10 = (11 1111) 2
 (64)10 = (100 0000) 2
 (1045)10 = (100 0001 0101) 2
In windows
 Nei sistemi windows è possibile convertire un numero tra i principali sistemi
numerici :
 il binario(Bin),

 l’ottale (Oct).
 Il decimale (Dec)
 l’esadecimale (Hex).
 Start/Tutti i programmi/Accessori/Calcolatrice
 scegliere menu Visualizza/Scientifica.
Rappresentare i caratteri in forma
binaria

 A seconda del sistema, per rappresentare un


carattere servono:
 1 byte (8 bit), standard ASCII
 2 byte (16 bit), standard UNICODE
Standard ASCII
 Con 8 bit => 256 simboli => 2 8=256

Cioè

Sommando i singoli valori (1 + 2 + 4 + 8 + 16 + 32 + 64 + 128) si ottiene 255


a cui, aggiungendo anche lo zero, abbiamo 256 possibili valori ottenibili.

256 possibili combinazioni di bit => posso associare a ognuna un


carattere
Sistema Esadecimale
 I computer “parlano in bit” => per noi sarebbe
molto complicato capire cose del tipo:
0000 1001
1110 0110
1001 0011
….
=> Venne quindi creato il sistema
ESADECIMALE
Esadecimale
 Usa 16 simboli A={0,1,2,…,9,A,B,C,D,E,F}
 Ogni cifra esadecimale “usa” 4 bit

Bit Hex Bit hex

I numeri decimali da 10 a 15 sono stati sostituiti con le prime 6


lettere dell’alfabeto.
Rappresentazione dei caratteri
 Si è creata una tabella in cui a ogni numero
binario (codice) fanno corrispondere un
carattere
 Nella tabella sottostante sono riportati i si
mboli grafici di alcuni caratteri, la loro vale
nza binaria ed il corrispondente valore espre
sso sia in decimale che in esadecimale:
L’INFORMAZIONE digitale

37
Esercizi
 Come si rappresentano i caratteri al PC?
 Quanti bit utilizza lo Standard ASCII
 Quanti caratteri puo’ rappresentare lo
standard ASCII
 Quanti bit utilizza lo Standard Unicode?
 Quanti bit prende la rappr. Esadecimale?
Descrivere le caratteristiche di
una immagine digitale
 L’immagine digitale è un’immagine bidimensionale
rappresentata da valori numerici.
 Fondamentalmente le immagini digitali sono di due tipi (in
base al tipo di rappresentazione):
 RASTER (o bitmap): matrice di punti elementari, chiamati pixel
(da picture element).
 VETTORIALE: insieme di nodi formanti linee e poligoni a loro volta
uniti in strutture più complesse.
Parentesi: Concetti di base

Che cos'è un pixel?


 un pixel è il più piccolo componente discreto di una
immagine sullo schermo
 normalmente un punto con colore

Che cos'è la risoluzione video?


 la risoluzione è il numero di pixel (o punti) per
pollice dpi (dots per inch)

40
Risoluzione
 Esempio i mosaici

Più piccoli sono i tasselli maggiore è la qualità


l’immagine
Immagine Bitmap o Raster
 Caratterizzata da 2 proprietà:
 Risoluzione: numero di pixel per centimetro
quadrato (DPI);
 Profondità di colore: numero di colori che si
possono usare. Si può avere profondit à:
 16 colori (4 bit per pixel)
 256 colori (8 bit per pixel)
 65536 colori (16 bit per pixel)
 16,77 milioni di colori (24-32 bit per pixel)
L’INFORMAZIONE digitale

43
Immagine Bitmap o Raster (2)
 Sono costituite da pixel
 Consentono una transizione graduale del colore
 Se ingrandite si perde in qualit à
 Occupano molto spazio
 Possono essere salvate in diversi formati:
 Compressione Lossless (senza perdita): BMP, TIFF,
PNG, RAW, ecc…
 Compressione Lossy (perdita): JPEG, GIF (256 colori)
Esempi bitmap

Immagine

Immagine ingrandita “sgranata”


IMMAGINI VETTORIALI
 Contengono infomazioni:
 Circa le FORME che formano l’immagine
(dimensione, posizione, ecc…)
 Circa i COLORI da applicare a ogni forma
 RENDERING: processo di creazione
dell’immagine in PIXEL partendo da queste
informazioni
 MOTORE DI RENDERING : programma che
esegue il rendering
Esempio Immagini
Immagine Originale

Immagine Vettoriale ingrandita 8x

Immagine Raster ingrandita 8x


Acquisizione Immagini
 Catturandole da schermo (tasto stamp)
 Scannerizzarle da formato cartaceo
 importarle da fotocamere digitali
 Scaricarle da Internet o da CD
 OCR: scannerizzando un documento ottengo
una immagine => con OCR di nuovo
documento
Esercizi
 Da cosa è caratterizzata una immagine
bitmap?
 Da cosa è caratterizzata una immagine
vettoriale?
 Quali sono i formati più comuni per una
immagine raster?
Linguaggi
 Con il linguaggio vengono definite:
 Il Lessico: insieme delle parole con relativo significato;
 La Sintassi: regole per costruire una frase in modo
corretto.
 L’uomo utilizza il linguaggio naturale che è molto
ricco di espressività ma è ambiguo:
 Esempio: “la bella pesca” può essere interpretata in due
modi:
1. La bella ragazza che pesca

2. Un bel frutto
Lunguaggio macchina
 Un elaboratore non può però gestire
informazioni ambigue
 Il linguaggio macchina è l’unico linguaggio
capito dal computer:
 risulta veloce nell’esecuzione
 ma ha lo svantaggio di una difficile e lunga
scrittura della sequenza di algoritmi (programma)
e della loro messa a punto.
Linguaggi di programmazione
 Non è possibile realizzare traduttori dal linguaggio
naturale al linguaggio macchina => servono i
linguaggi di programmazione
 essi sono comprensibili all’uomo e, tramite un
traduttore, vengono tradotti in linguaggio macchina
Linguaggio Naturale (Algoritmi)

Linguaggio Programmazione
Traduttori (compilatori, interpreti)

Linguaggio macchina 1000100011

CPU
Esercizi
 Quali sono gli elementi del Linguaggio
macchina?
 Il linguaggio naturale può essere usato per il
computer?
 L’uomo programma oggi col linguaggio
macchina? Con cosa?
1.0.3.2 Distinguere il ruolo dei
connettivi logici (NOT, AND, OR)
 Consideriamo le frasi:
A=“Ho fame” B=”Ho i soldi”
 Queste affermazioni possono vere o false
 I connettivi permettono di legare i due
suddetti enunciati e di crearne un terzo.
Esempio:
 Se “ho fame” e “ho i soldi” allora “Vado al
ristorante” => A and B = C
Connettivo AND
 E vero solo se i due input sono veri.

Tabella di verità:
Posso andare al ristorante
solo se ho i soldi e ho
anche fame

 In generale A and B = C è vera se:


A B C
0 0 0
0 1 0 In Algebra di Boole
1 0 0
1 1 1
Connettivo OR
 E vero se almeno uno i due input è vero.

Tabella di verità:
Fame Soldi Ristorante
0 0 0
Anche se non ho fame, ma
ho i soldi vado al
0 1 1 ristorante e viceversa,
anche se non ho i soldi
1 0 1 ma ho vado al ristorante
1 1 1

 In generale A and B = C è vera se:


A B C= A and B

0 0 0
0 1 1 In Algebra di Boole
1 0 1
1 1 1
Connettivo NOT
 L’operazione NOT ha una variabile di input ed una
variabile di output.
 Il valore della variabile di output è l’opposto di quella
di input

A Not A

0 1
1 0

In Algebra di Boole
Ripasso
 A cosa serve AND?
 A cosa serve OR?
 A cosa serve NOT?
1.0.3.3 Distinguere fra linguaggio
macchina e linguaggi procedurali
 I linguaggi di programmazione sono di due tipi:
 basso livello:
 linguaggi assemblativi orientati alla macchina (comunicano
direttamente con il computer utilizzando il "linguaggio
macchina");
 il "linguaggio macchina“ è l’unico linguaggio compreso dal
computer
 alto livello:
 orientati all’uomo
 fanno uso di uno pseudo linguaggio umano, utilizzando allo
scopo codici operativi in lingua inglese.
 Ogni linguaggio di programmazione ha bisogno di un
traduttore
I Traduttori: Compilatori e
Interpreti
 trasformano un programma sorgente (espresso in
un linguaggio di programmazione), in un programma
oggetto (tradotto in codice binario).
 dipendono dal linguaggio di programmazione e
dall’architettura del computer.
Linguaggi
Linguaggi ad
ad Alto
Alto Livello
Livello
(Orientati
(Orientati all’uomo)
all’uomo)
C,
C, C++,
C++, Java,
Java, Visual
Visual
Basic,
Basic, Pascal, ecc…
Pascal, ecc…

Compilatori
Compilatori oo Interpreti
Interpreti Traduttore

Linguaggio
Linguaggio Macchina
Macchina
(codice
(codice Binario)
Binario)
Compilatori e Interpreti: le fasi
I Compilatori:
 trasformano un programma “sorgente” (scritto in linguaggio di
programmazione) in un file “oggetto” (tradotto in linguaggio macchina
ma non ancora utilizzabile).
 Per rendere “eseguibile” il risultato ottenuto è necessario che sia
ulteriormente trattato da un programma definito “linker” (o link editor),
che collega, tra loro, i vari moduli tradotti ed i riferimenti e sterni (ad
esempio librerie di sistema), creando il programma eseguibile .

Gli Interpreti:
 leggono una istruzione alla volta
 => la traducono in codice macchina
 => e la eseguono => traduzione ed esecuzione sono contemporanei
Linguaggi Assemblativi ed
assemblatori
 I linguaggi assemblativi:
 Sono linguaggi di tipo simbolico in quanto utilizzano
dei nomi (simboli) per designare il codice operativo e
le variabili che compongono il programma.
Linguaggi
Linguaggi aa bassobasso Livello
Livello
 Gli Assemblatori sono i traduttori dei linguaggi
assemblativi. ((orientati
orientati alla
alla macchina)
macchina)
Assembly
Assembly

 L’Assembly (assemblatore):
 è il primo linguaggio informatico utilizzato, Assemblatore
Assemblatore
 è comprensibile agli utilizzatori umani,
 ma è talmente simile al linguaggio macchina che
rimane legato al processore su cui viene sviluppato il
programma Linguaggio
Linguaggio Macchina
Macchina
 Tale programma non potrà essere eseguito su (codice
(codice Binario)
Binario)
computer con processori diversi.
Alcuni linguaggi di
programmazione
 Fortran (FORmula TRANslation): uno dei primi linguaggi di alto
livello ad uso scientifico
 COBOL (COmmon Business-Oriented Language) ossia,
letteralmente, "linguaggio orientato alle applicazioni commercia li
comuni"
 C, per uso ingegneristico. Usato per scrivere sistemi operativi
come Linux
 Java, per applicazioni web
 PHP, per applicazioni web
 PASCAL, per uso didattico
 BASIC, inizialmente per applicazioni didattiche e scientifiche.
Oggi Visual Basic
Scrivere un programma con
Pseudo linguaggio
 È un modo alternativo per rappresentare gli
algoritmi
 Le istruzioni sono descritte tramite frasi
rigorose
 Si usano parole chiave, operatori e nomi di
variabili
 Non è usabile direttamente => va tradotto in
un linguaggio di programmazione
Esempio di pseudo linguaggio
 Calcolare l’area di un quadrato dato il lato.
Inizio

PSEUDO LINGUAGGIO
Leggi Lato
PROGRAMMA Area
Area = Lato * Lato INIZIO
Leggi (Lato)
Scrivi Area Area Lato*Lato
Scrivi (Area)
Fine FINE
Esercizi
 Il linguaggio C è un linguaggio di alto livello?
 Differenza tra Interpreti e Compilatori?
 Cosa sono i Flow Chart?
 L’assembly è un linguaggio di alto livello?
 I compilatori traducono un file sorgente in
codice oggetto e quindi con il Linker si
genera il file eseguibile?
FINE
U.D. Algoritmi e Rappresentazione
dell’Informazione