9
Algoritmi Strutture Dati Linguaggi e Programmi Universit` a degli Studi di Udine Facolt` a di Ingegneria CORSO DI LAUREA IN SCIENZE dell’ARCHITETTURA Elementi di Informatica – Algoritmi, Strutture Dati e Programmi – D. Gubiani 21 marzo 2011 D. Gubiani – Algoritmi, Strutture Dati e Programmi – 1 Algoritmi Strutture Dati Linguaggi e Programmi Variabili Esempi di Algoritmi Formalismi per la Codifica Problema: Prendere un Caff` e al Distributore 1 introdurre le monete per l’importo necessario 2 selezionare la quantit` a di zucchero 3 selezionare la bevanda desiderata 4 attendere che il distributore eroghi la bevanda 5 ritirare il resto 6 ritirare la bevanda D. Gubiani – Algoritmi, Strutture Dati e Programmi – 2 Algoritmi Strutture Dati Linguaggi e Programmi Variabili Esempi di Algoritmi Formalismi per la Codifica Algoritmo Un algoritmo ` e la descrizione della soluzione di un problema espressa come un insieme di istruzioni che operando sui dati iniziali permette di ottenere il risultato che costituisce la soluzione del problema Pi` u precisamente: un insieme ordinato di istruzioni non ambigue ed effettivamente computabili che, quando eseguito, produce un risultato e si arresta in un tempo finito Se il problema ` e complesso pu` o essere scomposto in sottoproblemi, detti step D. Gubiani – Algoritmi, Strutture Dati e Programmi – 3 Algoritmi Strutture Dati Linguaggi e Programmi Variabili Esempi di Algoritmi Formalismi per la Codifica dal Problema all’Algoritmo D. Gubiani – Algoritmi, Strutture Dati e Programmi – 4 Algoritmi Strutture Dati Linguaggi e Programmi Variabili Esempi di Algoritmi Formalismi per la Codifica Classe di Problemi e Variabili Un algoritmo non risolve un unico problema ma una classe di problemi strutturalmente equivalenti, in cui cambiano solo i dati di partenza Per questo motivo le istruzioni di un algoritmo fanno riferimento non direttamente ai valori ma a delle variabili, il cui valore pu` o variare a seconda della situazione Una variabile pu` o essere intesa come un contenitore con un nome, che la identifica univocamente, e un valore, che corrisponde in ogni istante al dato contenuto In alcune situazione, ad ogni valore ` e associato anche un tipo - permette di definire l’insieme dei valori che la variabile pu` o assumere valori D. Gubiani – Algoritmi, Strutture Dati e Programmi – 5 Algoritmi Strutture Dati Linguaggi e Programmi Variabili Esempi di Algoritmi Formalismi per la Codifica Operazioni su Variabili Assegnamento: corrisponde a introdurre un valore nel contenitore della variabile identificata dal nome, tale valore sostituisce il valore precedente - nomevariavile valore Espressioni su variabili: il valore contenuto nelle variabili viene utilizzato per calcolare il risultato dell’espressione Esempi: - x 3 - y x+1 - y y * x D. Gubiani – Algoritmi, Strutture Dati e Programmi – 6

Facolt`a di Ingegneria - users.dimi.uniud.itdonatella.gubiani/universita/corsi/... · 2 assegnare alla variabile fatt il ... degli algoritmi `e costituito dai diagrammi di flusso

  • Upload
    dinhque

  • View
    215

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Facolt`a di Ingegneria - users.dimi.uniud.itdonatella.gubiani/universita/corsi/... · 2 assegnare alla variabile fatt il ... degli algoritmi `e costituito dai diagrammi di flusso

AlgoritmiStrutture Dati

Linguaggi e Programmi

Universita degli Studi di UdineFacolta di Ingegneria

CORSO DI LAUREA IN SCIENZE dell’ARCHITETTURA

Elementi di Informatica– Algoritmi, Strutture Dati e Programmi –

D. Gubiani

21 marzo 2011

D. Gubiani – Algoritmi, Strutture Dati e Programmi – 1

AlgoritmiStrutture Dati

