FONDAMENTI DI INFORMATICA INTRODUZIONE AL CORSO E PRIME NOZIONI Prof. Alfredo Accattatis – Slide rielaborate del Prof. Emiliano Casalicchio 29/02/2016 Fondamenti di Informatica - Alfredo Accattatis Info • INGEGNERIA ENERGETICA/MECCANICA • Stanza: Aula 4 2 29/02/2016 Fondamenti di Informatica - Alfredo Accattatis Informazioni di base • Alfredo Accattatis • [email protected] • Ricevimento studenti • Quando: lunedi 16:00-18:00 • Dove: stanza 19 (Piano primo), Edificio “Ingegneria dell’Informazione” TUTOR: ing. Venturino Taggi 3 29/02/2016 Fondamenti di Informatica - Alfredo Accattatis 4 Stanza in dettaglio: 19, Edificio D Ing. Informazione 29/02/2016 Fondamenti di Informatica - Alfredo Accattatis 5 Dove trovare il materiale Sito ufficiale: Informazioni, dispense e slide Dispense in fase BETA Gradito feedback http://didatticaweb.uniroma2.it/informazioni/index/insegnamento/164619Fondamenti-Di-Informatica • Amici • Forum • Varie… 29/02/2016 Fondamenti di Informatica - Alfredo Accattatis 6 Premessa: Il corso di fondamenti di Informatica è per voi strumentale, ossia l’informatica è solo un mezzo e non (anche) un fine. Lo scopo del corso è dunque quello di fornire gli strumenti teorici di base e principalmente la capacità di scrivere dei programmi con un linguaggio di programmazione 29/02/2016 Fondamenti di Informatica - Alfredo Accattatis 7 Libro di testo e dispense • Libro di testo • Matlab: A Practical Introduction to Programming and Problem Solving, 3rd ed. Stormy Attaway (author), Elsevier Science Ed. • Tool di programmazione: • Matlab - http://www.mathworks.com • Octave - http://www.gnu.org/software/octave/ • Materiale ulteriore • Slide e dispense Nota: le slide non sostituiscono le dispense ed il libro di testo! 29/02/2016 Fondamenti di Informatica - Alfredo Accattatis 8 Perchè Matlab/Octave • Matlab è più di un semplice linguaggio. Esso è un “framework”, ossia un insieme di programmi associati ad un linguaggio di programmazione che permette di “manipolare dati” (esempio numeri e stringhe) ed in generale di implementare algoritmi “automatici” • Matlab è un linguaggio ad “alto livello” • Permette di tradurre in pratica i concetti teorici appresi durante le lezioni di fondamenti di Informatica 29/02/2016 Fondamenti di Informatica - Alfredo Accattatis 9 OCTAVE • Octave con GUI (versione 3.8.1 e seguenti): 1. Sotto Linux, la versione 3.8 si trova sia su Fedora 21 che su Ubuntu 14.10. 2. Per windows si puo' installare da http://mxeoctave.osuv.de/ 29/02/2016 Fondamenti di Informatica - Alfredo Accattatis 10 Esami L’esame sarà composto da: • Esame scritto (risposte aperte e/o quiz) su tutti gli argomenti affrontati nel corso • Esame pratico in laboratorio, che consiste nella scrittura di uno o più semplici programmi per verificare l’acquisizione di abilità programmative Il corso mira fornire la capacità di utilizzare il Computer in maniera evoluta, ossia non solo come semplice strumento sul quale eseguire programmi “preconfezionati” (App) ma a scriverne di personalizzati in funzione del problema da risolvere (problem solving). 29/02/2016 Fondamenti di Informatica - Alfredo Accattatis Il vostro background • Possedete un Computer (PC/laptop/ipad o simili)? • Che uso ne fate? Per quale scopo? • Quali sono le applicazioni maggiormente usate? • Conoscete ed avete mai usato: • Microsoft Excel (o simili) • Microsoft Access (o “database management systems”) • Linguaggi di programmazione • Sapete cos’è un algoritmo? • Sapete come lavora un computer? • Architettura • Sistema operativo 11 29/02/2016 Fondamenti di Informatica - Alfredo Accattatis Il vostro background • Sapete cosa è lo Spettro di un segnale? • Teorema del campionamento? 12 29/02/2016 Fondamenti di Informatica - Alfredo Accattatis 13 Perché programmare? • Perché sviluppare questa capacità ? • Apprendere l’arte di risolvere un problema tramite un computer è utile in generale nella vita • Alla stessa stregua, ed a maggior ragione, sarà utile nella vostra vita professionale • Quali computer abbiamo a disposizione? • PC, Tablet, Smartphone…. Il telefonino dunque è un computer. Allora non usatelo solo per usare APP preconfezionate. Scrivetevi il software da soli! 29/02/2016 Fondamenti di Informatica - Alfredo Accattatis 14 Opinioni autorevoli • Non è solo la mia opinione ma: • Obama (US Gov.) ha detto: “Don’t Just Play on Your Phone, Program It” 29/02/2016 Fondamenti di Informatica - Alfredo Accattatis 15 • Iniziativa a cura del governo americano: “Computer Science Education Week”, una campagna annuale che sottolinea l’importanza per tutti di imparare l’Informatica. A maggior ragione per un Ingegnere! • Alcuni filmati significativi: • (Obama) https://www.youtube.com/watch?v=yE6IfCrqg3s • (Famous Leaders) https://www.youtube.com/watch?v=nKIu9yen5nc • (Astronauts) https://www.youtube.com/watch?v=WE2s3647awE • Princeton University COS 126 • http://www.washingtonpost.com/blogs/the-switch/wp/2013/12/11/presidentobama-talks-about-teaching-everyone-to-code-this-professor-does-it/ 29/02/2016 Fondamenti di Informatica - Alfredo Accattatis 16 L’informatica va oltre • Ha influenzato materie apparentemente assai distanti • Psicologia • L’approccio cognitivista, cognitivo-comportamentale ed HIP (Human Information Processing) • Sono basati su una modellizzazione del comportamento umano basato sugli stessi paradigmi dell’Informatica e dei Computer, in particolare il modello di von Neumann • HIP: la mente opera attivamente sull’informazione proveniente dagli organi sensoriali, trasformata dal soggetto in base ai suoi scopi, aspettative ed esperienze passate (dunque memorizzate) 29/02/2016 Fondamenti di Informatica - Alfredo Accattatis 18 Definizione di Informatica (Computer Science) • Le definizioni sono varie…ma simili….prendiamone una autorevole Treccani: • Scienza che studia l’elaborazione delle informazioni e le sue applicazioni; più precisamente l’Informatica si occupa della rappresentazione, dell’organizzazione e del trattamento automatico della informazione ”Computer science is no more about computers than astronomy is about telescopes.” E. Dijkstra 18 29/02/2016 Fondamenti di Informatica - Alfredo Accattatis Rappresentazione dell’Informazione l’informatica ha a che fare con le “informazioni” ossia quelle entità che ci consentono di effettuare lo “scambio di conoscenza” tra esseri umani. La rappresentazione ha a che fare i merito al “come” questa informazione viene memorizzata negli elaboratori. Come fare dunque a rendere comprensibile e memorizzabile al calcolatore il concetto astratto di informazione? La risposta è che dobbiamo rappresentare essa per tramite di simboli tradotti in una grandezza fisica disponibile nel mondo (elettronico) del calcolatore. Ossia effettuare quella che viene definita “codifica” dell’informazione La scelta per i calcolatori è la rappresentazione tramite numeri in BASE DUE 19 29/02/2016 Fondamenti di Informatica - Alfredo Accattatis 20 In particolare per i calcolatori la base scelta e due, dunque i numeri sono rappresentati come sequenze di zeri e uno (BIT). Perché questa scelta? Perché ad esempio non usare la base 10, a noi più familiare? Per motivi di pratica e tecnologica realizzabilità: distinguere tra due valori di una grandezza fisica (per esempio due livelli di tensione elettrica) è più semplice. 29/02/2016 Fondamenti di Informatica - Alfredo Accattatis 21 Come è possibile far interagire il computer con il mondo reale? Come è possibile far si che le variabili (grandezze) del mondo reale siano trasferite nel mondo dell’elaboratore? Provate a pensare: - Musica - Immagini - Filmati - Voce - Eccetera (es. temperatura, mappature…) Sono sempre e solo sequenze di NUMERI da memorizzare ed elaborare 29/02/2016 Fondamenti di Informatica - Alfredo Accattatis La risposta è: Teorema del campionamento! (Shannon Nyquist) Lo tratteremo in maggior dettaglio. Tramite esso è possibile tradurre qualsiasi grandezza «del mondo esterno» in un formato comprensibile al mondo degli elaboratori (numeri codificati in binario) E’ fondamentale ed ha reso l’Informatica uno strumento universale 22 29/02/2016 Fondamenti di Informatica - Alfredo Accattatis 23 Problem solving L’arte di risolvere i problemi con il computer Diamo una definizione generale di algoritmo e rappresentazione 29/02/2016 Definizioni Fondamenti di Informatica - Alfredo Accattatis 24 • “La scienza della rappresentazione dell’informazione ed elaborazione automatica” • Cos’è l’informazione? • Perché siamo interessati alla rappresentazione delle informazioni e la loro elaborazione automatica? Siamo interessati a “risolvere problemi” - Più precisamente, alla risoluzione sistematica dei problemi - L’Informatica si occupa di questo! 24 29/02/2016 Fondamenti di Informatica - Alfredo Accattatis Esempio. Un problema da risolvere. • 25 Cosa ci serve per risolvere il problema “astrattamente” ? • • Una rappresentazione delle entità coinvolte Una procedura da seguire (basata sulla rappresentazione adottata) Rappresentazione - Un modo di esprimere le informazoni rilevanti per risolvere il problema Procedura - Un processo a step (passi) da seguire per ottenere la soluzione - In parole povere una “ricetta” ossia un algoritmo 25 29/02/2016 Fondamenti di Informatica - Alfredo Accattatis Rappresentazione + Processo 26 “La scienza della rappresentazione dell’informazione ed elaborazione automatica” - Ora dovrebbe essere più chiaro - Rimane da definire cosa intendiamo per ”automatico” - Più tardi! 26 29/02/2016 27 Fondamenti di Informatica - Alfredo Accattatis La scatola e la porta • Rappresentazione della scatola • face A: heigth(A), width(A) • e.g.: height(A) = 220 cm, width(A) = 70 cm • face B: heigth(B), width(B) • e.g.: height(B) = 220 cm, width(B) = 110 cm • A B face C: heigth(C), width(C) • e.g.: height(C) = 70 cm, width(C) = 110 cm Rappresentazione della porta heigth(door), width(door) • • e.g.: height(door) = 210 cm, width(door) = 80 cm 27 29/02/2016 Fondamenti di Informatica - Alfredo Accattatis Sono solo numeri! Il mondo esterno è RAPPRESENTATO tramite numeri, memorizzati all’interno del calcolatore 28 29/02/2016 29 Fondamenti di Informatica - Alfredo Accattatis La scatola e la porta • procedura (“algoritmo”) • check: height(A)<heigth(door)) AND width(A)<width(door) • if true, OK ; else, check face B • check: height(B)<heigth(door)) AND width(B)<width(door) A • if true, OK ; else, check face C • check: height(C)<heigth(door)) AND width(C)<width(door) • if true, OK ; else FAILURE OK ? suggerimento: provate con I numeri forniti nella slide precedente… B Nuova procedura (“nuovo algoritmo”) check: height(A)<heigth(door)) AND width(A)<width(door) check: width(A)<heigth(door)) AND heigth(A)<width(door) if true, OK ; else, “rotate” face A if true, OK ; else, check face B … 29 29/02/2016 30 Fondamenti di Informatica - Alfredo Accattatis Procedura “generale” check: height(A)<heigth(door)) AND width(A)<width(door) if true, OK ; else, “rotate” face A check: width(A)<heigth(door)) AND heigth(A)<width(door) if true, OK ; else, check face B … Questa procedura vale per ogni porta e scatola? Siamo interessati a procedure generali A B - Procedure “parametriche” 30 29/02/2016 Fondamenti di Informatica - Alfredo Accattatis Procedure “automatiche” box representation - face A: heigth(A), width(A) - face B: heigth(B), width(B) - face C: heigth(C), width(C) door representation - heigth(door), width(door) + rappresentazione 31 - check: height(A)<heigth(door)) AND width(A)<width(door) - if true, OK ; else, “rotate” face A - check: width(A)<heigth(door)) AND heigth(A)<width(door) n if true, OK ; else, check face B -… procedura “La scienza della rappresentazione dell’informazione ed elaborazione automatica” Cosa vuol dire “automatico” ? Di macchina, meccanismo o dispositivo che, regolato opportunamente, è capace di compiere determinate operazioni o lavorazioni, per lo più ripetute in serie, senza il diretto intervento dell’uomo 31 29/02/2016 Fondamenti di Informatica - Alfredo Accattatis 32 Un formalismo per scrivere “algoritmi” (recipes) X: ‘contenitore’ con nome START END X expr Mette il valore nel “contenitore” Inizia il processo di calcolo true Un passo dell’algoritmo condition Selezione su condizione L’algoritmo termina Ingresso / Uscita false algoritmo “collaterale” 32 29/02/2016 Fondamenti di Informatica - Alfredo Accattatis Un esempio di “algoritmo” 33 Start read m and n “provate” questo algoritmo con differenti coppie di numeri non negativi x m yn true x ≠ 0 AND y ≠ 0 Riuscite ad ottenere la risposta? Che cosa significa? false Cosa è necessario sapere per processare questo algoritmo? scrivi: “soluzione banale o non calcolabile” r resto of x/y false x y y r r=0 End true scrivi: “la risposta è:” y End 33 29/02/2016 Fondamenti di Informatica - Alfredo Accattatis Sommario • Informazioni sul corso • Definizione di Informatica • Problem solving • Algoritmi 34