Parte 1 Fondamenti di Programmazione Fondamenti di Informatica Prof.ssa Elisa Tiezzi Dove mi trovate • Ricevimento: Lunedì dalle 11 alle 12,30 • • • • Martedì dalle 11 alle 12,30 o su appuntamento Studio: Piano 2 Stanza 231 Dipartimento di Ingegneria dell'Informazione e Scienze Matematiche- Via Roma, 56" (+39) 0577 234850 - Int. 1156 Cel.3356592114 E-mail: [email protected] Programma Introduzione all’informatica • • • • • • • • • Cos’è l’informatica Introduzione al concetto di algoritmo Struttura dell’elaboratore Introduzione al concetto di programma Esecuzione delle istruzioni L’organizzazione dell’unità centrale di elaborazione (CPU) La memoria centrale La memoria secondaria Dispositivi di input/output Linguaggi di programmazione Introduzione ai linguaggi di programmazione Elementi del Linguaggio Java Ambiente di lavoro Struttura di un programma Tipi di dati fondamentali Istruzioni di input/output Costrutto decisionale if-then-else I cicli con contatore for Cicli condizionali while Dati strutturati: stringhe e vettori Cicli for annidiati Classi e oggetti Implementazioni di algoritmi Introduzione alla Complessità Complessità di problemi Analisi del caso medio e caso pessimo Valutazione della complessità: relazioni di ricorrenza Progetto e analisi di alcuni algoritmi di Ordinamento Ricorsività Divide et impera Mergesort Quicksort Sistemi operativi Windows Materiale di studio • Gocce di Java “Un’introduzione alla programmazione procedurale ed orientata agli oggetti” Pierluigi Crescenzi Ed. Franco Angeli • http://javamm.sourceforge.net • I lucidi e altro materiale utile lo trovate in rete all’indirizzo: http://www.diism.unisi.it Corso di studio/matematica/Fondamenti di Programmazione INFORMATICA Dal vocabolario scientifico…. INFORMATICA = insieme degli strumenti teorici e pratici che hanno lo scopo di elaborare l’informazione. Il termine corrisponde al francese INFORMATIQUE (contrazione di INFORMATION AUTOMATIQUE). In realtà l’informatica si occupa non solo dell’elaborazione dei dati ma anche della scienza e dell’ingegneria dei calcolatori. Gli anglosassoni usano il termine COMPUTER SCIENCE per sottolineare questa seconda accezione. L’informatica ha quindi due significati: • Insiste sull’oggetto = PROCEDURA EFFETTIVA O ALGORITMO • Insiste sullo strumento = CALCOLATORE ELETTRONICO Cosa è quindi l’informatica? Piu` facile dire cosa non è: • Poco a vedere con “alfabetizzazione informatica” (saper usare un computer per scrivere un testo o navigare in Internet) • Non consiste semplicemente nello scrivere programmi Denning et al (1989) • L’informatica `e lo studio sistematico dei processi algoritmici che descrivono e trasformano l’informazione: la loro teoria, analisi, progettazione, efficienza, implementazione e applicazione Metodo algoritmico • Formulare algoritmi che risolvano un problema • Trasformare questi algoritmi in programmi • Verificare la correttezza e l’efficacia di tali programmi • analizzandoli ed eseguendoli 8 ALGORITMO Le radici dell’algoritmica sono antiche. Anche se il suo assetto teorico definitivo è stato raggiunto nella prima metà di questo secolo e le tecniche di progetto ed analisi di algoritmi hanno segnato progressi enormi con la recente diffusione di calcolatori elettronici, i primi esempi di algoritmi risalgono alle origini della storia dell’uomo e sono registrati in documenti di matematica antica. La parola ALGORITMO fu creata nel latino medievale per assonanza con il nome del matematico persiano Al-Khuwarizmi. Informalmente la parola algoritmo indica la specificazione dei passi elementari che un esecutore deve compiere per giungere alla soluzione di un problema. ALGORITMO = complesso di istruzioni…. • precisamente determinato in maniera da non consentire situazioni di dubbio • universalmente comprensibile nel senso che chiunque possa applicarle • abbastanza generali da potersi applicare ad ogni problema di una data classe • tali che applicate ai dati forniscano criteri per determinare quando la soluzione è raggiunta e questo avvenga in un numero finito di passi Alcuni algoritmi I più antichi algoritmi non banali conosciuti oggi furono registrati dallo scriba egizio Ahmes (1650 a.c.) Algoritmo moltiplicazione (dati A E B risultato P) -poni P=0 assegnazione -finché A≠0 ripeti la sequenza iterazione se A è dispari allora addiziona B a P esecuzione dimezza A trascurando il resto condizionata raddoppia B P 0 3 9 21 A 7 3 1 0 B 3 6 12 24 P 0 0 0 12 36 A 12 6 3 1 0 B 3 6 12 24 48