concetti introduttivi - laboratorio hochoc.elet.polimi.it/garzotto/pdf/info1-1.pdf · che cos’è...

23
1 Concetti introduttivi -Panoramica storica e definizioni -Algoritmi, programmi, linguaggi -Struttura di massima di un computer e di un sistema informatico -I lucidi derivano da quelli del prof. Carlo Ghezzi e prof. Paraboschi 2 Che cos’è l’informatica? Definizione 1 scienza della rappresentazione e dellelaborazione dellinformazione non solo la tecnologia dei calcolatori, ma anche il modo in cui linformazione viene strutturata ed elaborata automaticamente – differente da quanto accade in altre attività meno formalizzate, come il giornalismo, che pure tratta informazioni

Upload: vuongdien

Post on 15-Feb-2019

222 views

Category:

Documents


0 download

TRANSCRIPT

1

1

Concetti introduttivi

-Panoramica storica e definizioni-Algoritmi, programmi, linguaggi-Struttura di massima di un computer e di un sistema informatico

-I lucidi derivano da quelli del prof. Carlo Ghezzi e prof. Paraboschi

2

Che cos’è l’informatica?Definizione 1

• scienza della rappresentazione e dell’elaborazione dell’informazione

• non solo la tecnologia dei calcolatori, ma anche il modo in cui l’informazione viene strutturata ed elaborata automaticamente– differente da quanto accade in altre attività

meno formalizzate, come il giornalismo, che pure tratta informazioni

2

3

Che cos’è l’informatica?Definizione 2

• studio sistematico degli algoritmi che descrivono e trasformano l’informazione: la loro teoria, analisi, progetto, efficienza, realizzazione e applicazione– Definizione della Association for Computing

Machinery (ACM), la principale organizzazione che riunisce ricercatori e professionisti informatici

4

Algoritmo--definizione informale--

• Una sequenza precisa di operazioni, comprensibili da un esecutore (uno strumento automatico), che definisce una sequenza di passi che portano alla realizzazione di un compito

3

5

Osservazioni– Mette in luce gli aspetti progettuali e

realizzativi che caratterizzano l’attività di un informatico

– Si può svolgere attività informatica senza usare un computer (p. es. progettare applicare regole precise per svolgere operazioni aritmetiche usando solo carta e matita) • Il calcolatore elettronico è soltanto uno

strumento di calcolo potente: la sua potenza ètale da permettere la gestione di quantità di informazioni altrimenti intrattabili

6

Esempi

• Istruzioni di montaggio di un elettrodomestico

• Uso di un terminale Bancomat• Calcolo del massimo comune divisore di

diversi numeri naturali – È essenziale che un algoritmo sia

comprensibile al suo esecutore

4

7

Algoritmi, computer, programmi

• Algoritmi descritti tramite programmi, cioè sequenze di istruzioni scritte in un linguaggio comprensibile al calcolatore

• Compito dell’informatico è produrre algoritmi (cioè capire la sequenza di passi che portano alla soluzione di un problema) e codificarli in programmi (cioè renderli comprensibili al calcolatore)

8

Il problema e la soluzione• Prima di affrontare la soluzione occorre

capire esattamente il problema• Non serve saper risolvere il problema

sbagliato• In questo corso supporremo che il problema sia

ben noto e chiaramente formulato e ci concentreremo sul formulare una soluzione

• Spesso in pratica e` piu` difficile capire esattamente la natura del problema che non trovarne una soluzione!

– Requirements analysis in Ingegneria del Software

5

9

Proprietà degli algoritmi

• Correttezza– L’algoritmo perviene alla soluzione del

compito cui è preposto, senza difettare di alcun passo fondamentale

• Efficienza– L’algoritmo perviene alla soluzione del

problema nel modo più veloce possibile e/o usando la minima quantità di risorse fisiche

10

Esempio: gestione biblioteca• Libri disposti sugli scaffali• Ogni libro si trova in una precisa e invariabile

posizione con due coordinate: scaffale e posizione nello scaffale

• La biblioteca è dotata di uno schedario (ordinato per autore/i e titolo) – Ogni scheda contiene, nell’ordine:

• cognome e nome dell’autore• titolo del libro• data di pubblicazione• numero dello scaffale in cui si trova• numero d’ordine della posizione attribuita al libro nello

scaffale.

6

11

Esempio di scheda

Autore/i: Atzeni, Paolo Ceri, StefanoParaboschi, StefanoTorlone, Riccardo

Titolo: Database Systems,McGraw-Hill, 1999

