• Non ci sono risultati.

Pseudo codice

N/A
N/A
Protected

Academic year: 2021

Condividi "Pseudo codice"

Copied!
22
0
0

Testo completo

(1)

Pseudo codice

Paolo Bison

Fondamenti di Informatica 1 A.A. 2004/05

Universit`a di Padova

Pseudo codice, Paolo Bison, A.A. 2004-05, 2004-10-13 – p.1/44

Pseudo codice

 linguaggio testuale

 mix di linguaggio naturale ed elementi linguistici con sintassi ben definita e semantica univoca

 elementi

 espressioni

 istruzioni

(2)

Espressioni

 elementi del linguaggio la cui valutazione fornisce un determinato valore

 costituite, in prima approssimazione, da operandi ed operatori

 espressioni matematiche

 consideriamo

 operandi a valore intero

 operatori aritmetici (espressioni numeriche) + − × /

 operatori di confronto (espressioni logiche/predicati)

= 6= > ≥ < ≤

Pseudo codice, Paolo Bison, A.A. 2004-05, 2004-10-13 – p.3/44

Come si scrivono le espressioni?

 sintassi

descrizione di come si scrivono espressioni corrette combinando simboli base (cifre, operatori, parentesi)

 notazioni

 infissa op1 oper op2

5 + 3 / 9

 postfissa op1 op2 oper

5 3 + 9 /

 prefissa oper op1 op2

/ + 5 3 9

(3)

Come si valutano le espressioni? - I

 TEST: Qual’è il valore di

5 + 3 / 2 1. 6

2. 6.5 3. 4

4. potrebbe essere uno qualunque dei punti 1, 2, 3.

5. nessuna delle precedenti è la risposta esatta

Pseudo codice, Paolo Bison, A.A. 2004-05, 2004-10-13 – p.5/44

Come si valutano le espressioni? - II

 semantica

regole per valutare una espressione

 significato degli operatori

 ordine di valutazione

(4)

Significato degli operatori

 operazione matematica associata ai simboli di operatore

+ addizione

− sottrazione

× moltiplicazione / divisione - intera

- decimale

Pseudo codice, Paolo Bison, A.A. 2004-05, 2004-10-13 – p.7/44

Ordine di valutazione

 la sequenza in cui vengono applicati gli operatori agli operandi

 ordine di scrittura

 da sx a dx

5 + 3 / 2 = 4

 da dx a sx

5 + 3 / 2 = 6

 priorità predefinite

 ×,/ valutati prima di +,−

 ordine esplicito

 parentesi ( )

(5)

Do it yourself

 Sviluppare un algoritmo per la conversione di

espressioni (senza parentesi) dalla notazione infissa a quella postfissa.

3+5*8-7 → 358*+7- 7/2*3-6+4*9 → 72/3*6-49*+

Pseudo codice, Paolo Bison, A.A. 2004-05, 2004-10-13 – p.9/44

Istruzioni

 elementi del linguaggio che definiscono le azioni da svolgere

 istruzioni base

 struttura sequenziale

 struttura condizionale

 struttura iterativa

 istruzione di assegnazione

(6)

Struttura sequenziale

 sequenza di passi da eseguirsi uno di seguito all’altro

 sintassi

passi scritti uno per riga

 semantica

 passi eseguiti uno alla volta

 ciascun passo è eseguito una sola volta e nessuno è omesso o ripetuto

 l’ordine di esecuzione è quello di scrittura

 algoritmo termina con il termine dell’ultimo passo

 struttura rigida

esecuzione non può essere modificata

Pseudo codice, Paolo Bison, A.A. 2004-05, 2004-10-13 – p.11/44

Es. struttura sequenziale

 somma delle radici quadrate di tre numeri J, K, L calcola √

calcola √ J K calcola √

somma le tre radici quadrate L

(7)

Struttura di selezione

 permette di eseguire istruzioni differenti al verificarsi o meno di una condizione (espressione logica)

 sintassi

if predicato istr_1

else istr_2

 semantica

se il predicato è vero si esegue istr_1, altrimenti istr_2

 variante ad una sola via

if predicato istr_1

Pseudo codice, Paolo Bison, A.A. 2004-05, 2004-10-13 – p.13/44

Es. struttura di selezione

 dati due numeri,sommare al primo il valore assoluto del secondo

if il secondo numero è negativo sottrai il secondo dal primo

else somma il primo con il secondo

(8)

Indentazione

 rientranza a dx nella scrittura delle istruzioni

 per indicare quali istruzioni sono sotto il controllo di una clausola if o else

 dati quattro numeri A,B,C,D sommare A con B e moltiplicare C con D se A maggiore di B

if A > B

somma A con B

moltiplica C con D 6≡ if somma A con B A > B moltiplica C con D

Pseudo codice, Paolo Bison, A.A. 2004-05, 2004-10-13 – p.15/44

Gerarchie di selezione

 sequenze in cascata di costrutti di selezione: if annidati (nested)

 scelta del massimo tra tre numeri X,Y e Z

if X > Y

if X > Z X è max

else

Z è max

else

if Y > Z Y è max

else

Z è max

 numero di vie selezionabili arbitrario ma finito

(9)

Es. ricerca

 ricerca di un indirizzo in un archivio dato il nome leggi nome della prima scheda

if è il nome cercato estrai indirizzo

else leggi nome della seconda scheda

if è il nome cercato estrai indirizzo

else

if ...

 non è possibile esprimere algoritmi la cui lunghezza dipenda da fattori esterni

Pseudo codice, Paolo Bison, A.A. 2004-05, 2004-10-13 – p.17/44

Strutture iterativa

 ripetizione di istruzioni per un numero arbitrario, ma finito di volte

 ciclo (loop)

 permette di descrivere una elaborazione di durata

indeterminata con un numero finito di istruzioni

(10)

Tipi di iterazioni

 definita

 durata determinata e conosciuta prima dell’esecuzione

 termine garantito

 indefinita

 durata indeterminata

 termine dipende dal verificarsi o meno della condizione di terminazione

Pseudo codice, Paolo Bison, A.A. 2004-05, 2004-10-13 – p.19/44

Ciclo while

 sintassi

while predicato istr

 semantica

- si valuta il predicato - se vero

- si esegue istr

- e si torna a valutare il predicato altrimenti termina l’esecuzione

 iterazione indefinita

(11)

Es. while

 ricerca in un archivio di schede

leggi nome da prima scheda

while nome non è quello cercato e vi sono ancora schede

leggi nome da scheda successiva

if hai trovato il nome

leggi indirizzo da scheda

 ciclo errato se archivio vuoto

Pseudo codice, Paolo Bison, A.A. 2004-05, 2004-10-13 – p.21/44

Ciclo repeat

 sintassi

repeat espressione istr

 semantica

- si valuta l’espressione che deve ritornare un valore intero

- si esegue istr per un numero di volte pari a tale

(12)

Es. repeat

 stampa di 100 asterischi *

repeat 100 stampa *

Pseudo codice, Paolo Bison, A.A. 2004-05, 2004-10-13 – p.23/44

Variabile

 elemento che può assumere un qualunque valore ma che in ogni momento dell’esecuzione è associato ad uno ed uno solo valore

 nome (identificatore)

sequenza di caratteri alfanumerici ris x0 st

 etichetta di un contenitore ris -150

x0 3.67

st hello

 operandi in espressioni

 condivisione di dati tra istruzioni

(13)

Operazioni su variabile

 accesso al valore attuale x0+ris-7

ris 34

x0 -10

valore dell’espressione: 17

 modifica del valore associato

 istruzione di assegnazione

Pseudo codice, Paolo Bison, A.A. 2004-05, 2004-10-13 – p.25/44

Istruzione di assegnazione

 sintassi

id ← espressione a

a

altri simboli := =

 semantica

al termine dell’esecuzione alla variabile id è associato il valore ottenuto valutando l’espressione

 esempio

(14)

Significato identificatori

cnt ← cnt + 1

 lato destro

accesso al valore corrente

cnt 17

 lato sinistro

riferimento al contenitore

cnt 17

 risultato

cnt 18

Pseudo codice, Paolo Bison, A.A. 2004-05, 2004-10-13 – p.27/44

Ordine di esecuzione

n ← m

m ← r 6≡ m ← r n ← m

 dati

m 17 n 23 r 31

n ← m

m ← r ⇒ m 31 n 17 r 31

m ← r

n ← m ⇒ m 31 n 31 r 31

(15)

Scambio tra due variabili

 scambio di valori tra m e n

 ERRATO

• scambio diretto m ← n

n ← m

 CORRETTO

• uso di una terza variabile per salvare il valore di una delle due da scambiare

t ← m m ← n n ← t

Pseudo codice, Paolo Bison, A.A. 2004-05, 2004-10-13 – p.29/44

Algoritmi

 moltiplicazione

 divisione intera

 somma di n numeri

 somma di n numeri pari

 fattoriale

 massimo comun divisore

(16)

Moltiplicazione

calcolo di m × n, m,n ≥ 0, come addizioni ripetute m × n = m + m + · · · + m | {z }

n

 ciclo repeat

ris ← 0

repeat n

ris ← ris + m

 ciclo while

ris ← 0 i ← 1

while i ≤ n

ris ← ris + m i ← i + 1

Pseudo codice, Paolo Bison, A.A. 2004-05, 2004-10-13 – p.31/44

Divisione intera

calcolo di m/n, m ≥ 0, n > 0, come sottrazioni ripetute m/n = q, qn + r = m, q ≥ 0, 0 ≤ r < n

m − n − n − · · · − n

| {z }

q

< n q ← 0

while m ≥ n

m ← m - n

q ← q + 1

(17)

Somma di n numeri

calcolo della somma dei primi n numeri interi naturali 1 + 2 + 3 + · · · + (n − 1) + n

s ← 0 i ← 1

while i ≤ n s ← s + i i ← i + 1

Pseudo codice, Paolo Bison, A.A. 2004-05, 2004-10-13 – p.33/44

Somma di n numeri pari

calcolo della somma dei primi n numeri naturali pari 2 + 4 + 6 + · · · + 2(n − 1) + 2n

s ← 0 i ← 2

while i ≤ 2 × n

if i - i / n × n = 0

(18)

Fattoriale

n! =

( n(n − 1)(n − 2) · · · 2 · 1 n > 0

1 n = 0

Ciclo che moltiplica tutti i numeri tra n e 1

1 × n × (n − 1) × (n − 2) × · · · × 2 fat ← 1

while n > 1

fat ← fat × n n ← n - 1

Pseudo codice, Paolo Bison, A.A. 2004-05, 2004-10-13 – p.35/44

Massimo Comun Divisore - I

Dati due numeri m,n > 0 trovare MCD

 metodo 1

Sia m ≥ n, con ciclo da 2 a n si verifica quali sono i numeri che dividono esattamente sia m che n. Il MCD è il massimo di tali numeri.

Nota: un numero è divisibile per un altro se il resto

della divisione è zero.

(19)

Massimo Comun Divisore - II

 algoritmo 1

if m < n t ← m m ← n n ← t i ← 2

mcd ← 1

while i ≤ n

if m - m / i × i = 0

if n - n / i × i = 0

if i > mcd mcd ← i i ← i + 1

Pseudo codice, Paolo Bison, A.A. 2004-05, 2004-10-13 – p.37/44

Massimo Comun Divisore - III

 metodo 2 - Metodo di Euclide

Dato m ≥ n, qualunque numero che divide sia m che n divide anche il resto della divisione m/n

m = qn + r

m - qn = r ≥ 0

q m k - qq n k = r

k(q m - qq n ) = r

(20)

Massimo Comun Divisore - IV

 algoritmo 2

if m < n t ← m m ← n n ← t

r ← m - m / n × n

while r 6= 0 m ← n n ← r

r ← m - m / n × n

Pseudo codice, Paolo Bison, A.A. 2004-05, 2004-10-13 – p.39/44

Massimo Comun Divisore - V

 metodo 3 - Metodo di Euclide (senza divisione)

Se m=n il MCD è m, altrimenti se m >n m diventa m-n altrimenti è n che diventa n - m, e si ricontrolla

l’eventuale uguaglianza di m con n

 algoritmo 3

while m 6= n

if m > n

m ← m - n

else n ← n - m

(21)

Numero primo

Dato un numero intero n >0 si dica se è primo

Ciclo di verifica che n non sia esattamente divisibile da un numero tra n/2 e 2.

div ← n / 2

r ← n - n / div × div

while r 6= 0

div ← div - 1

r ← n - n / div × div

if div 6= 1 n è primo

else n non è primo

Pseudo codice, Paolo Bison, A.A. 2004-05, 2004-10-13 – p.41/44

?

Cosa produce questo algoritmo ?

while n 6= 1 stampa n

if n - n / 2 × 2 = 0 n ← n / 2

else n ← n × 3 + 1

(22)

Terminazione di un algoritmo

 H(P,x)

if P(x) termina stampa 1

else stampa 0

 G(P,x)

while H(P,x) stampa 1

 ? H(G,x)

Pseudo codice, Paolo Bison, A.A. 2004-05, 2004-10-13 – p.43/44

Do it yourself

 Minimo comune multiplo di due numeri m e n

 Calcolo della radice quadrata intera di un numero n > 0; la radice intera è quel numero m che soddisfa le condizioni m 2 ≤ n e

(m + 1) 2 > n

 Calcolo approssimato dell’integrale definito R x

1

x

0

f (x) come area sottesa da f(x) tra x 0 e x 1 con f(x) > 0 per x 0 ≤ x ≤ x 1 .

 Calcolo dei coefficienti dell’equazione della retta ax + by + c = 0

dati due punti (x 0 ,y 0 ) e (x 1 ,y 1 )

Riferimenti

Documenti correlati

Riferimento normativo società con diritti speciali o esclusivi insieme con altre attività svolte in regime di mercato (3). Società

• La mostra “Nome in codice: Caesar – Detenuti siriani vittime di tortura” si è tenuta dal 5 al 9 ottobre al Maxxi, Roma; sono state esposte 29 fotografie scattate da

 ricerca di un indirizzo in un archivio dato il nome leggi nome della prima scheda. if è il nome cercato

 ricerca di un indirizzo in un archivio dato il nome leggi nome della prima scheda. if è il nome cercato

1259 (pubblicato nella Gazzetta Ufficiale, IV serie speciale – Concorsi, n. 90 del 24 novembre 2017); C ) del verbale del Nucleo dei Carabinieri, presso il Ministero

(Riservato solo a figli o orfani di iscritti alla Gestione unitaria delle prestazioni creditizie e sociali e di epensionati utenti della Gestione dipendenti pubblici)

Progetto di ricerca a tema specifico a caratterizzazione industriale con borsa cofinanziata dalla Regione Lazio e da GOSport S.r.l.

[r]