La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Il Sistema Operativo Rappresentazione dellInformazione Cenni di Programmazione Politecnico di Milano Facoltà del Design – Bovisa Prof. Gianluca Palermo.

Presentazioni simili


Presentazione sul tema: "Il Sistema Operativo Rappresentazione dellInformazione Cenni di Programmazione Politecnico di Milano Facoltà del Design – Bovisa Prof. Gianluca Palermo."— Transcript della presentazione:

1

2 Il Sistema Operativo Rappresentazione dellInformazione Cenni di Programmazione Politecnico di Milano Facoltà del Design – Bovisa Prof. Gianluca Palermo Dipartimento di Elettronica e Informazione

3 Politecnico di Milano Cultura tecnologica del progetto2 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 dellinformazione –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

4 Politecnico di Milano Cultura tecnologica del progetto3 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 dellutente, appoggiandosi sullo strato fornito dal sistema operativo

5 Politecnico di Milano Cultura tecnologica del progetto4 Il sistema operativo Con il termine sistema operativo si intende linsieme 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

6 Politecnico di Milano Cultura tecnologica del progetto5 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,…)

7 Politecnico di Milano Cultura tecnologica del progetto6 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

8 Politecnico di Milano Cultura tecnologica del progetto7 Architettura di un S.O. - 2 Macchina fisica Gestore dei processi (nucleo) Gestore della memoria Gestore delle periferiche Gestore del file system Interprete dei comandiInterfaccia grafica Programmi utente Gestori di risorse (kernel) Interfacce utente

9 Politecnico di Milano Cultura tecnologica del progetto8 Il Nucleo 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

10 Politecnico di Milano Cultura tecnologica del progetto9 Il nucleo Memoria centrale Interfaccia delle periferiche Bus di sistema Processore virtuale Processore virtuale Processore virtuale... Disco La macchina virtuale realizzata dal nucleo

11 Politecnico di Milano Cultura tecnologica del progetto10 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

12 Politecnico di Milano Cultura tecnologica del progetto11 Il gestore della memoria La macchina virtuale realizzata dal gestore della memoria Interfaccia delle periferiche Bus di sistema Processore virtuale... Disco Processore virtuale Processore virtuale Memoria virtuale Memoria virtuale Memoria virtuale...

13 Politecnico di Milano Cultura tecnologica del progetto12 Il gestore delle periferiche –Maschera le caratteristiche fisiche delle periferiche –Fornisce agli strati superiori un insieme di procedure di alto livello per laccesso alle diverse periferiche –Offre ad ogni processo la visibilità di un insieme di periferiche virtuali dedicate –Gestisce, almeno in parte, i malfunzionamenti delle periferiche

14 Politecnico di Milano Cultura tecnologica del progetto13 Il gestore delle periferiche La macchina virtuale realizzata dal gestore delle periferiche Interfaccia periferiche virtuali Bus di sistema Processore virtuale Disco Memoria virtuale... Bus Interfaccia periferiche virtuali Processore virtuale Memoria virtuale Bus

15 Politecnico di Milano Cultura tecnologica del progetto14 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 laccesso al file system –Garantisce la protezione nellaccesso ai file

16 Politecnico di Milano Cultura tecnologica del progetto15 Il gestore del file system Le funzioni di base che sono supportate da un file system sono –Il recupero di dati precedentemente memorizzati –Leliminazione 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

17 Politecnico di Milano Cultura tecnologica del progetto16 Il gestore del file system 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 ) –Lestensione ( doc )

18 Politecnico di Milano Cultura tecnologica del progetto17 Il gestore del file system Lestensione è 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

19 Politecnico di Milano Cultura tecnologica del progetto18 Il gestore del file system 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 dellalbero 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

20 Politecnico di Milano Cultura tecnologica del progetto19 Il gestore del file system D: Documenti Downloads Incoming Temp...