Scaffale: 35Posizione: 21

12

Un algoritmo per il prelievo

1. Cerca la scheda del libro richiesto2. Segnati numero scaffale e posizione3. Cerca scaffale indicato4. Accedi alla posizione indicata e preleva

il libro 5. Scrivi richiedente su scheda prestito

7

13

Il “sotto-algoritmo”1. Prendi la prima scheda.2. Esamina se titolo e autore/i sono quelli

cercati. Se si la ricerca termina con successo, altrimenti passa alla scheda successiva e ripeti.

3. Se esaurisci le schede il libro cercato non esiste.

Che succede se l’autore cercato è “Zombie Zuzzurellone”?

14

Un “sotto-algoritmo” migliore

1. Esamina la scheda centrale dello schedario.2. Se la scheda centrale corrisponde al libro

cercato termina.3. Se no, prosegui allo stesso modo nella metà

superiore o inferiore dello schedario a seconda che il libro cercato segua o preceda quello indicato sulla scheda.L’algoritmo è incompleto: esiste altra condizione di terminazione quando il libro non esiste

8

15

Revisione del passo 2

• Se la scheda centrale corrisponde al libro cercato oppure se la parte di schedario da consultare è vuota, termina.

Libro trovato Libro inesistente

16

Linguaggio di programmazione

• Un linguaggio artificiale per scrivere programmi per i computer

• Un programma è ciò che il computer esegue• Il linguaggio è preciso e rigoroso

– Occorre rispettare nei dettagli la sintassi e la semantica

