19
1 Fondamenti di Informatica Prof. Stefano Leonardi URL: www.dis.uniroma1.it/~leon/didattica/mecc anica/

1 Fondamenti di Informatica Prof. Stefano Leonardi URL: leon/didattica/meccanica

Embed Size (px)

Citation preview

Page 1: 1 Fondamenti di Informatica Prof. Stefano Leonardi URL: leon/didattica/meccanica

1

Fondamenti di Informatica

Prof. Stefano LeonardiURL:

www.dis.uniroma1.it/~leon/didattica/meccanica/

Page 2: 1 Fondamenti di Informatica Prof. Stefano Leonardi URL: leon/didattica/meccanica

2

Informazioni generali

Stefano Leonardi Tel.: 06 49918341 Email:

[email protected]

Ricevimento:Roma: venerdì, ore 11-13, 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. 2000-2001, In distribuzione presso la libreria ``L'Universitaria'', Viale Ippocrate 99, Roma.

Copie delle Trasperenze del Corso disponibili sul sito Web del Corso

Page 3: 1 Fondamenti di Informatica Prof. Stefano Leonardi URL: leon/didattica/meccanica

3

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

Page 4: 1 Fondamenti di Informatica Prof. Stefano Leonardi URL: leon/didattica/meccanica

4

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

Page 5: 1 Fondamenti di Informatica Prof. Stefano Leonardi URL: leon/didattica/meccanica

5

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

Page 6: 1 Fondamenti di Informatica Prof. Stefano Leonardi URL: leon/didattica/meccanica

6

Problemi Informatici

1. Dati due numeri trovare il maggiore2. Dato un elenco di nomi e numeri di telefono,

trovare il nimero di telefono di un apersona3. Data una rete stradale, determinare il

cammino di lunghezza minima per raggiungere una determinata destinazione

4. Determinare se un programma si ferma in un numero finito di passi su un determinato insieme di input

5. Decidere, per ogni valore x e per ogni funzione f(x), se f(x) è costante

Page 7: 1 Fondamenti di Informatica Prof. Stefano Leonardi URL: leon/didattica/meccanica

7

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.

Page 8: 1 Fondamenti di Informatica Prof. Stefano Leonardi URL: leon/didattica/meccanica

8

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.

Page 9: 1 Fondamenti di Informatica Prof. Stefano Leonardi URL: leon/didattica/meccanica

9

Ex: MCD(m,n). Algoritmo 1

1. Calcola l’insieme I dei divisori di m.2. Calcola l’insieme J dei divisori di n.3. Calcola l’insieme dei divisori comuni k=I J4. Calcola il numero massimo di k5. MCD(m,n) è il numero trovato

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...

Page 10: 1 Fondamenti di Informatica Prof. Stefano Leonardi URL: leon/didattica/meccanica

10

Ex: MCD(m,n). Algoritmo 2

Algoritmo di Euclide1. m o n se m=n

MCD(m,n) = 2. MCD(m-n,n) se m>n3. 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-mMCD(m,n) è uno dei due numeri

Page 11: 1 Fondamenti di Informatica Prof. Stefano Leonardi URL: leon/didattica/meccanica

11

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.

Page 12: 1 Fondamenti di Informatica Prof. Stefano Leonardi URL: leon/didattica/meccanica

12

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

Page 13: 1 Fondamenti di Informatica Prof. Stefano Leonardi URL: leon/didattica/meccanica

13

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

Page 14: 1 Fondamenti di Informatica Prof. Stefano Leonardi URL: leon/didattica/meccanica

14

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

Page 15: 1 Fondamenti di Informatica Prof. Stefano Leonardi URL: leon/didattica/meccanica

15

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

Page 16: 1 Fondamenti di Informatica Prof. Stefano Leonardi URL: leon/didattica/meccanica

16

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

Page 17: 1 Fondamenti di Informatica Prof. Stefano Leonardi URL: leon/didattica/meccanica

17

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

Page 18: 1 Fondamenti di Informatica Prof. Stefano Leonardi URL: leon/didattica/meccanica

18

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.

Page 19: 1 Fondamenti di Informatica Prof. Stefano Leonardi URL: leon/didattica/meccanica

19

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