FONDAMENTI DI INFORMATICA - DidatticaWEB
Transcript of FONDAMENTI DI INFORMATICA - DidatticaWEB
FONDAMENTI DI INFORMATICA
INTRODUZIONE AL CORSO E PRIME NOZIONI
Prof. Alfredo Accattatis – Slide rielaborate del
Prof. Emiliano Casalicchio
Info
• INGEGNERIA ENERGETICA/MECCANICA
• Stanza: Aula 4
29/02/2016 Fondamenti di Informatica - Alfredo Accattatis 2
Informazioni di base
• Alfredo Accattatis
• 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
Stanza in dettaglio: 19, Edificio D Ing.
Informazione
29/02/2016 Fondamenti di Informatica - Alfredo Accattatis 4
Dove trovare il materiale
Sito ufficiale:
Informazioni, dispense e slide
Dispense in fase BETA
Gradito feedback
http://didatticaweb.uniroma2.it/informazioni/index/insegnamento/164619-
Fondamenti-Di-Informatica
• Amici
• Forum
• Varie…
5 29/02/2016 Fondamenti di Informatica - Alfredo Accattatis
Premessa:
29/02/2016 Fondamenti di Informatica - Alfredo Accattatis 6
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
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
29/02/2016 Fondamenti di Informatica - Alfredo Accattatis 7
Nota: le slide non sostituiscono le dispense ed il libro di testo!
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 8
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 9
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
29/02/2016 Fondamenti di Informatica - Alfredo Accattatis 10
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).
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
29/02/2016 Fondamenti di Informatica - Alfredo Accattatis 11
Il vostro background
• Sapete cosa è lo Spettro di un segnale?
• Teorema del campionamento?
29/02/2016 Fondamenti di Informatica - Alfredo Accattatis 12
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….
29/02/2016 Fondamenti di Informatica - Alfredo Accattatis 13
Il telefonino dunque è un computer. Allora non
usatelo solo per usare APP preconfezionate.
Scrivetevi il software da soli!
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 14
• 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/president-obama-talks-about-teaching-everyone-to-code-this-professor-does-it/
29/02/2016 Fondamenti di Informatica - Alfredo Accattatis 15
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 16
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
29/02/2016 Fondamenti di Informatica - Alfredo Accattatis 18
”Computer science is no more about computers than astronomy is about telescopes.”
E. Dijkstra
29/02/2016 Fondamenti di Informatica - Alfredo Accattatis 19
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
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 22
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
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
24
Definizioni
• “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!
29/02/2016 Fondamenti di Informatica - Alfredo Accattatis 24
25
Esempio. Un problema da risolvere.
• 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
29/02/2016 Fondamenti di Informatica - Alfredo Accattatis 25
26
Rappresentazione + Processo
“La scienza della rappresentazione dell’informazione ed
elaborazione automatica”
- Ora dovrebbe essere più chiaro
- Rimane da definire cosa intendiamo per ”automatico”
- Più tardi!
29/02/2016 Fondamenti di Informatica - Alfredo Accattatis 26
27
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
• 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
A B
29/02/2016 Fondamenti di Informatica - Alfredo Accattatis 27
29/02/2016 Fondamenti di Informatica - Alfredo Accattatis 28
Sono solo numeri!
Il mondo esterno è
RAPPRESENTATO tramite numeri,
memorizzati all’interno del
calcolatore
29
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)
• 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…
A B
Nuova procedura (“nuovo algoritmo”) 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
…
29/02/2016 Fondamenti di Informatica - Alfredo Accattatis 29
30
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
…
Siamo interessati a procedure generali
- Procedure “parametriche”
Questa procedura vale per ogni porta e scatola?
A B
29/02/2016 Fondamenti di Informatica - Alfredo Accattatis 30
31
Procedure “automatiche”
- 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
- …
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 procedura
+
Cosa vuol dire “automatico” ?
“La scienza della rappresentazione dell’informazione ed elaborazione
automatica”
29/02/2016 Fondamenti di Informatica - Alfredo Accattatis 31
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
32
Un formalismo per scrivere “algoritmi” (recipes)
START
Inizia il processo di calcolo
END
L’algoritmo termina
Ingresso / Uscita
Un passo dell’algoritmo
condition
Selezione su condizione
true false
algoritmo “collaterale”
X :
‘contenitore’ con nome
X expr
Mette il valore nel “contenitore”
29/02/2016 Fondamenti di Informatica - Alfredo Accattatis 32
33
Un esempio di “algoritmo” Start
true scrivi: “soluzione banale
o non calcolabile”
End
r resto
of x/y
read m and n
x m y n
x ≠ 0 AND y ≠ 0 false
false r = 0
x y
“provate” questo algoritmo con differenti coppie di numeri non negativi
Riuscite ad ottenere la risposta?
Che cosa significa?
Cosa è necessario sapere per processare questo algoritmo?
y r
scrivi: “la risposta è:” y
End
true
29/02/2016 Fondamenti di Informatica - Alfredo Accattatis 33
Sommario
• Informazioni sul corso
• Definizione di Informatica
• Problem solving
• Algoritmi
34 29/02/2016 Fondamenti di Informatica - Alfredo Accattatis