Corso di Informatica A.A. 2009- 2010people.na.infn.it/~itaco/informatica/Lezione6.pdfCorso di...

33
Corso di Informatica 2009 - 2010 Lezione 6 1 Corso di Informatica A.A. 2009- 2010 Corso di Informatica A.A. 2009- 2010 Lezione 6

Transcript of Corso di Informatica A.A. 2009- 2010people.na.infn.it/~itaco/informatica/Lezione6.pdfCorso di...

Page 1: Corso di Informatica A.A. 2009- 2010people.na.infn.it/~itaco/informatica/Lezione6.pdfCorso di Informatica 2009 - 2010 Lezione 6 15 Dipendenza dalle condizioni del problema Esempio:

Corso di Informatica 2009 - 2010 Lezione 6 1

Corso di Informatica A.A. 2009- 2010Corso di Informatica A.A. 2009- 2010

Lezione 6

Page 2: Corso di Informatica A.A. 2009- 2010people.na.infn.it/~itaco/informatica/Lezione6.pdfCorso di Informatica 2009 - 2010 Lezione 6 15 Dipendenza dalle condizioni del problema Esempio:

Algoritmi e loro proprietàAlgoritmi e loro proprietà

•Proprietà formali degli Algoritmi

Page 3: Corso di Informatica A.A. 2009- 2010people.na.infn.it/~itaco/informatica/Lezione6.pdfCorso di Informatica 2009 - 2010 Lezione 6 15 Dipendenza dalle condizioni del problema Esempio:

Corso di Informatica 2009 - 2010 Lezione 6 3

Cos’è l’informatica ?

L’informatica è la scienza dellarappresentazione e dell’elaborazionedell’informazione

L’informatica è lo studio degli algoritmi:• delle loro proprietà formali e matematiche• delle loro realizzazioni hardware• delle loro realizzazioni linguistiche• delle loro applicazioni

Page 4: Corso di Informatica A.A. 2009- 2010people.na.infn.it/~itaco/informatica/Lezione6.pdfCorso di Informatica 2009 - 2010 Lezione 6 15 Dipendenza dalle condizioni del problema Esempio:

Corso di Informatica 2009 - 2010 Lezione 6 4

Che cos’è un algoritmo ?

Un insieme ben ordinato e finitodi operazioni non ambigueed effettivamente calcolabili che,applicate ad un insieme di condizioni iniziali,produce un risultato etermina in una quantità di tempo finita.

Page 5: Corso di Informatica A.A. 2009- 2010people.na.infn.it/~itaco/informatica/Lezione6.pdfCorso di Informatica 2009 - 2010 Lezione 6 15 Dipendenza dalle condizioni del problema Esempio:

Corso di Informatica 2009 - 2010 Lezione 6 5

Un esempio di algoritmoLa somma dei primi 100 numeri interi (da 0 a 99!):

1. Poni somma = 02. Poni indice = 13. Finché indice è minore di 100 ripeti i passi 4. e 5.

4. Aggiungi indice a somma5. Incrementa indice di 1

6. Stampa somma7. Fermati

Page 6: Corso di Informatica A.A. 2009- 2010people.na.infn.it/~itaco/informatica/Lezione6.pdfCorso di Informatica 2009 - 2010 Lezione 6 15 Dipendenza dalle condizioni del problema Esempio:

Corso di Informatica 2009 - 2010 Lezione 6 6

Proprietà formali e matematichedegli algoritmi

La prima proprietà è ovviamente la correttezza

Ma ha una fondamentale importanza anchel’efficienza, che si misura rispetto alla risorsaspazio e rispetto alla risorsa tempo

Page 7: Corso di Informatica A.A. 2009- 2010people.na.infn.it/~itaco/informatica/Lezione6.pdfCorso di Informatica 2009 - 2010 Lezione 6 15 Dipendenza dalle condizioni del problema Esempio:

Corso di Informatica 2009 - 2010 Lezione 6 7

Scrivere un algoritmoLa ricerca del giusto algoritmo per lasoluzione di un dato problema è la parte piùcreativa del lavoro di un informatico.

Ogni algoritmo può essere scomposto in tre tipifondamentali di operazioni:

• Operazioni sequenziali• Operazioni condizionali• Operazioni iterative