21 Politecnico di Milano Cultura tecnologica del progetto20 Il gestore del file system La macchina virtuale realizzata dal gestore del file system Interfaccia periferiche virtuali Bus di sistema Processore virtuale Memoria virtuale... Bus File... Interfaccia periferiche virtuali Processore virtuale Memoria virtuale Bus File...

22 Politecnico di Milano Cultura tecnologica del progetto21 Linterprete dei comandi e linterfaccia grafica Linterprete comandi e linterfaccia grafica –Costituiscono linterfaccia verso lutente –Consentono linterazione dellutente 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

23 Politecnico di Milano Cultura tecnologica del progetto22 Una possibile classificazione dei moderni S.O. I moderni sistemi operativi possono essere classificati in: –Sistemi monotask: Permettono lesecuzione di un solo programma utente per volta (es. DOS) Il computer a disposizione del programma dallinizio alla fine della sua esecuzione Coda dei job, gestita FIFO (first in, first out) e/o con priorità –Sistemi multitask Permettono lesecuzione di più programmi utente contemporaneamente Classificazione ulteriore: –Multitasking cooperativo (Windows 3.1, MacOS) –Multitasking preemptive (Windows 95/98/NT, Unix) Time sharing o meno

24 Politecnico di Milano Cultura tecnologica del progetto23 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

25 Politecnico di Milano Cultura tecnologica del progetto24 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 lesecuzione 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

26 Politecnico di Milano Cultura tecnologica del progetto25 Stati di un processo Processo in esecuzione Processo in attesa Processi pronti Inizio esecuzione Selezione primo processo pronto e sua esecuzione Termine quanto di tempo Completamento operazione di I/O (evento esterno atteso) Richiesta di operazione di I/O

27 Politecnico di Milano Cultura tecnologica del progetto26 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 loperazione 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, lutente 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 )

28 Politecnico di Milano Cultura tecnologica del progetto27 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

29 Politecnico di Milano Cultura tecnologica del progetto28 Bootstrap: avvio del SO Allinizio, la CPU ha in indirizzo fissato nel registro contatore di programma, che punta allindirizzo nella ROM (Read Only Memory) ove inizia il programma di bootstrap che è sempre memorizzato lì Lesecuzione del programma di bootsrap trasferisce il kernel del Sistema Operativo da una parte prestabilita della memoria di massa (hard-disk, floppy- disk, CD-Rom,…) in memoria principale Quindi lesecuzione prosegue con un salto allarea 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 allavvio

30 Politecnico di Milano Cultura tecnologica del progetto29 Bootstrap

31 Politecnico di Milano Cultura tecnologica del progetto30 MS-DOS 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) –…

32 Politecnico di Milano Cultura tecnologica del progetto31 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

33 Politecnico di Milano Cultura tecnologica del progetto32 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.

34 Politecnico di Milano Cultura tecnologica del progetto33 Breve storia di windows 2/2 Il successore di windows NT è Windows 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 lamministrazioni di reti, domini, ecc. Con il nuovo millennio si registra luscita 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 Windows XP presenta uninterfaccia completamente ridisegnata, un ottimo supporto alle periferiche attualmente sul mercato e una grande supporto ai prodotti multimediali non ultimi i videogame grazie allintegrazione 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 linterfaccia grafica; funzionalità avanzate di ricerca dei documenti archiviati; maggiore protezione rispetto agli attacchi informatici.

35 Politecnico di Milano Cultura tecnologica del progetto34 Unix 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)

36 Politecnico di Milano Cultura tecnologica del progetto35 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 alluso 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 nellambito 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à.

37 Politecnico di Milano Cultura tecnologica del progetto36 Linux Gnome KDE

38 Politecnico di Milano Cultura tecnologica del progetto37 BSD BSD è unaltra 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, allinterno del Sistema Operativo Apple MAC OS-X

39 Politecnico di Milano Cultura tecnologica del progetto38 MAC OS-X MAC OS-X è lultima 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, dallinterfaccia grafica (Aqua) ad una suite di applicazioni e utilities. Architettura MAC OS-X Kernel, gestori di risorse e servizi di base GUI Applicazioni

