Università di Roma Tor Vergata L1-1 obiettivo: introduzione a conoscenze di base dell informatica 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: vgrassi@info.uniroma2.it
Università di Roma Tor Vergata L1-2 materiale didattico: 1) C. Horstmann: Fondamenti di C++ - MacGraw-Hill 2) - 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
Università di Roma Tor Vergata L1-3 supporti on line 1) sito del corso: http://www.uniroma2.it/didattica/ (accedere alla pagina: n.o. ) 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
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)
Università di Roma Tor Vergata L1-5 applicazioni informatiche: animazione elaborazione di suoni reti di ipertesti (WWW) calcolo scientifico (sintesi molecolare, uidodinamica, ) cosa c è dietro? rappresentare informazione capacità di manipolare rappresentazioni
Università di Roma Tor Vergata L1-6 soluzione di un problema = RAPPRESENTAZIONE + ALGORITMO? rappresentazione( rappresentazione( ) = [alt, largh, prof] ) = [p_alt, p_largh] algoritmo: (alt < p_alt) e (largh < p_largh)? si fi OK no (alt < p_largh) e (largh < p_alt)? si fi OK no (quanti tentativi ancora?)
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 macchine per eseguire algoritmi informatica = punto di conuenza 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., )
Università di Roma Tor Vergata L1-8 le macchine sono stupide manipolazione sintattica, siamo noi a dare un significato ai simboli Esempio: determinare z = MCD(n,m) n,mœn D(n) def = 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 MCD z
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
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 usso 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)
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 )
Università di Roma Tor Vergata L1-12 Esempio 1: elaborazione testi testo sequenza di caratteri sequenza di numeri si usa una tabella analoga a questa: a 1 A 27. 53 b 2 B 28 : 54 c 3 C 29 ; 55 d 4 D 30, 56 e 5 E 31 (spazio) 57 z 26 Z 52 Ada cade 27 4 1 57 3 1 4 5
Università di Roma Tor Vergata L1-13 Esempio 2: elaborazione suoni onda sonora discretizzazione sequenza di numeri 1 2 3 4 5 4 5 4 4 4 2 2 5 3 4
Università di Roma Tor Vergata L1-14 Esempio 3: elaborazione immagini immagine discretizzazione sequenza di triple di numeri 1 2 3 1 2 3 codifica: casella bianca Æ 0 casella non bianca Æ 1 decodifica: 0 Æ casella bianca 1 Æ casella grigia
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
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
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 ) necessità di tradurre nel linguaggio macchina (compilatore)