Corso di Fondamenti di Informatica
Obiettivi:
• studio delle strutture dati fondamentali
• studio degli strumenti e metodi per lo sviluppo di programmi di tipo
tecnico-scientifico su piccola/media scala
Approccio progettuale
C. De Stefano
Corso di Fondamenti di Informatica
Università degli Studi
di Cassino
Programma:
• Nozioni di carattere introduttivo
• Tipi e strutture di dati
• Strumenti e metodi per la progettazione di programmi
• Linguaggi di programmazione (Fortran 90)
• Algoritmi fondamentali
Strumenti di esercitazione e verifica:
• esercitazioni guidate
• realizzazione di programmi su calcolatore
C. De Stefano
Corso di Fondamenti di Informatica
Università degli Studi
di Cassino
Sussidi per il corso
Libri consigliati:
Stephen J. Chapman
Fortran 90/95 - guida alla programmazione
McGraw-Hill Italia
Ceri, Mandrioli, Sbattella
Informatica arte e mestiere
McGraw-Hill Italia
Dispense e appunti
C. De Stefano
Corso di Fondamenti di Informatica
Università degli Studi
di Cassino
Organizzazione del corso:
7 ore settimanali
• 4 ore di teoria
• 2/3 ore di esercitazione guidata
Termine del corso: 23 marzo
Esami:
• 4 sedute nel mese di aprile
• prova pratica al calcolatore + prova orale
Per contattare il docente
Tel. 0776/299605
E-mail: [email protected]
C. De Stefano
Corso di Fondamenti di Informatica
Università degli Studi
di Cassino
Come limitare le sofferenze, superare felicemente l’esame ed
imparare a scrivere programmi:
1) SEGUIRE IL CORSO
2) SEGUIRE IL CORSO
3) FREQUENTARE LE ESERCITAZIONI
4) PROVARE DA SOLI I PROGRAMMI
5) SEGNALARE PER TEMPO PROBLEMI ED INCOMPRENSIONI
6)
C. De Stefano
Corso di Fondamenti di Informatica
Università degli Studi
di Cassino
INFORMATICA: scienza dell’astrazione
creare il giusto modello per un problema e individuare le
tecniche appropriate per risolverlo in modo automatico
Obiettivo:
sostituire una situazione del mondo reale complessa e
particolareggiata con un modello comprensibile e privo di
dettagli inessenziali, all’interno del quale si possa risolvere il
problema.
C. De Stefano
Corso di Fondamenti di Informatica
Università degli Studi
di Cassino
Esempio
Si debba dividere una lastra di marmo di Carrara, rettangolare e di dimensioni
AxB in tanti quadrati uguali avente il lato della maggiore lunghezza possibile e
senza generare sfrido.
Verificare se ciò è possibile, date le dimensioni, e, in caso positivo, fornire la
lunghezza del lato del quadrato.
Quali sono gli aspetti importanti del problema ?
lato A
lato B
Quali sono i dati a disposizione ?
Quali sono i dati richiesti ?
Come si può riscrivere il problema ?
taglio
possibile
C. De Stefano
Corso di Fondamenti di Informatica
lato
quadrato
Università degli Studi
di Cassino
Come si può riscrivere il problema:
Dati due numeri interi A e B, calcolare il Massimo Comune Divisore e
verificare se è uguale a 1.
Come eseguire il calcolo ?
E’ necessario un procedimento sistematico, costituito da un insieme finito di
operazioni, ognuna delle quali sia precisa (non ambigua) ed eseguibile, da
applicare ai dati in ingresso perché possa fornire dei dati in uscita.
E’ necessario un
C. De Stefano
Corso di Fondamenti di Informatica
algoritmo
Università degli Studi
di Cassino
Algoritmo di Euclide (ca. 300 a.C.)
Considera due
numeri X e Y,
con X > Y
Sostituisci X con Y
Sostituisci Y con R
Dividi X per Y e
ottieni il resto R
no
R=0?
Diagramma di flusso
si
Termina.
Il MCD è Y
C. De Stefano
Corso di Fondamenti di Informatica
Università degli Studi
di Cassino
Esempio
MCD di 1365 e 3654
X
3654
1365
924
441
42
C. De Stefano
Y
1365
924
441
42
21
R
924
441
42
21
0
MCD
21
MCD di 8351 e 772
X
8351
772
631
Y
772
631
141
R
631
141
67
141
67
7
4
3
67
7
4
3
1
7
4
3
1
0
Corso di Fondamenti di Informatica
MCD
1
Università degli Studi
di Cassino
Alcune considerazioni
• L’algoritmo è del tutto generale, ma, in qualsiasi caso specifico, il
procedimento avrà termine e fornirà una risposta precisa in un numero
finito di passi.
• A ogni passo, è perfettamente chiaro quale operazione si debba
compiere e anche la decisione circa il momento in cui il procedimento si
debba ritenere concluso è perfettamente definita.
• La descrizione dell’intero procedimento è presentata in termini finiti,
anche se può essere applicata a numeri naturali di dimensioni illimitate.
• Il procedimento descritto assume che sia noto come eseguire particolari
operazioni quali il calcolo del resto della divisione intera tra due numeri
naturali. E se così non fosse ?
Sarebbe necessario un algoritmo
C. De Stefano
Corso di Fondamenti di Informatica
Università degli Studi
di Cassino
Calcolo del resto della divisione intera tra due
numeri naturali M ed N
Considera due
numeri M e N
M
67
47
27
7
N resto
20
20
20
20
7
Sostituisci M con
M-N
no
M<N?
si
N resto
772
772
772
772
772
772
772
772
772
772
772 631
Esercizio:
Termina.
Il resto è M
C. De Stefano
M
8351
7579
6807
6035
5263
4491
3719
2947
2175
1403
631
Come si modifica l’algoritmo per
ottenere anche il quoziente ?
Corso di Fondamenti di Informatica
Università degli Studi
di Cassino
Mettiamo tutto insieme
Acquisisci il
valore di A e di B
Calcola il MCD di
A e di B e scrivilo
in C
Dividi X per Y e
ottieni il resto R
Sostituisci X con Y
Sostituisci Y con R
no
R=0?
si
si
C=1?
Termina.
Comunica che il
taglio non è possibile
C. De Stefano
Considera due
numeri M e N
Considera due
numeri X e Y,
con X > Y
no
Sostituisci M
con M-N
no
M<N?
si
Termina.
Il resto è M
Termina.
Il MCD è Y
Termina.
Comunica che il taglio è
possibile e che il lato del
quadrato ha lunghezza C
Sono possibili (o necessarie)
ulteriori “esplosioni” ?
Corso di Fondamenti di Informatica
Università degli Studi
di Cassino
Chi esegue le operazioni ?
Una volta definito, l’algoritmo deve essere sottoposto ad un esecutore.
L’esecutore deve essere in grado di:
• interpretare correttamente la sequenza di comandi
• eseguire ognuno dei comandi forniti
• memorizzare informazioni su opportuni supporti che permettano di
accedere alle informazioni memorizzate e modificarle
Nota:
l’esecutore non è necessariamente consapevole di quello che sta facendo.
C. De Stefano
Corso di Fondamenti di Informatica
Università degli Studi
di Cassino
Un esecutore umano
controllo
•lista di istruzioni
•dati
•risultati temporanei
•risultati finali
esecuzione
Scambio dati
con l’esterno
C. De Stefano
1
2
3
+
4
5
6
-
7
8
9
x
0
.
C
/
Corso di Fondamenti di Informatica
L’esecutore svolge
funzioni di:
• controllo
• esecuzione
Università degli Studi
di Cassino
Un esecutore non umano
Unità di controllo
Unità logicoaritmetica
istruzioni
dati
Unità di
memoria
Unità di
ingresso/uscita
Differenze tra i due tipi di esecutori:
• rappresentazione delle istruzioni
• rappresentazioni dei dati
C. De Stefano
Corso di Fondamenti di Informatica
Università degli Studi
di Cassino