FONDAMENTI DI INFORMATICA - DidatticaWEB

33
FONDAMENTI DI INFORMATICA INTRODUZIONE AL CORSO E PRIME NOZIONI Prof. Alfredo Accattatis Slide rielaborate del Prof. Emiliano Casalicchio

Transcript of FONDAMENTI DI INFORMATICA - DidatticaWEB

Page 1: FONDAMENTI DI INFORMATICA - DidatticaWEB

FONDAMENTI DI INFORMATICA

INTRODUZIONE AL CORSO E PRIME NOZIONI

Prof. Alfredo Accattatis – Slide rielaborate del

Prof. Emiliano Casalicchio

Page 2: FONDAMENTI DI INFORMATICA - DidatticaWEB

Info

• INGEGNERIA ENERGETICA/MECCANICA

• Stanza: Aula 4

29/02/2016 Fondamenti di Informatica - Alfredo Accattatis 2

Page 3: FONDAMENTI DI INFORMATICA - DidatticaWEB

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

Page 4: FONDAMENTI DI INFORMATICA - DidatticaWEB

Stanza in dettaglio: 19, Edificio D Ing.

Informazione

29/02/2016 Fondamenti di Informatica - Alfredo Accattatis 4

Page 5: FONDAMENTI DI INFORMATICA - DidatticaWEB

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

Page 6: FONDAMENTI DI INFORMATICA - DidatticaWEB

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

Page 7: FONDAMENTI DI INFORMATICA - DidatticaWEB

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!

Page 8: FONDAMENTI DI INFORMATICA - DidatticaWEB

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

Page 9: FONDAMENTI DI INFORMATICA - DidatticaWEB

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

Page 10: FONDAMENTI DI INFORMATICA - DidatticaWEB

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).

Page 11: FONDAMENTI DI INFORMATICA - DidatticaWEB

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

Page 12: FONDAMENTI DI INFORMATICA - DidatticaWEB

Il vostro background

• Sapete cosa è lo Spettro di un segnale?

• Teorema del campionamento?

29/02/2016 Fondamenti di Informatica - Alfredo Accattatis 12

Page 13: FONDAMENTI DI INFORMATICA - DidatticaWEB

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!

Page 14: FONDAMENTI DI INFORMATICA - DidatticaWEB

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

Page 15: FONDAMENTI DI INFORMATICA - DidatticaWEB

• 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

Page 16: FONDAMENTI DI INFORMATICA - DidatticaWEB

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

Page 17: FONDAMENTI DI INFORMATICA - DidatticaWEB

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

Page 18: FONDAMENTI DI INFORMATICA - DidatticaWEB

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

Page 19: FONDAMENTI DI INFORMATICA - DidatticaWEB

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.

Page 20: FONDAMENTI DI INFORMATICA - DidatticaWEB

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

Page 21: FONDAMENTI DI INFORMATICA - DidatticaWEB

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

Page 22: FONDAMENTI DI INFORMATICA - DidatticaWEB

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

Page 23: FONDAMENTI DI INFORMATICA - DidatticaWEB

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

Page 24: FONDAMENTI DI INFORMATICA - DidatticaWEB

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

Page 25: FONDAMENTI DI INFORMATICA - DidatticaWEB

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

Page 26: FONDAMENTI DI INFORMATICA - DidatticaWEB

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

Page 27: FONDAMENTI DI INFORMATICA - DidatticaWEB

29/02/2016 Fondamenti di Informatica - Alfredo Accattatis 28

Sono solo numeri!

Il mondo esterno è

RAPPRESENTATO tramite numeri,

memorizzati all’interno del

calcolatore

Page 28: FONDAMENTI DI INFORMATICA - DidatticaWEB

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

Page 29: FONDAMENTI DI INFORMATICA - DidatticaWEB

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

Page 30: FONDAMENTI DI INFORMATICA - DidatticaWEB

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

Page 31: FONDAMENTI DI INFORMATICA - DidatticaWEB

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

Page 32: FONDAMENTI DI INFORMATICA - DidatticaWEB

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

Page 33: FONDAMENTI DI INFORMATICA - DidatticaWEB

Sommario

• Informazioni sul corso

• Definizione di Informatica

• Problem solving

• Algoritmi

34 29/02/2016 Fondamenti di Informatica - Alfredo Accattatis