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