Il Sistema Operativo Rappresentazione dell’Informazione Cenni di Programmazione Politecnico di Milano Facoltà del Design – Bovisa Prof. Gianluca Palermo Dipartimento di Elettronica e Informazione [email protected] http://home.dei.polimi.it/gpalermo Politecnico di Milano Indice Il sistema operativo – – – – – Software di sistema e applicativo Architettura di un sistema operativo Classificazione dei sistemi operativi Bootstrap Panoramica dei principali sistemi operativi • MS DOS, MS Windows, UNIX, Linux, BSD, Mac OS Rappresentazione dell’informazione – – – – – Numeri Caratteri e testi Audio Immagini Video Cenni di programmazione – – – – Linguaggi di programmazione Fasi della programmazione Paradigmi di programmazione Costrutti elementari di un linguaggio di programmazione Cultura tecnologica del progetto 2 Politecnico di Milano Software: di sistema e applicativo Di sistema: controlla il comportamento del sistema stesso – il più importante dei software di sistema è il sistema operativo: • controlla le risorse del sistema • fornisce la base su cui costruire tutti gli altri programmi Applicativo: risolve i problemi dell’utente, appoggiandosi sullo strato fornito dal sistema operativo Cultura tecnologica del progetto 3 Politecnico di Milano Il sistema operativo Con il termine sistema operativo si intende l’insieme di programmi e librerie che opera direttamente sulla macchina fisica... – ... mascherandone le caratteristiche specifiche... – ... e fornendo agli utenti un insieme di funzionalità di alto livello Cultura tecnologica del progetto 4 Politecnico di Milano Sistemi Operativi MS-DOS MS-Windows (95, 98, 2000, XP, Vista) Unix – Commerciali: Sun Solaris, IBM AIX, HP-UX,… – Linux – BSD Mac OS – Mac OS X Altri (IBM AS/400, Symbian,…) Cultura tecnologica del progetto 5 Politecnico di Milano Architettura di un S.O. - 1 Un moderno S.O. è organizzato secondo una architettura “a strati” (a cipolla) Ogni strato implementa una macchina virtuale più potente del precedente – Appoggiandosi alle funzionalità offerte dallo strato precedente Tale approccio permette una chiara separazione tra interfaccia e implementazione delle diverse funzionalità Ogni strato è costituito da un insieme di programmi e librerie – I meccanismi di chiamate tra livelli possono essere diversi • chiamate a sottoprogrammi, interruzioni sincrone o asincrone, invio di messaggi a processi Cultura tecnologica del progetto 6 Politecnico di Milano Architettura di un S.O. - 2 Programmi utente Interfacce utente Interprete dei comandi Interfaccia grafica Gestore del file system Gestore delle periferiche Gestori di risorse (kernel) Gestore della memoria Gestore dei processi (nucleo) Macchina fisica Cultura tecnologica del progetto 7 Il Nucleo Politecnico di Milano Il nucleo – Si appoggia direttamente sulla macchina fisica – Effettua la gestione dei processi – In un sistema multitasking realizza una macchina virtuale in cui ad ogni processo è assegnata un processore virtuale – Comprende i principali programmi di risposta ad interruzione – Realizza le primitive di sincronizzazione e scambio messaggi tra processi Cultura tecnologica del progetto 8 Il nucleo Politecnico di Milano La macchina virtuale realizzata dal nucleo Processore virtuale Processore virtuale ... Processore virtuale Bus di sistema Disco Cultura tecnologica del progetto Memoria centrale Interfaccia delle periferiche 9 Il gestore della memoria Politecnico di Milano Il gestore della memoria – Realizza le funzionalità di allocazione della memoria • Supera i limiti della memoria fisica e mostra ai processi uno spazio di memoria virtuale – Partiziona la memoria tra i vari processi che la richiedono • Garantendo la protezione delle diverse zone di memoria Cultura tecnologica del progetto 10 Il gestore della memoria Politecnico di Milano La macchina virtuale realizzata dal gestore della memoria Memoria virtuale Memoria virtuale ... Memoria virtuale Processore virtuale Processore virtuale ... Processore virtuale Bus di sistema Disco Cultura tecnologica del progetto Interfaccia delle periferiche 11 Il gestore delle periferiche Politecnico di Milano Il gestore delle periferiche – Maschera le caratteristiche fisiche delle periferiche – Fornisce agli strati superiori un insieme di procedure di alto livello per l’accesso alle diverse periferiche – Offre ad ogni processo la visibilità di un insieme di periferiche virtuali dedicate – Gestisce, almeno in parte, i malfunzionamenti delle periferiche Cultura tecnologica del progetto 12 Il gestore delle periferiche Politecnico di Milano La macchina virtuale realizzata dal gestore delle periferiche Interfaccia periferiche virtuali Memoria virtuale Bus Interfaccia periferiche virtuali Memoria virtuale ... Processore virtuale Bus Processore virtuale Bus di sistema Disco Cultura tecnologica del progetto 13 Il gestore del file system Politecnico di Milano Il gestore del file system – E’ responsabile della gestione delle periferiche di massa • • • • Hard disk CD / DVD Memory stick USB ... – Fornisce agli strati superiori un insieme di procedure per l’accesso al file system – Garantisce la protezione nell’accesso ai file Cultura tecnologica del progetto 14 Il gestore del file system Politecnico di Milano Le funzioni di base che sono supportate da un file system sono – – – – Il recupero di dati precedentemente memorizzati L’eliminazione di dati obsoleti La modifica/aggiornamento di dati preesistenti La copia di dati • Tra supporti di memorizzazione diversi (ad es. da HD a CD) • In cartelle diverse nello stesso supporto Cultura tecnologica del progetto 15 Il gestore del file system Politecnico di Milano I dati contenuti nella memoria di massa vengono strutturati e gestiti mediante una organizzazione in file Un file è un contenitore logico identificato da un nome (filename) I filename generalmente sono composti da due parti – ad es. curriculum_vitae.doc – Il filename vero e proprio (curriculum_vitae) – L’estensione (doc) Cultura tecnologica del progetto 16 Il gestore del file system Politecnico di Milano L’estensione è spesso associata al programma che ha generato il file e individua pertanto la tipologia del contenuto del file – – – – – – .exe file eseguibili .txt file di testo .doc documenti di testo (MS Word) .wav file audio .bmp immagine in formato bitmap ... Ad ogni file sono poi associati dal sistema operativo altri dati – Data di creazione / modifica – Lunghezza del file (in byte) – Utenti/Gruppi che possono accedere ai file Cultura tecnologica del progetto 17 Il gestore del file system Politecnico di Milano I file vengono suddivisi in più contenitori logici, chiamati directory, cataloghi o cartelle (folders) Le cartelle sono organizzate secondo una struttura ad albero Il file system contiene una directory detta radice dell’albero che può contenere file o altre cartelle Ciascun file è individuato univocamente dal suo nome completo o percorso assoluto – Ad es. D:\downloads\temp\002.part Due file con lo stesso nome in due cartelle distinte, ad esempio – D:\Immagini\Compleanno\foto1.jpg – D:\Documenti\foto1.jpg fanno riferimento a due file che in generale possono essere DIVERSI Cultura tecnologica del progetto 18 Politecnico di Milano Il gestore del file system D: Documenti Downloads Incoming Temp ... ... Cultura tecnologica del progetto 19 Il gestore del file system Politecnico di Milano La macchina virtuale realizzata dal gestore del file system Memoria virtuale Interfaccia periferiche virtuali Bus File ... Memoria virtuale File ... Processore virtuale Interfaccia periferiche virtuali File ... Bus Processore virtuale Bus di sistema Cultura tecnologica del progetto 20 File L’interprete dei comandi e l’interfaccia grafica Politecnico di Milano L’interprete comandi e l’interfaccia grafica – Costituiscono l’interfaccia verso l’utente – Consentono l’interazione dell’utente con il s.o. e con i programmi applicativi in esecuzione • Permettono di accedere ai programmi conservati su memoria di massa e mandarli in esecuzione – allocando la memoria necessaria e creando il processo relativo – Nel caso di un sistema multiutente forniscono ai diversi utenti la visione di una macchina virtuale dedicata Cultura tecnologica del progetto 21 Politecnico di Milano Una possibile classificazione dei moderni S.O. I moderni sistemi operativi possono essere classificati in: – Sistemi monotask: • Permettono l’esecuzione di un solo programma utente per volta (es. DOS) • Il computer a disposizione del programma dall’inizio alla fine della sua esecuzione • Coda dei job, gestita FIFO (first in, first out) e/o con priorità – Sistemi multitask • Permettono l’esecuzione di più programmi utente contemporaneamente • Classificazione ulteriore: – Multitasking cooperativo (Windows 3.1, MacOS) – Multitasking preemptive (Windows 95/98/NT, Unix) • Time sharing o meno Cultura tecnologica del progetto 22 Politecnico di Milano Svantaggi dei sistemi monoprocessore mono-tasking Nessuna interazione utente-programma Lentezza: la CPU non può essere usata da nessun processo mentre il programma in esecuzione svolge operazioni di I/O (molto piu’ lente di letture/scritture in Memoria) Esempio: DOS è un SO monotasking; non si può fare niente altro mentre si formatta un floppy o si memorizzano dati su disco Cultura tecnologica del progetto 23 Politecnico di Milano Multitasking (time sharing) Ripartizione del tempo di CPU tra tutti i processi che la vogliono Ogni job rimane in esecuzione solo per un quanto di tempo, poi l’esecuzione passa al prossimo job e il primo va in attesa Esecuzione globale più veloce Durata del quanto di tempo tra 100 e 200 millisecondi granularità molto fine A ciascun utente sembra di avere la CPU tutta per lui, solo più lenta Cultura tecnologica del progetto 24 Politecnico di Milano Stati di un processo Selezione primo processo pronto e sua esecuzione Inizio esecuzione Processo in esecuzione Processi pronti Termine quanto di tempo Richiesta di operazione di I/O Completamento operazione di I/O (evento esterno atteso) Cultura tecnologica del progetto Processo in attesa 25 Politecnico di Milano Attesa Se il processo richiede operazioni ad altri dispositivi (es. Operazioni di I/O), la CPU rimarrebbe inutilizzata – lo scheduler mette il processo in stato di attesa, – il dispatcher sceglie un nuovo processo tra i pronti dalla tabella, – quando l’operazione sarà finita, lo scheduler dichiarerà di nuovo pronto il processo Permette un utilizzo molto più efficiente delle risorse di elaborazione – Esempio: • durante la digitazione di un documento di testo, l’utente compie molte pause per riflettere sul contenuto che sta scrivendo • questo tempo è usato dal sistema per compiere altre operazioni in contemporanea (ad es. gestire la ricezione di e-mail) Cultura tecnologica del progetto 26 Politecnico di Milano Sistemi mono e multi-processore Time sharing in sistemi mono-processore: multi-tasking (più programmi in esecuzione con una sola CPU) Sistemi multiprocessore: – le varie CPU possono lavorare contemporaneamente su job diversi – ciascuna CPU opera in multi-tasking Cultura tecnologica del progetto 27 Politecnico di Milano Bootstrap: avvio del SO All’inizio, la CPU ha in indirizzo fissato nel registro contatore di programma, che punta all’indirizzo nella ROM (Read Only Memory) ove inizia il programma di bootstrap che è sempre memorizzato lì L’esecuzione del programma di bootsrap trasferisce il kernel del Sistema Operativo da una parte prestabilita della memoria di massa (hard-disk, floppydisk, CD-Rom,…) in memoria principale Quindi l’esecuzione prosegue con un salto all’area di memoria principale contenente il Sistema Operativo (che quindi viene mandato in esecuzione) Tra le prime operazione del kernel del Sistema Operativo vi sono tipicamente quelle di caricamento di altri componenti software: – driver delle periferiche installate – programmi di sistema lanciati automaticamente all’avvio Cultura tecnologica del progetto 28 Politecnico di Milano Bootstrap Cultura tecnologica del progetto 29 MS-DOS Politecnico di Milano Sviluppato dalla Microsoft nel 1981 per il PC IBM Adottato da altri con PC IBM-compatibili Molto limitato: – mono-utente, – mono-tasking Circa 50 comandi per il SO: – – – – – – – – DIR per vedere il contenuto di una directory COPY per copiare file DEL per cancellare un file REN per cambiare il nome a un file CD per muoversi in un altra directory MD per creare nuove directory RD per cancellare directory Nome file: per eseguire il file (se eseguibile) – … Cultura tecnologica del progetto 30 Politecnico di Milano MS Windows – Elementi principali Interfaccia grafica Mouse che sposta un cursore Cut & paste (copia e incolla) Drag & drop (trascina e lascia) Icone associate a file, directory, dischi, … Directory come cartelle Pulsanti Finestre: cornici con strumenti Menu di comandi Cultura tecnologica del progetto 31 Politecnico di Milano Breve storia di windows 1/2 Nel 1980 la Microsoft era una piccola società con 40 dipendenti, che fatturava 8 milioni di dollari. Bill Gates venne contattato dall'IBM, che in quel periodo dominava il mercato degli elaboratori mainframe ed aveva appena iniziato la realizzazione di un personal computer, per scrivere un nuovo sistema operativo. Nasce così l'MS DOS ed esplode il boom del computer per tutti. Due anni dopo Bill Gates annuncia la nascita di una prima versione di Windows (1982). Non è un sistema operativo, ma una semplice interfaccia grafica attaccata al DOS molto rozza. Gli utenti cominciano a prendere confidenza con questa nuova dimensione. A maggio, nel 1990, viene lanciato Windows 3.0 e un anno dopo esce Windows 3.1. Nel '94 il fatturato è di 4,65 miliardi di dollari. Nel '95 viene lanciato Windows 95 e i dollari salgono a quasi 6 miliardi. Internet Explorer comincia ad insidiare la posizione di leader tra i browser di Netscape. Infine nel '98 esce la nuova versione di Windows (Windows 98) e nel frattempo la crescita del sistema operativo di rete, Windows NT, si consolida fino a creare serie minacce a ben più blasonati sistemi. Cultura tecnologica del progetto 32 Politecnico di Milano Breve storia di windows 2/2 Il successore di windows NT è Windows 2000. Windows 2000 compare in due versioni: la Professional e la Server. La prima è la soluzione ideale per applicazioni desktop mentre la seconda per la gestione e l’amministrazioni di reti, domini, ecc. Con il nuovo millennio si registra l’uscita del nuovo Windows Millennium Edition (ME), praticamente un Windows 98 SE rivisto nella grafica, potenziato a livello di funzioni multimediali e nel quale fa la sua definitiva scomparsa il buon vecchio DOS. Alla fine del 2002 viene presentato Windows XP nelle versioni Home, Professional e Server. La prima prenderà il posto di Windows ME mentre le altre due sostituiranno le analoghe versioni di Windows 2000. Windows XP presenta un’interfaccia completamente ridisegnata, un ottimo supporto alle periferiche attualmente sul mercato e una grande supporto ai prodotti multimediali non ultimi i videogame grazie all’integrazione diretta delle DirectX. Windows XP è presente sul mercato anche nella versione a 64 bit per processori Alpha. Nel 2006 è stata rilasciato Windows Vista. Tra le principali novità: pieno supporto dei processori a 64 bit (funziona però anche a 32 bit); nuovo motore per l’interfaccia grafica; funzionalità avanzate di ricerca dei documenti archiviati; maggiore protezione rispetto agli attacchi informatici. Cultura tecnologica del progetto 33 Unix Politecnico di Milano Sistema Operativo: – multi-utente, – multi-tasking, con time-sharing Nato negli anni ’60 con un progetto congiunto AT&T e MIT Concepito per poter funzionare su diverse piattaforme hardware con adattamenti limitati Interprete dei comandi: shell – testuale – più di 300 comandi, con opzioni Disponibilità di interfaccia grafica (finestre, mouse, etc.) messa a disposizione da un insieme di moduli separati (sistema X Window) Cultura tecnologica del progetto 34 Politecnico di Milano Linux Linux è una delle molte varianti di Unix con la peculiarità di essere open source (= il cui codice sorgente è liberamente disponibile) La sua nascita è dovuta in parte alle restrizioni imposte da AT&T all’uso di del codice sorgente di UNIX per la didattica: – hanno indotto Andy Tanenbaum allo sviluppo di MINIX, un implementazione di UNIX per scopi didattici – MINIX ha ispirato Linus Torvalds a realizzare una propria implementazione del kernel UNIX – Il kernel sviluppato da Linus è stato combinato con una suite di programmi UNIX, sviluppati nell’ambito del progetto GNU (iniziativa che ha originato il movimento open source), per formare la prima distribuzione di Linux e renderla disponibile su Internet come software open source Oggi esistono innumerevoli distribuzioni di Linux, distinte per diverse combinazioni di kernel, interfacce grafiche (le più note sono Gnome e KDE) e programmi di utilità. Cultura tecnologica del progetto 35 Politecnico di Milano Linux Gnome KDE Cultura tecnologica del progetto 36 Politecnico di Milano BSD BSD è un’altra versione open source del sistema operativo Unix, in questo caso nata alla University of California, Berkeley (USA) Ritenuto più stabile di Linux (anche grazie ad un gruppo di sviluppo più ristretto, quindi più controllabile) ma il numero di applicazioni disponibili è più ristretto (principalmente applicazioni per i server) Oggi esistono 4 distribuzioni principali di BSD: – 3 distribuzioni free: FreeBSD, OpenBSD, NetBSD – 1 distribuzione a pagamento, all’interno del Sistema Operativo Apple MAC OS-X Cultura tecnologica del progetto 37 Politecnico di Milano MAC OS-X MAC OS-X è l’ultima generazione di S.O. per i personal computer prodotti da Apple Abbandonato il precedente sistema operativo Apple ha costruito la nuova generazione del proprio S.O. a partire da una variante di BSD, chiamata Darwin, che rimane open source A questo nucleo, Apple ha aggiunto componenti proprietari, dall’interfaccia grafica (Aqua) ad una suite di applicazioni e utilities. Cultura tecnologica del progetto Architettura MAC OS-X Applicazioni GUI Kernel, gestori di risorse e servizi di base 38 Politecnico di Milano Indice Il sistema operativo – – – – – Software di sistema e applicativo Architettura di un sistema operativo Classificazione dei sistemi operativi Bootstrap Panoramica dei principali sistemi operativi • MS DOS, MS Windows, UNIX, Linux, BSD, Mac OS Rappresentazione dell’informazione – – – – – Numeri Caratteri e testi Immagini Video Suoni Cenni di programmazione – – – – Linguaggi di programmazione Fasi della programmazione Paradigmi di programmazione Costrutti elementari di un linguaggio di programmazione Cultura tecnologica del progetto 39 Codifica posizionale dei numeri: il sistema arabico Politecnico di Milano Il sistema di numerazione arabico sfrutta una codifica posizionale – Ogni cifra assume un valore particolare a seconda della posizione assunta all’interno del numero – Esempio: 01 è diverso da 10 Il sistema arabico usa 10 cifre – Si parla di numerazione in base 10 Il valore di una cifra all’interno di un numero è pari a: x 10n dove n è la posizione occupata dalla cifra all’interno del numero (si conta da destra partendo da 0) – Esempio: 1257 = 7 x 100 + 5 x 101 + 2 x 102 + 1 x 103 Cultura tecnologica del progetto 40 Politecnico di Milano Codifica dati e istruzioni Algoritmi = istruzioni + dati. Per scrivere un programma che descriva un algoritmo è necessario rappresentare istruzioni e dati utilizzando un formato che il calcolatore sia in grado di: – Memorizzare – Elaborare – Trasmettere Cultura tecnologica del progetto 41 Politecnico di Milano Codifica dati e istruzioni Alfabeto dei simboli – Esempio: cifre 0,1 – Esempio: cifre 0,1, 2, …, 9, separatore decimale (,), separatore delle migliaia (.), segno positivo (+) e negativo (-). Regole di composizione (sintassi) che definiscono le sequenze di cifre (parole) ammissibili: – Esempio: 1.234,5 è la rappresentazione di un numero reale. – Esempio: 1,23,45 non lo è. Cultura tecnologica del progetto 42 Politecnico di Milano Codifica dati e istruzioni Codice (semantica): insieme di regole che ad ogni configurazione ammissibile associa un’entità di informazione – 1.234,5 = 1 x 103 + 2 x 102 + 3 x 101 + 4 x 100 + 5 x 10-1 – 1,23,45 = ? Lo stesso alfabeto può essere utilizzato con codici diversi: – 123,456 = 1 x 102 + 2 x 101 + 3 x 100 + 4 x 10-1 + 5 x 10-2 + 6 x 10-3 (IT) – 123,456 = 1 x 105 + 2 x 104 + 3 x 103 + 4 x 102 + 5 x 101 + 6 x 100 (UK) Cultura tecnologica del progetto 43 Politecnico di Milano Codifica binaria dell’informazione Il calcolatore utilizza un alfabeto binario: usiamo dispositivi elettronici digitali in grado di assumere due solo stati: acceso/spento, ON/OFF, 1/0, VERO/FALSO. Un alfabeto binario non limita le funzionalità di un calcolatore. Il simbolo o cifra binaria si indica con bit (da Binary digIT): quantità d’informazione che si ottiene selezionando una configurazione da un insieme che ne contiene due. La risposta SI oppure NO a una domanda porta 1 bit di informazione. Cultura tecnologica del progetto 44 Politecnico di Milano Codifica binaria dell’informazione Il calcolatore tratta diversi tipi di dati (numeri, caratteri, ecc.) tutti rappresentati con la codifica binaria. Problema: assegnare un codice univoco a tutti gli oggetti compresi in un insieme predefinito. Esempio: associare un codice binario ai giorni della settimana. Cultura tecnologica del progetto 45 Politecnico di Milano Codifica binaria dell’informazione Quanti oggetti diversi posso codificare con parole binarie composte da k bit? – 1 bit: 21 = 2 stati (0, 1) 2 oggetti – 2 bit: 22 = 4 stati (00, 01, 10, 11) 4 oggetti – 3 bit: 23 = 8 stati (000, 001, 010, 011, 100, 101, 110, 111) 8 oggetti – … – k bit: 2k stati 2k oggetti Cultura tecnologica del progetto 46 Politecnico di Milano Codifica binaria dell’informazione Se passiamo da una parola binaria di k bit ad una parola di k+1 bit si raddoppia il numero di oggetti che si possono rappresentare (2k+1). Cultura tecnologica del progetto 47 Politecnico di Milano Codifica binaria dell’informazione Quanti bit mi servono per codificare N oggetti: – N 2k k log2 N k = log2 N Ipotesi implicita: le parole di un codice hanno tutte la stessa lunghezza. Cultura tecnologica del progetto 48 Politecnico di Milano Definire un codice Identificare due insiemi: • Insieme delle configurazioni ammissibili; • Insieme degli oggetti da rappresentare. Associare gli elementi dei due insiemi Cultura tecnologica del progetto 49 Politecnico di Milano Esempio Associare una codifica binaria ai giorni della settimana. Quanti bit devono avere le parole binarie usate per identificare i giorni della settimana (7 oggetti diversi)? – k = log2 7 = 3 Cultura tecnologica del progetto 50 Politecnico di Milano Esempio 111 110 101 Insieme delle configurazioni ammissibili 010 001 011 100 000 LUN MAR MER VEN GIO SAB DOM Insieme degli oggetti da codificare Cultura tecnologica del progetto 51 Politecnico di Milano Esempio 111 110 101 010 001 011 100 Codice 000 LUN MAR MER VEN GIO SAB Cultura tecnologica del progetto DOM 52 Politecnico di Milano Byte bit rappresenta 2 stati: 0 oppure 1. Byte rappresenta 8 bit 28 = 256 stati KiloByte [KB] = 210 Byte = 1024 Byte 103 Byte MegaByte [MB] = 220 Byte = 1048576 Byte 106 Byte GigaByte [GB] = 230 Byte 109 Byte TeraByte [TB] = 240 Byte 1012 Byte … Cultura tecnologica del progetto 53 Politecnico di Milano Codifica binaria dei caratteri Quanti sono gli oggetti da rappresentare? – – – – – 26 lettere maiuscole 26 lettere minuscole 10 cifre Circa 30 simboli d’interpunzione (, ; …) Circa 30 caratteri di controllo (EOF, CR, …) Totale circa 120 oggetti complessivi k = log2 120 = 7. Cultura tecnologica del progetto 54 Politecnico di Milano Codifica binaria dei caratteri Codice ASCII (American Standard Code for Information Interchange) utilizza 7 bit può rappresentare 27 = 128 caratteri detti caratteri ASCII Standard. Codice ASCII esteso utilizza 8 bit (1 Byte) può rappresentare 28 = 256 caratteri detti caratteri ASCII estesi. – Tale codice comprende i caratteri ASCII standard e alcuni caratteri semigrafici (cornici, lettere nazionali, simboli matematici, ecc.) Codice UNICODE utilizza 16 bit (2 Byte) Cultura tecnologica del progetto 55 Politecnico di Milano Notazione posizionale Consideriamo i numeri interi assoluti (numeri naturali più lo zero). Notazione posizionale in base b: Alfabeto: ci 0 … b-1 ck ck-1 … c1 c0 rappresenta: N = ck x bk + ck-1 x bk-1 + … + c0 x b0 = (i=0… k) ci x b i c0 bit meno significativo ck bit più significativo Cultura tecnologica del progetto 56 Politecnico di Milano Notazione posizionale Basi più frequentemente utilizzate: base 2 : ci 0 , 1 base 8: ci 0 , 1, 2, 3, 4, 5, 6, 7 base 10: ci 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 base 16: ci 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F Cultura tecnologica del progetto 57 Politecnico di Milano Codifica binaria Numeri binari: base b = 2 Alfabeto binario: cifre ci 0 , 1 (ck … c1 c0)2 rappresenta: N = (i=0… k) ci x 2 i Cultura tecnologica del progetto 58 Politecnico di Milano Conversione binario decimale Dato il numero N espresso in base 2, basta riscriverlo secondo la notazione posizionale utilizzando cifre e potenze della base 10. Esempi: N = 11012 N = 1 x 23 + 1 x 22 + 0 x 21 + 1 x 20 = 1310 N = 1001012 N = 1 x 25 + 0 x 24 + 0 x 23 + 1 x 22 + 0 x 21 + 1 x 20 = 3710 Cultura tecnologica del progetto 59 Politecnico di Milano Conversione decimale binario Si calcolano i resti della divisione per due finché il risultato di una divisione diventa zero: Esempio: N = 2310 23 : 2 = 11 11 : 2 = 5 5:2=2 2:2=1 1:2=0 resto R0 = b0 = 1 resto R1 = b1 = 1 resto R2 = b2 = 1 resto R3 = b3 = 0 resto R4 = b4 = 1 2310 = 101112 Cultura tecnologica del progetto 60 Politecnico di Milano Conversione decimale binario Esempio: N = 1810 18 : 2 = 9 resto R0 = b0 = 0 9:2=4 4:2=2 2:2=1 1:2=0 resto R1 = b1 = 1 resto R2 = b2 = 0 resto R3 = b3 = 0 resto R4 = b4 = 1 1810 = 100102 Cultura tecnologica del progetto 61 Politecnico di Milano Codifica esadecimale Utile per rappresentare sinteticamente i valori binari. Numeri esadecimali: base b = 16 Alfabeto esadecimale: cifre ci 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F (ck … c1 c0)16 rappresenta: N=(i=0… k) ci x 16 i Cultura tecnologica del progetto 62 Politecnico di Milano Conversione esadecimale binario Ogni cifra esadecimale corrisponde a quattro cifre binarie: 0 [0000], 1 [0001], 2 [0010], 3 [0011] 4 [0100], 5 [0101], 6 [0110], 7 [0111] 8 [1000], 9 [1001], A[1010], B [1011] C [1100], D [1101], E [1110], F [1111] E’ sufficiente ricordarsi (o derivare) la rappresentazione binaria su 4 bit dei numeri da 0 a 15 (ed eventualmente trascurare gli zeri più a sinistra N = 35416 [0011] [0101] [0100] = 11010101002 Cultura tecnologica del progetto 63 Politecnico di Milano Conversione binario esadecimale Suddividere le cifre binarie (partendo da destra verso sinistra) tenendo conto che quattro cifre binarie corrispondono a una cifra esadecimale. N = 11010101002 [11] [0101] [0100] = 35416 N = 11001110012 [11] [0011] [1001]= 33916 Cultura tecnologica del progetto 21/12/2015 Corso Informatica A - Allievi Gestionali - prof. C. Silvano 64 64 Politecnico di Milano Codifica binaria su n bit Con una sequenza di n bit si possono rappresentare 2n numeri interi assoluti da 0 a 2n-1. Esempio: n = 4 bit 24 = 16 numeri interi assoluti da 0 a 15. La lunghezza delle sequenze di bit adottate stabilisce il massimo numero che può essere rappresentato. Cultura tecnologica del progetto 21/12/2015 Corso Informatica A - Allievi Gestionali - prof. C. Silvano 65 65 Politecnico di Milano Codifica binaria su n+1 bit Se passiamo da una sequenza di lunghezza n bit ad una sequenza di n+1 bit si raddoppiano i numeri che si possono rappresentare (2n+1). Esempio: – n = 4 bit 24 = 16 numeri da 0 a 15. – n = 5 bit 25 = 32 numeri da 0 a 31. Cultura tecnologica del progetto 21/12/2015 Corso Informatica A - Allievi Gestionali - prof. C. Silvano 66 66 Politecnico di Milano Codifica dei caratteri e delle stringhe Per la codifica dei caratteri e delle stringhe (sequenze di caratteri come parole e frasi) si sfruttano delle convenzioni che associano un valore numerico ad ogni carattere Le più diffuse convenzioni sono: – La convenzione ASCII • Sfrutta sette bit (otto nella versione estesa) per rappresentare un massimo di 128 (256) caratteri – La convenzione UNICODE • Sfrutta 16 bit per rappresentare fino a 65.536 caratteri • Utile nel caso di alfabeti particolarmente complessi quale quello cinese Cultura tecnologica del progetto 67 Politecnico di Milano Segnali audio Esempio: la nota LA La pressione dell’aria varia in modo sinusoidale con una frequenza di 440Hz Cultura tecnologica del progetto 68 Politecnico di Milano Analisi dei segnali audio Tutti i suoni possono essere visti come la somma pesata di suoni semplici (sinusoidi) Cultura tecnologica del progetto 69 Politecnico di Milano Codifica audio Onde sonore: segnali ‘continui’ – Discretizzazione del tempo • Campionamento: scelta di istanti in cui considerare il valore del segnale (discretizzazione) – Discretizzazione delle ampiezze • Quantizzazione: codifica dei campioni con un numero predefinito di bit Cultura tecnologica del progetto 70 Politecnico di Milano Campionamento Si misura l’ampiezza del segnale analogico a intervalli regolari, ogni T secondi T è detto periodo di campionamento (in secondi) F = 1/T è detta frequenza di campionamento (in Hz) Cultura tecnologica del progetto 71 Politecnico di Milano Campionamento Per segnali audio di tipo vocale (ad es. telefono), la frequenza di campionamento è tipicamente di 8 kHz Per segnali audio musicali (ad es. CD audio), la frequenza di campionamento è tipicamente di 44.1 kHz Un campionamento più fitto (ovvero con una frequenza di campionamento maggiore) consente di rappresentare i segnali analogici con maggiore fedeltà Cultura tecnologica del progetto 72 Politecnico di Milano Quantizzazione I campioni estratti con la quantizzazione rappresentano le ampiezze con precisione arbitraria Per poter essere rappresentato da un calcolatore, il valore dell’ampiezza deve essere espresso tramite un numero finito di bit La quantizzazione suddivide l’intervallo dei valori ammissibili in 2k bit, dove k è il numero di bit per campione. La figura mostra una quantizzazione a 3 bit / campione 100 011 010 001 Cultura tecnologica del progetto 73 000 Politecnico di Milano Quantizzazione 2 bit / campione Cultura tecnologica del progetto 3 bit / campione 74 Politecnico di Milano Quantizzazione 4 bit / campione Cultura tecnologica del progetto 8 bit / campione 75 Politecnico di Milano Codifica audio Esempio: brano musicale su CD – – – – – Frequenza di campionamento 44100 Hz 16 bit / campione 2 canali (destro e sinistro) 2 x 16 x 44100 = 1411200 bit / sec 176 Kbyte / sec 1 canzone • c.a. 5 minuti 176 Kbyte/s x 60 sec/min x 5 min c.a 52 Mbyte – 60 min di musica • 176 x 60 x 70 c.a. 630 Mbyte Un file mp3 di una canzone da 5 min sono c.a. 5 Mbyte fattore di compressione c.a. 10:1 Cultura tecnologica del progetto 76 Politecnico di Milano Codifica audio L’accuratezza della ricostruzione dipende: – Da quanto sono piccoli gli intervalli di campionamento – Da quanti bit uso per descrivere il suono in ogni campione nella fase di quantizzazione – Al solito… maggiore accuratezza significa maggior quantità di memoria occupata! Anche per i suoni si possono utilizzare tecniche (lossless o lossy) di compressione per migliorare l’occupazione di memoria della sequenza di campioni Le tecniche più efficvaci (lossy) sfruttano le “debolezze” dell’orecchio umano – Es. MPEG-1/2 Layer 3 , detto anche MP3 Cultura tecnologica del progetto 77 Politecnico di Milano Codifica audio Cultura tecnologica del progetto 78 Politecnico di Milano Rappresentazione di immagini In generale le immagini sono un ‘continuo’ di informazioni – Non sono formate da sequenze di oggetti ben definiti come le stringhe Bisogna quindi prima ‘discretizzarle’ ovvero trasformarle in un insieme di parti distinte che possono essere codificate separatamente come numeri Tipologia: – Immagini scalari o raster, es. foto – Immagini vettoriali, es. un disegno geometrico Cultura tecnologica del progetto 79 Politecnico di Milano Immagini Il calcolatore non può direttamente rappresentare in memoria informazione continua Le immagini devono prima essere ‘discretizzate’ ovvero trasformate in un insieme di parti distinte, che possono poi essere codificate separatamente sotto forma di numeri Azioni da fare: – Discretizzazione: scomposizione dell’immagine in un reticolo di punti (pixel, picture element) – Quantizzazione: codifica di ogni pixel con un valore numerico all’interno di un ben peciso intervallo Cultura tecnologica del progetto 80 Campionamento Politecnico di Milano Rappresentare il disco seguente Si sovrappone al disco una griglia Si identificano i “quadratini” (in azzurro) che “discretizzano” il disco Ogni quadratino si dice Pixel (da picture element) Cultura tecnologica del progetto 81 Politecnico di Milano Risoluzione Chiamiamo risoluzione dell’immagine la dimensione della griglia utilizzata per discretizzare l’immagine – es. 640x480 Aumentando la risoluzione (ovvero il numero dei pixel) e quindi diminuendo la dimensione del singolo pixel, la rappresentazione approssima meglio l’immagine originaria Cultura tecnologica del progetto 82 Politecnico di Milano Effetti della riduzione di risoluzione Cultura tecnologica del progetto 83 Politecnico di Milano Quantizzazione Dopo aver discretizzato l’immagine occorre rappresentare ogni pixel con un numero Tale numero dovrà rappresentare il colore associato al pixel, usando un certo range: si parla di quantizzazione La rappresentazione ottenuta è nota come codifica bitmap Nel caso di immagini in bianco e nero senza sfumature sono sufficienti due soli bit per ogni pixel: – 0 per rappresentare i pixel più bianchi – 1 per rappresentare i pixel più neri Cultura tecnologica del progetto 84 Immagini b/n: Un esempio Politecnico di Milano Ogni pixel è rappresentato da un bit 000000000000000000000000 000000000011111111000000 000000000010000010000000 000000000010000100000000 000000000010001000000000 000000000010010000000000 000000000010100000000000 000000000011000000000000 000000000010000000000000 Cultura tecnologica del progetto 85 Politecnico di Milano Immagini in scala di grigi / colori Immagini in bianco e nero con sfumature – Si usa la rappresentazione in ‘toni di grigio’: un byte per pixel, con 256 gradazioni di grigio per ogni pixel, o più byte per pixel, per avere più gradazioni possibili Immagini a colori – Si usa la rappresentazione del colore secondo il modello RGB (red, green,blu): sintesi additiva dei tre colori primari red, green, blu, ognuno con la propria codifica – Profondità cromatica: numero di bit per ogni pixel (di norma 24, ovvero un byte per ogni colore) RED 100 GREEN 200 BLU 200 Codifica : 01000100 Codifica : 11001000 Codifica : 11001000 Cultura tecnologica del progetto 86 Politecnico di Milano Effetti della quantizzazione 4 bpp 3 bpp 2 bpp 1 bpp Cultura tecnologica del progetto 87 Politecnico di Milano Codifica di immagini La risoluzione e la profondità cromatica determinano la dimensione di memoria necessaria a memorizzare l’immagine – Esempio: 1024x768 pixel x 256 toni di grigio / pixel = 1024x768 pixel x 8 bit / pixel = 768 Kbyte Se l’immagine è a colori – Esempio 1024x768 pixel x 3 componenti / pixel x 256 toni / componente = 1024x768 pixel x 3 componenti / pixel x 8 bit / pixel = 2304 Kbyte Cultura tecnologica del progetto 88 Politecnico di Milano Codifica di immagini In fase di codifica esiste la necessità di adottare tecniche di compressione per ottimizzare: – Occupazione di spazio di memoria – Velocità di trasmissione attraverso la rete Tecniche di compressione senza perdita d informazione (lossless) – Reversibili • Ad hoc per le immagini ad es. PNG • Applicabili a qualsiasi tipo di dato ad es. codifiche basate sulla frequenza statistica dei dati: i dati più frequenti vengono codificati con sequenze di bit più brevi (ZIP) Algoritmi con perdita di informazione (lossy) – Generalmente sono specifici di un certo campo e sfruttano le caratteristiche degli oggetti da rappresentare per ‘buttare via’ informazione poco importanti – Nel caso di immagini gli algoritmi usati nei formati GIF e JPEG sfruttano la caratteristica dell’occhio umano di essere poco sensibile a lievi cambiamenti di colore in punti contigui, e quindi eliminano questi lievi cambiamenti “appiattendo” il colore dell’immagine – Generalmente è possibile specificare quanto siamo disposti a perdere attraverso alcuni parametri Cultura tecnologica del progetto 89 Politecnico di Milano Principali formati di compressione per immagini raster TIFF (Tagged Image File Format): uso di tag (etichette) descrittivi, 24 bit/pixel, compressione senza perdita GIF (Graphics Interchange Format, Compuserve): più immagini nello stesso file, compressione senza perdita PNG (Portable Network Graphics): compressione lossless, studiato per sostituire GIF (coperto da brevetti). Supporta solo grayscale e RGB. Studiato per trasmissione di immagini su Web BMP (BitMaP, Microsoft e IBM): 1, 4, 8, 24 bit/pixel, compressione senza perdita (RLE) JFIF (Jpeg File Interchange Format): compressione JPEG (meglio noto come “formato JPEG”) Cultura tecnologica del progetto 90 Politecnico di Milano Fattore di Compressione Esempio: – Fotocamera a 8 Mpixel c.a. 8.000.000 di pixel Occupazione immagine non compressa a colori – 8.000.000 pixel x – 3 componenti / pixel x – 1 byte / componente = ______________________ – 24.000.000 byte c.a. 24 Mbyte Salvo l’immagine in formato JPEG e ottengo un file mypicture.jpg di dimensione 2.4 Mbyte Fattore di compressione dimensione originale / dimensione file compresso – 24 Mbyte / 2.4 Mbyte = 10:1 Cultura tecnologica del progetto 91 Politecnico di Milano Esempio: Compressione jpeg Compressione = 13.6:1 Compressione = 37:1 Compressione = 78:1 Compressione = 96:1 Cultura tecnologica del progetto 92 Politecnico di Milano Immagine originale 8 bpp bpp bits / pixel Politecnico di Milano Immagine originale (dettaglio) Politecnico di Milano Compressione JPEG 0.35 bpp Fattore di compressione – 8 bpp / 0.35 bpp = 22.8 Politecnico di Milano Compressione JPEG 0.35 bpp Politecnico di Milano Compressione JPEG 0.5 bpp Fattore di compressione – 8 bpp / 0.5 bpp = 16 Politecnico di Milano Compressione JPEG 0.5 bpp (dettaglio) Politecnico di Milano Immagini vettoriali Codifica simbolica di elementi grafici – es.: circle polyline ….. Applicabilità limitata al mondo geometrico (non fotografie) Nessuna perdita di dettaglio ingrandendo o rimpicciolendo l’immagine Formato principale: SVG (+ un vasto insieme di formati proprietari) – forme geometriche, cioè linee costituite da segmenti di retta e curve e aree delimitate da linee chiuse; – immagini della grafica raster e immagini digitali; – testi esplicativi, eventualmente cliccabili. Cultura tecnologica del progetto 99 Politecnico di Milano Formati vettoriali/bitmap (misti) PostScript (Adobe): misto bitmap-vettoriale, compressione con e senza perdita – È un linguaggio di descrizione di pagina utilizzato principalmente nel mondo dell’editoria elettronica e del desktop publishing EPS (Encapsulated PostScript): derivato da PostScript PDF (Portable Document Format): derivato da PostScript – Utilizzato per rappresentare documenti 2D in modo indipendente dal dispositivo di rendering e della risoluzione dello stesso – Ultima versione PDF 1.7 (2006) – Contiene • Un sottoinsieme del linguaggio PS • Un sistema per l’embedding/replacement dei font • Un sistema per unire in modo strutturato contenuti di tipo differente (testo, immagini, font, grafica vettoriale) Cultura tecnologica del progetto 100 Politecnico di Milano Immagini in movimento: I Video Video: successione di immagini fisse (o frame) trasmesse con velocità sufficientemente elevata Il movimento è rappresentato già in modo discreto nei media: con un numero abbastanza alto di fotogrammi fissi (15-30 al secondo) l’occhio umano percepisce il movimento come un continuo Cultura tecnologica del progetto 101 Politecnico di Milano Video interallaciato vs. progressivo Tradizionalmente, il segnale video di tipo televisivo utilizza un formato interallacciato Prima vengono generate le righe pari, poi quelle dispari Vengono generati 50 “semiquadri” al secondo Nel formato progressivo, ogni frame è costituito sia dalle righe pari che da quelle dispari Cultura tecnologica del progetto 102 Politecnico di Milano Un esempio – video interallacciato Interallacciato (ad. es TV) – – – – – 720 punti / linea 576 linee (288 linee pari, 288 linee dispari) 50 semiquadri al secondo 3 byte / pixel (RGB) 720 x 288 x 50 x 3 = 31.104.000 byte / sec c.a. 31 Mbyte/sec c.a. 250 Mbps – 2h di film occupano (se non compressi) • 2x60x60x31 = 223.200 Mbyte c.a. 223 Gbyte – Un DVD ha una capacità di c.a. 4.5 Gb avrei bisogno di un fattore di compressione pari a 223 / 4.5 = 50 Cultura tecnologica del progetto 103 Politecnico di Milano Un esempio - video progressivo Progressivo (ad. es cellulare) – – – – 320x240 pixel 15 frame / secondo 3 byte / pixel (RGB) 320 x 240 x 15 x 3 = 3.456.000 byte / sec c.a. 3.5 Mbyte/sec c.a. 28 Mbyte / sec – 1 minuto di video registrato occupa (se non compresso) • 60x3.5 = 210 Mbyte Cultura tecnologica del progetto 104 Politecnico di Milano Codifica video Potrei in principio codificare separatamente ogni fotogramma come immagine fissa E’ la tecnica usata da molte fotocamere compatte, che salvano i filmati ripresi in formato Motion-JPEG (ogni frame è compressa con JPEG) Si è in grado di ottenere rapporti di compressione dell’ordine 10-20 senza eccessiva perdita di qualità – Per mettere un film su DVD abbiamo bisogno di un rapporto di c.a. 50... Cultura tecnologica del progetto 105 Politecnico di Milano Codifica video Per ottenere rapporti di compressione più alti è necessario sfruttare la ridondanza temporale Frame consecutivi in una sequenza di immagini sono simili l’uno all’altro Codifico solo le differenze tra i frame successivi E’ possibile ottenere rapporti di compressione di 50:1 fino a anche a 100:1 senza un degrado eccessivo della qualità Cultura tecnologica del progetto 106 Politecnico di Milano Immagine originale 1 Politecnico di Milano Immagine originale 2 Politecnico di Milano Differenza con pixel di destra Politecnico di Milano Differenza tra originali Politecnico di Milano Differenza a moto compensato Politecnico di Milano Standard di codifica video ITU-T standards H.261 H.263 joint ITU-T/MPEG standards 1984 1986 1988 1990 1992 MPEG-4 1994 1996 1998 2000 2002 2004 MPEG-1 Video CD MPEG-2 TV digitale, DVD MPEG-4 DivX, H.264/AVC HD-DVD, Blue-ray DVD Definisce anche la codifica dei dati audio (vedi slide seguenti) e la sincronizzazione con i dati video ITU-T (International Telecommunication Union - Telecommunications Standardization Sector) – H.264/AVC MPEG-1 MPEG (Moving Picture Experts Group): – – – – – H.263++ H.262 MPEG-2 MPEG standards H.263+ H.263 video-telefonia AVI (Audio Video, Microsoft) – Formato “contenitore”. Può contenere audio/video compressi con formati diversi Cultura tecnologica del progetto 112 Politecnico di Milano Indice Il sistema operativo – – – – – Software di sistema e applicativo Architettura di un sistema operativo Classificazione dei sistemi operativi Bootstrap Panoramica dei principali sistemi operativi • MS DOS, MS Windows, UNIX, Linux, BSD, Mac OS Rappresentazione dell’informazione – – – – – Numeri Caratteri e testi Immagini Video Suoni Cenni di programmazione – – – – Linguaggi di programmazione Fasi della programmazione Paradigmi di programmazione Costrutti elementari di un linguaggio di programmazione Cultura tecnologica del progetto 113 Politecnico di Milano Il linguaggio del calcolatore Il calcolatore esegue programmi scritti in un opportuno linguaggio: il linguaggio macchina Tale linguaggio differisce nei suoi dettagli da calcolatore a calcolatore – Da processore a processore Cultura tecnologica del progetto 114 Politecnico di Milano Le istruzioni macchina Un programma scritto in linguaggio macchina è formato da una sequenza di istruzioni appartenenti al set di istruzioni del particolare processore Ogni istruzione è formata da: – Un codice operativo – Zero o più operandi codice operativo operando(i) Tanto il codice operativo quanto gli operandi sono rappresentati nella memoria del calcolatore sotto forma di numeri binari Data la difficoltà per l’uomo di interpretare numeri binari si usa l’assembler al posto del linguaggio macchina Cultura tecnologica del progetto 115 Politecnico di Milano I programmi Un programma consiste di due parti – La parte istruzioni contenente il codice del programma – La parte dati costituita dalle celle di memoria destinate a contenere i dati sui quali il programma opera – Il processore esegue un programma dalla prima istruzione fino all’istruzione halt 0 LOAD 4, R1 1 LOAD 5, R2 2 SUB R1, R2 istruzioni 3 STORE R1, 7 4 50 Cultura tecnologica del progetto 5 40 dati 116 Politecnico di Milano Programmi vs. processi Un programma è un entità statica – Descrive semplicemente un algoritmo Con il termine processo si indica un programma in esecuzione – Caratterizzato dal codice in esecuzione e da uno stato • Lo stato di un processo è descritto dal valore assunto dalla sezione dati del programma e dai valori assunti dai registri del processore programma : processo = ricetta : attività del cucinare Cultura tecnologica del progetto 117 Politecnico di Milano Un esempio di programma Esempio: calcolare espressione (a + b) * (c + d) – Poni in memoria centrale, nelle celle 16, 17, 18 e 19 i valori di a, b, c, e d; – Esegui l’addizione di a e b: • Copia cella 16 in registro A • Copia cella 17 in registro B • Somma i due registri (l’operazione è eseguita dalla ALU) – Immagazzina risultato (ora in registro A) nella cella 20 – Esegui l’addizione di c e d: • Copia cella 18 in registro A • Copia cella 19 in registro B • Somma i registri (l’operazione è eseguita dalla ALU) – Esegui la moltiplicazione di (a + b) e (c + d): • Copia in registro B cella 20 • Moltiplica il contenuto dei due registri – Scrivi il risultato sul dispositivo di uscita: • Memorizza registro A, nella cella 20 • Scrivi cella 20 nel registro dati della periferica – Arresta l’esecuzione del programma Cultura tecnologica del progetto 118 Politecnico di Milano Contenuto della memoria Cultura tecnologica del progetto 119 Le istruzioni del programma Politecnico di Milano Cultura tecnologica del progetto 120 Politecnico di Milano Il linguaggio Assembly La programmazione in linguaggio macchina è troppo complessa e noiosa per i programmatori Al posto delle sequenze di numeri, è più comodo usare delle abbreviazioni simili all’inglese per rappresentare le operazioni elementari: Nasce il linguaggio Assembly È necessario un programma (assembler) che traduca in linguaggio macchina i programmi scritti in linguaggio assembly Cultura tecnologica del progetto 121 Politecnico di Milano L’esempio in linguaggio assembly READ A READ B READ C READ D LOADA A LOADB B ADD STOREA RIS LOADA C LOADB D ADD Cultura tecnologica del progetto INT INT INT INT INT LOADB RIS MUL STOREA RIS WRITE RIS HALT A B C D RIS 122 Politecnico di Milano I linguaggi di alto livello La programmazione in linguaggio macchina è improponibile per programmi di una certa complessità... ... e l’assembly oltre un certo limite non aiuta I linguaggi di alto livello facilitano la programmazione dei calcolatori “Alto livello” = “Vicino al programmatore” Ovviamente è necessario un programma (compilatore) che converta il programma scritto nel linguaggio di alto livello in linguaggio macchina Cultura tecnologica del progetto 123 Politecnico di Milano L’esempio (frammento) in C int a, b, c, d, ris; scanf("%d%d%d%d", &a, &b, &c, &d); ris = (a+b)*(c+d); printf("ecco il risultato %d", ris); Cultura tecnologica del progetto 124 Politecnico di Milano Linguaggi di alto livello: Quali COBOL (COmmon Business Oriented Language) LISP, PROLOG Fortran (FORmula TRANslator) Pascal Basic C / C++ JAVA C# … Cultura tecnologica del progetto 125 Politecnico di Milano Fasi della programmazione La preparazione di un programma scritto in un linguaggio ad alto livello, passa tra diverse fasi: – – – – – editazione compilazione linking (collegamento) caricamento esecuzione Cultura tecnologica del progetto 126 Politecnico di Milano Fase di editazione Consiste nella scrittura del codice (testo del programma) in un file Si esegue tramite un programma chiamato editor o Ambiente di sviluppo Genera il programma sorgente Cultura tecnologica del progetto 127 Politecnico di Milano Fase di compilazione Il codice sorgente viene passato al compilatore che si occuperà di tradurre il programma nel codice in linguaggio macchina Genera il programma oggetto Cultura tecnologica del progetto 128 Politecnico di Milano Fase di linking (collegamento) I programmi scritti in linguaggio ad alto livello, contengono dei riferimenti a funzioni definite altrove – Nelle librerie del linguaggio e/o del sistema operativo Il codice oggetto prodotto dal compilatore conterrà dei “buchi” (riferimenti alle funzioni di libreria) Il linker si occupa di collegare il codice oggetto con quello delle funzioni mancanti Genera il programma eseguibile Cultura tecnologica del progetto 129 Politecnico di Milano Fase di Caricamento / Esecuzione Fase di caricamento – Prima che possa essere eseguito, un programma dovrà essere caricato in memoria – Il programma loader (parte del sistema operativo) si occupa di questa operazione Fase di esecuzione – Il computer esegue il programma, una istruzione per volta Cultura tecnologica del progetto 130 Politecnico di Milano Linguaggi compilati e interpretati Il calcolatore “capisce” solo il linguaggio macchina I programmi scritti in linguaggi di alto livello devono essere tradotti in linguaggio macchina prima di essere eseguiti – Di ciò si occupa il compilatore In alternativa alcuni linguaggi di alto livello hanno associato un interprete – Si tratta di un programma capace di “capire” quel particolare linguaggio e di eseguirne i programmi – Un’istruzione per volta Cultura tecnologica del progetto 131 Politecnico di Milano Paradigma ad oggetti Il paradigma ad oggetti propone il superamento del dualismo dati procedure Un oggetto è un’entità che incorpora sia una struttura dati (stato) che le procedure che agiscono su di essa (metodi) Il termine oggetto è emerso quasi indipendentemente e quasi simultaneamente in diversi campi dell’informatica a cavallo fra gli anni 60 e 70, per indicare concetti apparentemente diversi ma in realtà strettamente correlati. Tutti questi concetti infatti erano stati introdotti per gestire la complessità nei sistemi software. Erano infatti componenti di sistemi decomposti modularmente oppure unità modulari di rappresentazione della conoscenza. Cultura tecnologica del progetto 137 Politecnico di Milano I fondamenti della programmazione ad oggetti (object-oriented) Diamo qualche definizione “classica” Che cos’è un oggetto? – Un oggetto è un‘entità dotata di uno stato e di un comportamento Quali sono i concetti fondamentali della visione object oriented? – Incapsulamento • In base al principio di incapsulamento un oggetto è una “scatola nera” che racchiude una struttura dati (stato dell’oggetto). Questa struttura non può essere manipolata direttamente ma solo attraverso i metodi dell’oggetto – Ereditarietà • E’ la sintesi del concetto di gerarchia (presente p.es. nel campo dei database) e del concetto di descrizione differenziale proveniente dal campo delle scienze cognitive e dell’intelligenza artificiale – Polimorfismo • Il polimorfismo è la capacità degli oggetti di avere comportamenti diversi in risposta all’invocazione dello stesso metodo Cultura tecnologica del progetto 138 Politecnico di Milano Costrutti elementari La programmazione in un linguaggio di alto livello (imperativo) è basata su tre costrutti fondamentali: – Sequenza – Selezione – Ripetizione Sequenza: serie di istruzioni che vengono eseguite una dopo l’altra Selezione: viene posta una condizione, se la condizione è verificata viene eseguito un blocco di istruzioni, altrimenti ne viene eseguito un altro Ripetizione: uno stesso blocco di istruzioni viene eseguito a ripetizione fino a quando non viene verificata la condizione di uscita dal ciclo Cultura tecnologica del progetto 139 Politecnico di Milano Sequenza Istruzione 1 Esempio: • Leggi un numero da tastiera Istruzione 2 • Moltiplicalo per 2 • Stampalo a video Istruzione N Cultura tecnologica del progetto 140 Politecnico di Milano Selezione Istruzione 1 Esempio: • Leggi un numero da tastiera • Condizione: è un numero positivo? Condizione Istruzione 2 Istruzione 3 • Se la condizione è verificata si incrementa il numero, altrimenti lo si decrementa • Si stampa a video il numero Istruzione 4 Cultura tecnologica del progetto 141 Politecnico di Milano Ripetizione Esempio: Istruzione 1 Istruzione 2 Condizione uscita Cultura tecnologica del progetto • Leggi un numero da tastiera • Decrementalo di 1 • Condizione uscita: il numero è uguale a 0? • se la condizione è verificata il programma esce dal ciclo, altrimenti lo ripete 142 Politecnico di Milano Teorema di Böhm-Jacopini I tre costrutti fondamentali sono sufficienti a descrivere qualunque algoritmo Detto in altre parole: dato un problema di complessità finita, è sempre possibile scrivere l’algoritmo che lo risolve utilizzando opportunamente i tre costrutti fondamentali presentati nei paragrafi precedenti Per semplificare possiamo dire che un problema ha complessità finita quando esiste una soluzione calcolabile in un tempo finito E’ ad esempio impossibile scrivere un programma in grado di indovinare con esattezza la schedina del totocalcio, o i numeri del lotto (queste funzioni non sono calcolabili) Cultura tecnologica del progetto 143