Concetti di base delle tecnologie I.T.C.

Concetti di base delle tecnologie I.T.C.
1. Fondamenti
Indice generale
Cosa si intende con il termine informatica?.........................................................................................3
Cosa vuol dire Information technology................................................................................................3
Differenza tra hardware e software......................................................................................................3
Cos'è un programma?...........................................................................................................................3
Algoritmi..........................................................................................................................................4
Definizione di Algoritmo............................................................................................................4
Esempio di algoritmo per il calcolo del Massimo Comune Divisore:...................................4
Diagramma di flusso (semplificato).......................................................................................5
Test di Turing..........................................................................................................................5
Rappresentazione dei dati................................................................................................................6
Sistema numerico decimale........................................................................................................6
Sistema numerico binario............................................................................................................6
Rappresentazione dei caratteri: codice ASCII.............................................................................7
Bit...........................................................................................................................................7
Byte........................................................................................................................................7
BPS.........................................................................................................................................7
Immagine digitale.......................................................................................................................8
Digitale...................................................................................................................................8
Bitmap....................................................................................................................................8
Pixel........................................................................................................................................8
Immagine vettoriale................................................................................................................8
Linguaggi.........................................................................................................................................8
Linguaggio naturale e di programmazione.................................................................................8
I connettivi logici........................................................................................................................9
Distinzione tra linguaggio macchina e linguaggi procedurali.....................................................9
Pseudo Linguaggio: il programma ...........................................................................................10
Pag. 2
Cosa si intende con il termine informatica?
L'informatica è una scienza interdisciplinare che riguarda tutti gli aspetti del trattamento
dell'informazione mediante procedure automatizzabili. L'etimologia italiana della parola
"informatica" proviene dalla lingua francese, dalla compressione di inform(ation electronique ou
autom)atique, e sicuramente Philippe Dreyfus, che per primo utilizza nel 1962 il termine
informatique (informatica) voleva intendere il trattamento automatico dell'informazione mediante
calcolatore.
Cosa vuol dire Information technology.
La Tecnologia dell'Informazione e della Comunicazione (TIC), in lingua inglese Information
and Communication Technology (ICT), è l'insieme di studio, progettazione, sviluppo,
implementazione, supporto e gestione dei sistemi informativi computerizzati con particolare
attenzione alle applicazioni software ed ai componenti hardware che le ospitano. Il fine ultimo
dell'ICT è la manipolazione dei dati tramite conversione, immagazzinamento, protezione,
trasmissione e recupero sicuro delle informazioni.
→ Indica l’insieme delle tecnologie che consentono il trattamento e lo scambio delle informazioni
in formato digitale.
Differenza tra hardware e software
•
•
l'hardware è l'insieme di dispositivi fisici di un computer, ossia l'unità centrale, il monitor,
la tastiera, il mouse, la stampante, i dischetti;
→ Insieme dei dispositivi elettronici e meccanici del computer.
il software è dato dall'insieme dei programmi che permettono il funzionamento
dell'hardware. Parlando di software occorre fare un'ulteriore distinzione tra sistemi operativi
e programmi applicativi: i sistemi operativi rappresentano quei particolari programmi che
vengono caricati per prima nei PC e che controllano il funzionamento interno del sistema,
nonché le periferiche dell'elaboratore (stampanti, modem, scanner…); i programmi
applicativi sono invece quelli che vengono caricati successivamente e presentano un'utilità
particolare per l'utente: si tratta di volta in volta di programmi di video scrittura, fogli
elettronici, archivi di dati, grafica, solo per citare i più comuni.
Cos'è un programma?
Un programma per calcolatore, o semplicemente programma, è la descrizione di un
algoritmo (vedi voce successiva) in un linguaggio adatto a essere eseguito da un computer o da una
macchina virtuale. È una sequenza logicamente ordinata di operazioni o comandi di istruzioni, un
insieme di istruzioni che produce soluzioni per una data classe di problemi.
Il termine programma deve essere distinto da quello, più generico, di software; per
programma si intende infatti un oggetto software che può essere caricato nella memoria di un
computer ed eseguito in un nuovo processo. Altri oggetti software (per esempio le librerie) non
hanno questa proprietà, ovvero non possono essere "eseguite" direttamente. Analogamente sarebbe
opportuno distinguere il termine "programma" dal termine applicazione, che viene usato
normalmente nella prospettiva dell'utente finale per intendere un "servizio" di cui l'utente può
usufruire, a prescindere dal fatto che questo sia realizzato da un programma solo o da una
Pag. 3
collezione di programmi; una considerazione analoga si può applicare all'espressione sistema
software, usata di norma per indicare esplicitamente una collezione di componenti software
(programmi, librerie, file e così via) interagenti.
Algoritmi
Definizione di Algoritmo
Un algoritmo si può definire come un procedimento che consente di ottenere un risultato
atteso eseguendo, in un determinato ordine, un insieme di passi semplici corrispondenti ad azioni
scelte solitamente da un insieme finito.
→ Insieme di calcoli che, svolti ripetutamente e sempre nella stessa sequenza, conducono ad un
obiettivo. Sembra che il nome derivi da un matematico iraniano di nome Al-Khawarizmi.
→ Sequenza logica di istruzioni elementari (univocamente interpretabili) che, eseguite in un ordine
stabilito, permettono la soluzione di un problema in un numero finito di passi
Esempio di algoritmo per il calcolo del Massimo Comune Divisore:
Il massimo comune divisore può essere calcolato, in linea di principio, determinando la
scomposizione in fattori primi dei due numeri dati e moltiplicando i fattori comuni, considerati una
sola volta con il loro minimo esponente. Per esempio, per calcolare il MCD(18,84) si scompongono
dapprima i due numeri in fattori primi, ottenendo 18=2·32 e 84=22·3·7, e poi si considerano i fattori
comuni ai due numeri, 2 e 3: entrambi compaiono con esponente minimo uguale a 1, e quindi si
ottiene che MCD(18,84)=6.
Questo metodo è utilizzabile, nella pratica, solo per numeri molto piccoli: la scomposizione
in fattori primi di un numero richiede in generale troppo tempo.
Un metodo molto più efficiente è fornito dall'algoritmo di Euclide: si divide 84 per 18
ottenendo un quoziente di 4 e un resto di 12. Poi si divide 18 per 12 ottenendo un quoziente di 1 e
un resto di 6. Infine si divide 12 per 6 ottenendo un resto di 0, il che significa che 6 è il massimo
comune divisore.
Per esempio, il MCD di 1071 e 1029 risulta essere 21; valore che viene calcolato da questo
algoritmo nei passaggi seguenti:
A
1071
1029
42
21
B
1029
42
21
0
R
42
21
0
Codice Python
def mcd(a, b):
if b == 0:
return a
else:
return mcd(b, a % b)
Pag. 4
Codice VisualBasic.net
Public Function MCD(ByVal a As Integer, ByVal b As Integer) As Integer
Dim m As Decimal
If b = 0 Then Return a Else
Do
m = a Mod b
a=b
b=m
Loop Until b = 0
Return a
End Function
Diagramma di flusso (semplificato)
Immetti due numeri A ed B
Dividi A con B
e
conserva il resto R
A == B*
e
B == R
R=0 ?
NO
SI
Stampa la risposta A
A diventa come B e B diventa R
Test di Turing
Il Test di Turing è un criterio, introdotto da Alan Turing nell'articolo "Computing machinery
and intelligence", apparso nel 1950 sulla rivista Mind, per determinare se una macchina sia in grado
di pensare.
Pag. 5
Rappresentazione dei dati
Sistema numerico decimale
Il Sistema numerico decimale è un sistema di numerazione posizionale che, per
rappresentare i numeri, utilizza dieci cifre da 0 a 9.
Per convertire manualmente un numero decimale in binario: in pratica basta scrivere il numero su
un foglio, per esempio 123 e tracciare accanto ad esso una linea verticale verso il basso che ci
aiuterà nel calcolo. A questo punto dividiamo il numero 123 per 2 (ottenendo 61) e scriviamo il
resto (1) alla destra della riga). Il 61 ottenuto lo scriveremo invece sotto al numero precedente (123)
e ripeteremo l'operazione fino a che il numero alla sinistra della riga non diventi 1. A questo punto
basta leggere la serie di 1 e 0 ottenuta (dal basso verso l'alto) per ottenere il corrispondente binario.
123
61
30
15
7
3
1
1
1
0
1
1
1
Sistema numerico binario
Il sistema numerico binario è un sistema numerico posizionale in base 2, cioè che utilizza 2
simboli, tipicamente 0 e 1, invece dei 10 del sistema numerico decimale tradizionale. Di
conseguenza, la cifra in posizione N (da destra) si considera moltiplicata per 2^N (anziché per 10^N
come avverrebbe nella numerazione decimale).
Esempio.
binario
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
esadecimale decimale
=
0
=
0
=
1
=
1
=
2
=
2
=
3
=
3
=
4
=
4
=
5
=
5
=
6
=
6
=
7
=
7
=
8
=
8
=
9
=
9
=
A
=
10
=
B
=
11
=
C
=
12
=
D
=
13
=
E
=
14
=
F
=
15
La formula per convertire un numero da binario a decimale (dove con d si indica la cifra di
posizione n all'interno del numero, partendo da 0) è:
d(n - 1)2(n - 1) + ... + d020 = N
Ad esempio 10012 = 1 * 23 + 0 * 22 + 0 * 21 + 1 * 20 = 910
Pag. 6
Rappresentazione dei caratteri: codice ASCII
ASCII è l'acronimo di American Standard Code for Information Interchange (ovvero Codice
Standard Americano per lo Scambio di Informazioni), pronunciato in inglese äschi, mentre in
italiano è comunemente pronunciato asci.
È un sistema di codifica dei caratteri a 7 bit comunemente utilizzato nei calcolatori, proposto
dall'ingegnere dell'IBM Bob Bemer nel 1961, e successivamente accettato come standard dall'ISO
(ISO 646). Per non confonderlo con le estensioni a 8 bit proposte successivamente, questo codice
viene talvolta riferito come US-ASCII.
Bit
Binary Digit (cifra binaria). È l’unità di misura più piccola dei dati di un computer. In bit
vengono misurati i dati informatici, in BPS la velocità della trasmissione di informazioni.
Byte
È un gruppo di 8 bit che viene trattato, immagazzinato e gestito come se fosse un’unica unità
informatica.
BPS
Bit Per Secondo. Rappresenta l’unità di misura delle velocità di trasmissione dei dati sulle
linee. Indica il numero di bit che possono essere inviati o ricevuti in un secondo.
Pag. 7
Immagine digitale
Un'immagine digitale è la rappresentazione di un'immagine bi-dimensionale tramite una
serie di valori numerici, che la descrivono a seconda della tecnica utilizzata.
Le immagini digitali sono fondamentalmente di due tipi: una matrice di punti (o pixel) nelle
immagini bitmap o, nelle immagini vettoriali, un insieme di punti (o nodi) uniti in linee o altre
primitive grafiche che compongono l'immagine, insieme ad eventuali colori e sfumature.
Digitale
Circuito o dispositivo che può variare solo per un numero finito di livelli o stati, come per
esempio 0 e 1. È l’opposto di analogico.
Bitmap
In questo tipo di immagini, i valori memorizzati indicano le caratteristiche di ogni punto
dell'immagine da rappresentare (pixel)
Il numero (detto anche "profondità") di colori o di livelli di grigio possibili dipende dal
massimo numero di combinazioni permesse dalla quantità di bit utilizzata per ognuno di questi dati:
un'immagine con 1 bit per pixel avrà al massimo due combinazioni possibili (0 e 1) e quindi potrà
rappresentare solo due colori o solo bianco e nero; nelle immagini a 4 bit per pixel, si possono
rappresentare al massimo 16 colori o 16 livelli di grigio; un'immagine a 8 bit per pixel, 256 e così
via.
Pixel
Abbreviazione di “picture element” (elemento d’immagine). Il più piccolo elemento
quadrato che compone un’immagine bitmap (pensate alle tessere di un mosaico). Maggiore è il
numero di pixel, più definita sarà l’immagine.
Immagine vettoriale
Le immagini vettoriali sono un tipo di immagine facilmente scalabile e ruotabile, ottenuto
dall'unione di un certo numero di punti o nodi, che formano linee e poligoni, a loro volta uniti in
strutture più complesse, fino a formare l'immagine voluta.
Questo tipo di immagine è utilizzato nel disegno tecnico per la progettazione architettonica ed
industriale, nella rappresentazione di certi font, nella grafica per la creazione di loghi e marchi o
altri oggetti, eccetera.
Linguaggi
Linguaggio naturale e di programmazione
Il primo può essere definito come l'insieme di segnali e simboli per mezzo dei quali gli
animali, compreso l'uomo, comunicano tra loro (esempio di linguaggio animale è la danza con la
quale comunicano tra loro le api; esempio di linguaggio umano non verbale è la comunicazione
gestuale dei mimi). In riferimento all'uomo, il linguaggio verbale è la facoltà di comunicare ed
esprimere concetti, sentimenti ecc. per mezzo di suoni articolati, organizzati in parole. In senso più
ristretto, il termine indica anche il modo di esprimersi che caratterizza una persona, un ambiente
Pag. 8
professionale o una categoria sociale.
Il secondo è un linguaggio formale dotato di una sintassi ben definita che viene utilizzato per
scrivere programmi che realizzano algoritmi. Sono nati per facilitare la programmazione dei
calcolatori rendendo possibile descrivere gli algoritmi e le strutture dei dati in una forma più vicina
a quella del linguaggio umano scritto. A seconda del metodo utilizzato per tradurre il testo delle
istruzioni in linguaggio macchina vengono suddivisi in due categorie: compilati (usano un
compilatore) e interpretati (usano un interprete).
I connettivi logici
Un connettivo logico, o operatore logico, è quell'operazione che instaura fra due
proposizioni A e B una qualche relazione che dia origine ad una terza proposizione C con un valore
vero o falso, in base ai valori delle due proposizioni fattori ed al carattere del connettivo utilizzato. I
principali connettivi logici binari sono:
L' operazione AND da come valore 1 (vero) solo se tutti gli operandi hanno valore 1, altrimenti
restituisce 0 (falso). Tale operazione è anche detta prodotto logico.
A B A AND B
0 0 0
0 1 0
1 0 0
1 1 1
L' operazione logica OR restituisce 1 (vero) se almeno uno degli elementi è 1; altrimenti restituisce
0 (falso) solo se tutti gli operandi sono 0 (falso). Tale operazione è anche detta somma logica.
A B A OR B
0 0 0
0 1 1
1 0 1
1 1 1
L'operatore NOT restituisce il valore inverso di quello in entrata. Una concatenazione di NOT è
semplificabile con un solo NOT in caso di dispari ripetizioni o con nessuno nel caso di pari.
A NOT A
1 0
0 1
Distinzione tra linguaggio macchina e linguaggi procedurali
La Programmazione(in Informatica) è l’attività svolta per creare un Programma.
Un Programma è costituito, come ogni altro tipo di linguaggio, da un alfabeto, con cui viene
costruito un insieme di parole chiave (il vocabolario) e da un insieme di regole sintattiche per l’uso
corretto delle parole del linguaggio
I linguaggi di programmazione differiscono dai linguaggi naturali:
• sono meno espressivi ma più precisi;
Pag. 9
•
Sono semplici e poveri (poche parole chiave, poche regole), ma privi (generalmente) di
qualsiasi ambiguità.
Il linguaggio macchina o codice macchina è il linguaggio in cui sono scritti i programmi
eseguibili per computer. Può venire classificato linguaggio di programmazione, sebbene
quest'ultima espressione sia più spesso utilizzata per indicare i linguaggi di alto livello con cui si
scrivono programmi non direttamente eseguibili, ma che richiedono una traduzione in linguaggio
macchina, per esempio per mezzo di un compilatore. Il processore o CPU è quella componente
hardware di un computer che è in grado di eseguire i programmi scritti in linguaggio macchina. Il
linguaggio macchina è basato su un alfabeto detto binario perché comprende due soli simboli,
generalmente indicati con 0 e 1. Un simbolo di questo alfabeto viene detto bit.
Nei linguaggi procedurali o imperativi (linguaggi di alto livello) l'istruzione è un comando
esplicito, che opera su una o più variabili oppure sullo stato interno della macchina, e le istruzioni
vengono eseguite in un ordine prestabilito. Scrivere un programma in un linguaggio imperativo
significa essenzialmente occuparsi di cosa la macchina deve fare per ottenere il risultato che si
vuole, e il programmatore è impegnato nel mettere a punto gli algoritmi necessari a manipolare i
dati.
Le strutture di controllo assumono la forma di istruzioni di flusso (GOTO, FOR,
IF/THEN/ELSE ecc.) e il calcolo procede per iterazione piuttosto che per ricorsione. I valori delle
variabili sono spesso assegnati a partire da costanti o da altre variabili (assegnamento) e raramente
per passaggio di parametri (istanziazione).
Pseudo Linguaggio: il programma
Il metodo della programmazione strutturata porta automaticamente a programmi senza
GOTO, ossia senza salti che ne aumentano la complessità, la possibilità di errori, la difficoltà di
interpretazione e manutenzione.
Per realizzare tale strutture logiche vi sono diversi metodi ma essenzialmente vengono
utilizzati i diagrammi a blocchi o descrizioni del programma in pseudo-linguaggio. Questo secondo
metodo molto più semplice ed efficace dato che utilizza il linguaggio naturale.
1. Introduci valore intero A
2. C = A mod 2
3. Se C = 0 allora
Stampa “Pari”
6. Stampa “Dispari”
Esempio di programma in pseudo-linguaggio
* l'istruzione mod restituisce il resto
Pag. 10
di Luigi Congi (www.webalice.it/luigi.congi)
Marzo 2009
Realizzato utilizzando il software OpenOffice.org (ver. 3.0)
Pag. 11