Sommario • Definizione di informatica • Primi cenni sulla rappresentazione dell’informazione • Il concetto di “algoritmo” • Il concetto di “linguaggio di programmazione” • Cenni sull’architettura di un sistema informatico I nf or mat ica A+B concet t i int r odut t ivi Politecnico di Milano Sede di Cremona Gianpaolo Cugola Dipartimento di Elettronica e Informazione [email protected] http://www.elet.polimi.it/~cugola Informatica A+ B - Cugola Perchè studiare informatica? Informatica: una prima definizione • Perché l’informatica è a livello mondiale uno dei settori industriali maggiori e più in crescita • Perché oltre ad essere una tecnologia primaria” è una tecnologia “abilitante” di altre tecnologie e di altri settori industriali... • ... di quasi tutte le altre tecnologie e gli altri settori industriali • Per capire la società dell’informazione • Informatica: scienza della rappresentazione e dell’elaborazione rigorosa, quindi potenzialmente automatica, dell’informazione • N on solo scienza e tecnologia dei calcolatori, quindi, ma anche e sopratutto il modo in cui l’informazione viene strutturata ed elaborata automaticamente Informatica A+ B - Cugola 2 – differente da quanto accade in altre attività meno formalizzate, come il giornalismo, che pure tratta informazioni 3 Informatica A+ B - Cugola 4 Informatica: una definizione alternativa Informatica: alcune considerazioni • Informatica è lo studio sistematico degli algoritmi che descrivono e trasformano l’informazione: la loro teoria, analisi, progetto, efficienza, realizzazione e applicazione • L’informatica non è direttamente legata al calcolatore • Il calcolatore elettronico è solo uno strumento di calcolo potente e capace di trattare elevati quantitativi di informazione • In quanto tale l’informatica è “sorella” della matematica dalla quale mutua il rigore formale – Definizione della Association for Computing Machinery (ACM), la principale organizzazione che riunisce ricercatori e professionisti informatici Informatica A+ B - Cugola 5 Informatica A+ B - Cugola Ripartiamo dalla definizione Rappresentazione dei numeri • Informatica: scienza della rappresentazione e dell’elaborazione rigorosa, quindi potenzialmente automatica, dell’informazione • Il primo tipo di informazione che si presta ad essere rappresentato è quella numerica • Un numero può essere rappresentato mediante: 6 – aste, palline, fagioli, ... – cifre graco romane – cifre decimali • Rappresentazione mediante aste: – n aste per rappresentare il numero n – Rappresentazione unaria • Rappresentazione mediante cifre decimali: – log 10(n)+1 cifre per rappresentare il numero n • In generale, nel caso di rappresentazione mediante k cifre: – log k(n)+1 cifre per rappresentare il numero n Informatica A+ B - Cugola 7 Informatica A+ B - Cugola 8 Rappresentazione di altri tipi di informazioni Dalla rappresentazione dell’ informazione alla sua elaborazione • E’ sempre possibile (vedremo meglio come in seguito) rappresentare ogni tipo di informazione mediante numeri • Rappresentare l’informazione non basta, occorre elaborarla – Sempre in maniera precisa e quindi “meccanizzabile” – Informazione testuale (caratteri) – Informazione grafica: pixel ma anche grafica vettoriale – Informazione musicale – Multimedia... • Ricominciamo dai numeri: La somma di 45 più 25 può essere calcolata usando un pallottoliere e un semplice algoritmo Informatica A+ B - Cugola 9 Informatica A+ B - Cugola 10 Un esempio di algoritmo Un esempio di algoritmo • Regola generale per la rappresentazione dei numeri con un pallottoliere • Si sposti una pallina da sin. a des. sulla prima fila e contemporaneamente si sposti una pallina da des. a sin. sull’ultima fila • Si ripeta il passo precedente fino all’esaurimento delle palline sulla prima fila • Si sposti una pallina da sin. a des. sulla seconda fila e contemporaneamente si sposti una pallina da des. a sin. sull’ultima fila • Si ripeta il passo precedente fino all’esaurimento delle palline sulla seconda fila • Il numero di palline che si trova sulla sin. sulla terza fila rappresenta il valore cercato – Il numero indicato da ogni fila del pallottoliere è rappresentato da altrettante palline poste sulla sinistra della fila. Le palline non utilizzate sono poste a destra • Ipotesi semplificatrici: – Supponiamo che il primo addendo sia rappresentato dalla prima fila di palline, il secondo dalla seconda fila e il risultato debba essere rappresentato dalla terza fila – Supponiamo anche che il numero di palline sia sempre sufficiente Informatica A+ B - Cugola 11 Informatica A+ B - Cugola 12 Alcune considerazioni Algoritmo: una definizione informale • N el fare il calcolo della somma mediante pallottoliere applichiamo una sequenza di passi elementari ben definita, precisa, eventualmente eseguibile anche da una macchina • Informazioni ed elaborazioni complesse (la somma) sono state scomposte in passi semplici (elementari) aggregati mediante composizione • Questa è l’essenza della progettazione informatica! Informatica A+ B - Cugola 13 Algoritmo: Algoritmo:sequenza sequenzadi di passi, passi, definiti definiti con precisione e chiaramente con precisione e chiaramente comprensibili comprensibili per perl’esecutore, l’esecutore, che che portano portano alla allarealizzazione realizzazione di di un un compito compito Informatica A+ B - Cugola 14 Caratteristiche degli algoritmi: Comprensibilità Esempi di algoritmi • Le istruzioni di montaggio di un modellino • Le istruzioni di istallazione di un software • La procedura per il calcolo del massimo comune divisore di un insieme di numeri interi • Una ricetta di cucina • Uso di un terminale Bancomat • … • In un algoritmo i singoli passi devono essere chiaramente comprensibili per l’esecutore • La comprensibilità dipende dall’esecutore • Un controesempio: Informatica A+ B - Cugola Informatica A+ B - Cugola 15 – Le istruzioni di istallazione di un elettrodomestico in una lingua sconosciuta all’utente 16 Caratteristiche degli algoritmi: Precisione Caratteristiche degli algoritmi: Correttezza • In un algoritmo i singoli passi devono essere indicati con precisione… • … e la sequenza non deve dare adito a fraintendimenti • Un controesempio: • Un algoritmo è corretto se perviene alla soluzione del compito cui è preposto senza difettare di alcun passo fondamentale • Un controesempio: – Se nelle istruzioni di istallazione di un elettrodomestico viene omessa la verifica della tensione è possibile che un utente disattento inserisca la spina senza verificare e causi un cortocircuito – In una ricetta: sale q.b. Informatica A+ B - Cugola 17 Informatica A+ B - Cugola Caratteristiche degli algoritmi: Efficienza Un esempio di algoritmo: uso di un lettore di CD portatile • Un algoritmo è efficiente se perviene alla soluzione del problema nel minor tempo possibile e/ o usando la minima quantità di risorse fisiche • Un controesempio: • • Cosideriamo un lettore portatile di cd musicali con un certo numero di pulsanti di controllo e un display. Vogliamo suonare il brano numero 13 Soluzione iniziale: 1. Se siamo a casa ed è disponibile una presa elettrica inseriamo l’alimentatore nella presa 2. Altrimenti controlliamo che il lettore contenga l’appropriato numero di batterie e che queste siano cariche, in caso contrario inseriamo o sostituiamo le batterie 3. Accendiamo il lettore 4. Inseriamo il cd nel lettore. Il display indica “No disk” 5. Premiamo il pulsante “start”. Il display indica “Disk ok” 6. Premiamo ripetutamente il pulsante “Forward” finchè il display non indica il numero di brano scelto (13) 7. Indossiamo le cuffie – N on è efficiente una ricetta la cui sequenza di istruzioni, una volta realizzata, ci costringa a scaldare di nuovo delle pietanze che avevamo precedentemente cotto – N on è efficiente una ricetta che porti ad uno spreco di ingredienti Informatica A+ B - Cugola 18 19 Informatica A+ B - Cugola 20 Alcune considerazioni Un primo raffinamento • Anche in questo caso abbiamo composto il problema in una serie di passi elementari • Se il CD non viene inserito correttamente la scritta “Disk ok” non appare • Riscriviamo il passo 5 come segue – – – – Inserire il disco Premere i pulsanti Leggere il display Indossare le cuffie – Premiamo il pulsante “start”. Fintanto che il display non indica “N o disk” si ripetono i seguenti passi • L’ordine delle operazioni può dipendere dal risultato delle operazioni stesse (se...allora...altrimenti, esegui...finchè) • La possibilità di decidere quale operazione effettuare in funzione del risultato delle operazioni precedenti è una caratteristica essenziale di ogni algoritmo non banale Informatica A+ B - Cugola 21 • Inseriamo nuovamente il cd nel lettore • Premiamo il pulsante “start” Informatica A+ B - Cugola Alcune considerazioni Altri esempi e lezioni • Se dopo qualche tentativo la scritta “N o disk” permane chiunque di noi rinuncerebbe giungendo alla conclusione che il lettore o il cd non vadano • Lezione • Consideriamo la somma di due numeri con pallottoliere (rappresentazione unaria dei numeri) o con carta e penna (rappresentazione decimale dei numeri) • Gli algoritmi sono molto diversi • Lezione – Gli esseri umani sono ottimi esecutori di algoritmi ma possono anche decidere di abbandonarli (per esempio in condizioni eccezionali) usando il buon senso. I calcolatori non posseggono buon senso e intuizione. Tutte le situazioni anormali vanno descritte se vogliamo che siano considerate Informatica A+ B - Cugola 22 – Gli algoritmi dipendono dalla rappresentazione dei dati scelta 23 Informatica A+ B - Cugola 24 Esercizio Algoritmi e calcolatori • Si scriva un algoritmo per cercare il numero di telefono di una persona noto nome, cognome e indirizzo usando l’elenco telefonico • Suggerimenti: • I calcolatori elettronici sono i più diffusi esecutori automatici di algoritmi • N el caso dei calcolatori elettronici gli algoritmi sono descritti da programmi… • …scritti in un opportuno linguaggio di programmazione • Compito dell’informatico è produrre algoritmi (cioè capire la sequenza di passi che portano alla soluzione di un problema) e codificarli nel linguaggio di programmazione scelto creando programmi (comprensibili al calcolatore) – Usare una scomposizione per passi – Considerare anche il caso in cui la persona non sia in elenco – Provare a descrivere diverse procedure di ricerca Informatica A+ B - Cugola 25 Informatica A+ B - Cugola Linguaggio di programmazione La “Babele” dei linguaggi • Un linguaggio artificiale per scrivere programmi per i computer • Un programma è ciò che il computer esegue • Il linguaggio è preciso e rigoroso • Problemi di comunicazione e compatibilità • Opportunità di specializzazione – Inizialmente si usava direttamente il linguaggio della macchina, cioè l’insieme dei comandi direttamente eseguibili dalla macchina – N ella seconda metà degli anni Cinquanta, il linguaggio si alza di livello usando programmi che traducono i linguaggi di più alto livello nel linguaggio della macchina – Occorre rispettare nei dettagli la sintassi e la semantica • Il computer è meno tollerante agli “errori” di un “umano” Informatica A+ B - Cugola 26 27 Informatica A+ B - Cugola 28 Esempi Il concetto di “livello” del linguaggio • Linguaggio macchina 0100001111 1100111001 0110001111 • Linguaggio assembler LOAD PAGA ADD STRAORD STORE TOT • Linguaggio C TOT= PAGA+ STRAORD; Il programmatore Il livello del linguaggio La macchina hardware Informatica A+ B - Cugola 29 30 Sistema informatico Alcuni linguaggi (di alto livello) • Con il termine “sistema informatico” ci si riferisce a sistemi molto diversi • I primi e tradizionali linguaggi – Fortran, Cobol – Che vanno dal palmtop... – ... ad una rete geografica con milioni di nodi • Linguaggi che non “mimano” l’architettura della macchina • Studiare l’architettura di un siffatto sistema significa individuarne i componenti e le loro relazioni • Il nostro studio procederà identificando i diversi strati che identificano la macchina “sistema informatico” – LISP, Prolog • Linguaggi speciali – Per interrogazione di data base, … • I linguaggi moderni – C, C++, …Java, …. Informatica A+ B - Cugola Informatica A+ B - Cugola 31 Informatica A+ B - Cugola 32 Gli “strati” che compongono un sistema informatico Hardware e software • Hardware (HW) - componenti fisici di sistema Sistema traizionale – è composto da una serie di elementi funzionali, presenti in ogni elaboratore: Unità di elaborazione, memoria centrale, memoria di massa, bus di sistema, unità periferiche Sistema distribuito • Software (SW) - programmi che vengono eseguiti dal sistema Software applicativo Software applicativo Software di base (S.O.) hardware S.O. di rete S.O. hardware – Software di sistema (o di base): dedicato alla gestione dell’elaboratore – Software applicativo: opera al di sopra del SW di base, è dedicato alla realizzazione di specifiche esigenze applicative S.O. hardware rete hardware Informatica A+ B - Cugola 33 Informatica A+ B - Cugola Hardware: elementi funzionali presenti su ogni calcolatore Hardware • • • • • • Unità di elaborazione, o CPU Scheda madre CPU / RAM Hard Disk Interfacce di I/ O Unità esterne: CD, DVD, monitor, …. – Elabora dati, coordina trasferimento dei dati – Esegue i programmi, cioè interpreta ed esegue le loro istruzioni • Memoria centrale (RAM) – Memorizza dati e programmi – Capacità limitata • Volatile • Accesso all’informazione molto rapido Bus di sistema Processore (CPU) Informatica A+ B - Cugola 34 Interfaccia Memoria centrale delle periferiche 35 Informatica A+ B - Cugola 36 Hardware: elementi funzionali presenti su ogni calcolatore Tipologie di calcolatori - 1 • Memoria secondaria o memoria di massa • Esistono diversi tipi di calcolatori – Memorizza grandi quantità di dati e programmi – Persistente – Accesso molto meno rapido della RAM – Handheld computer • Di dimensioni molto limitate • Usualmente privi di memorie di massa • Su PC: hard disk, floppy disk, CD-ROM, DVD – Personal computer • Bus di sistema • Dotati di monitor e tastiera separati dall’unità centrale • Dotati di diversi dispositivi di memoria di massa interni o esterni all’unità centrale – Collega e consente scambio di dati • Unità periferiche (I/ O) per comunicare con l’ambiente esterno – N otebook – Terminali, con tastiera, mouse, video, stampanti .... – Se ambiente esterno non è un utente umano (impianti industriali, robot, strumenti di controllo) • Versione portatile del personal computer • Usualmente dotata di caratteristiche inferiori in termini di potenza di calcolo e memorizzazione • Sensori • Attuatori Informatica A+ B - Cugola 37 Tipologie di calcolatori - 2 38 Reti di calcolatori • Con il termine “rete di calcolatori” intendiamo riferirci a un sistema informativo costituito da due o più calcolatori collegati attraverso un sistema di comunicazione • Una “applicazione distribuita” è una applicazione composta da più elementi cooperanti posti in esecuzione su macchine diverse all’interno di una rete di calcolatori – Workstation • Versione “potente” dei personal computer • Dotate di monitor di dimensioni superiori • Per lo più orientate alle applicazioni grafiche o di CAD • Spesso condivise da più utenti (non necessariamente in contemporanea) – Mainframe • Calcolatori di elevata potenza di calcolo e memorizzazione • Orientati all’elaborazione di dati per l’intera azienda • Condivisibili da più utenti in contemporanea Informatica A+ B - Cugola Informatica A+ B - Cugola – Esempio, il web: il browser si collega ad un server remoto per chiedere una pagina che poi visualizza 39 Informatica A+ B - Cugola 40 Reti locali Reti geografiche Host router Internet provider Informatica A+ B - Cugola 41 Software d’ambiente e applicativo Informatica A+ B - Cugola 42 Software d’ambiente e applicativo • Software d’ambiente (o di base) Utilizzatore – Dedicato alla gestione del computer • Il sistema operativo – Windows 2000, MacOS, Linux SW applicativo SW d’ambiente Office Web Browser Compilatore Editor • L’ambiente di programmazione • I sistemi di gestione delle basi di dati • Il software di comunicazione Giochi Interprete • Software applicativo Sistema Operativo – Fornisce le applicazioni per l’ “utente finale” Hardware Informatica A+ B - Cugola 43 Informatica A+ B - Cugola 44 Il sistema operativo Tipologie di S.O. • • • N egli anni diversi S.O. hanno visto la luce • Il Sistema Operativo (SO) svolge fondamentalmente due compiti: Macchina virtuale L’architettura dei calcolatori, intesa come insieme di istruzioni in linguaggio macchina, organizzazione della memoria, gestione I/ O e struttura del bus, è primitiva e di difficile utilizzo, anche per programmatori esperti. In modo particolare per tutto quello che riguarda la gestione dell’input / output. Il SO nasconde al programmatore tutte le problematiche inerenti alla gestione dei dispositivi fisici presentando all’utente l’equivalente di una macchina virtuale più facile da utilizzare. Gestore delle risorse Il SO gestisce il corretto funzionamento di tutti i componenti schedulando l’accesso alle risorse tra i vari programmi che sono in competizione per averne il controllo: sincronizza e controlla gli accessi alle risorse interne: CPU, RAM, HD, FD ….. Controlla chi sta usando le risorse, gesti sce la sicurezza e la priorità dei processi in coda, schedula le richieste in conflitto. Informatica A+ B - Cugola 45 Esempio di software d’ambiente: il sistema operativo Windows – I primi calcolatori non avevano un vero e proprio S.O. ma solo un sottile strato di sw di base che gestiva l’accesso all’hw • Tipologie di S.O. – Monoutente vs. multiutente – Single tasking vs. multi tasking • Principali S.O. oggi presenti sul mercato: – DOS, Windows XXX, Unix (nei suoi cento dialetti, Linux in primis), MacOS,... Informatica A+ B - Cugola 46 L’ambiente di programmazione • Editor: crea il testo – Wordpad, Word, Emacs, … • Compilatore: traduce nel codice oggetto, rilevando eventuali errori di sintassi • Interprete: esegue direttamente il codice sorgente • Linker: collega pezzi di programma compilati separatamente • Debugger: aiuta ad eliminare errori (“bug”) Informatica A+ B - Cugola 47 Informatica A+ B - Cugola 48 Software applicativo: word processor (Word) Tipologie applicative • • • • Applicazioni numeriche Applicazioni gestionali Applicazioni per l’automazione d’ufficio Applicazioni telematiche – Applicazioni di workgroup • Applicazioni di automazione industriale – CAD, CAM • Applicazioni multimediali e di intrattenimento Informatica A+ B - Cugola 49 Software applicativo: foglio di calcolo (Excel) Informatica A+ B - Cugola Informatica A+ B - Cugola 50 Software applicativo: web browser (Explorer (Explorer)) 51 Informatica A+ B - Cugola 52