Giovedì Fondamenti di Informatica Venerdì 9-11cicalese/Fond-Inf/2012/Lezioni1-2_2012.ppt.pdf ·...

12
1 Ferdinando Cicalese, [email protected] Adele Rescigno, [email protected] Fondamenti di Informatica Orario Corso ! Giovedì 15-18 ! Venerdì 9-11 " Martedì 14-16 (per questa prima parte del corso) Ricevimento Studenti # Martedì 13-14, Giovedì 14-15 # Dopo le lezioni in aula # Contattando il docente per e-mail Come rintracciarmi # E-mail: [email protected] $ L’oggetto della mail deve contenere l’indicazione del corso: Fondamenti di Informatica $ La mail deve essere sottoscritta con nome cognome e numero di matricola Comunicazioni sul corso # Pagina web: http://www.dia.unisa.it/~cicalese/Fond-Inf/ $ !!! Under construction !!!

Transcript of Giovedì Fondamenti di Informatica Venerdì 9-11cicalese/Fond-Inf/2012/Lezioni1-2_2012.ppt.pdf ·...

1

Ferdinando Cicalese, [email protected]

Adele Rescigno, [email protected]

Fondamenti di Informatica

Orario Corso

!  Giovedì 15-18

!  Venerdì 9-11 " Martedì 14-16 (per questa prima parte del corso)

Ricevimento Studenti # Martedì 13-14, Giovedì 14-15 # Dopo le lezioni in aula # Contattando il docente per e-mail

Come rintracciarmi

# E-mail: [email protected]

$  L’oggetto della mail deve contenere l’indicazione

del corso: Fondamenti di Informatica

$  La mail deve essere sottoscritta con nome

cognome e numero di matricola

Comunicazioni sul corso

#  Pagina web:

http://www.dia.unisa.it/~cicalese/Fond-Inf/

$  !!! Under construction !!!

2

Testi di Riferimento Algoritmi. Lo spirito dell'informatica Harel David; Feldman Yishai

Capitoli 1, 2, 4, 6, 8

Testi di Riferimento Introduzione ai sistemi informatici Donatella Sciuto; Giacomo Buonanno, Luca Mari

Capitoli 2, 3, 5, 6, 7

Esame e voto

#  una prova scritta (ed un colloquio orale)

#  Esame scritto o “prove in itinere” (sessione estiva) $  due “prove in itinere”

$  Voto: media pesata delle singole prove

$  Orale: permette di aumentare il voto di al piu’ 4 punti.

Domande ?

3

Parte 2 Presentazione dei Contenuti del Corso

Tre domande fondamentali

$  Che cosa studiamo in questo corso?

$  Cosa intendiamo per Informatica? %  e cosa ne costituisce i Fondamenti?

$  Perchè questo corso a VCA?

E’ importante distinguere

Informatica (computer science)

vs. Programmazione (Java, C++, etc.)

Nozione di computazione vs. sue implementazioni (IBM, Tablets, iPhone, etc.)

Niente “programmazione” in questo corso!

$  Non è necessaria per comprendere

% Avremo piu’ tempo per capire lo spirito dell’informatica

% Poco vantaggio per chi ha precedenti esperienze di programmazione

4

Breve storia della “computazione” $  Tecnologia:

%  Orologio calcolatore (Schickard, 1600)

%  Telai meccanici con motore a vapore (1801)

%  Difference and Analytic Machine (C. Babbage, 1822) $  First programmer: Ada Byron

%  Tubi catodici, calcolatori elettronici (1910-1930)

%  ENIAC (1945)

%  Macchina di von Neumann Computer (1949)

%  Primi PC, anni’ 70

Breve storia della ``computazione’’ $  Teoria - Informatica

% Filosofi dell’Antica Grecia $  come “formalizzare il pensiero” $  Algoritmo di Euclide (~350 a.C)

% al Khowarizmi (IX sec.) % Logica Booleana (G. Boole, 1815-1864) % Crisi della matematica

$  Hilbert: necessita’ di sistematizzare la matematica $  Gödel: Teorema di incompletezza

% Lambda calcolo (A. Church, 1936) % Macchine di Turing (A. Turing, 1937) Prima chiara nozione di

“computazione”

Wang tiles 1961

Informatica: Un modo nuovo di guardare il mondo

Esempio 1:

5

Esempio 2: Elezione a voto segreto in pubblico

$  Una votazione % ognuno si esprime pubblicamente

(no computer, email, etc.) % Alla fine: ognuno e’ d’accordo su chi

ha vinto e di quanto % Nessuno sa il voto degli altri

% Possibile? % SI! (A. Yao)

Esempio 3: Biologia Computazionale

Biologia Tradizionale Nuove Metodologie

Microarrays

Pathways

Un universo computazionale

“Cosa da vita alla materia” – La prospettiva del 20th secolo

$  “Materia”: Atomi, molecole, meccanica quantistica, relativita’ …

$  “Vita”: Cellule, nucleo, DNA, RNA, …

$  “Dar vita alla materia”: Computazione

6

Fondamenti di Informatica: ``Tentative syllabus’’ Domande?

Philippe Semeria CIMA museum

Dave Bowman and HAL from the movie "2001: A Space Odyssey” (Stanley Kubrick 1968)

Algoritmica (prime nozioni)

$  Una procedura precisa e priva di ambiguità per ottenere un risultato computazionale

