corso di informatica a.a. 2009- 2010people.na.infn.it/~itaco/informatica/lezione6.pdfcorso di...
TRANSCRIPT
![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:](https://reader033.vdocuments.pub/reader033/viewer/2022042622/5fa25528db4e8677841074c2/html5/thumbnails/1.jpg)
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:](https://reader033.vdocuments.pub/reader033/viewer/2022042622/5fa25528db4e8677841074c2/html5/thumbnails/2.jpg)
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:](https://reader033.vdocuments.pub/reader033/viewer/2022042622/5fa25528db4e8677841074c2/html5/thumbnails/3.jpg)
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:](https://reader033.vdocuments.pub/reader033/viewer/2022042622/5fa25528db4e8677841074c2/html5/thumbnails/4.jpg)
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:](https://reader033.vdocuments.pub/reader033/viewer/2022042622/5fa25528db4e8677841074c2/html5/thumbnails/5.jpg)
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:](https://reader033.vdocuments.pub/reader033/viewer/2022042622/5fa25528db4e8677841074c2/html5/thumbnails/6.jpg)
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:](https://reader033.vdocuments.pub/reader033/viewer/2022042622/5fa25528db4e8677841074c2/html5/thumbnails/7.jpg)
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:](https://reader033.vdocuments.pub/reader033/viewer/2022042622/5fa25528db4e8677841074c2/html5/thumbnails/8.jpg)
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:](https://reader033.vdocuments.pub/reader033/viewer/2022042622/5fa25528db4e8677841074c2/html5/thumbnails/9.jpg)
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:](https://reader033.vdocuments.pub/reader033/viewer/2022042622/5fa25528db4e8677841074c2/html5/thumbnails/10.jpg)
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:](https://reader033.vdocuments.pub/reader033/viewer/2022042622/5fa25528db4e8677841074c2/html5/thumbnails/11.jpg)
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:](https://reader033.vdocuments.pub/reader033/viewer/2022042622/5fa25528db4e8677841074c2/html5/thumbnails/12.jpg)
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:](https://reader033.vdocuments.pub/reader033/viewer/2022042622/5fa25528db4e8677841074c2/html5/thumbnails/13.jpg)
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:](https://reader033.vdocuments.pub/reader033/viewer/2022042622/5fa25528db4e8677841074c2/html5/thumbnails/14.jpg)
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:](https://reader033.vdocuments.pub/reader033/viewer/2022042622/5fa25528db4e8677841074c2/html5/thumbnails/15.jpg)
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:](https://reader033.vdocuments.pub/reader033/viewer/2022042622/5fa25528db4e8677841074c2/html5/thumbnails/16.jpg)
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:](https://reader033.vdocuments.pub/reader033/viewer/2022042622/5fa25528db4e8677841074c2/html5/thumbnails/17.jpg)
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:](https://reader033.vdocuments.pub/reader033/viewer/2022042622/5fa25528db4e8677841074c2/html5/thumbnails/18.jpg)
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:](https://reader033.vdocuments.pub/reader033/viewer/2022042622/5fa25528db4e8677841074c2/html5/thumbnails/19.jpg)
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:](https://reader033.vdocuments.pub/reader033/viewer/2022042622/5fa25528db4e8677841074c2/html5/thumbnails/20.jpg)
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:](https://reader033.vdocuments.pub/reader033/viewer/2022042622/5fa25528db4e8677841074c2/html5/thumbnails/21.jpg)
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:](https://reader033.vdocuments.pub/reader033/viewer/2022042622/5fa25528db4e8677841074c2/html5/thumbnails/22.jpg)
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:](https://reader033.vdocuments.pub/reader033/viewer/2022042622/5fa25528db4e8677841074c2/html5/thumbnails/23.jpg)
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:](https://reader033.vdocuments.pub/reader033/viewer/2022042622/5fa25528db4e8677841074c2/html5/thumbnails/24.jpg)
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:](https://reader033.vdocuments.pub/reader033/viewer/2022042622/5fa25528db4e8677841074c2/html5/thumbnails/25.jpg)
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:](https://reader033.vdocuments.pub/reader033/viewer/2022042622/5fa25528db4e8677841074c2/html5/thumbnails/26.jpg)
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:](https://reader033.vdocuments.pub/reader033/viewer/2022042622/5fa25528db4e8677841074c2/html5/thumbnails/27.jpg)
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:](https://reader033.vdocuments.pub/reader033/viewer/2022042622/5fa25528db4e8677841074c2/html5/thumbnails/28.jpg)
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:](https://reader033.vdocuments.pub/reader033/viewer/2022042622/5fa25528db4e8677841074c2/html5/thumbnails/29.jpg)
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:](https://reader033.vdocuments.pub/reader033/viewer/2022042622/5fa25528db4e8677841074c2/html5/thumbnails/30.jpg)
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:](https://reader033.vdocuments.pub/reader033/viewer/2022042622/5fa25528db4e8677841074c2/html5/thumbnails/31.jpg)
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:](https://reader033.vdocuments.pub/reader033/viewer/2022042622/5fa25528db4e8677841074c2/html5/thumbnails/32.jpg)
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:](https://reader033.vdocuments.pub/reader033/viewer/2022042622/5fa25528db4e8677841074c2/html5/thumbnails/33.jpg)
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