Page 8: Corso di Informatica A.A. 2009- 2010people.na.infn.it/~itaco/informatica/Lezione6.pdfCorso di Informatica 2009 - 2010 Lezione 6 15 Dipendenza dalle condizioni del problema Esempio:

Corso di Informatica 2009 - 2010 Lezione 6 8

Operazioni sequenziali

• Istruzioni di elaborazione• Esempi:

Poni indice = 1Aggiungi indice a sommaIncrementa indice di 1

• Istruzioni di Input/Output (I/O)• Esempi:

Acquisisci misuraAcquisisci errore assolutoStampa errore relativo

Page 9: Corso di Informatica A.A. 2009- 2010people.na.infn.it/~itaco/informatica/Lezione6.pdfCorso di Informatica 2009 - 2010 Lezione 6 15 Dipendenza dalle condizioni del problema Esempio:

Corso di Informatica 2009 - 2010 Lezione 6 9

Operazioni condizionali

Esempio:

1. Se misura ≠ 0 allora2. Esegui algoritmo trova errore relativo

3. Altrimenti4. Stampa il messaggio “errore relativo non

definito”5. . . . . . . . . . .

Page 10: Corso di Informatica A.A. 2009- 2010people.na.infn.it/~itaco/informatica/Lezione6.pdfCorso di Informatica 2009 - 2010 Lezione 6 15 Dipendenza dalle condizioni del problema Esempio:

Corso di Informatica 2009 - 2010 Lezione 6 10

Operazioni iterativeCiclo “do While”:

Inizio ciclo: esegui. . . . .Fine del cicloFino a che (condizione) rimane vera ripeti ciclo

eseguito almeno 1 volta

Ciclo WhileMentre (condizione) rimane vera ripeti:. . . . . .Fine del ciclo

eseguito 0 o più volte

Page 11: Corso di Informatica A.A. 2009- 2010people.na.infn.it/~itaco/informatica/Lezione6.pdfCorso di Informatica 2009 - 2010 Lezione 6 15 Dipendenza dalle condizioni del problema Esempio:

Corso di Informatica 2009 - 2010 Lezione 6 11

Pseudocodice

Notate che:

• tutte le linee contengono un verbo specifico (azione)

• i passi sono numerati in modo tale che per ogni riga vieneeseguita una sola azione

• se la linea richiede due passi viene suddivisa in lineesuccessive indentate

Gli algoritmi presentati sono stati scritti secondo uno schemastrutturato chiamato pseudocodice

Page 12: Corso di Informatica A.A. 2009- 2010people.na.infn.it/~itaco/informatica/Lezione6.pdfCorso di Informatica 2009 - 2010 Lezione 6 15 Dipendenza dalle condizioni del problema Esempio:

Corso di Informatica 2009 - 2010 Lezione 6 12

Correttezza di un algoritmoDeterminare la correttezza dell’algoritmo elaboratoper un dato problema può essere arduo…lecondizioni per essere ragionevolmente sicuri diaverlo trovato sono:

– Comprensione effettiva del problema– Validità della soluzione indipendentemente

da condizioni particolari odal valore dei dati in ingresso

– Livello di approssimazione del risultatosufficiente agli scopi di progetto

Page 13: Corso di Informatica A.A. 2009- 2010people.na.infn.it/~itaco/informatica/Lezione6.pdfCorso di Informatica 2009 - 2010 Lezione 6 15 Dipendenza dalle condizioni del problema Esempio:

Corso di Informatica 2009 - 2010 Lezione 6 13

Comprensione del problema

Esempio: Qual è la via più breve fra le città A e B ?

Algo 1: Esamina tutte le strade che congiungono A a B e scegliquella di lunghezza inferiore

Algo 2: Esamina tutte le strade che congiungono A a B e scegliquella il cui tempo di percorrenza medio è minimo

La condizione necessaria per trovare un correttoalgoritmo a un problema è ovviamente la correttaformulazione e comprensione del problema

Page 14: Corso di Informatica A.A. 2009- 2010people.na.infn.it/~itaco/informatica/Lezione6.pdfCorso di Informatica 2009 - 2010 Lezione 6 15 Dipendenza dalle condizioni del problema Esempio:

Corso di Informatica 2009 - 2010 Lezione 6 14

Dipendenza dai dati in ingressoAlgoritmo per risolvere equazioni algebrichedi secondo grado:

1. Acquisisci a, b, c2. Poni

3. Stampa x1 , x2

4. Fermati!

x1

="b + b

2" 4ac

2a

!

x21

="b " b

2" 4ac

2a

Page 15: Corso di Informatica A.A. 2009- 2010people.na.infn.it/~itaco/informatica/Lezione6.pdfCorso di Informatica 2009 - 2010 Lezione 6 15 Dipendenza dalle condizioni del problema Esempio:

Corso di Informatica 2009 - 2010 Lezione 6 15

Dipendenza dalle condizioni del problema

Esempio: gittata di un proiettile:

1. Acquisisci v, θ2. Poni

3. Stampa G4. Fermati …valido solo se il cannone è al suolo...

g

sinvG

!! cos22

=

Page 16: Corso di Informatica A.A. 2009- 2010people.na.infn.it/~itaco/informatica/Lezione6.pdfCorso di Informatica 2009 - 2010 Lezione 6 15 Dipendenza dalle condizioni del problema Esempio:

Corso di Informatica 2009 - 2010 Lezione 6 16

Livello di approssimazione richiesto

Spesso il risultato di un algoritmo è soloun’approssimazione, più o meno buonadella risposta corretta.

Ad esempio se il risultato è un numeroreale, un calcolatore potrà fornire solo unnumero finito di cifre significative: occorreràstabilire in base all’uso che della soluzionesi deve fare quale approssimazione èaccettabile come corretta.

Page 17: Corso di Informatica A.A. 2009- 2010people.na.infn.it/~itaco/informatica/Lezione6.pdfCorso di Informatica 2009 - 2010 Lezione 6 15 Dipendenza dalle condizioni del problema Esempio:

I costrutti del CI costrutti del C

Page 18: Corso di Informatica A.A. 2009- 2010people.na.infn.it/~itaco/informatica/Lezione6.pdfCorso di Informatica 2009 - 2010 Lezione 6 15 Dipendenza dalle condizioni del problema Esempio:

Corso di Informatica 2009 - 2010 Lezione 6 18

BUG BUSTER

Page 19: Corso di Informatica A.A. 2009- 2010people.na.infn.it/~itaco/informatica/Lezione6.pdfCorso di Informatica 2009 - 2010 Lezione 6 15 Dipendenza dalle condizioni del problema Esempio:

Corso di Informatica 2009 - 2010 Lezione 6 19

HomeworkRiscrivere le seguenti linee di codice usando ilcostrutto if

Page 20: Corso di Informatica A.A. 2009- 2010people.na.infn.it/~itaco/informatica/Lezione6.pdfCorso di Informatica 2009 - 2010 Lezione 6 15 Dipendenza dalle condizioni del problema Esempio:

Corso di Informatica 2009 - 2010 Lezione 6 20

BUG BUSTER

HomeworkQuanto vale x al termine del seguente ciclo ?

Quanto vale ctr al termine del seguente ciclo ?

Scrivere un ciclo for per contare da 1 a 100 di 3 in 3

Page 21: Corso di Informatica A.A. 2009- 2010people.na.infn.it/~itaco/informatica/Lezione6.pdfCorso di Informatica 2009 - 2010 Lezione 6 15 Dipendenza dalle condizioni del problema Esempio:

Corso di Informatica 2009 - 2010 Lezione 6 21

Ciclo whileL’istruzione while consente di eseguire ripetutamente un blocco di una o più istruzioni sino a quando è soddisfattauna condizione prefissata

L’istruzione while ha la seguente struttura

while (condition)statement;

Page 22: Corso di Informatica A.A. 2009- 2010people.na.infn.it/~itaco/informatica/Lezione6.pdfCorso di Informatica 2009 - 2010 Lezione 6 15 Dipendenza dalle condizioni del problema Esempio:

Corso di Informatica 2009 - 2010 Lezione 6 22

Page 23: Corso di Informatica A.A. 2009- 2010people.na.infn.it/~itaco/informatica/Lezione6.pdfCorso di Informatica 2009 - 2010 Lezione 6 15 Dipendenza dalle condizioni del problema Esempio:

Corso di Informatica 2009 - 2010 Lezione 6 23

Ciclo while

somma = 0;

i = 0;

while (i<100)

{

somma = somma + i;

i++;

}

printf(“Somma = %d”,somma);