Linguaggi e Programmi

VariabiliEsempi di AlgoritmiFormalismi per la Codifica

Problema: Prendere un Caffe al Distributore

1 introdurre le monete per l’importo necessario

2 selezionare la quantita di zucchero

3 selezionare la bevanda desiderata

4 attendere che il distributore eroghi la bevanda

5 ritirare il resto

6 ritirare la bevanda

D. Gubiani – Algoritmi, Strutture Dati e Programmi – 2

AlgoritmiStrutture Dati

Linguaggi e Programmi

VariabiliEsempi di AlgoritmiFormalismi per la Codifica

Algoritmo

Un algoritmo e la descrizione della soluzione di un problemaespressa come un insieme di istruzioni che operando sui datiiniziali permette di ottenere il risultato che costituisce lasoluzione del problema

Piu precisamente: un insieme ordinato di istruzioni non

ambigue ed effettivamente computabili che, quando eseguito,

produce un risultato e si arresta in un tempo finito

Se il problema e complesso puo essere scomposto insottoproblemi, detti step

D. Gubiani – Algoritmi, Strutture Dati e Programmi – 3

AlgoritmiStrutture Dati

Linguaggi e Programmi

VariabiliEsempi di AlgoritmiFormalismi per la Codifica

dal Problema all’Algoritmo

D. Gubiani – Algoritmi, Strutture Dati e Programmi – 4

AlgoritmiStrutture Dati

Linguaggi e Programmi

VariabiliEsempi di AlgoritmiFormalismi per la Codifica

Classe di Problemi e Variabili

Un algoritmo non risolve un unico problema ma una classe diproblemi strutturalmente equivalenti, in cui cambiano solo idati di partenza

Per questo motivo le istruzioni di un algoritmo fannoriferimento non direttamente ai valori ma a delle variabili, ilcui valore puo variare a seconda della situazione

Una variabile puo essere intesa come un contenitore con unnome, che la identifica univocamente, e un valore, checorrisponde in ogni istante al dato contenuto

In alcune situazione, ad ogni valore e associato anche un tipo

- permette di definire l’insieme dei valori che la variabile puoassumere valori

D. Gubiani – Algoritmi, Strutture Dati e Programmi – 5

AlgoritmiStrutture Dati

Linguaggi e Programmi

VariabiliEsempi di AlgoritmiFormalismi per la Codifica

Operazioni su Variabili

Assegnamento: corrisponde a introdurre un valore nelcontenitore della variabile identificata dal nome, tale valoresostituisce il valore precedente

- nomevariavile ← valore

Espressioni su variabili: il valore contenuto nelle variabiliviene utilizzato per calcolare il risultato dell’espressione

Esempi:

- x ← 3- y ← x + 1- y ← y ∗ x

D. Gubiani – Algoritmi, Strutture Dati e Programmi – 6

Page 2: Facolt`a di Ingegneria - users.dimi.uniud.itdonatella.gubiani/universita/corsi/... · 2 assegnare alla variabile fatt il ... degli algoritmi `e costituito dai diagrammi di flusso

AlgoritmiStrutture Dati

Linguaggi e Programmi

VariabiliEsempi di AlgoritmiFormalismi per la Codifica

Maggiore fra 2 Numeri, x e y

Soluzione possibile basata sull’osservazione chex e maggiore di y se x − y e maggiore di 0

1 leggere il primo valore dall’esterno e assegnarlo alla variabile x

2 leggere il secondo valore dall’esterno e assegnarlo alla variabile y

3 calcolare la differenza fra x e y e assegnarla alla variabile d (d ← x − y)

4 valutare se d e maggiore di 0: se e vero passare al passo 6, se e falsopassare al passo 5

5 restituire “il numero maggiore e ” seguito dal contenuto di y e passare alpasso 7

6 restituire “il numero maggiore e ” seguito dal contenuto di x

7 terminare l’esecuzione

D. Gubiani – Algoritmi, Strutture Dati e Programmi – 7

AlgoritmiStrutture Dati

Linguaggi e Programmi

VariabiliEsempi di AlgoritmiFormalismi per la Codifica

