Problemi informatici e Struttura di un Elaboratore

Fondamenti di Informatica
Prof. Stefano Leonardi
URL:
www.dis.uniroma1.it/~leon/didattica/meccanica/
1
Informazioni generali
 Stefano Leonardi
 Tel.: 06 49918341
 Email:
[email protected]
 Ricevimento:
Roma: venerdì, ore 1113, Dip. Informatica e
Sistemistica, via Salaria
113 II piano, 00198
Roma
 Tutore: Ing. Tanya
Buhnik
 Testo adottato:
 Stephen J. Chapman, Fortran
90/95: guida alla
programmazione, McGraw-Hill,
2000
 M. Cadoli, Dispensa per il
Corso di Laurea in Ingegneria
Aereospaziale, A.A. 20002001, In distribuzione presso
la libreria ``L'Universitaria'',
Viale Ippocrate 99, Roma.
 Copie delle Trasperenze del
Corso disponibili sul sito Web
del Corso
2
Elaborazione automatica
dell’informazione
 Risoluzione di problemi che richiedono la
manipolazione dell’informazione attraverso
l’ausilio di uno strumento di calcolo
automatico
 Occorre:
Definire un metodo di risoluzione di un
problema informatico
 Rappresentare il metodo di risoluzione in un
linguaggio comprensibile al calcolatore
 Rappresentare l’informazione in modo adeguato
alla sua memorizzazione e manipolazione

3
Esempio: Ricerca in un’agenda
 In un’agenda personale si opera una ricerca
sequenziale nella pagona corrispondente
alla lettera iniziale del cognome
 In un elenco telefonico si procede a partire
da un punto approssimativamente vicino alla
lettera iniziale, quando la pagina e’ stata
individuata si procede con una ricerca
sequenziale
 Il metodo risolutivo è quindi legato al modo
in cui l’informazione è rappresentata
4
Algoritmi e Linguaggi di
Programmazione
 Algoritmo: Metodo risolutivo formalizzato
in un insieme di passi bene definiti che
permetto di risolvere il problema
 Linguaggio di programmazione: permette di
descrive l’algoritmo in un Programma
comprensibile alla macchina
 Rappresentazione delle informazioni
attraverso tipi di dato rappresentabile in
un linguaggio di programmazione
5
Problemi Informatici
1.
2.
3.
4.
5.
Dati due numeri trovare il maggiore
Dato un elenco di nomi e numeri di telefono,
trovare il nimero di telefono di un apersona
Data una rete stradale, determinare il cammino di
lunghezza minima per raggiungere una
determinata destinazione
Determinare se un programma si ferma in un
numero finito di passi su un determinato insieme
di input
Decidere, per ogni valore x e per ogni funzione
f(x), se f(x) è costante
6
Problemi Informatici, cont.
 Trasformazione di un insieme di valore in ingresso





in un insieme di valori in uscita
La descrizione del problema non fornisce il metodo
di soluzione
La descrizione del problema può essere ambigua,
ex 3.
Il problema non ha alcun metodo risolutivo noto.
Il problema non può essere risolto attraverso un
calcolatore, funzioni non calcolabili, ex 4, 5.
La quantità di risorse necessari per risolvere il
problema è proibitiva.
7
Algoritmi e Programmi
 Algoritmo descrive il metodo risolutivo. Proprietà:
 non ambiguità
 eseguibilità in un tempo finito
 finitezza dell’esecuzione del processo su ogni possibile
input
 Ogni passo dell’algoritmo deve essere non ambiguo,
ex, ricerca in un elenco telefonico non è un
algoritmo
 Programma: sequenza di istruzioni comprensibili
alla macchina direttamente o attraverso l’ausilio di
altri programmi
 Determinare il metodo risolutivo può essere molto