40 Politecnico di Milano Cultura tecnologica del progetto39 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 dellinformazione –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

41 Politecnico di Milano Cultura tecnologica del progetto40 Codifica posizionale dei numeri: il sistema arabico Il sistema di numerazione arabico sfrutta una codifica posizionale –Ogni cifra assume un valore particolare a seconda della posizione assunta allinterno 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 allinterno di un numero è pari a: x 10 n dove n è la posizione occupata dalla cifra allinterno del numero (si conta da destra partendo da 0) –Esempio: 1257 = 7 x x x x 10 3

42 Politecnico di Milano Cultura tecnologica del progetto41 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

43 Politecnico di Milano Cultura tecnologica del progetto42 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 è.

44 Politecnico di Milano Cultura tecnologica del progetto43 Codifica dati e istruzioni Codice (semantica): insieme di regole che ad ogni configurazione ammissibile associa unentità di informazione –1.234,5 = 1 x x x x x –1,23,45 = ? Lo stesso alfabeto può essere utilizzato con codici diversi: –123,456 = 1 x x x x x x (IT) –123,456 = 1 x x x x x x 10 0 (UK)

45 Politecnico di Milano Cultura tecnologica del progetto44 Codifica binaria dellinformazione 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à dinformazione 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.

46 Politecnico di Milano Cultura tecnologica del progetto45 Codifica binaria dellinformazione 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.

47 Politecnico di Milano Cultura tecnologica del progetto46 Codifica binaria dellinformazione Quanti oggetti diversi posso codificare con parole binarie composte da k bit? –1 bit: 2 1 = 2 stati (0, 1) 2 oggetti –2 bit: 2 2 = 4 stati (00, 01, 10, 11) 4 oggetti –3 bit: 2 3 = 8 stati (000, 001, 010, 011, 100, 101, 110, 111) 8 oggetti –… –k bit: 2 k stati 2 k oggetti

48 Politecnico di Milano Cultura tecnologica del progetto47 Codifica binaria dellinformazione 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 (2 k+1 ).

49 Politecnico di Milano Cultura tecnologica del progetto48 Codifica binaria dellinformazione Quanti bit mi servono per codificare N oggetti: –N 2 k k log 2 N k = log 2 N Ipotesi implicita: le parole di un codice hanno tutte la stessa lunghezza.

50 Politecnico di Milano Cultura tecnologica del progetto49 Definire un codice Identificare due insiemi: Insieme delle configurazioni ammissibili; Insieme degli oggetti da rappresentare. Associare gli elementi dei due insiemi

51 Politecnico di Milano Cultura tecnologica del progetto50 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 = log 2 7 = 3

52 Politecnico di Milano Cultura tecnologica del progetto51 Esempio LUN MAR VEN GIO MER SABDOM Insieme degli oggetti da codificare Insieme delle configurazioni ammissibili

53 Politecnico di Milano Cultura tecnologica del progetto52 Esempio LUN MAR VEN GIO MER SABDOM Codice

54 Politecnico di Milano Cultura tecnologica del progetto53 Byte bit rappresenta 2 stati: 0 oppure 1. Byte rappresenta 8 bit 2 8 = 256 stati KiloByte [KB] = 2 10 Byte = 1024 Byte 10 3 Byte MegaByte [MB] = 2 20 Byte = Byte 10 6 Byte GigaByte [GB] = 2 30 Byte 10 9 Byte TeraByte [TB] = 2 40 Byte Byte …

55 Politecnico di Milano Cultura tecnologica del progetto54 Codifica binaria dei caratteri Quanti sono gli oggetti da rappresentare? –26 lettere maiuscole –26 lettere minuscole –10 cifre –Circa 30 simboli dinterpunzione (, ; …) –Circa 30 caratteri di controllo (EOF, CR, …) Totale circa 120 oggetti complessivi k = log = 7.

