La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Facoltà del Design – Bovisa

Presentazioni simili


Presentazione sul tema: "Facoltà del Design – Bovisa"— Transcript della presentazione:

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

2 Indice Il sistema operativo Rappresentazione dell’informazione
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

3 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

4 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

5 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

6 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

7 Architettura di un S.O. - 2 Macchina fisica
Gestore dei processi (nucleo) Gestore della memoria Gestore delle periferiche Gestore del file system Interprete dei comandi Interfaccia grafica Programmi utente Interfacce utente Gestori di risorse (kernel) Cultura tecnologica del progetto

8 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 Cultura tecnologica del progetto

9 La macchina virtuale realizzata dal nucleo
Il nucleo La macchina virtuale realizzata dal nucleo Processore virtuale Processore virtuale Processore virtuale ... Bus di sistema Disco Memoria centrale Interfaccia delle periferiche Cultura tecnologica del progetto

10 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

11 Il gestore della memoria
La macchina virtuale realizzata dal gestore della memoria Memoria virtuale Memoria virtuale Memoria virtuale ... Processore virtuale Processore virtuale Processore virtuale ... Bus di sistema Disco Interfaccia delle periferiche Cultura tecnologica del progetto

12 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

13 Il gestore delle periferiche
La macchina virtuale realizzata dal gestore delle periferiche Interfaccia periferiche virtuali Interfaccia periferiche virtuali Memoria virtuale Memoria virtuale ... Bus Bus Processore virtuale Processore virtuale Bus di sistema Disco Cultura tecnologica del progetto

14 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

15 Il gestore del file system
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

16 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) L’estensione (doc) Cultura tecnologica del progetto

17 Il gestore del file system
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

18 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 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

19 Il gestore del file system
Documenti Downloads Incoming Temp ... ... Cultura tecnologica del progetto

20 Il gestore del file system
La macchina virtuale realizzata dal gestore del file system Interfaccia periferiche virtuali Interfaccia periferiche virtuali Memoria virtuale Memoria virtuale ... ... File File File File ... Bus Bus Processore virtuale Processore virtuale Bus di sistema Cultura tecnologica del progetto

21 L’interprete dei comandi e l’interfaccia grafica
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

22 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

23 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

24 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

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

26 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 ) Cultura tecnologica del progetto

27 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

28 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, floppy-disk, 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

29 Bootstrap Cultura tecnologica del progetto

30 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) Cultura tecnologica del progetto

31 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

32 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

33 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 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

34 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) Cultura tecnologica del progetto

35 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

36 Linux Gnome   KDE Cultura tecnologica del progetto

37 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

38 gestori di risorse e servizi di base
MAC OS-X Architettura MAC OS-X Applicazioni 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. GUI  Kernel, gestori di risorse e servizi di base Cultura tecnologica del progetto

39 Indice Il sistema operativo Rappresentazione dell’informazione
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

40 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 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: = 7 x x x x 103 Cultura tecnologica del progetto

41 Codifica dati e istruzioni
27/03/2017 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 Introduzione ai sistemi informatici 41

42 Codifica dati e istruzioni
27/03/2017 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 Introduzione ai sistemi informatici 42

43 Codifica dati e istruzioni
27/03/2017 Codifica dati e istruzioni Codice (semantica): insieme di regole che ad ogni configurazione ammissibile associa un’entità di informazione 1.234,5 = 1 x x x x x 10-1 1,23,45 = ? Lo stesso alfabeto può essere utilizzato con codici diversi: 123,456 = 1 x x x x x x 10-3 (IT) 123,456 = 1 x x x x x x 100 (UK) Cultura tecnologica del progetto Introduzione ai sistemi informatici 43

44 Codifica binaria dell’informazione
27/03/2017 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 Introduzione ai sistemi informatici 44

45 Codifica binaria dell’informazione
27/03/2017 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 Introduzione ai sistemi informatici 45

46 Codifica binaria dell’informazione
27/03/2017 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 Introduzione ai sistemi informatici 46

47 Codifica binaria dell’informazione
27/03/2017 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 Introduzione ai sistemi informatici 47

48 Codifica binaria dell’informazione
27/03/2017 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 Introduzione ai sistemi informatici 48