La condizione di controllo viene verificata prima di eseguirequalunque istruzione: il ciclo potrebbe non venire mai eseguito.

Page 24: Corso di Informatica A.A. 2009- 2010people.na.infn.it/~itaco/informatica/Lezione6.pdfCorso di Informatica 2009 - 2010 Lezione 6 15 Dipendenza dalle condizioni del problema Esempio:

Corso di Informatica 2009 - 2010 Lezione 6 24

Esempio

Page 25: Corso di Informatica A.A. 2009- 2010people.na.infn.it/~itaco/informatica/Lezione6.pdfCorso di Informatica 2009 - 2010 Lezione 6 15 Dipendenza dalle condizioni del problema Esempio:

Corso di Informatica 2009 - 2010 Lezione 6 25

Ciclo while

L’istruzione while equivale ad un’istruzione forin cui mancano l’inizializzazione e l’incremento

for ( ; condition ; )equivale a

while (condition)

Quando l’inizializzazione e l’incremento sono necessariè sempre preferibile utilizzare l’istruzione for

Page 26: Corso di Informatica A.A. 2009- 2010people.na.infn.it/~itaco/informatica/Lezione6.pdfCorso di Informatica 2009 - 2010 Lezione 6 15 Dipendenza dalle condizioni del problema Esempio:

Corso di Informatica 2009 - 2010 Lezione 6 26

Page 27: Corso di Informatica A.A. 2009- 2010people.na.infn.it/~itaco/informatica/Lezione6.pdfCorso di Informatica 2009 - 2010 Lezione 6 15 Dipendenza dalle condizioni del problema Esempio:

Corso di Informatica 2009 - 2010 Lezione 6 27

Page 28: Corso di Informatica A.A. 2009- 2010people.na.infn.it/~itaco/informatica/Lezione6.pdfCorso di Informatica 2009 - 2010 Lezione 6 15 Dipendenza dalle condizioni del problema Esempio:

Corso di Informatica 2009 - 2010 Lezione 6 28

Ciclo do … whileL’istruzione do … while consente di eseguire ripetutamente un blocco di una o più istruzioni sino a quando è soddisfattauna condizione prefissata La condizione è verificata al termine del ciclo

L’istruzione do … while ha la seguente struttura

dostatement

while (condition);

Page 29: Corso di Informatica A.A. 2009- 2010people.na.infn.it/~itaco/informatica/Lezione6.pdfCorso di Informatica 2009 - 2010 Lezione 6 15 Dipendenza dalle condizioni del problema Esempio:

Corso di Informatica 2009 - 2010 Lezione 6 29

Page 30: Corso di Informatica A.A. 2009- 2010people.na.infn.it/~itaco/informatica/Lezione6.pdfCorso di Informatica 2009 - 2010 Lezione 6 15 Dipendenza dalle condizioni del problema Esempio:

Corso di Informatica 2009 - 2010 Lezione 6 30

Page 31: Corso di Informatica A.A. 2009- 2010people.na.infn.it/~itaco/informatica/Lezione6.pdfCorso di Informatica 2009 - 2010 Lezione 6 15 Dipendenza dalle condizioni del problema Esempio:

Corso di Informatica 2009 - 2010 Lezione 6 31

Nested loop

Per nested loop (ciclo innestato) si intende un ciclo che è contenuto all’interno di un altro ciclo

Non ci sono limitazioni al numero di nested loops che si possono utilizzare, purché ogni ciclo interno siacompletamente contenuto in quello esterno

Page 32: Corso di Informatica A.A. 2009- 2010people.na.infn.it/~itaco/informatica/Lezione6.pdfCorso di Informatica 2009 - 2010 Lezione 6 15 Dipendenza dalle condizioni del problema Esempio:

Corso di Informatica 2009 - 2010 Lezione 6 32

Nested loop

NO

SI

Page 33: Corso di Informatica A.A. 2009- 2010people.na.infn.it/~itaco/informatica/Lezione6.pdfCorso di Informatica 2009 - 2010 Lezione 6 15 Dipendenza dalle condizioni del problema Esempio:

Corso di Informatica 2009 - 2010 Lezione 6 33

BUG BUSTER

HomeworkScrivere un ciclo while per contare da 1 a 100 di 3 in 3

Scrivere un ciclo do … while per contare da 1 a 100 di 3 in 3