56 Politecnico di Milano Cultura tecnologica del progetto55 Codifica binaria dei caratteri Codice ASCII (American Standard Code for Information Interchange) utilizza 7 bit può rappresentare 2 7 = 128 caratteri detti caratteri ASCII Standard. Codice ASCII esteso utilizza 8 bit (1 Byte) può rappresentare 2 8 = 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)

57 Politecnico di Milano Cultura tecnologica del progetto56 Notazione posizionale Consideriamo i numeri interi assoluti (numeri naturali più lo zero). Notazione posizionale in base b: Alfabeto: c i 0 … b-1 c k c k-1 … c 1 c 0 rappresenta: N = c k x b k + c k-1 x b k-1 + … + c 0 x b 0 = (i=0… k) c i x b i c 0 bit meno significativo c k bit più significativo

58 Politecnico di Milano Cultura tecnologica del progetto57 Notazione posizionale Basi più frequentemente utilizzate: base 2 : c i 0, 1 base 8: c i 0, 1, 2, 3, 4, 5, 6, 7 base 10: c i 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 base 16: c i 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F

59 Politecnico di Milano Cultura tecnologica del progetto58 Codifica binaria Numeri binari: base b = 2 Alfabeto binario: cifre c i 0, 1 (c k … c 1 c 0 ) 2 rappresenta: N = (i=0… k) c i x 2 i

60 Politecnico di Milano Cultura tecnologica del progetto59 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 = N = 1 x x x x 2 0 = N = N = 1 x x x x x x 2 0 = 37 10

61 Politecnico di Milano Cultura tecnologica del progetto60 Conversione decimale binario Si calcolano i resti della divisione per due finché il risultato di una divisione diventa zero: Esempio: N = : 2 = 11resto R 0 = b 0 = 1 11 : 2 = 5 resto R 1 = b 1 = 1 5 : 2 = 2 resto R 2 = b 2 = 1 2 : 2 = 1 resto R 3 = b 3 = 0 1 : 2 = 0 resto R 4 = b 4 = =

62 Politecnico di Milano Cultura tecnologica del progetto61 Conversione decimale binario Esempio: N = : 2 = 9resto R 0 = b 0 = 0 9 : 2 = 4 resto R 1 = b 1 = 1 4 : 2 = 2 resto R 2 = b 2 = 0 2 : 2 = 1 resto R 3 = b 3 = 0 1 : 2 = 0 resto R 4 = b 4 = =

63 Politecnico di Milano Cultura tecnologica del progetto62 Codifica esadecimale Utile per rappresentare sinteticamente i valori binari. Numeri esadecimali: base b = 16 Alfabeto esadecimale: cifre c i 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F (c k … c 1 c 0 ) 16 rappresenta: N= (i=0… k) c i x 16 i

64 Politecnico di Milano Cultura tecnologica del progetto63 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 = [0011] [0101] [0100] =

65 Politecnico di Milano Cultura tecnologica del progetto64 25/01/2014Corso Informatica A - Allievi Gestionali - prof. C. Silvano64 Conversione binario esadecimale Suddividere le cifre binarie (partendo da destra verso sinistra) tenendo conto che quattro cifre binarie corrispondono a una cifra esadecimale. N = [11] [0101] [0100] = N = [11] [0011] [1001]=

66 Politecnico di Milano Cultura tecnologica del progetto65 25/01/2014Corso Informatica A - Allievi Gestionali - prof. C. Silvano65 Codifica binaria su n bit Con una sequenza di n bit si possono rappresentare 2 n numeri interi assoluti da 0 a 2 n -1. Esempio: n = 4 bit 2 4 = 16 numeri interi assoluti da 0 a 15. La lunghezza delle sequenze di bit adottate stabilisce il massimo numero che può essere rappresentato.

