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