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
yn
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