Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Algoritmi: Esercizi di Programmazione Strutturata, Appunti di Elementi di Informatica

ALGORITMI - ALGORITMI

Tipologia: Appunti

2011/2012

Caricato il 12/05/2012

iarsahil88
iarsahil88 🇮🇹

2.7

(3)

5 documenti

1 / 58

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
Algoritmi
1 Algoritmi.tex: Versione 1.0, aa 2009-2010
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a

Anteprima parziale del testo

Scarica Algoritmi: Esercizi di Programmazione Strutturata e più Appunti in PDF di Elementi di Informatica solo su Docsity!

Algoritmi

Introduzione

La nozione di algoritmo riguarda qualsiasi campo in cui si possano de- scrivere sequenze di operazioni finalizzate allo svolgimento di un com- pito. In tal senso una ricetta di cucina e un algoritmo eseguibile da un cuoco, uno spartito musicalee un algoritmo eseguibile da un musicista.

Esempio: algoritmo di Euclide per il massimo comun divisore

  • Consideriamo il problema del calcolo del massimo comun divisore di due numeri: 1. Siano x e y due numeri. 2. Calcola il resto della divisione di x e y. 3. Se il resto e diverso da zero, ricomincia dal passo 2 utilizzando come x il valore attuale di y e come y il valore del resto, altrimenti prosegui al passo successivo. 4. Il massimo comun divisoree uguale al valore attuale di y.

Osservazioni (1)

  • Chiunque sappia comprendere ed eseguire le operazioni pu`o cucinare la pasta con le sarde o calcolare il massimo comun divisore.
  • L’esecutore pu`o non conoscere quello che l’algoritmo calcola.
  • Un algoritmo `e un insieme ordinato di passi, istruzioni, eseguibili e non ambigui, che definiscono la soluzione di un problema.
  • Talune istruzioni manipolano le variabili che rappresentano delle quantita che nell’esecuzione dell’algoritmo possono cambiare valore. L’algoritmo precedente manipola 3 quantita contenute nelle variabili x, y, resto.
  • I passi che costituiscono un algoritmo devono essere eseguibili: l’algoritmo deve essere un metodo effettivo. 1. Crea un elenco di tutti i numeri primi. 2. Ordina l’elenco in modo decrescente. 3. Preleva il secondo elemento dall’elenco risultante.

Osservazioni (3)

  • E opportuno sottolineare la differenza tra problema, algoritmo che´ lo risolve ed esecuzione dell’algoritmo.
  • Un problema non specifica la soluzione.
  • Lo stesso problema puo essere risolto da piu algoritmi. Ad esempio, il problema del massimo comun divisore tra due numeri e risolto anche dal seguente algoritmo: 1. Siano x e y due numeri. 2. Calcola il minimo tra x e y e sia z tale valore. 3. Se z divide x e y vai al passo 5. 4. Decrementa z di uno e ricomincia dal passo 3. 5. Il massimo comun divisoree uguale al valore attuale di z.

Problemi, Algoritmi ed Esecuzione dell’Algoritmo (1)

Problema: stabilire se un dato anno `e o meno bisestile

  1. Sia A l’anno di cui si vuole stabilire la bisestilit`a.
  2. Se A diviso 400 d`a resto zero vai al passo 6.
  3. Se A diviso 100 d`a resto zero vai al passo 5.
  4. Se A diviso 4 d`a resto zero vai al passo 6.
  5. A non `e bisestile, vai al passo 7.
  6. A `e bisestile.
  7. Fine.

Eseguiamo l’algoritmo per stabilire la bisestilit`a dell’anno 2001: A resto 1 2001 - 2 2001 1 3 2001 1 4 2001 1 5 2001 1 7 2001 1

Problemi, Algoritmi ed Esecuzione dell’Algoritmo (3)

Consideriamo l’algoritmo a pagina 8

  • Le istruzioni nelle righe tra 3 e 5 non sono eseguite se si verifica la condizione specificata in riga 2;
  • analogamente le istruzioni nelle righe 4 e 5 non sono eseguite se eseguendo l’istruzione in riga 3 la condizione specificata risulta vera;
  • questo significa che il costrutto linguistico SE usato nell’algo- ritmo consente di selezionare le istuzioni da eseguire e la selezione avviene in base al verificarsi di una condizione;
  • si osservi che abbiamo l’assunzione implicita che le istruzioni si deb- bano eseguire una dopo l’altra a meno che un costrutto linguistico non alteri tale flusso di esecuzione.

Problemi, Algoritmi ed Esecuzione dell’Algoritmo (4)

Problema: dato un numero N, intero e maggiore di uno, calcolare la somma di tutti i suoi divisori.

  1. Sia N il numero di cui si vogliono calcolare i divisori;
  2. Poni I uguale a 1 e T=0;
  3. Se N diviso I d`a resto zero, allora incrementa T del valore presente in I;
  4. Incrementa I di uno.
  5. Se I*2 minore o uguale a N allora vai al passo 3.
  6. Incrementa T del valore presente in N;
  7. Fine.