Fattoriale di un Numero (Soluzione Iterativa)

n! = n ∗ (n − 1) ∗ ... ∗ 2 ∗ 1

1 leggere il valore dall’esterno e assegnarlo alla variabile n

2 assegnare alla variabile fatt il valore 1 (fatt ← 1)

3 se n = 1, passare al passo 7

4 assegnare alla variabile fatt il valore della variabile stessa moltiplicato pern (fatt ← fatt ∗ n)

5 decrementare di 1 la variabile n (n← n − 1)

6 passare al passo 3

7 restituire il contenuto di fatt

8 terminare l’esecuzione

D. Gubiani – Algoritmi, Strutture Dati e Programmi – 8

AlgoritmiStrutture Dati

Linguaggi e Programmi

VariabiliEsempi di AlgoritmiFormalismi per la Codifica

Fattoriale di un Numero (Soluzione Ricorsiva)

n! =

{

1 se n ≤ 1n ∗ (n − 1)! se n > 1

(1)

1 leggere il valore dall’esterno e assegnarlo alla variabile n

2 se n = 1, vai al passo 4

3 restituire n ∗ FATTORIALE(n − 1) e passare al passo 5

4 restituire 1

5 terminare l’esecuzione

D. Gubiani – Algoritmi, Strutture Dati e Programmi – 9

AlgoritmiStrutture Dati

Linguaggi e Programmi

VariabiliEsempi di AlgoritmiFormalismi per la Codifica

Rappresentazione mediante PseudoCodice

Una metodologia comunemente utilizzata per descriverealgoritmi e la pseudocodifica: un linguaggio piu vicinopossibile a quello naturale

- codifica di un insieme di istruzioni elementari- indentazione

D. Gubiani – Algoritmi, Strutture Dati e Programmi – 10

AlgoritmiStrutture Dati

Linguaggi e Programmi

VariabiliEsempi di AlgoritmiFormalismi per la Codifica

PseudoCodice: Assegnamento e Condizionale

Assegnamento:

- assegna alla variabile n il valore v

- n← v

Condizionale:

- se la condizione A e vera allora esegui B (altrimenti esegui C )- if A then B [else C ]

D. Gubiani – Algoritmi, Strutture Dati e Programmi – 11

AlgoritmiStrutture Dati

Linguaggi e Programmi

VariabiliEsempi di AlgoritmiFormalismi per la Codifica

PseudoCodice: Cicli

Ciclo while:

- mentre A e vera esegui B- while (A) do {B}

Ciclo for:

- ripeti j − i + 1 volte B

- for cont ← i to j do {B}

D. Gubiani – Algoritmi, Strutture Dati e Programmi – 12

Page 3: Facolt`a di Ingegneria - users.dimi.uniud.itdonatella.gubiani/universita/corsi/... · 2 assegnare alla variabile fatt il ... degli algoritmi `e costituito dai diagrammi di flusso

AlgoritmiStrutture Dati

Linguaggi e Programmi

VariabiliEsempi di AlgoritmiFormalismi per la Codifica

Rappresentazione mediante Diagrammi diFlusso

Un linguaggio formale grafico spesso utilizzato per la codificadegli algoritmi e costituito dai diagrammi di flusso

- insieme di blocchi che rappresentano le strutture comunementeutilizzate legate fra di loro da frecce che ne indicano l’ordine diesecuzione

D. Gubiani – Algoritmi, Strutture Dati e Programmi – 13

AlgoritmiStrutture Dati

Linguaggi e Programmi

VariabiliEsempi di AlgoritmiFormalismi per la Codifica

Maggiore fra 2 Numeri, x e y - 1

MAGGIORE

read x

read y

d ← x − y

if (d > 0) then {return x

} else {return y

}

D. Gubiani – Algoritmi, Strutture Dati e Programmi – 14

AlgoritmiStrutture Dati

Linguaggi e Programmi

VariabiliEsempi di AlgoritmiFormalismi per la Codifica

Maggiore fra 2 Numeri, x e y - 2

MAGGIORE (x , y)d ← x − y

if (d > 0) then {return x

} else {return y

}

D. Gubiani – Algoritmi, Strutture Dati e Programmi – 15

AlgoritmiStrutture Dati

Linguaggi e Programmi

VariabiliEsempi di AlgoritmiFormalismi per la Codifica

Fattoriale di un Numero (Sol. Iterativa) - 1

FATTORIALE(n)fatt ← 1while (n > 1) do {

fatt ← fatt ∗ nn ← n − 1

}return fatt

D. Gubiani – Algoritmi, Strutture Dati e Programmi – 16

AlgoritmiStrutture Dati

Linguaggi e Programmi

VariabiliEsempi di AlgoritmiFormalismi per la Codifica

Fattoriale di un Numero (Sol. Iterativa) - 2

FATTORIALE(n)fatt ← 1i ← 2while (i ≤ n) do {

fatt ← fatt ∗ ii ← i + 1

}return fatt

D. Gubiani – Algoritmi, Strutture Dati e Programmi – 17

AlgoritmiStrutture Dati

Linguaggi e Programmi

VariabiliEsempi di AlgoritmiFormalismi per la Codifica

Fattoriale di un Numero (Sol. Ricorsiva)

FATTORIALE(n)if (n > 1) then {

return n ∗ FATTORIALE(n − 1)} else{

return 1}

D. Gubiani – Algoritmi, Strutture Dati e Programmi – 18

Page 4: Facolt`a di Ingegneria - users.dimi.uniud.itdonatella.gubiani/universita/corsi/... · 2 assegnare alla variabile fatt il ... degli algoritmi `e costituito dai diagrammi di flusso

AlgoritmiStrutture Dati

Linguaggi e ProgrammiVettori

Strutture Dati

Al crescere della complessita degli algoritmi l’impiego dellesingole variabili diventa inefficiente

Esempio: determinare il valore massimo fra 100 numeri

- bisognerebbe definire 100 variabili distinteda confrontare due a due

Strutture dati: aggregati organizzati di piu variabili

D. Gubiani – Algoritmi, Strutture Dati e Programmi – 19

AlgoritmiStrutture Dati

Linguaggi e ProgrammiVettori

Diverse Strutture Dati

Strutture dati statiche:

- vettori e matrici- record

Strutture dati dinamiche:

- liste- code e pile- alberi e grafi

D. Gubiani – Algoritmi, Strutture Dati e Programmi – 20

AlgoritmiStrutture Dati

Linguaggi e ProgrammiVettori

Vettori (array)

Un vettore (array) e un insieme ordinato di n elementi dellostesso tipo

Una vettore e identificato da un nome v e ogni elemento eindividuato univocamente da un indice i che indica la suaposizione

- v [i ] con i ∈ {1..n}

v [1] v [2] ... v [n− 1] v [n]

D. Gubiani – Algoritmi, Strutture Dati e Programmi – 21

AlgoritmiStrutture Dati

Linguaggi e ProgrammiVettori

Ordinamento di n numeri

INPUT: sequenza di n numeri (a1, a2...an)

9 5 1 2 7

OUTPUT: permutazione degli elementi a′1, a′

2...a′

n

tali che a′1 ≤ a′2 ≤ ... ≤ a′n

1 2 5 7 9

D. Gubiani – Algoritmi, Strutture Dati e Programmi – 22

AlgoritmiStrutture Dati

Linguaggi e ProgrammiVettori

Insertion Sort

INSERTION SORT (A)for j ← 2 to length(A) {

key ← A[j ]i ← j − 1while ((i > 0) and (A[i ] > key)) do {

A[i + 1]← A[i ]i ← i + 1

}A[i + 1]← key

}

D. Gubiani – Algoritmi, Strutture Dati e Programmi – 23

AlgoritmiStrutture Dati

Linguaggi e ProgrammiVettori

Merge Sort

MERGE SORT (A, p, r)if (p < r) then {

q ← int((p + r)/2)MERGE SORT (A, p, q)MERGE SORT (A, q + 1, r)MERGE(A, p, q, r)

}

D. Gubiani – Algoritmi, Strutture Dati e Programmi – 24

Page 5: Facolt`a di Ingegneria - users.dimi.uniud.itdonatella.gubiani/universita/corsi/... · 2 assegnare alla variabile fatt il ... degli algoritmi `e costituito dai diagrammi di flusso

AlgoritmiStrutture Dati

Linguaggi e Programmi

PascalEsempi di Programmi

Linguaggi e Programmi

Per eseguire un algoritmo su un calcolatore e necessariodescriverlo in un linguaggio formale, chiamato linguaggio di

programmazione, interpretabile dal calcolatore stesso

L’algoritmo e cosı tradotto in un programma

D. Gubiani – Algoritmi, Strutture Dati e Programmi – 25

AlgoritmiStrutture Dati

Linguaggi e Programmi

PascalEsempi di Programmi

Processo per la Creazione dei Programmi

D. Gubiani – Algoritmi, Strutture Dati e Programmi – 26

AlgoritmiStrutture Dati

Linguaggi e Programmi

PascalEsempi di Programmi

Diversi Linguaggi di Programmazione - 1

linguaggi interpretati: il testo di un programma scritto eelaborato da un interprete durante l’esecuzione del programmastesso: l’interprete legge un’istruzione, la traduce in uninsieme di istruzioni macchina (il linguaggio macchina)direttamente eseguibili dalla CPU del calcolatore, poi passa aleggere l’istruzione successiva, la traduce, e cosı via.

- perl, php, ...

linguaggi compilati: prevedono la compilazione, ossia latraduzione dell’intero programma in linguaggio macchina,prima dell’esecuzione del programma stesso

- C, C++, Visual Basic, Pascal...

D. Gubiani – Algoritmi, Strutture Dati e Programmi – 27

AlgoritmiStrutture Dati

Linguaggi e Programmi

PascalEsempi di Programmi

Diversi Linguaggi di Programmazione - 2

Un linguaggio a meta strada tra queste metodologie e Java

- il codice sorgente viene compilato in un formato intermedio(chiamato bytecode), il quale a sua volta viene interpretatodalla Java Virtual Machine (JVM)

D. Gubiani – Algoritmi, Strutture Dati e Programmi – 28

AlgoritmiStrutture Dati

Linguaggi e Programmi

PascalEsempi di Programmi

Pascal

Pascal e un linguaggio di programmazione compilativo

Alcune caratteristiche:

- creato da Niklaus Wirth per scopi didattici- chiamato Pascal in onore del matematico e filosofo franceseBlaise Pascal, inventore della prima macchina calcolatriceautomatica

- prima implementazione del linguaggio divenne operativa nel1970, ma raggiunse una discreta diffusione nel campoindustriale nel 1973

- la sua evoluzione orientata ad oggetti e il Delphi- sintassi chiara e rigida- diversi compilatori gratuiti: Free Pascal, Lazarus, Dev-Pascal

D. Gubiani – Algoritmi, Strutture Dati e Programmi – 29

AlgoritmiStrutture Dati

Linguaggi e Programmi

PascalEsempi di Programmi

Struttura generale di un Programma Pascal

Sezione dell’Intestazione: specifica il nome del programma

Sezione delle Dichiarazioni: indicazione delle variabili con laspecifica del relativo tipo di dato (insieme dei valori che lavariabile puo assumere)

Sezione Esecutiva: programma vero e proprio

D. Gubiani – Algoritmi, Strutture Dati e Programmi – 30

Page 6: Facolt`a di Ingegneria - users.dimi.uniud.itdonatella.gubiani/universita/corsi/... · 2 assegnare alla variabile fatt il ... degli algoritmi `e costituito dai diagrammi di flusso

AlgoritmiStrutture Dati

Linguaggi e Programmi

PascalEsempi di Programmi

Tipi di Dato

I tipi di dato determinano l’insieme dei valori che una variabilepuo assumere:

- byte: numeri interi positivi su 1 byte- word: numeri interi positivi su 2 byte- shortint: numeri interi su 1 byte- integer: numeri interi su 2 byte- longint: numeri interi su 4 byte- real: numeri reali su 6 byte- boolean: valori booleani (1 bit)- char: caratteri (1 byte)- string: sequenza di caratteri(dimensione variabile a partire da 10 byte)

D. Gubiani – Algoritmi, Strutture Dati e Programmi – 31

AlgoritmiStrutture Dati

Linguaggi e Programmi

PascalEsempi di Programmi

Dichiarazione delle Variabili e Assegnamento

I programmi Pascal richiedono la dichiarazione delle variabilicon la specifica del relativo tipo di dato nella sezione var

Esempi di dichiarazioni:x : real ; # dichiarazione di una variabile di tipo realey1, y2 : integer ; # dichiarazione di due variabili di tipo interoc : char ; # dichiarazione di una variabili di tipo carattere

Esempi di assegnamento:x := 10, 5;y1 := y2− 10;

c := ′c ′;

D. Gubiani – Algoritmi, Strutture Dati e Programmi – 32

AlgoritmiStrutture Dati

Linguaggi e Programmi

PascalEsempi di Programmi

Operatori Aritmetici e Logici

Operatori aritmetici:

- + addizione- - sottrazione- ∗ moltiplicazione- / divisione- DIV quoziente della divisione tra interi- MOD resto della divisione tra interi

Operatori logici

- OR disgiunzione logico- AND congiunzione logico- NOT negazione logica

D. Gubiani – Algoritmi, Strutture Dati e Programmi – 33

AlgoritmiStrutture Dati

Linguaggi e Programmi

PascalEsempi di Programmi

Operatori di Confronto

= uguale a

<> diverso da

> maggiore di

>= maggiore o uguale a

< minore

<= minore o uguale a

D. Gubiani – Algoritmi, Strutture Dati e Programmi – 34

AlgoritmiStrutture Dati

Linguaggi e Programmi

PascalEsempi di Programmi

Alcuni Controlli di Flusso: Condizionale

Sintassi:IF condizione THEN

istruzione1ELSE

istruzione2;

Esempio: incrementa di 1 il valore di a se b e maggiore di 0,altrimenti lo decrementa di 1

if b > 0 then

a := a+ 1else

a := a− 1;

D. Gubiani – Algoritmi, Strutture Dati e Programmi – 35

AlgoritmiStrutture Dati

Linguaggi e Programmi

PascalEsempi di Programmi

Alcuni Controlli di Flusso: Ciclo WHILE

Sintassi:WHILE condizione DO

istruzione;

Esempio: calcola la potenza n-esima di 2 (n≥0)x := 1;while n > 0 do

BEGIN

x := x ∗ 2;n := n − 1

END;

D. Gubiani – Algoritmi, Strutture Dati e Programmi – 36

Page 7: Facolt`a di Ingegneria - users.dimi.uniud.itdonatella.gubiani/universita/corsi/... · 2 assegnare alla variabile fatt il ... degli algoritmi `e costituito dai diagrammi di flusso

AlgoritmiStrutture Dati

Linguaggi e Programmi

PascalEsempi di Programmi

Alcuni Controlli di Flusso: Ciclo REPEAT

Sintassi:REPEAT

istruzione

UNTIL condizione;

Esempio: calcola la potenza n-esima di 2 (n≥1)x := 1;repeat

x := x ∗ 2;n := n − 1

UNTIL n < 1;

D. Gubiani – Algoritmi, Strutture Dati e Programmi – 37

AlgoritmiStrutture Dati

Linguaggi e Programmi

PascalEsempi di Programmi

Alcuni Controlli di Flusso: Ciclo FOR

Sintassi:FOR a := ni TO nf DO

istruzione

Esempio: calcola la potenza n-esima di 2 (n≥0)x := 1;FOR i := 1 TO n DO

x := x ∗ 2;

D. Gubiani – Algoritmi, Strutture Dati e Programmi – 38

AlgoritmiStrutture Dati

Linguaggi e Programmi

PascalEsempi di Programmi

Input e Output

READ/READLN (abbreviazione Read Line):legge i dati di input da tastiera

READLN (variabile)

WRITE/WRITELN (abbreviazione Write Line):stampa i dati di output sullo schermo

WRITELN(output)

Esempio: lettura di un carattere da tastierae scrittura dello stesso a video

WRITE (′Inserisci un carattere : ′);READLN (c);WRITELN (′Carattere inserito : ′, c);

D. Gubiani – Algoritmi, Strutture Dati e Programmi – 39

AlgoritmiStrutture Dati

Linguaggi e Programmi

PascalEsempi di Programmi

Vettori

Sintassi:dichiarazione di un vettorenome vettore : array [1..n] of tipo dato;

accesso ad uno specifico valore del vettorenome array [indice]

Esempio: incremento di 1 dei primi 3 valori di un vettorefor i := 1 to 3 do

vettore[i ] := vettore[i ] + 1;

Esempio: stampa di un vettore di lunghezza nfor i := 1 to n do

writeln(vettore[i ]);

D. Gubiani – Algoritmi, Strutture Dati e Programmi – 40

AlgoritmiStrutture Dati

Linguaggi e Programmi

PascalEsempi di Programmi

Procedure e Funzioni

Una procedura/funzione e una porzione di codice riutilizzabile

Entrambi possono prevedere parametri in ingresso:

- passaggio parametro per valore- passaggio parametro per riferimento

Le funzioni restituiscono un valore in uscita

D. Gubiani – Algoritmi, Strutture Dati e Programmi – 41

AlgoritmiStrutture Dati

Linguaggi e Programmi

PascalEsempi di Programmi

Procedure

Definizione di una procedura:

procedure nome procedura(parametri);var

...

begin

...

end ;

Invocazione di una procedura:

nome procedura(variabili);

D. Gubiani – Algoritmi, Strutture Dati e Programmi – 42

Page 8: Facolt`a di Ingegneria - users.dimi.uniud.itdonatella.gubiani/universita/corsi/... · 2 assegnare alla variabile fatt il ... degli algoritmi `e costituito dai diagrammi di flusso

AlgoritmiStrutture Dati

Linguaggi e Programmi

PascalEsempi di Programmi

Funzione

Definizione di una funzione:

function nome funzione(parametri) : tipo restituito;var

...

begin

...

nome funzione := ...

...

end ;

Invocazione di una funzione:

x := nome funzione(variabili);

D. Gubiani – Algoritmi, Strutture Dati e Programmi – 43

AlgoritmiStrutture Dati

Linguaggi e Programmi

PascalEsempi di Programmi

Variabili e Procedure/Funzioni

Locali: definite all’interno di una procedure/funzioni, possonoessere richiamate solo all’interno della specificaprocedure/funzioni

Globali: definite nel programma principale, possono essereutilizzate in tutto il programma, anche all’interno delleprocedure/funzioni

D. Gubiani – Algoritmi, Strutture Dati e Programmi – 44

AlgoritmiStrutture Dati

Linguaggi e Programmi

PascalEsempi di Programmi

Maggiore fra 2 Numeri

D. Gubiani – Algoritmi, Strutture Dati e Programmi – 45

AlgoritmiStrutture Dati

Linguaggi e Programmi

PascalEsempi di Programmi

Fattoriale Iterativo

D. Gubiani – Algoritmi, Strutture Dati e Programmi – 46

AlgoritmiStrutture Dati

Linguaggi e Programmi

PascalEsempi di Programmi

Fattoriale Ricorsivo

D. Gubiani – Algoritmi, Strutture Dati e Programmi – 47

AlgoritmiStrutture Dati

Linguaggi e Programmi

PascalEsempi di Programmi

Insertion sort

D. Gubiani – Algoritmi, Strutture Dati e Programmi – 48

Page 9: Facolt`a di Ingegneria - users.dimi.uniud.itdonatella.gubiani/universita/corsi/... · 2 assegnare alla variabile fatt il ... degli algoritmi `e costituito dai diagrammi di flusso

AlgoritmiStrutture Dati

Linguaggi e Programmi

PascalEsempi di Programmi

Merge sort

D. Gubiani – Algoritmi, Strutture Dati e Programmi – 49