concetti introduttivi - laboratorio hochoc.elet.polimi.it/garzotto/pdf/info1-1.pdf · che cos’è...
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