$  Algoritmo discende da Abu Abdullah Muhammad bin Musa al-Kohwarizmi %  Il suo libro "Al-Jabr wa-al-Muqabilah" e’ il

progenitore dei moderni libri di algebra.

$  Esempi: ricette, divisioni a piu’ cifre, MCD, Google.

7

$  passi “elementari” interpretabili in modo “univoco”

$  numero finito di passi e quantità finita di input

$  terminazione dopo un tempo finito e risultato univoco;

$  la sequenza di passi è deterministica eccezione: algoritmi randomizzati

Esempio: Somma di due numeri

Discussion

Time

Immagina di descrivere come addizionare a qualcuno che non ne ha mai sentito parlare. Come lo spiegheresti?

Prova prima con due numeri ad una sola cifra!

In generale:

Come possiamo descrivere un algoritmo in un modo sufficientemente preciso da non lasciare ambiguita’?

Il linguaggio di un robot: passi elementari

$  Semplici istruzioni di movimento e calcolo %  Es. “Muoviti in avanti/indietro”; “leggi un numero”; “confronta

numeri”; “Prendi un oggetto”

$  Due tipi di istruzioni composite (di controllo)

If condition Then

{

List of instructions

}

Else

{

List of instructions

}

Do 5 times

{

List of instructions

}

Condizionali Loop

8

Un primo semplice problema

$  Un robot si prepara ad un’uscita galante…

$  Come identificare il profumo piu’ economico? (Assumiamo possa leggere i prezzi)

Soluzione

%  0. Prendi la prima bottiglia, %  1. Vai alla prossima bottiglia nello scaffale %  2. Confronta il prezzo sulla bottiglia nello scaffale con quello in

mano %  3. Se e’ minore scambia la bottiglia tenuta in mano con quella

sullo scaffale %  4. Ripeti da 1.

$  Alla fine la bottiglia di costo minimo e’ nelle mani del robot

Analizziamo la soluzione al problema del Robot

Discussion

Time

E’ un algoritmo?

E’ corretto?

Quanto tempo impiega?

Riposiziona le bottiglie in modo tale che i prezzi crescano da sinistra a destra.

9

Il linguaggio del robot illustra gli elementi essenziali di tutti i linguaggi per computer

Java

C++ BASIC

Python

Torre di Babele dei computer

Caratteristiche dei languaggi umani: sostantivi/verbi/aggettivi/etc.

Caratteristiche dei linguaggi dei computer: variabili, semplici istruzioni aritmetiche,

Istruzioni condizionali/loop

Per un computer, esistono solo numeri Justin Bieber song

Sequenza di Numeri che rappresentano ampiezza,

frequenza, etc. ad ogni istante (es., formato mp3)

Sequenza di Numeri che rappresentano intensita’ dei colori

per ogni pixel.

Image

Compito base di un computer

Data: una sequenza di numeri in memoria (es., musica mp3)

Scopo: Elabora questi numeri per ottenere una specifica sequenza di numeri come output (es., segnali elettrici che comandano le

cuffie e riproducono la musica)

40.99 62.99 52.99 … 22.99

Problema simile in altro contesto

$ Robot ha n prezzi in memoria

$ Vuole trovare il prezzo minimo

10

Memoria: visione semplificta

$  Una lavagnetta che puo’ essere cancellata e riscritta quante volte si vuole

$  Una variabile: un pezzo di memoria con un nome; contiene/memorizza un “valore”

22.99 i =

valore nome

Esempi

i ! 5 Assegna ad i il valore 5

j ! i Assegna a j qualsiasi valore sia assegnato ad i. Lascia il valore di i invariato

i ! j + 1 Assegna i al valore di j + 1. Lascia il valore di j invariato

i ! i + 1 Assegna ad i il valore ottenuto sommando 1 al valore precedentemente assegnato ad i stesso.

Array

$  A e’ un array di n valori A[ i ] e’ l’ i-esimo valore

$  Esempio: A[3] = 52.99

40.99 62.99 52.99 … 22.99 A =

Soluzione

$  Prendi la prima bottiglia, controlla il prezzo

$  Vai lungo lo scaffale. Per ogni bottiglia, esegui: %  Se il prezzo sulla bottiglia e’ inferiore al prezzo di quella in mano,

scambia le bottiglie.

11

Procedura trovamin!

$  n elementi, nell’array A $  Variabili di supporto: i, best

best ! 1!Do for i = 2 to n !!{!! !if ( A[i] < A[best] ) then!! ! best ! i !!}!

Un’alternativa per lo stesso task

best ! 1;!

i ! 1!

Do while (i < n)!

{!

!i ! i + 1;!

!if ( A[i] < A[best] ) then!

! !best ! i !

}!

Molti passi di elaborazione in poche righe di codice

Devo ordinare n bottiglie. Mmmm?!? Aha! trovo quella col prezzo minimo e la

metto nella posizione piu’ a sinistra. Quindi mi rimane da ordinare solo le n-1 bottiglie

alla sua destra.

12

Soluzione

Do for i=1 to n-1

{

Trova la bottiglia piu’ economica tra quelle numerate da i a n

Scambia tale bottiglia e la bottiglia i -esima.

} “selection sort”

Nota: sappiamo gia’ fare questo! Scambio

$  Date due variabili x e y, Come scambio i loro valori?

$  Ho bisogno di un’altra variabile!

tmp ! x

x ! y

y ! tmp