67 Politecnico di Milano Cultura tecnologica del progetto66 25/01/2014Corso Informatica A - Allievi Gestionali - prof. C. Silvano66 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 (2 n+1 ). Esempio: –n = 4 bit 2 4 = 16 numeri da 0 a 15. –n = 5 bit 2 5 = 32 numeri da 0 a 31.

68 Politecnico di Milano Cultura tecnologica del progetto67 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 caratteri Utile nel caso di alfabeti particolarmente complessi quale quello cinese

69 Politecnico di Milano Cultura tecnologica del progetto68 Segnali audio La pressione dellaria varia in modo sinusoidale con una frequenza di 440Hz Esempio: la nota LA

70 Politecnico di Milano Cultura tecnologica del progetto69 Analisi dei segnali audio Tutti i suoni possono essere visti come la somma pesata di suoni semplici (sinusoidi)

71 Politecnico di Milano Cultura tecnologica del progetto70 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

72 Politecnico di Milano Cultura tecnologica del progetto71 Campionamento Si misura lampiezza 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)

73 Politecnico di Milano Cultura tecnologica del progetto72 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à

74 Politecnico di Milano Cultura tecnologica del progetto73 Quantizzazione I campioni estratti con la quantizzazione rappresentano le ampiezze con precisione arbitraria Per poter essere rappresentato da un calcolatore, il valore dellampiezza deve essere espresso tramite un numero finito di bit La quantizzazione suddivide lintervallo dei valori ammissibili in 2 k bit, dove k è il numero di bit per campione. La figura mostra una quantizzazione a 3 bit / campione

75 Politecnico di Milano Cultura tecnologica del progetto74 Quantizzazione 2 bit / campione 3 bit / campione

76 Politecnico di Milano Cultura tecnologica del progetto75 Quantizzazione 4 bit / campione8 bit / campione

77 Politecnico di Milano Cultura tecnologica del progetto76 Codifica audio Esempio: brano musicale su CD –Frequenza di campionamento Hz –16 bit / campione –2 canali (destro e sinistro) –2 x 16 x = 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

78 Politecnico di Milano Cultura tecnologica del progetto77 Codifica audio Laccuratezza 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 loccupazione di memoria della sequenza di campioni Le tecniche più efficvaci (lossy) sfruttano le debolezze dellorecchio umano –Es. MPEG-1/2 Layer 3, detto anche MP3

79 Politecnico di Milano Cultura tecnologica del progetto78 Codifica audio

80 Politecnico di Milano Cultura tecnologica del progetto79 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

81 Politecnico di Milano Cultura tecnologica del progetto80 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 dellimmagine in un reticolo di punti (pixel, picture element) –Quantizzazione: codifica di ogni pixel con un valore numerico allinterno di un ben peciso intervallo

82 Politecnico di Milano Cultura tecnologica del progetto81 Campionamento 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)

83 Politecnico di Milano Cultura tecnologica del progetto82 Risoluzione Chiamiamo risoluzione dellimmagine la dimensione della griglia utilizzata per discretizzare limmagine –es. 640x480 Aumentando la risoluzione (ovvero il numero dei pixel) e quindi diminuendo la dimensione del singolo pixel, la rappresentazione approssima meglio limmagine originaria

84 Politecnico di Milano Cultura tecnologica del progetto83 Effetti della riduzione di risoluzione

85 Politecnico di Milano Cultura tecnologica del progetto84 Quantizzazione Dopo aver discretizzato limmagine 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

86 Politecnico di Milano Cultura tecnologica del progetto85 Immagini b/n: Un esempio Ogni pixel è rappresentato da un bit

87 Politecnico di Milano Cultura tecnologica del progetto86 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 100Codifica : GREEN 200Codifica : BLU 200Codifica :

88 Politecnico di Milano Cultura tecnologica del progetto87 Effetti della quantizzazione 4 bpp 2 bpp1 bpp 3 bpp

89 Politecnico di Milano Cultura tecnologica del progetto88 Codifica di immagini La risoluzione e la profondità cromatica determinano la dimensione di memoria necessaria a memorizzare limmagine –Esempio: 1024x768 pixel x 256 toni di grigio / pixel = 1024x768 pixel x 8 bit / pixel = 768 Kbyte Se limmagine è 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