complesso.
8
Ex: MCD(m,n). Algoritmo 1
1.
2.
3.
4.
5.
Calcola l’insieme I dei divisori di m.
Calcola l’insieme J dei divisori di n.
Calcola l’insieme dei divisori comuni k=I
Calcola il numero massimo di k
MCD(m,n) è il numero trovato
J
Procedere per astrazioni fino ad esprimere
l’algoritmo in fasi traducibili in istruzioni
elementari nel linguaggio di programmazione
Ex: Specifica la ricerca del massimo,
l’intersezione tra due insiemi, etc...
9
Ex: MCD(m,n). Algoritmo 2
Algoritmo di Euclide
1. m o n se m=n
MCD(m,n) = 2. MCD(m-n,n) se m>n
3. MCD(n-m,m) se n>m
Finchè m<>n svolgi le seguenti azioni:
Se m>n allora sostituisci a m il valore m-n
altrimenti sostituisci a n, n-m
MCD(m,n) è uno dei due numeri
10
I grafi di flusso
 Notazione grafica per descrivere istruzioni
e l’ordine di esecuzione tra esse
 Le informazioni oggetto del calcolo sono
riferite attraverso nomi di variabile o di
costante
 Assumiamo per il momento i problemi
trattare solo di numeri interi
 Nel calcolo delle espressioni, ai nomi
vengono sostituiti i rispettivi valori.
11
Esercizi
 Esprimere l’algoritmo di Euclide attraverso
la notazione dei grafi di flusso
 Esprimere l’algoritmo di ricerca del
massimo di un insieme di 100 valori in input
attraverso la notazione dei grafi di flusso
12
Struttura di un elaboratore
 Insieme di risorse tra loro coordinate per
eseguire il processo di calcolo
 Organi di Input (Tastiera, Mouse, etc.)
 Organi di Output ( Schermo, Stampante)
 Memoria: Contiene le istruzioni dei
programmi, i dati di ingresso, i risultati
parziali del calcolo
 Memoria si distingue tra Memoria Centrale
e Memorie Perifieriche
13
Memoria centrale
 Dati sono rappresentati in formato binario. Ogni





numero e’ una sequenza di due soli valori: 0,1.
Informazione elementare prende il nome di bit.
Una sequenza di 8 bits è detta byte.
Ad ogni cella di memoria è associato un indirizzo, il
numero di ordine della cella dell’intera memoria
La Memoria centrale (RAM, Random Access
Memory) ha un tempo di accesso molto basso,
nanosecondi
La sua dimensione è tipicamnete di alcuni Gbytes Il
contenuto viene perso quando il computer è
disconnesso
14
Memoria di Massa
 Dischi magnetici, CD-ROM
 Possono essere visti come dispositivi di
output
 Mantengono l’informazione memorizzata in
modo permanente
 Capacità di memorizzazione praticamente
illimitata
 Minore velocità della memoria centrale,
millisecondi
15
Processore
 Processore suddiviso in:
 Unità aritmetico-logica che esegue i calcoli logici ed
aritmetici
 Unità di controllo che sovrintende all’esecuzione delle
istruzioni ed alla gestione delle risorse coinvolte
nell’esecuzione, e.g. I/O.
 Le istruzioni a livello macchina sono
estrememamente semplici e fanno direttamente
riferimento alla posizione dei dati e delle istruzioni
in memoria
 E’ quindi necessario avere Linguaggi di alto livello
16
Processore cont.
 Puo’ accedere solo alle informazioni in
memoria centrale
 Scambia dati con le unità di ingresso ed
uscita
 Le istruzioni vengono prelevate dalla
memoria centrale, decodificate, e viene
predisposta la sua esecuzione
 Occorre stabilire ad ogni istante la
prossima istruzione da eseguire, e.g. flusso
di controllo del programma
17
Processore cont.
 L’Unità Centrale contiene diversi registri:
Contatore di Programma: indica la prossima
istruzione da eseguire
 Registro Istruzione: indica l’istruzione da
interpretare e poi da eseguire
 Accumulatori: contengono gli operandi di una
data istruzione
 Parola di stato: indica informazioni rispetto
l’ultima istruzione esguita, ex: resto 0, segno,
etc.

18
Fasi della vita di un programma
 Compilatori:
permettono di verificare la correttezza
sintattica di un programma in un linguaggio ad
alto livello
 Realizzano la traduzione in linguaggio macchina
 Il programma tradotto viene quindi eseguito

 Interpreti:
 eseguono il programma al momento della sua
traduzione
19