Parte 2 Software Considerazione... Se l utente inserisce dati e ottiene risultati significa che aveva un problema che qualcuno ha risolto per lui Chi ha risolto il problema? Il computer? NO! 2.1 1
quindi Il problema è stato risolto da un essere umano che: ha trovato la soluzione ha spiegato la soluzione al computer Il computer ha poi eseguito la soluzione in modo eccezionalmente veloce (se confrontato alla velocità umana) Il computer non risolve problemi, ma esegue velocemente le soluzioni che ha trovato l uomo 2.2 Algoritmi: come trovare soluzioni Algoritmo Sequenza finita di mosse che risolve in un tempo finito una classe di problemi E un metodo sistematico per risolvere un problema. Es. lo svolgimento di operazioni aritmetiche il processo di spedizione di una cartolina la ricerca di un numero telefonico il metodo per determinare quando il puntatore del mouse clicca su un pulsante virtuale Gli algoritmi devono essere non ambigui, essere costituiti da un insieme finito di passi e terminare in un tempo finito E l uomo che risolve problemi (inventa algoritmi) 2.3 2
Programmi: come spiegare al computer le soluzioni trovate Traduzione di un algoritmo attraverso un insieme ordinato di frasi ( istruzioni ), descritte in un linguaggio di programmazione, che specificano le azioni da compiere in modo formale che sia interpretabile dal computer, il tutto allo scopo di risolvere un problema L azione di scrittura di programmi prende il nome di PROGRAMMAZIONE, CODIFICA o IMPLEMENTAZIONE Quindi un PROGRAMMA è un testo scritto secondo la sintassi (alfabeto+regole grammaticali) e la semantica (significato da dare alle frasi) di un linguaggio di programmazione 2.4 Elaborazione delle soluzioni: ciclo Fetch-Decode-Execute L esecuzione di ciascuna istruzione da parte della CPU consta dei seguenti passi: 1. Legge una istruzione i dalla memoria centrale (Fetch) 2. Si predispone alla lettura della prossima istruzione 3. Decodifica l istruzione (Decode) 4. Legge dalla memoria gli eventuali parametri (operandi) dell istruzione 5. Esegue l istruzione (Execute) 6. Torna al passo 1 per l esecuzione dell istruzione successiva 2.5 3
Algoritmi e programmi sono diversi La programmazione consiste nello scrivere i passi di un algoritmo in uno specifico linguaggio i (es.,( Java, C, Fortran, ) Esecuzione di un programma per avviare un programma si può cliccare sulla sua icona (ad es., Word, Explorer, Firefox) così facendo si dice al computer di caricare il programma in memoria principale e di far eseguire il programma dalla CPU 2.6 Cos è il software? Il Software è un insieme di programmi che permettono ad un calcolatore di eseguire determinate funzionalità Un PROGRAMMA è un entità statica ti (descritta in un dato LINGUAGGIO) che specifica: l insieme di istruzioni che il calcolatore deve eseguire la sequenza in cui devono essere eseguite Nel momento in cui un PROGRAMMA VIENE MANDATO IN ESECUZIONE, si ha l attivazione di un PROCESSO Il processo è l'entità utilizzata dal sistema operativo per rappresentare una specifica esecuzione di un programma. E quindi un'entità dinamica, che dipende dai dati che vengono elaborati, e dalle operazioni eseguite su di essi. 2.7 4
Sinonimi comunemente adottati Programmi Applicazioni Servizi software Anche se non sono proprio sinonimi, nell uso comune sono considerati come tali Hanno, in effetti, la comune caratteristica di essere implementazioni di algoritmi per computer 2.8 Esecuzione di un programma L'esecuzione delle azioni nell'ordine specificato dall'algoritmo consente di ottenere, a partire dai dati di ingresso, i risultati che risolvono il problema UTENTE DATI INPUT Applicazioni Sistema Operativo Hardware Computer RISULTATI OUTPUT 2.9 5
I ruoli UTENTE DATI Formulazione di un problema Individuazione di un algoritmo Programma (esecuzio one) Metodo risolutivo (progetto) Linguaggio di Programmazione (codifica) INFORMATICO (Sviluppo applicazioni) INFORMATICO (Tecnico) 2.10 Principali componenti software Due grandi famiglie di software Software di sistema: Sistema operativo Software applicativo: Applicazioni 2.11 6
Organizzazione a strati 2.12 Motivazioni Qual è l obiettivo di un sistema costituito da diversi strati (hardware, software di sistema, software applicativo) ben definiti e separati? Avere un sistema a livelli, dove lo strato superiore mascheri quello inferiore Perché? Qual è il vantaggio? 2.13 7
Perché costruire un sistema a livelli? OBIETTIVO RIVOLTO AGLI UTILIZZATORI Virtualizzazione far apparire la realtà in modo diverso (tipicamente più semplice e/o più gradevole) L hardware ha molte virtù (veloce, miniaturizzato), ma non è né semplice né gradevole! Quindi farlo risultare tale è un problema molto complesso per i progettisti informatici Quindi, un sistema a livelli ( modulare ) consente ai progettisti di semplificare la soluzione del problema complesso di progettare, realizzare e successivamente modificare un sistema informatico e renderlo facilmente utilizzabile da chiunque (o quasi ) 2.14 Componenti di un Sistema di Elaborazione + Utente UTENTE Software Hardware APPLICAZIONI? Sistema Operativo Controller Controller Controller Controller Controller Controller SCSI Keyboard Mouse PCI Bus Floppy ATAPI SCSI Bus Tastiera Mouse PCI Bus Floppy CD-ROM 2.15 8
NOTA Sono stati introdotti 4 termini importanti e non banali: Software Programma Linguaggio (di programmazione) Ne esistono tantissimi. Alcuni noti linguaggi di alto livello: C, Java, Fortran. [NO, NO, NO: HTML!!!] Processo 2.16 Quanti sono gli applicativi software? Esistono tantissimi tipi di software per calcolo scientifico per videoscrittura per memorizzazione e recupero dati per comunicazione per svago Per ogni tipo di software, esistono innumerevoli applicativi software prodotti da fonti molto varie Multinazionali del software: IBM, Microsoft, EDS, Grandi software house Gruppi di sviluppatori free software Gruppi di ricerca per prototipi Singole persone (per interesse o svago personale) 2.17 9
Esempi Software per l elaborazione testi creazione, modifica e stampa di un documento: Word, Editor, OpenOffice,... Foglio elettronico tabella di valori disposti in righe e colonne: Excel, Lotus, Software per Database sistema per l archiviazione ed il recupero efficiente di dati in formato digitale: Access, Oracle, MySQL, Software per presentazioni creazione di testi/immagini per la creazione di diapositive e prospetti: PowerPoint, Acrobat, 2.18 Esempi (cont.) Software per la comunicazione creazione, invio e ricezione di posta elettronica: Outlook, Eudora, Pine,... Navigazione su Web: Explorer, Firefox, Software per il calcolo Simbolico e/o numerico: MatLab, Software di utilità Antivirus, antispyware, Cos è un virus informatico? E parte del software anche lui 2.19 10
La rappresentazione delle informazioni 2.20 Scelta della rappresentazione Di solito è una scelta convenzionale Avolteci sono vincoli da rispettare Nel caso dei computer il vincolo è la rappresentazione binaria (o digitale) di tutte le informazioni (testo, immagini, video, suoni,...) L alfabeto di base con cui il computer codifica ogni iinformazione i consiste didue soli simboli: 0 e 1 2.21 11
Codifica di tutta l informazione su computer I programmi operano su dati Sia i dati sia i programmi devono risiedere in memoria centrale (RAM) per poter essere eseguiti Sia i dati sia i programmi sono codificati in modo opportuno per il computer CODIFICA BINARIA: insiemi di 0 e 1 2.22 Esempi di segnali binari levetta: alta/bassa contatto: aperto/chiuso lampadina: accesa/spenta tensione elettrica: High/Low cristallo liquido: trasparente/opaco corrente elettrica: presente/assente 2.23 12
Motivo della scelta di solo 2 simboli Ragioni prevalentemente di tipo tecnologico I due simboli corrispondono, ad esempio: al passaggio/non passaggio di corrente attraverso un cavo conduttore ai due diversi stati di polarizzazione di una sostanza magnetizzabile ai due stati di carica elettrica di una sostanza al passaggio/non passaggio di luce attraverso un cavo in fibra ottica 2.24 Bit L'entità minima di informazione in un calcolatore si chiama bit (binary digit cifra binaria) Può assumere solo due valori, cioè può permettere la rappresentazione di due informazioni associate ad uno dei due stati 0 e 1 Per poter rappresentare più informazioni devo usare più bit mettendoli in sequenza 2.25 13
Esempio: sequenza di due bit Con due bit possiamo avere quattro configurazioni: 00 01 10 11 E possibile far corrispondere quattro informazioni a tante cose. Es., le prime quattro lettere dell'alfabeto oppure i numeri da 1 a 4 oppure i colori, oppure altre cose... 00 a 1 verde 01 b 2 rosso 10 c 3 giallo 11 d 4 blu 2.26 Codifica dell informazione Processo secondo cui si fa corrispondere ad un informazione una configurazione di cifre binarie E importante ricordare quante informazioni riesco a codificare avendo un certo numero di bit: Con 1 bit codifico 2 informazioni Con 2 bit ne codifico 4 Con 3 bit ne codifico 8... Con n bit codifico 2 n informazioni 2.27 14
Byte In informatica assume particolare importanza un aggregazione di 8 bit, che prende il nome di byte Simbologia: b bit B byte Poiché un byte è fatto di 8 bit un byte consente di codificare 256 informazioni (ad esempio, tutti i 111 elementi della tavola periodica) 2.28 Unità di misura Multipli di bit o di byte 1 KiloByte= 1.024 byte x1024 = 1 MegaByte = 1.048.576 byte x1024 = 1 GigaByte = 1.073.741.824 byte x1024 = 1 TeraByte = 1.099.511.627.776 byte x1024 = 1 PetaByte = circa un biliardo di byte Abbreviazioni Kb = Kilobit KB = KiloByte Mb = Megabit MB = MegaByte Gb = Gigabit GB = GigaByte (per reti) (per memoria) 2.29 15
Codifica dei caratteri alfanumerici L'insieme dei caratteri alfabetici (anglosassoni), numerici, di punteggiatura, le parentesi e gli operatori aritmetici può essere codificato usando 7 bit (128 configurazioni) Per poter interagire e scambiarsi dati in modo comprensibile, è necessario usare la stessa codifica Quindi, è necessario mettersi d accordo per definire un metodo standard per effettuare la codifica 2.30 Codice ASCII E il metodo di codifica più diffuso fra produttori di hardware, software e dispositivi di rete ASCII = American Standard Code for Information Interchange Nota: non è l'unico! Abbastanza diffuso anche EBCDIC = Extended Binary Coded Decimal Interchange Code Un codice completo (perché rappresenta caratteri dalle lingue di tutto il mondo) è UNICODE, a 16 bit 2.31 16
Esempio di codifica ASCII standard (usa 7 bit) 0100001! 0100110 & 0110000 0 0111110 > 1000001 A 1100001 a I numeri, così come le lettere, sono consecutivi Sono però insiemi separati 2.32 Codice ASCII standard 7 bit 000 001 010 011 100 101 110 111 0000 NUL DLE 0 @ P p 0001 SOH DC1! 1 A Q a q 0010 STX DC2 2 B R b r 0011 ETX DC3 # 3 C S c s 0100 EOT DC4 $ 4 D T d t 0101 ENQ NAK % 5 E U e u 0110 ACK SYN & 6 F V f v 0111 BEL ETB 7 G W g w 1000 BS CAN ( 8 H X h x 1001 HT EM ) 9 I Y i y 1010 LF SUB * : J Z j z 1011 VT ESC + ; K [ k { 1100 FF FS, < L \ l 1101 CR GS - = M ] m } 1110 SO RS. > N ^ n ~ 1111 SI US /? O _ o DEL Per ottenere la codifica a 7 bit, si legge prima il numero della colonna e poi quello di riga 2.33 17
Codifica di una parola Parola = sequenza di caratteri Codifica della parola = sequenza delle codifiche dei singoli caratteri ES: parola cane c a n e 01100011 01100001 01101110 01100101 Esistono anche simboli per lo spazio bianco, il simbolo di fine riga,... Si possono rappresentare testi complessi 2.34 Codifica dei numeri Col codice ASCII posso codificare anche le cifre decimali da 0 a 9 Parola = sequenza di caratteri Numero = sequenza di cifre Es: 324 si potrebbe rappresentare come 00110011 00110010 00110100 3 2 4 2.35 18
Codifica dei numeri - continua Ma usare la codifica ASCII per i numeri è una rappresentazione non efficiente perché i primi quattro bit sono uguali e, soprattutto, non è adatta per eseguire le operazioni aritmetiche sui numeri Esiste un modo molto più naturale per codificare i numeri che prende spunto dal sistema di numerazione tradizionale, che è un sistema decimale e posizionale 2.36 Sistema di numerazione: decimale e posizionale Usa 10 cifre [0..9] Ogni cifra ha un valore che dipende dalla posizione che occupa all interno del numero La rappresentazione 645 (la cifra 6 seguita dalla cifra 4 seguita dalla cifra 5) denota, nel sistema decimale, il numero 645 Il numero 645 ha in realtà l interpretazione seguente: 6 centinaia, 4 decine, 5 unità 6*(10 2 ) + 4*(10 1 ) + 5*(10 0 ) = 600+40+5 = 645 2.37 19
Esempio: sistema decimale Il numero 135 decimale può essere rappresentato come segue: B=10 base n = 3 numero cifre cifra 1 3 5 posizione 2 1 0 (ricordare che si parte da 0) peso 10 2 10 1 10 0 1 10 2 +3 10 1 +5 10 0 = 135 2.38 Sistema di numerazione decimale In generale la rappresentazione: c n c n-1...c 1 c 0 in cui ogni cifra c i è compresa fra 0 e 9, denota: c 0 * 10 0 + (ossia c 0 unità) c 1 * 10 1 + (ossia c 1 decine)... c *10 n-1 n-1 +... c n * 10 n 2.39 20
Rappresentazione binaria E una codifica posizionale che invece di usare 10 cifre, ne usa solo 2 Quindi, tutti i numeri vengono codificati usando le due cifre 0 e 1 e uno schema posizionale in cui si usa la base 2 invece della base 10 c n c n-1...c 1 c 0 in cui ogni cifra c i vale 0 o 1, denota: c *2 *2 *2 *2 0 0 +c 1 1 +...+c n-1 n-1 +c n n Esempio: 1110(base 2) denota: 1*2 3 +1*2 2 +1*2 1 +0*2 0 += 8+4+2+0 = 14 (base 10) 2.40 Esempio: Sistema binario Valore decimale corrispondente al numero binario 1101? cifra 2 1 1 0 1 peso 2 3 2 2 2 1 2 0 valore 1 8 1 4 0 2 1 1 1101 2 = 1 2 3 + 1 2 2 + 0 2 1 + 1 2 0 = 13 10 2.41 21
Da base decimale a binaria: numeri interi Per ottenere il valore binario di un numero intero codificato nel sistema decimale si procede utilizzando un metodo iterativo di successive divisioni per 2 Il resto delle divisioni fornisce le cifre del numerale binario (a partire dalla meno significativa) 26 10 26 2 Cifra a destra (meno significativa) 0 13 (26) 10 = (11010) 2 1 2 6 0 2 3 1 2 1 Cifra a sinistra (più significativa) 2.42 Massimo numero rappresentabile? Sappiamo che con quattro cifre decimali è possibile rappresentare tutti i numeri fra 0 e 9999 in quanto il numero successivo (10000) richiederebbe una quinta cifra (non disponibile) In informatica si parla di overflow: quando un numero esce dal numero di cifre destinate alla rappresentazione Date n cifre decimali, è possibile rappresentare i numeri da 0 a 10 n -1 Esempio (n=4): 9999 = 10000-1 = 10 4-1 2.43 22
Massimo numero in binario Le stesse considerazioni del sistema decimale valgono anche per il sistema binario prendendo come base il numero 2 al posto del numero 10 Quindi, date n cifre binarie, è possibile rappresentare i numeri da 0 a 2 n -1 Ricordare: nel momento in cui si fissa il numero di bit destinati alla rappresentazione di un numero, si fissa anche il massimo numero rappresentabile 2.44 Sistemi di numerazioni ottale ed esadecimale Quando per la rappresentazione di un numero si utilizzano molte cifre binarie può convenire usare altri sistemi di numerazione I sistemi ottale ed esadecimale sono utilizzati principalmente per rappresentare in modo più compatto i numeri binari I simboli del sistema Ottale sono 8: { 0, 1, 2, 3, 4, 5, 6, 7} I simboli del sistema Esadecimale sono 16: { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F } Si scelgono basi potenza di 2 perché le regole di conversione da/a numero binario sono molto semplici ed efficienti 2.45 23
Conversioni di base Binario -> Ottale Per passare dalla codifica Binaria a quella Ottale, si raggruppano le cifre binarie a gruppi di 3 a partire da destra e le si sostituiscono con una cifra del sistema ottale (aggiungere 0 a sinistra se il numero di cifre binarie non è multiplo di 3) Esempio : 111 001 010 2 = 712 8 Ottale -> Binario Per passare dalla codifica Ottale a quella Binaria, si sostituisce ad ogni cifra ottale la corrispondente codifica binaria (composta da 3 cifre). Esempio : 302 8 = 011 000 010 2 2.46 Conversioni di base (2) Binario -> Esadecimale Per passare dal codice Binario a quello Esadecimale, si raggruppano le cifre a gruppi di 4 a partire da destra elesi sostituiscono con una cifra del sistema esadecimale (aggiungere 0 a sinistra se il numero di cifre binarie non è multiplo di 3) Esempio: 1001 0001 1111 2 = 91F 16 Esadecimale -> Binario i Per passare dal codice Esadecimale a quello Binario, si sostituisce ad ogni cifra esadecimale la corrispondente configurazione binaria (composta da 4 cifre). Esempio: A7F 16 =1010 0111 1111 2 2.47 24
Codifica dei primi 16 numeri interi Decimale Binario Ottale Esadecimale 0 0000 00 0 1 0001 01 1 2 0010 02 2 3 0011 03 3 4 0100 04 4 5 0101 05 5 6 0110 06 6 7 0111 07 7 8 1000 10 8 9 1001 11 9 10 1010 12 A 11 1011 13 B 12 1100 14 C 13 1101 15 D 14 1110 16 E 15 1111 17 F 2.48 Esempi Esempio 1 Codifica del numero 125 10 = 1111101 2 In codice Ottale: 1 111 101 In codice Esadecimale: 111 1101 175 7 D Esempio 2 Decimale Binario Ottale Esadecimale 5 101 5 5 12 1100 14 C 78 1001110 116 4E 149 10010101 225 95 2.49 25
Oltre i numeri interi positivi Con il metodo di codifica esaminato, è possibile rappresentare qualunque numero intero positivo rientra nel numero di bit disponibili a rappresentarlo Tuttavia, esiste la necessità di rappresentare anche altri tipi di numeri, quali: Numeri interi negativi: -34-23456... Numeri frazionari positivi: 234,45 79,001... Numeri frazionari negativi: -234,45-79,001... Si usano altri metodi di codifica (più complessi) che non sono argomento di questo corso 2.50 26