90 Politecnico di Milano Cultura tecnologica del progetto89 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 dellocchio umano di essere poco sensibile a lievi cambiamenti di colore in punti contigui, e quindi eliminano questi lievi cambiamenti appiattendo il colore dellimmagine –Generalmente è possibile specificare quanto siamo disposti a perdere attraverso alcuni parametri

91 Politecnico di Milano Cultura tecnologica del progetto90 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)

92 Politecnico di Milano Cultura tecnologica del progetto91 Fattore di Compressione Esempio: –Fotocamera a 8 Mpixel c.a di pixel Occupazione immagine non compressa a colori – pixel x –3 componenti / pixelx –1 byte / componente = ______________________ – byte c.a. 24 Mbyte Salvo limmagine 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

93 Politecnico di Milano Cultura tecnologica del progetto92 Esempio: Compressione jpeg Compressione = 13.6:1 Compressione = 78:1 Compressione = 37:1 Compressione = 96:1

94 Politecnico di Milano Immagine originale 8 bpp bpp bits / pixel

95 Politecnico di Milano Immagine originale (dettaglio)

96 Politecnico di Milano Compressione JPEG 0.35 bpp Fattore di compressione –8 bpp / 0.35 bpp = 22.8

97 Politecnico di Milano Compressione JPEG 0.35 bpp

98 Politecnico di Milano Compressione JPEG 0.5 bpp Fattore di compressione –8 bpp / 0.5 bpp = 16

99 Politecnico di Milano Compressione JPEG 0.5 bpp (dettaglio)

100 Politecnico di Milano Cultura tecnologica del progetto99 Immagini vettoriali Codifica simbolica di elementi grafici –es.: Applicabilità limitata al mondo geometrico (non fotografie) Nessuna perdita di dettaglio ingrandendo o rimpicciolendo limmagine 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;forme geometriche –immagini della grafica raster e immagini digitali;grafica rasterimmagini digitali –testi esplicativi, eventualmente cliccabili. circle polyline …..

101 Politecnico di Milano Cultura tecnologica del progetto100 Formati vettoriali/bitmap (misti) PostScript (Adobe): misto bitmap-vettoriale, compressione con e senza perdita –È un linguaggio di descrizione di pagina utilizzato principalmente nel mondo delleditoria 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 lembedding/replacement dei font Un sistema per unire in modo strutturato contenuti di tipo differente (testo, immagini, font, grafica vettoriale)

102 Politecnico di Milano Cultura tecnologica del progetto101 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) locchio umano percepisce il movimento come un continuo

103 Politecnico di Milano Cultura tecnologica del progetto102 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

104 Politecnico di Milano Cultura tecnologica del progetto103 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 = byte / sec c.a. 31 Mbyte/sec c.a. 250 Mbps –2h di film occupano (se non compressi) 2x60x60x31 = 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

105 Politecnico di Milano Cultura tecnologica del progetto104 Un esempio - video progressivo Progressivo (ad. es cellulare) –320x240 pixel –15 frame / secondo –3 byte / pixel (RGB) –320 x 240 x 15 x 3 = 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

106 Politecnico di Milano Cultura tecnologica del progetto105 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 dellordine senza eccessiva perdita di qualità –Per mettere un film su DVD abbiamo bisogno di un rapporto di c.a

107 Politecnico di Milano Cultura tecnologica del progetto106 Codifica video Per ottenere rapporti di compressione più alti è necessario sfruttare la ridondanza temporale Frame consecutivi in una sequenza di immagini sono simili luno allaltro 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à

108 Politecnico di Milano Immagine originale 1

109 Politecnico di Milano Immagine originale 2

110 Politecnico di Milano Differenza con pixel di destra

111 Politecnico di Milano Differenza tra originali

