INTRODUZIONEAL CORSOE PRIME NOZIONI

Post on 08-Dec-2021

8 views 0 download

Transcript of INTRODUZIONEAL CORSOE PRIME NOZIONI

FONDAMENTI DI INFORMATICA

INTRODUZIONE AL CORSO E PRIME NOZIONI

Prof. Alfredo Accattatis

(accattatis@ing.uniroma2.it)

Info

• INGEGNERIA ENERGETICA/MECCANICA

• Aula 4, tranne in caso di esplicita comunicazione, p. es.

se si decide una lezione aggiuntiva e/o di “recupero”

• Ingegnere Informatico/Elettronico

• Esperienza : accademica, ditte private e pubbliche,

professione

• …Siamo (saremo) colleghi!

• Il corso in aula aggiunge, rispetto al materiale distribuito

(e quando possibile), elementi presi da esperienza “sul

campo” (mondo “reale” degli Ingegneri)

• Possibilità di lezione extra su argomenti correlati al lavoro

Fondamenti di Informatica - Alfredo Accattatis 2

Informazioni di base

• Alfredo Accattatis • accattatis@ing.uniroma2.it

• Ricevimento studenti (teorico!)• Quando: lunedi dopo le 18:00

• Dove: stanza 19 (piano terra), Edificio “Ingegneria dell’Informazione”

• In realtà essendo ESTERNO non ho una stanza personale in ateneo, pertanto i contatti avverranno in via telematica, e solo in casi particolarinell’aula indicata

• Alternativa “scomoda” : Roma EUR, piazza Marconi.

• Le domande andranno principalmente poste al TUTOR in via telematica oppure si fissa un incontro

TUTOR: dott. Marcello Colella

mcolella.uniroma2@outlook.it

3Fondamenti di Informatica - Alfredo Accattatis

Stanza in dettaglio: 19, Edificio D Ing.

Informazione

Fondamenti di Informatica - Alfredo Accattatis 4

Iscrizione al corso

Fondamenti di Informatica - Alfredo Accattatis 5

❑E’ stata abilitata la sezione iscrizione al corso sulla

piattaforma DELPHI (delphi.uniroma2.it)

❑La richiedo per fini statistici e per meglio programmare il

corso: in particolare per comunicazioni, esami, dispense

esercitazioni. Importantissima se dovesse verificarsi

l’eventualità di NON poter essere a lezione. Fornite un

indirizzo VALIDO che LEGGETE altrimenti è inutile

❑Facoltativo e più veloce: se conosceteTELEGRAM

cercate il canale @FOIAA1819, utile per comunicazioni

velocissime ed invio materiali

Dove trovare il materiale

▪ Sito ufficiale:

• Informazioni, slide

• Dispense sostituite dal libro di testo

• Gradito feedback

• http://didatticaweb.uniroma2.it

• Amici

• Forum

• Varie…

6Fondamenti di Informatica - Alfredo Accattatis

Premessa:

Fondamenti di Informatica - Alfredo Accattatis 7

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

Materiale per studiare

• Slide e Libro di testo• Slide rilasciate dopo ogni lezione

• Testo: Fondamenti di Informatica (Accattatis)

• Libreria TEXMAT, Via di Tor Vergata 93/95

• Rinuncia ai diritti di autore

• Tool di programmazione:

• Matlab - http://www.mathworks.com

• Octave - http://www.gnu.org/software/octave/

Fondamenti di Informatica - Alfredo Accattatis 8

Nota: le slide non sostituiscono il libro di testo!

Come studiare….

• Il testo in apparenza molto corposo…

• Il corso è da 6 (sei) crediti

• Soluzione:

Usate le slide come linea guida ed il

testo per «comprendere» le slide…e

quando richiesto fate gli esercizi!!

Fondamenti di Informatica - Alfredo Accattatis 9

Perché Matlab/Octave

• Matlab è più di un semplice linguaggio. Esso è un

“pacchetto”, ossia un insieme di programmi associati ad

un linguaggio di programmazione che permette di

implementare algoritmi “automatici”(come ogni linguaggio)

ma permette di andare molto oltre (esempio: simulazione

di sistemi, compilazione, grafica, etc.)

• Matlab è un linguaggio ad “alto livello”

• Permette di tradurre in pratica i concetti teorici appresi

durante le lezioni di Fondamenti di Informatica.

• Questo NON è un corso di MATLAB puro

Fondamenti di Informatica - Alfredo Accattatis 10

OCTAVE

• Octave con GUI (versione 3.8.1 e seguenti, attuale 4.2.2):