Eseguiamo l’algoritmo per calcolare i divisori di 6 N I T 1 6 - - 2 6 1 0 3 6 1 1 (il resto di N/I e zero) 4 6 2 1 5 6 2 (I*2 ≤ N) 3 6 2 3 (il resto di N/Ie zero) 4 6 3 3

N I T 5 6 3 3 (I2≤ N) 3 6 3 6 (il resto di N/I `e zero) 4 6 4 6 5 6 4 6 (I2 > N) 6 6 4 12 7 6 4 12

Esercizio: Scambio del valore di 2 variabili

Scrivere un algoritmo per scambiare i valori presenti in due variabili A e B.

Esercizio: Il Problema del Vinaio

Un produttore di vino applica le seguenti tariffe:

  • acquisti fino a 10 bottiglie: 5 euro l’una;
  • acquisti fino a 100 bottiglie: alle prime 10 si applica la tariffa del punto precedente, le restanti vengono vendute a 3 euro l’una;
  • acquisti fino a 200 bottiglie: alle prime 100 si applica la tariffa del punto precedente, le restanti vengono vendute a 2 euro l’una;
  • acquisti oltre le 200 bottiglie: alle prime 200 si applica la tariffa del punto precedente, le restanti vengono vendute a 1 euro l’una.

Descrivere un algoritmo che dato il numero di bottiglie ne calcoli il costo.

Calcolo degli Interessi

Per un buono postale di V euro viene dato un interesse annuo del 3%. Calcolare il valore del buono dopo 5 anni.

  1. Sia V il valore del buono;
  2. Poni in B il valore dell’espressione aritmetica V+V0,03; (poni B=V+V0,03)
  3. poni C=B+B*0,03;
  4. poni D=C+C*0,03;
  5. poni E=D+D*0,03;
  6. poni F=E+E*0,03;
  7. il valore del buono dopo 5 anni `e F.

Questa soluzione e corretta. Si osservi pero che lo stesso schema di ope- razione e ripetuta 5 volte. Se il problema avesse chiesto di calcolare il valore del buono dopo 50 anni seguendo questo schema avremmo scrit- to un algoritmo lunghissimo. Inoltre, prendiamo il seguente problema piu generale:

Calcolo degli Interessi

Dato il valore V di un buono postale e l’interesse annuo I, calcolare il valore del buono dopo X anni.

  1. Siano V il valore del buono, I l’interesse e X il numero di anni;
  2. poni K=V;
  3. poni K=K+K*I;
  4. decrementa X di 1; nota: equivale a scrivere X=X-1;
  5. se X>0 vai al passo 3;
  6. K contiene il valore del buono

o equivalentemente

  1. Siano V il valore del buono, I l’interesse e X il numero di anni;
  2. poni K=V;
  3. per X volte ripeti quanto segue: 3.1. poni K=K+K*I;
  4. K contiene il valore del buono

Alcuni Commenti (2)

  • Un algoritmo `e caratterizzato da un insieme di istruzioni che permettono di risolvere un problema;
  • ha dei dati in ingresso;
  • produce risultati in uscita;
  • le istruzioni vengono eseguite una dietro l’altra a partire dalla prima;
  • talvolta questa sequenza puo essere alterata da due costrutti linguistici: - Selezione, che vincola l’esecuzione di un gruppo di istruzioni alla verita di una condizione - Iterazione, che mentre una condizione `e vera ripete l’esecuzione di un gruppo di istruzioni.

Alcuni Commenti (3)

  • Si osservi che nella pratica comune noi eseguiamo le operazioni una dopo l’altra. Talvolta una o piu azioni devono essere eseguite solo in determinate circostanze (selezione) oppure una o piu azioni devono essere eseguite un certo numero di volte (iterazione). Ad esempio:
  • durante una telefonata ad un numero verde potremo sentire: “...se volete prenotare un posto per un volo nazionale premete il tasto 1 ed attendete che l’operatore vi risponda, se volete sapere il vostro punteggio 1000 miglia premete 2, attendete il beep poi inserite il vostro pin,...”;
  • una prescrizione medica potrebbe riportare “...fino a quando perma- ne lo stato influenzale assumere 1 pastiglia, 1 cucchiaio di sciroppo e bere un bicchiere di acqua e zucchero ogni 8 ore...”.