• Il computer e` meno tollerante agli “errori” di un “umano”

9

17

La “Babele” dei linguaggi– 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 Nella seconda metà degli anni Cinquanta, il linguaggio si alza di livello usando programmi che traducono (programmi scritti ne) i linguaggi di piùalto livello nel linguaggio della macchina

18

Il concetto di “livello” del linguaggio

La macchina hardware

Il programmatore

Il livello del linguaggio

10

19

Esempi

• Linguaggio macchina

• Linguaggio assembler

• Linguaggio C/C++

010000111111001110010110001111

LOAD PAGAADD STRAORDSTORE TOT

TOT=PAGA+STRAORD;

20

Alcuni linguaggi (di alto livello)

• I primi e tradizionali linguaggi– Fortran, Cobol

• Linguaggi che non “mimano” l’architettura della macchina– LISP

• Linguaggi speciali– Per interrogazione di data base, …

• I linguaggi moderni– C, C++, … Java, ….

11

21

Sistema informatico

Dal personal computer alle reti dicomputers

• HARDWARE: i componenti fisici del sistema

• SOFTWARE: i programmi eseguiti dal sistema

22

Hardwareelementi funzionali presenti su ogni

computer• unità di elaborazione, o CPU

• elabora dati, coordina trasferimento dei dati • esegue i programmi, cioè interpreta ed esegue

le loro istruzioni

• memoria centrale (RAM RandomAccess Memory)

• memorizza dati e programmi • capacità limitata

– volatile– accesso all’informazione molto rapido

12

23

• memoria secondaria o memoria di massa– memorizza grandi quantità di dati e programmi– persistente– accesso molto meno rapido della RAM

• Su PC: hard disk, floppy disk, CD-ROM, DVD

• bus di sistema, collega e consente scambio di dati

• unità periferiche (I/O) per comunicare con l’ambiente esterno– terminali, con tastiera, mouse, video,

stampanti ....– se ambiente esterno non è un utente umano

(impianti industriali, robot, strumenti di controllo)• sensori• attuatori

24

Livelli di sistemi

per livelli crescenti di complessità, prestazioni e prezzo

• personal computer• workstation (stazioni di lavoro)• mainframe

13

25

Reti di computer e reti di reti

• La rete locale

• Reti locali interconnesse da una rete geografica– Internet, la rete delle reti

PC PCPCPC

Disk Server Stampante Laser

26

Software• Software di base

– Dedicato alla gestione del computer• Il sistema operativo

– Windows 2000, MacOS, Linux• L’ambiente di programmazione• I sistemi di gestione delle basi di dati• Il software di comunicazione

• Software applicativo– Fornisce le applicazioni per l’ “utente

finale”

14

27

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”)

28

Software di produttività personale

• A metà strada tra software di base ed applicativo

• Fornisce funzionalità personali anche a chi non sa programmare– Word processor– Agenda elettronica– Foglio elettronico– Data base– Browser

15

29

Architettura di un computer

La macchina di von Neumann

bus di sistema

CPU Mem.RAM Perif. Perif.

Periferiche: memoria di massa, terminali (video, tastiera), stampanti, …)

30

Il ciclo “preleva-esegui”• La memoria RAM contiene le istruzioni• Ciclicamente:

Estrai la prossima istruzioneDecodificala ed eseguila

• Istruzioni– di elaborazione– di trasferimento

• Funzionamento scandito dall’orologio di sistema (“clock”)

16

31

Istruzioni

• Codificate in forma binaria– Bit– Byte (8 bit)

– Quante differenti sequenze con k bit?

codiceoperativo

operando(i)

32

La memoria centrale

• Contiene le istruzioni e i dati su cui la CPU può operare

• Rispetto alla memoria di massa, è memoria a breve-medio periodo ed è volatile

17

33

La memoria centrale

Celle - hanno indirizzo- contengono parole

34

Indirizzamento

• Esiste un “registro” (registro indirizzi—AR)) della CPU che può indirizzare la memoria

• Registro di k bit può indirizzare 2k celle– Con 10 bit indirizzo 1024 celle (1 “kilo-parole”)– Con 20, 1 048 576 parole (1 “mega” parole)– Con 30 (giga), 40 (tera), 50 (peta)

18

35

RAM e ROM• RAM : Random Access Memory

– Le celle sono indirizzabili in un ordine qualunque

– Il tempo di accesso non dipende dalla cella– È volatile

• ROM: Read Only memory– Contiene programmi protetti

• Il BIOS (Basic Input Output System) che carica in memoria il sistema operativo quando la macchina viene accesa

36

ROM

• Esistono diversi tipi (“Erasable”, “Programmable”, EPROM)

• I programmi (vedi BIOS) sono predefiniti dal costruttore– Costituiscono una via intermedia tra

hardware e software

FIRMWARE

19

37

registroindirizzi(AR)

registrodati(DR)

h =16 bit

cella selezionata

k = 10 bit h = 16 bit

RAM

38

Bus• Bus dati• Bus indirizzi• Bus controlli

– Esempio: lettura da memoria• CPU carica indirizzo in AR e lo invia a RAM via bus

indirizzi; invia comando di lettura via bus controlli• RAM invia dato letto in DR via bus dati e segnala a CPU

operazione avvenuta via bus controlli

– Esempio: scrittura in memoria• CPU carica indirizzo in AR e lo invia a RAM via bus

indirizzi; invia comando di scrittura via bus controlli• RAM acquisisce dato da DR via bus dati e segnala a CPU

operazione avvenuta via bus controlli.

20

39

CPU

40

Interfacce di I/O

• consentono collegamento tra elaboratore e periferiche

• interfaccia contiene registri per – inviare comandi alla periferica– scambiare dati– controllare il funzionamento della periferica

21

41

Il ciclo “preleva-esegui”1. Preleva istruzione2. Esegui istruzione prelevata

1. Contenuto di PC AR2. Lettura da memoria centrale DR3. Trasferimento da DR CIR4. Incremento di PC

5. Esecuzione di DR

42

Esecuzione dei programmiEsempio: calcolare espressione (a + b) * (c + d)1. poni in memoria centrale, nelle celle 16, 17,

18 e 19 io valori di a, b, c, e d;2. esegui l’addizione di a e b:

1. copia cella 16 in registro A;2. copia cella 17 in registro B;3. somma i due registri (l’operazione è eseguita dalla

ALU);3. immagazzina risultato (ora in registro A) nella

cella 20;

22

43

4. esegui l’addizione di c e d:1. copia cella 18 in registro A;2. copia cella 19 in registro B;3. somma i registri (operazione è eseguita dalla ALU);

5. esegui la moltiplicazione di (a + b) e (c + d):1. copia in registro B cella 20;2. moltiplica il contenuto dei due registri;

6. scrivi il risultato sul dispositivo di uscita:1. memorizza registro A, nella cella 20;2. scrivi cella 20 nel registro dati della periferica

7. Arresta l’esecuzione del programma

44

Il programma in linguaggio macchina

23

45

Il programma in linguaggio assemblerREAD AREAD BREAD CREAD DLOADA A LOADB BADDSTORE RISLOADA CLOADB DADD...

...LOADB RISMULSTORE RISWRITE RISHALT

INT AINT BINT CINT DINT RIS

46

Il frammento in C++

int a, b, c, d, ris;cin>>a>>b>>c>>d;ris = (a+b)*(c+d);cout<<"ecco il risultato”<<ris;