49 Definire un codice Identificare due insiemi:
27/03/2017 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 Introduzione ai sistemi informatici 49

50 Esempio Associare una codifica binaria ai giorni della settimana.
27/03/2017 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 Introduzione ai sistemi informatici 50

51 Esempio 111 010 110 011 001 101 100 000 Insieme delle configurazioni ammissibili LUN MAR VEN GIO MER SAB DOM Insieme degli oggetti da codificare Cultura tecnologica del progetto

52 Esempio Codice 111 010 110 011 001 101 100 000 LUN MAR VEN GIO MER SAB
DOM Codice Cultura tecnologica del progetto

53 Byte bit rappresenta 2 stati: 0 oppure 1.
27/03/2017 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 = Byte  106 Byte GigaByte [GB] = 230 Byte  109 Byte TeraByte [TB] = 240 Byte  1012 Byte Cultura tecnologica del progetto Introduzione ai sistemi informatici 53

54 Codifica binaria dei caratteri
27/03/2017 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 Introduzione ai sistemi informatici 54

55 Codifica binaria dei caratteri
27/03/2017 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 Introduzione ai sistemi informatici 55

56 Notazione posizionale
27/03/2017 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 Introduzione ai sistemi informatici 56

57 Notazione posizionale
27/03/2017 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 Introduzione ai sistemi informatici 57

58 Codifica binaria Numeri binari: base b = 2
27/03/2017 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 Introduzione ai sistemi informatici 58

59 Conversione binario  decimale
27/03/2017 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 x x x 20 = 1310 N = N = 1 x x x x x x 20 = 3710 Cultura tecnologica del progetto Introduzione ai sistemi informatici 59

60 Conversione decimale  binario
27/03/2017 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 resto R0 = b0 = 1 11 : 2 = 5 resto R1 = b1 = 1 5 : 2 = 2 resto R2 = b2 = 1 2 : 2 = 1 resto R3 = b3 = 0 1 : 2 = 0 resto R4 = b4 = 1 2310 = Cultura tecnologica del progetto Introduzione ai sistemi informatici 60

61 Conversione decimale  binario
27/03/2017 Conversione decimale  binario Esempio: N = 1810 18 : 2 = 9 resto R0 = b0 = 0 9 : 2 = 4 resto R1 = b1 = 1 4 : 2 = 2 resto R2 = b2 = 0 2 : 2 = 1 resto R3 = b3 = 0 1 : 2 = 0 resto R4 = b4 = 1 1810 = Cultura tecnologica del progetto Introduzione ai sistemi informatici 61

62 27/03/2017 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 Introduzione ai sistemi informatici 62

63 Conversione esadecimale  binario
27/03/2017 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] = Cultura tecnologica del progetto Introduzione ai sistemi informatici 63

64 Conversione binario  esadecimale
27/03/2017 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] = 35416 N = [11] [0011] [1001]= 33916 Cultura tecnologica del progetto 27/03/2017 Corso Informatica A - Allievi Gestionali - prof. C. Silvano 64 Introduzione ai sistemi informatici 64

65 Codifica binaria su n bit
27/03/2017 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 27/03/2017 Corso Informatica A - Allievi Gestionali - prof. C. Silvano 65 Introduzione ai sistemi informatici 65

66 Codifica binaria su n+1 bit
27/03/2017 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 27/03/2017 Corso Informatica A - Allievi Gestionali - prof. C. Silvano 66 Introduzione ai sistemi informatici 66

67 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 Cultura tecnologica del progetto

68 Segnali audio Esempio: la nota LA
La pressione dell’aria varia in modo sinusoidale con una frequenza di 440Hz Cultura tecnologica del progetto

69 Analisi dei segnali audio
Tutti i suoni possono essere visti come la somma pesata di suoni semplici (sinusoidi) Cultura tecnologica del progetto

70 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

71 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

72 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

73 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 000 Cultura tecnologica del progetto

74 Quantizzazione 2 bit / campione 3 bit / campione
Cultura tecnologica del progetto

75 Quantizzazione 4 bit / campione 8 bit / campione
Cultura tecnologica del progetto

76 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 Cultura tecnologica del progetto

77 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

78 Codifica audio Cultura tecnologica del progetto

79 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