112 Politecnico di Milano Differenza a moto compensato

113 Politecnico di Milano Cultura tecnologica del progetto112 Standard di codifica video MPEG (Moving Picture Experts Group): –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.263 video-telefonia AVI (Audio Video, Microsoft) –Formato contenitore. Può contenere audio/video compressi con formati diversi

114 Politecnico di Milano Cultura tecnologica del progetto113 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 dellinformazione –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

115 Politecnico di Milano Cultura tecnologica del progetto114 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

116 Politecnico di Milano Cultura tecnologica del progetto115 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 Tanto il codice operativo quanto gli operandi sono rappresentati nella memoria del calcolatore sotto forma di numeri binari Data la difficoltà per luomo di interpretare numeri binari si usa lassembler al posto del linguaggio macchina codice operativooperando(i)

117 Politecnico di Milano Cultura tecnologica del progetto116 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 allistruzione halt LOAD 4, R1 LOAD 5, R2 SUB R1, R2 STORE R1, istruzioni dati

118 Politecnico di Milano Cultura tecnologica del progetto117 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

119 Politecnico di Milano Cultura tecnologica del progetto118 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 laddizione di a e b: Copia cella 16 in registro A Copia cella 17 in registro B Somma i due registri (loperazione è eseguita dalla ALU) –Immagazzina risultato (ora in registro A) nella cella 20 –Esegui laddizione di c e d: Copia cella 18 in registro A Copia cella 19 in registro B Somma i registri (loperazione è 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 lesecuzione del programma

120 Politecnico di Milano Cultura tecnologica del progetto119 Contenuto della memoria

121 Politecnico di Milano Cultura tecnologica del progetto120 Le istruzioni del programma

122 Politecnico di Milano Cultura tecnologica del progetto121 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 allinglese per rappresentare le operazioni elementari: Nasce il linguaggio Assembly È necessario un programma (assembler) che traduca in linguaggio macchina i programmi scritti in linguaggio assembly

123 Politecnico di Milano Cultura tecnologica del progetto122 Lesempio in linguaggio assembly READ A READ B READ C READ D LOADA A LOADB B ADD STOREA RIS LOADA C LOADB D ADD LOADB RIS MUL STOREA RIS WRITE RIS HALT INTA INTB INTC INTD INTRIS

124 Politecnico di Milano Cultura tecnologica del progetto123 I linguaggi di alto livello La programmazione in linguaggio macchina è improponibile per programmi di una certa complessità e lassembly 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

125 Politecnico di Milano Cultura tecnologica del progetto124 Lesempio (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);

126 Politecnico di Milano Cultura tecnologica del progetto125 Linguaggi di alto livello: Quali COBOL (COmmon Business Oriented Language) LISP, PROLOG Fortran (FORmula TRANslator) Pascal Basic C / C++ JAVA C# …

127 Politecnico di Milano Cultura tecnologica del progetto126 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

128 Politecnico di Milano Cultura tecnologica del progetto127 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

129 Politecnico di Milano Cultura tecnologica del progetto128 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

130 Politecnico di Milano Cultura tecnologica del progetto129 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

131 Politecnico di Milano Cultura tecnologica del progetto130 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

132 Politecnico di Milano Cultura tecnologica del progetto131 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 –Unistruzione per volta

133 Politecnico di Milano Cultura tecnologica del progetto132 Paradigmi di programmazione Imperativo –un programma è composto di istruzioni che specificano operazioni (comandi) da eseguire; Funzionale –un programma è la specifica di una funzione (che a sua volta può contenere la specifica di altre funzioni) Logico / Dichiarativo –un programma è la descrizione delle proprietà dei risultati del programma, basata sulla logica matematica; Orientato agli oggetti –Un programma è la specifica di un insieme di classi di oggetti, ognunadefinita per mezzo di struttura e operazioni Nota: non si tratta di una classificazione netta

134 Politecnico di Milano Cultura tecnologica del progetto133 Linguaggi Imperativi Caratteristiche: –di utilizzo più semplice –indipendenti dall'elaboratore –purtroppo ancora legati al modello di Von Neumann: i programmi sono ancora una sequenza di istruzioni; l'evoluzione del calcolo è costituita da una variazione dello stato della memoria Eseguono 3 tipi di operazioni: –trasferimento dati –operazioni aritmetiche –alterazione del flusso del programma

135 Politecnico di Milano Cultura tecnologica del progetto134 Linguaggi Funzionali Non sono legati al modello di Von Neumann ma al concetto di programmazione funzionale Il primo linguaggio funzionale: –Lisp (List Processing), fine anni '50 –caratteristiche di manipolazione agevole di informazioni di tipo simbolico Differenze con i linguaggi imperativi: –il calcolo è basato sul calcolo di valori e non sull'assegnamento di valori a variabili –basato su valori e non su effetti –il risultato è il risultato di una funzione, non l'effetto causato dalla esecuzione di una sequenza di operazioni

136 Politecnico di Milano Cultura tecnologica del progetto135 Linguaggi Dichiarativi Basati sulla logica –obiettivo: formalizzare il ragionamento –caratterizzati da meccanismi deduttivi Programmare significa: –descrivere il problema con formule del linguaggio –interrogare il sistema, che effettua deduzioni sulla base delle definizioni

137 Politecnico di Milano Cultura tecnologica del progetto136 Linguaggi Dichiarativi Programmazione: –semplice (occorre solo definire la propria conoscenza del problema) –avviene tramite una formulazione dichiarativa Esempio: Prolog Un programma Prolog è costituito da: –Asserzioni incondizionate (fatti) : A –Asserzioni condizionate (o regole) : A IF B,C,D,… A: è la conclusione (conseguente) B,C,D: sono le premesse (o antecedenti) Una interrogazione ha la forma: ? A, B, C, …

138 Politecnico di Milano Cultura tecnologica del progetto137 Paradigma ad oggetti Il paradigma ad oggetti propone il superamento del dualismo dati procedure Un oggetto è unentità 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 dellinformatica 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.

139 Politecnico di Milano Cultura tecnologica del progetto138 I fondamenti della programmazione ad oggetti (object-oriented) Diamo qualche definizione classica Che cosè un oggetto? –Un oggetto è unentità 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 delloggetto). Questa struttura non può essere manipolata direttamente ma solo attraverso i metodi delloggetto –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 dellintelligenza artificiale –Polimorfismo Il polimorfismo è la capacità degli oggetti di avere comportamenti diversi in risposta allinvocazione dello stesso metodo

