Università di Roma “Tor Vergata” L1 - 1 Fondamenti di Informatica 1 obiettivo: introduzione a dell’informatica conoscenze di base informatica come metodologia di risoluzione di problemi con l’ausilio di una “macchina” definire un metodo istruire una risolutivo macchina ____________________________________ Docenti: Vincenzo Grassi Antonino Sabetta mio orario ricevimento: Martedì ore 15 - 16 Venerdì ore 15 - 16 stanza 3121 3° piano edificio Ingegneria dell’Informazione (trasferimento in corso ....) e-mail: [email protected] Fondamenti di Informatica 1 V. Grassi Università di Roma “Tor Vergata” L1 - 2 • materiale didattico: 1) C. Horstmann: Fondamenti di C++ MacGraw-Hill 2) V. Grassi - Note per il corso di Fondamenti di Informatica 1 (a.a. 2005/2006) - dispensa disponibile sul sito del corso • modalità d’esame (provvisorie, da precisare in seguito): una prova scritta di metà corso una prova scritta finale … Fondamenti di Informatica 1 V. Grassi Università di Roma “Tor Vergata” L1 - 3 • supporti “on line” 1) sito del corso: http://www.uniroma2.it/didattica/ (accedere alla pagina: Fondamenti di Informatica 1 n.o. – V. Grassi) oppure, direttamente: http://www.uniroma2.it/didattica/foi1_no per programma del corso, esercizi, materiale didattico integrativo, comunicazioni, date e risultato esami, … 2) sito del libro (edizione italiana) http://www.ateneonline.it/horstmann/ per supporti alla programmazione C++, risposte ad esercizi del libro, ... 3) sito del libro (edizione inglese) http://horstmann.com/ccc.html utile in particolare il seguente “link” (istruzioni per l’installazione di un ambiente C++): http://horstmann.com/ccc/help/ccc3help.html Fondamenti di Informatica 1 V. Grassi Università di Roma “Tor Vergata” L1 - 4 • ambiente “base” di programmazione: a) sotto Microsoft Windows: compilatore g++ in ambiente Cygwin per installare Cygwyn seguire le istruzioni nel file: http://horstmann.com/ccc/help/ccc3help.html b) sotto Linux: compilatore g++ • estensione grafica per installarla, scaricare il file Codice.zip dal sito: http://www.ateneonline.it/horstmann/ (“area studenti”) e poi seguire le istruzioni riportate in: http://horstmann.com/ccc/help/ccc3help.html • CD contenente il materiale descritto sopra (in distribuzione in aula) Fondamenti di Informatica 1 V. Grassi Università di Roma “Tor Vergata” L1 - 5 applicazioni informatiche: • animazione • elaborazione di suoni • reti di ipertesti (WWW) • calcolo scientifico (sintesi molecolare, fluidodinamica, …) •… cosa c’è dietro? rappresentare informazione capacità di manipolare rappresentazioni Fondamenti di Informatica 1 V. Grassi Università di Roma “Tor Vergata” L1 - 6 soluzione di un problema = RAPPRESENTAZIONE + ALGORITMO ? rappresentazione( ) = [alt, largh, prof] rappresentazione( ) = [p_alt, p_largh] algoritmo: (alt < p_alt) e (largh < p_largh)? si fi OK no fl (alt < p_largh) e (largh < p_alt)? si fi OK no fl … (quanti tentativi ancora?) Fondamenti di Informatica 1 V. Grassi Università di Roma “Tor Vergata” L1 - 7 rappresentazione: uso di strumenti formali per rappresentare in modo simbolico un “frammento” di realtà algoritmo: sequenza finita di operazioni elementari che manipolano simboli per costruire una soluzione del problema nota: finito può anche essere molto grande fl macchine per eseguire algoritmi informatica = punto di confluenza di: • metodi di soluzione (Euclide ~300 a.C., …, al-Kuwarizmi ~1000 d.C., …Hilbert ~1800 d.C., Gödel, Turing, ~1900 d.C., …) • macchine per manipolare simboli secondo regole date (abaco ?a.C., …, macchina di Babbage ~1800 d.C., … ENIAC ~1940 d.C., …) Fondamenti di Informatica 1 V. Grassi Università di Roma “Tor Vergata” L1 - 8 le macchine sono “stupide” fl manipolazione “sintattica”, siamo noi a dare un significato ai simboli Esempio: determinare z = MCD(n,m) n,mŒN def D(n) = insieme dei divisori di n D(n) = { k | n = k·q, kŒN+, qŒN } N+=N - {0} z = MCD(m,n) = max{D(m)«D(n)} m,n Fondamenti di Informatica 1 MCD z V. Grassi Università di Roma “Tor Vergata” L1 - 9 algoritmo: 1. prendi due numeri n e m 2. scrivi m in una casella di nome x scrivi n in una casella di nome y 3. se x=0 oppure y=0 allora: termina rispondendo: « problema banale o irrisolvibile » altrimenti: calcola il resto r di x diviso y se r=0 allora: termina rispondendo « il risultato è il valore scritto in y » altrimenti: sovrascrivi in x il valore scritto in y, sovrascrivi in y il valore di r 4. ritorna ad eseguire 3 Fondamenti di Informatica 1 V. Grassi Università di Roma “Tor Vergata” L1 - 10 quali “abilità” (capacità di eseguire operazioni) sono necessarie per eseguire l’algoritmo? a) leggere e scrivere numeri b) eseguire operazioni aritmetiche c) seguire un flusso di operazioni utilizzando tre regole base: i. sequenza ii. scelta iii. iterazione “chiunque” sappia fare a , b e c può eseguire l’algoritmo, anche se ignora cosa è MCD (l’algoritmo dato è noto come algoritmo di Euclide per il calcolo di MCD) Fondamenti di Informatica 1 V. Grassi Università di Roma “Tor Vergata” L1 - 11 le macchine reali (calcolatori) sanno fare solo operazioni di tipo a, b e c come fanno macchine così “primitive” ad eseguire applicazioni complesse? tutto è rappresentabile tramite numeri (“digitalizzazione”) Fondamenti di Informatica 1 V. Grassi Università di Roma “Tor Vergata” L1 - 12 Esempio 1: elaborazione testi testo fl sequenza di caratteri fl sequenza di numeri si usa una tabella analoga a questa: a´1 b´2 c´3 d´4 e´5 A ´ 27 B ´ 28 C ´ 29 D ´ 30 E ´ 31 • • • • • • z ´ 26 Z ´ 52 . ´ 53 : ´ 54 ; ´ 55 , ´ 56 (spazio) ´ 57 • • • … Ada cade ¤ 27 4 1 57 3 1 4 5 Fondamenti di Informatica 1 V. Grassi Università di Roma “Tor Vergata” L1 - 13 Esempio 2: elaborazione suoni onda sonora fl “discretizzazione” fl sequenza di numeri 1 2 3 4 5 • • • • • • • • • • fl 4 5 4 4 4 2 2 5 3 4 Fondamenti di Informatica 1 V. Grassi Università di Roma “Tor Vergata” L1 - 14 Esempio 3: elaborazione immagini immagine fl “discretizzazione” fl sequenza di triple di numeri 1 2 3 1 2 3 codifica: casella bianca Æ 0 casella non bianca Æ 1 decodifica: Fondamenti di Informatica 1 0 Æ casella bianca 1 Æ casella grigia V. Grassi Università di Roma “Tor Vergata” L1 - 15 1 2 3 1 2 3 codifica (1,1,1)(1,2,0)(1,3,0)(2,1,1)(2,2,1)(2,2,0)(3,1,1)(3,2,1)(3,3,1) decodifica approssimazione della rappresentazione Fondamenti di Informatica 1 V. Grassi Università di Roma “Tor Vergata” L1 - 16 come si comunica con una macchina che rappresenta tutto tramite numeri? si usa un linguaggio fatto di numeri !!! • linguaggio macchina: 161 40000 45 100 127 11280 problemi: • difficile (per essere umani) da scrivere, leggere, correggere • legato ad una particolare macchina Fondamenti di Informatica 1 V. Grassi Università di Roma “Tor Vergata” L1 - 17 • linguaggio “assembler” (linguaggio macchina reso leggibile) : mov 40000, %eax sub 100, %eax jg 11280 • più facile da leggere (per essere umani) • deve essere tradotto in linguaggio macchina per essere eseguito • ancora legato ad una particolare macchina • linguaggi di alto livello (C++, Pascal, Java..): C++: if (int_rate > 100) message_box("Interest rate error"); Pascal: if int_rate > 100 then message_box("Interest rate error"); • istruzioni “vicine” al linguaggio umano • indipendenti da una particolare macchina (fanno riferimento a una “macchina astratta”) fl necessità di tradurre nel linguaggio macchina (compilatore) Fondamenti di Informatica 1 V. Grassi