80 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

81 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) Cultura tecnologica del progetto

82 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

83 Effetti della riduzione di risoluzione
Cultura tecnologica del progetto

84 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

85 Immagini b/n: Un esempio
Ogni pixel è rappresentato da un bit Cultura tecnologica del progetto

86 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 Codifica : GREEN 200 Codifica : BLU 200 Codifica : Cultura tecnologica del progetto

87 Effetti della quantizzazione
4 bpp 3 bpp 2 bpp 1 bpp Cultura tecnologica del progetto

88 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

89 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

90 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

91 Fattore di Compressione
Esempio: Fotocamera a 8 Mpixel  c.a di pixel Occupazione immagine non compressa a colori pixel x 3 componenti / pixel x 1 byte / componente = ______________________ 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

92 Esempio: Compressione jpeg
Cultura tecnologica del progetto

93 Immagine originale 8 bpp
bpp  bits / pixel

94 Immagine originale (dettaglio)

95 Compressione JPEG 0.35 bpp Fattore di compressione
8 bpp / 0.35 bpp = 22.8

96 Compressione JPEG 0.35 bpp

97 Compressione JPEG 0.5 bpp Fattore di compressione 8 bpp / 0.5 bpp = 16

98 Compressione JPEG 0.5 bpp (dettaglio)

99 Immagini vettoriali circle polyline …..
Codifica simbolica di elementi grafici es.: 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. circle polyline ….. Cultura tecnologica del progetto

100 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

101 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

102 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

103 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 Cultura tecnologica del progetto

104 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 Cultura tecnologica del progetto

105 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 senza eccessiva perdita di qualità Per mettere un film su DVD abbiamo bisogno di un rapporto di c.a Cultura tecnologica del progetto

106 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

107 Immagine originale 1

108 Immagine originale 2

109 Differenza con pixel di destra

110 Differenza tra originali

111 Differenza a moto compensato

112 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 Cultura tecnologica del progetto

113 Indice Il sistema operativo Rappresentazione dell’informazione
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

114 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

115 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 l’uomo di interpretare numeri binari si usa l’assembler al posto del linguaggio macchina codice operativo operando(i) Cultura tecnologica del progetto

116 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 LOAD 4, R1 LOAD 5, R2 1 istruzioni 2 SUB R1, R2 3 STORE R1, 7 4 50 dati Cultura tecnologica del progetto 5 40

117 programma : processo = ricetta : attività del cucinare
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

118 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

119 Contenuto della memoria
Cultura tecnologica del progetto

120 Le istruzioni del programma
Cultura tecnologica del progetto

121 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

122 L’esempio in linguaggio assembly
READ A READ B READ C READ D LOADA A LOADB B ADD STOREA RIS LOADA C LOADB D LOADB RIS MUL STOREA RIS WRITE RIS HALT INT A INT B INT C INT D INT RIS Cultura tecnologica del progetto

123 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

124 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

125 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

126 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

127 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

128 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

129 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

130 Fase di Caricamento / Esecuzione
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

131 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

132 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, ognuna definita per mezzo di struttura e operazioni Nota: non si tratta di una classificazione netta Cultura tecnologica del progetto

133 Linguaggi Imperativi Caratteristiche: Eseguono 3 tipi di operazioni:
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 Cultura tecnologica del progetto

134 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 Cultura tecnologica del progetto

135 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 Cultura tecnologica del progetto

136 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, … Cultura tecnologica del progetto

137 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

138 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

139 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

140 Sequenza Istruzione 1 Esempio: Leggi un numero da tastiera
Moltiplicalo per 2 Stampalo a video Istruzione 2 Istruzione N Cultura tecnologica del progetto

141 Selezione Istruzione 1 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 2 Istruzione 3 Istruzione 4 Cultura tecnologica del progetto

142 Ripetizione Esempio: Leggi un numero da tastiera Istruzione 1
Decrementalo di 1 Condizione uscita: il numero è uguale a 0? se la condizione è verificata il programma esce dal ciclo, altrimenti lo ripete Istruzione 1 Istruzione 2 Condizione uscita Cultura tecnologica del progetto

143 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


Scaricare ppt "Facoltà del Design – Bovisa"

Presentazioni simili


Annunci Google