140 Politecnico di Milano Cultura tecnologica del progetto139 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 laltra 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

141 Politecnico di Milano Cultura tecnologica del progetto140 Istruzione 1 Istruzione 2 Istruzione N Esempio: Leggi un numero da tastiera Moltiplicalo per 2 Stampalo a video Sequenza

142 Politecnico di Milano Cultura tecnologica del progetto141 Istruzione 1 Istruzione 2 Esempio: Leggi un numero da tastiera Condizione: è un numero positivo? Se la condizione è verificata si incrementa il numero, altrimenti lo si decrementa Si stampa a video il numero Condizione Istruzione 3 Istruzione 4 Selezione

143 Politecnico di Milano Cultura tecnologica del progetto142 Istruzione 1 Istruzione 2 Esempio: 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 Condizione uscita Ripetizione

144 Politecnico di Milano Cultura tecnologica del progetto143 I tre costrutti fondamentali sono sufficienti a descrivere qualunque algoritmo Detto in altre parole: dato un problema di complessità finita, è sempre possibile scrivere lalgoritmo 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) Teorema di Böhm-Jacopini


Scaricare ppt "Il Sistema Operativo Rappresentazione dellInformazione Cenni di Programmazione Politecnico di Milano Facoltà del Design – Bovisa Prof. Gianluca Palermo."

Presentazioni simili


Annunci Google