1. Sotto Linux, la versione 3.8 si trova sia su Fedora 21

che su Ubuntu 14.10 (informazioni datate).

2. Per windows/Linux si puo' scaricare da

https://www.gnu.org/software/octave/

Fondamenti di Informatica - Alfredo Accattatis 11

Esami

L’esame sarà composto da:

• Esame scritto ( DUE risposte aperte e TRE esercizi ) su tutti gli

argomenti affrontati nel corso, tranne quelli esplicitamente esclusi

(verrà detto a lezione e comunicato telematicamente)

• Rilasciati Scritti di esempio dei precedenti A.A.

Fondamenti di Informatica - Alfredo Accattatis 12

Il corso mira fornire la capacità di utilizzare il Computer in

maniera evoluta, ossia non solo come semplice strumento sul

quale eseguire programmi “preconfezionati” (Es. 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

Fondamenti di Informatica - Alfredo Accattatis 13

Il vostro background

• Sapete cosa è lo Spettro di un segnale?

• Teorema del campionamento?

• Li farete in altri corsi, in questo ne daremo un semplice

accenno al fine di comprendere meglio problematiche

generali sul software

Fondamenti di Informatica - Alfredo Accattatis 14

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 nellavostra vita professionale

• Quali computer abbiamo a disposizione?

• PC, Tablet, Smartphone….

Fondamenti di Informatica - Alfredo Accattatis 15

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”

Fondamenti di Informatica - Alfredo Accattatis 16

• 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

• (Gates, Jobs, etc.) https://www.youtube.com/watch?v=nKIu9yen5nc

• (Astronauti) https://www.youtube.com/watch?v=WE2s3647awE

• Princeton University COS 126 (corso introduttivo all’Informatica)

• http://www.washingtonpost.com/blogs/the-switch/wp/2013/12/11/president-obama-talks-about-teaching-everyone-to-code-this-professor-does-it/

Fondamenti di Informatica - Alfredo Accattatis 17

L’informatica va oltre

• Ha influenzato materie apparentemente assai distanti

• Psicologia

• L’approccio cognitivista (Ulrich Neisser) poi cognitivo-

comportamentale ed HIP (Human Information

Processing). Approccio computazionale di Marr

• Sono basati su una modellizzazione del comportamento

umano basato sugli stessi paradigmi dell’Informatica e dei

Computer, che somiglia al modello di von Neumann

• La mente opera attivamente sull’informazione proveniente

dagli organi sensoriali, trasformata dal soggetto in base ai

suoi scopi, aspettative ed esperienze passate (dunque

memorizzate) => Comportamento

Fondamenti di Informatica - Alfredo Accattatis 18

L’informatica va oltre

• Psicologia della percezione

• Esempio: Visione!

• Approccio: percezione diretta

• Approccio: costruttivismo

• Due grandi scuole di pensiero

• Top-Down

• Bottom-up

• Von Neumann oppure Reti neurali

• Oltre l’approccio cognitivo: informazioni distribuite tra i

circuiti neurali

Fondamenti di Informatica - Alfredo Accattatis 19

Illusione di Ponzo

Fondamenti di Informatica - Alfredo Accattatis 20

Viso-vaso di Rubin

Fondamenti di Informatica - Alfredo Accattatis 21

22

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

Fondamenti di Informatica - Alfredo Accattatis 22

”Computer science is no more about computers than astronomy is abouttelescopes.” (L'informatica non riguarda i computer più di quanto

l'astronomia riguardi i telescopi)

E. Dijkstra

Fondamenti di Informatica - Alfredo Accattatis 23

Rappresentazione dell’Informazionel’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

Fondamenti di Informatica - Alfredo Accattatis 24

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.

Fondamenti di Informatica - Alfredo Accattatis 25

Fondamenti di Informatica - Alfredo Accattatis 26

Come è possibile far interagire il computer con il

"mondo reale" ? Come è possibile far si che le

variabili (grandezze) del mondo esterno vengano

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

Fondamenti di Informatica - Alfredo Accattatis 27

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

Fondamenti di Informatica - Alfredo Accattatis 28

Problem solving

L’arte di risolvere i problemi con il computer

Diamo una definizione generale di algoritmo, rappresentazione

e di esecuzione automatica

Fondamenti di Informatica - Alfredo Accattatis 29

30

Esempio. Un problema da risolvere.

• Cosa ci serve per risolvere il problema “astrattamente” ?• Una rappresentazione delle entità coinvolte (porta, scatola)

• Una procedura da seguire (basata sulla rappresentazione adottata) ossia

una sequenza di passi

◼ Rappresentazione

- Un modo di esprimere le informazioni rilevanti per risolvere il problema

(dunque NON TUTTE)

◼ Procedura

- Un “processo” a step (passi) da seguire per ottenere la soluzione

- In parole povere una “ricetta” ossia un algoritmo

Fondamenti di Informatica - Alfredo Accattatis 30

Fondamenti di Informatica - Alfredo Accattatis 31

Dunque una possibile rappresentazione della

scatola in centimetri è:

1) Faccia A: Altezza, Larghezza (es. 220,70)

2) Faccia B: Altezza, Larghezza (es. 220,100)

