Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
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
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.