3) Faccia C: Altezza, Larghezza (es. 70,110)

Mentre per la porta (centimetri):

1) Porta: Altezza, Larghezza (210, 80)

Esempio: 220,70,220,100,70,110,210,80

Fondamenti di Informatica - Alfredo Accattatis 32

Sono solo numeri!

Il mondo esterno è

RAPPRESENTATO tramite numeri,

memorizzati all’interno del

calcolatore

Fondamenti di Informatica - Alfredo Accattatis 33

(1)Verifica: se (altezza(A)<altezza(porta)) e (larghezza(A)<larghezza(porta))

Se (1) è VERO ok; altrimenti verifica la faccia B (passo successivo);

(2)Verifica: se (altezza(B)<altezza(porta)) e (larghezza(B)<larghezza(porta))

Se (2) è VERO ok; altrimenti verifica faccia C (passo successivo);

(3)Verifica: se (altezza(C)<altezza(porta)) e (larghezza(C)<larghezza(porta))

Se (3) è VERO ok; altrimenti "la scatola non passa";

34

Procedura “più generale” possibile

◼ Siamo interessati a procedure il più possibile generali e valide per il maggior numero possibile di casi, ossia ad algoritmi migliori

◼ La procedura appena vista vale per ogni porta e scatola?

Fondamenti di Informatica - Alfredo Accattatis 34

Fondamenti di Informatica - Alfredo Accattatis 35

(1) Verifica: se altezza(A)<altezza(porta) e larghezza(A)<larghezza(porta)

Se (1) è VERO ok; altrimenti ruota faccia A e vai al passo 2;

(2) Verifica: se altezza(A)<altezza(porta) e larghezza(A)<larghezza(porta)

Se (2) è VERO ok; altrimenti verifica faccia B;

(3..) Etc.

Algoritmo differente

Quindi: questo algoritmo vale per un numero

MAGGIORE di scatole

36

Procedure “automatiche”

rappresentazione procedura

+

◼ “La scienza della rappresentazione dell’informazione ed elaborazione

automatica”. Automatico?

Fondamenti di Informatica - Alfredo Accattatis 36

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

(1)Verifica: se (altezza(A)<altezza(porta)) e (larghezza(A)<larghezza(porta))

Se (1) è VERO ok; altrimenti verifica la faccia B (passo

successivo);

(2)Verifica: se (altezza(B)<altezza(porta)) e (larghezza(B)<larghezza(porta))

Se (2) è VERO ok; altrimenti verifica faccia C (passo

successivo);

(3)Verifica: se (altezza(C)<altezza(porta)) e (larghezza(C)<larghezza(porta))

Se (3) è VERO ok; altrimenti "la scatola non passa";

220,70,220,100,70,110,210,80

Fondamenti di Informatica - Alfredo Accattatis 37

Algoritmi

• i passi costituenti devono essere "elementari", ovvero non ulteriormente scomponibili (atomicità);

• i passi costituenti devono essere interpretabili in modo diretto e univoco dall'esecutore, sia esso umano o artificiale (non ambiguità);

• l'algoritmo deve essere composto da un numero finito di passi e richiedere una quantità finita di dati in ingresso (finitezza)

• l'esecuzione deve avere termine dopo un tempo finito (terminazione);

• l'esecuzione deve portare a un risultato univoco (effettività).

38

Un formalismo per scrivere “algoritmi”

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”

Fondamenti di Informatica - Alfredo Accattatis 38

39

Un esempio di “algoritmo”Start

true scrivi: “soluzione banale

o non calcolabile”

End

r resto

di x/y

read m and n

x m

y n

x ≠ 0 AND y ≠ 0false

falser = 0

x y

◼ “provate” questo algoritmo con differenti coppie di numeri

y r

scrivi: “la risposta è:” y

End

true

Fondamenti di Informatica - Alfredo Accattatis 39

Sommario

• Informazioni sul corso

• Definizione di Informatica

• Problem solving

• Algoritmi

40Fondamenti di Informatica - Alfredo Accattatis