approfondimenti di informatica elaborazione dell'informazione1 elaborazione dellinformazione

227
Approfondimenti di Informatica Elaborazione dell'informazione 1 Elaborazione Elaborazione dell’informazione dell’informazione

Upload: piero-durante

Post on 01-May-2015

216 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 1

Elaborazione Elaborazione dell’informazionedell’informazione

Page 2: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 2

InformaticaInformatica

HardwareHardware SoftwareSoftware

Modulo Centrale

Modulo Centrale

PeriferichePeriferiche

Software dibase

Software dibase

Software applicativo

Software applicativo

Page 3: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 3

…continua…

Calcolatore

Programma

Input Output

Page 4: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 4

Quotidianamente

Soluzione di problemi Elaborazione di informazione

un insieme di dati di partenzaun risultato cercatouna soluzione: procedura che genera il risultato a partire dai dati di partenza

Esempi: calcolare l’area di un cerchio riconoscere il volto di una persona

Page 5: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 5

Eliminare le ambiguità nella formulazione del problema

Individuare il risultato da ottenere, gli obiettivi da raggiungere

Evidenziare- le regole da rispettare- i vincoli interni ed esterni- i dati espliciti ed impliciti

Eliminare i dettagli inutili ed ambigui

Definizione del pb.

Page 6: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 6

Modello

F = m × a

ft ttre 12 14tf 13 15

Costruzione modello

Ricerca della soluzione

Interpretazione della soluzione

Mondo Reale

Relazione tra realtà e modello

Page 7: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 7

Conoscenza vs. capacità

La conoscenza di come si risolve un problema e la capacità di risolverlo sono competenze distinte

Esempio: ognuno è capace di riconoscere un volto, ma come avviene questo riconoscimento? Come descrivere la procedura per riconoscere uno specifico volto?

Page 8: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 8

Istruttore vs esecutore

L’esperto che conosce la soluzione di un problema comunica come operare per risolvere il problema

Page 9: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 9

Il processo che porta alla soluzione di un problema è quindi un’attività di natura logico-linguistica, che può essere studiata nelle sue caratteristiche prescindendo in larga misura dalla struttura fisica dell’esecutore

…continua…

Page 10: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 10

Conoscenza di come si risolve

il problema

Descrizione della

soluzione

Effettiva capacità di eseguire la

procedura risolutiva di un

problema

Soggetto 1

(cuoco)

Soggetto 2 (io)

(ricetta)

Processo di soluzione di un pb.

Page 11: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 11

Problema

Analisi Modello di Soluzione

Soluzione descritta Interpretazione

Descrizione interpretata

Soluzione

Attuazione

Descrizione

Soggetto 1: istruttore

Soggetto 2: esecutore

…continua…

Page 12: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 12

…continua…

Problema elementare: l’istruttore riconosce l’istruzione corrispondente e la comunica all’esecutore che associa tale istruzione a una azione che infine esegue

Problema complesso:- l’istruttore scompone il problema originario in sottoproblemi, scompone i sottoproblemi in sotto-sottoproblemi e itera il procedimento fino a giungere a problemi elementari/primitivi, la soluzione di ognuno dei quali viene descritta mediante una istruzione elementare-l’esecutore attua delle azioni elementari associate alle istruzioni elementari identificate

Page 13: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 13

FinitezzaFinitezzal’azione deve concludersi in un tempo finito

OsservabilitàOsservabilitàl’azione deve avere un effetto osservabile, cioè deve produrre qualcosa

RiproducibilitàRiproducibilitàa partire dallo stesso stato iniziale, la stessa azione deve produrre sempre lo stesso risultato

Proprietà di una azione elementare

Page 14: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 14

Elementare?

- capacità di interpretazione - insieme delle istruzioni che capisce (sintassi)

- quali operazioni associa ad ogni istruzione che riconosce (semantica)

- capacità di esecuzione: insieme delle operazioni che è capace di compiere

…continua…

Page 15: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 15

hh22

hh11

BB

rr==bb/2/2

bb

ProblemaProblema

hh22 bb

hh11BB

Sottoproblema 1

Sottoproblema 2

Sottoproblema 3

soluzione soluzione elementareelementare: : ss = ½ = ½ rr 2 2

soluzione soluzione elementareelementare: : ss = = bb hh 2 2

rr

Scomposizione del Scomposizione del problema in sottoproblemiproblema in sottoproblemi

soluzione soluzione elementareelementare: : ss = = ????

soluzione soluzione elementareelementare::ss = = ????

Esempio: area di una campana

Page 16: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 16

Sottoproblema 3Sottoproblema 3hh11

bbhh11

½ (½ (BB––bb))hh11

½ (½ (BB––bb))Sottoproblema 3.1Sottoproblema 3.1

soluzione soluzione elementareelementare::s =½ (½(B–b) hs =½ (½(B–b) h11))

Sottoproblema 3.2Sottoproblema 3.2soluzione soluzione elementareelementare::s = b hs = b h11

soluzione soluzione effettivaeffettiva::ss = ½ (½( = ½ (½(BB––bb) ) hh11) +) + bb hh11 + + ½ (½(½ (½(BB––bb) ) hh11))

Sottoproblema 3.3Sottoproblema 3.3soluzione soluzione elementareelementare::s =½ (½(B–b) hs =½ (½(B–b) h11))

Scomposizione del sottoproblema 3 Scomposizione del sottoproblema 3 in tre ulteriori sottoproblemiin tre ulteriori sottoproblemi

Composizione delle soluzioni dei tre sottoproblemi 3.1, 3.2 e Composizione delle soluzioni dei tre sottoproblemi 3.1, 3.2 e 3.3 per risolvere il sottoproblema 33.3 per risolvere il sottoproblema 3

hh11BB

bb

…continua…

Page 17: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 17

hh22

hh11

BB

rr==bb//22

bb

ProblemaProblema

hh22 bb

hh11

BB

Sottoproblema 1

Sottoproblema 2

Sottoproblema 3

soluzione soluzione elementareelementare::ss = ½ = ½ rr22

soluzione soluzione elementareelementare::ss = = bb hh22

rr

soluzione soluzione effettivaeffettiva::ss = ½ (½( = ½ (½(BB––bb) ) hh11) +) + bb hh11 + + ½ (½(½ (½(BB––bb) ) hh11))

soluzione soluzione effettivaeffettiva::s = ½ s = ½ r r22 + + b hb h22 + + ½ (½(B–b) h½ (½(B–b) h11) +) + b hb h11 ++ ½ (½(B–b) h½ (½(B–b) h11))

Composizione delle soluzioni Composizione delle soluzioni dei tre sottoproblemi 1, 2 e 3 dei tre sottoproblemi 1, 2 e 3

per risolvere il problema per risolvere il problema originariooriginario

…continua…

Page 18: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 18

Si dice procedura effettiva per un esecutore una successione di azioni tale che:- tutte le azioni della successione sono elementari per l’esecutore, che è in grado di eseguire ciascuna di esse in un tempo finito e in modo deterministico, cioè ottenendo sempre gli stessi risultati a parità di input- è fissato l’ordine di esecuzione delle azioni- è esplicitamente specificato il modo in cui un’azione utilizza i risultati delle azioni che la precedono

Procedura effettiva

Page 19: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 19

Dati un problema P e un esecutore E, si definisce soluzione effettiva del problema P per l’esecutore E una successione di istruzioni elementari tale che:- l’esecutore è in grado di interpretare le istruzioni nella successione e quindi di associare a ciascuna di esse l’azione (o la successione di azioni) che deve compiere per eseguirla- la successione di azioni risultante dall’interpretazione delle istruzioni costituisca una procedura effettiva per l’esecutore stesso

Soluzione effettiva

Page 20: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 20

Caratterizzazione formale di un esecutore

Sintattica: il linguaggio che l’esecutore è in grado di interpretare deve essere definito in modo completo e non ambiguo

Pragmatica: l’insieme delle azioni che l’esecutore è in grado di compiere deve essere univocamente definito, e tali azioni devono essere elementari per l’esecutore

Semantica: l’insieme delle regole di associazione tra costrutti del linguaggio e azioni deve essere definito in modo completo e non ambiguo

Page 21: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 21

Algoritmo

Definizione informale:Soluzioni effettive (soluzioni che possono essere rese comprensibili all’esecutore) per esecutori caratterizzati formalmente

Page 22: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 22

I calcolatori sono esecutori di soluzioni che esseri umani hanno precedentemente identificato e descritto- velocità di esecuzione- ripetitività e determinismo

Il calcolatore in quanto esecutore è caratterizzato da:- un linguaggio che è in grado di interpretare, con il quale devono essere descritte le soluzioni che vuole che esso attui- l’insieme delle azioni che è in grado di compiere-l’insieme delle regole (istruzioni) che a ogni costrutto linguistico sintatticamente corretto associano le rispettive azioni da compiere

Il calcolatore come esecutore

Page 23: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 23

1.analisi del problema e identificazione di una soluzione

2.formalizzazione della soluzione e definizione dell’algoritmo risolutivo (realizzata da esseri umani, e raramente supportata da strumenti CASE, Computer Aided Software Engineering);

3.programmazione, cioè scrittura del programma in un linguaggio di programmazione “ad alto livello” (programmatori con il supporto di opportuni ambienti di sviluppo)

4.traduzione del programma nel “linguaggio macchina” (svolta automaticamente)

Sviluppo di un programma

Page 24: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 24

Problema

Analisi Algoritmo

Programma Traduzione

Codice in linguaggio macchina

Soluzione

Esecuzione

Codifica

Soggetto 1: istruttore

Soggetto 2: esecutore

…continua…

Page 25: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 25

PROBLEMA

ANALISI SOLUZIONE

INFORMALE

FORMALIZZAZIONE SOLUZIONE

FORMALE

ALGORITMO

PROGRAMMAZIONE PROGRAMMA

(alto livello)

TRADUZIONE PROGRAMMA

(macchina)

SISTEMA INFORMATICO: AMBIENTE DI SVILUPPO TRADIZIONALE

ESECUZIONE

ESECUTORE DEL LINGUAGGIO DI ALTO LIVELLO

ESECUTORE DEL LINGUAGGIO

MACCHINA (HW)

SISTEMA INFORMATICO: STRUMENTI DI SUPPORTO EVOLUTI (CASE)

…continua…

procedura effettiva

Page 26: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 26

Algoritmo

Definizione formale:Sequenza finita di passi elementari e non ambigui atta alla risoluzione di una classe di problemi in tempo finito

algoritmo deriva dal nome di un matematico arabo Al-Khuwarizmi (IX sec d.C.)

Page 27: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 27

1. Inizio algoritmo 2. Acquisire i coefficienti a,b,c 3. Calcolare il valore = b2-4ac 4. Se <0 non esistono radici reale vai all’istruzione 8 5. Se =0 allora x1= x2= -b/2a

6. Se >0 allora x1=(-b + √ )/2a , x2=(-b - √ )/2a

7. Comunicare all’esterno i valori x1 e x2

8. Fine dell’algoritmo

Esempio: determinare le radici di una equazione di 2° grado

Page 28: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 28

…continua…

Finitezza

– il numero di istruzioni è finito

– ogni istruzione è eseguita in un intervallo finito di tempo

– ogni istruzione è eseguita un numero finito di volte

Page 29: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 29

Generalità

– un algoritmo deve fornire la soluzione ad una classe di problemi

•dato un insieme di definizione o dominio•dato un insieme di arrivo o codominio

l’algoritmo può operare su tutti i dati appartenenti al dominio per fornire una soluzione all’interno dei codominio

…continua…

Page 30: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 30

Non ambiguità

– le istruzioni sono definite in modo univoco

– non ci sono paradossi, contraddizioni, ambiguità

– il risultato dell’algoritmo è identico indipendentemente da chi lo sta eseguendo

…continua…

Page 31: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 31

Esempio

Algoritmo Delle Radici :Finitezza: 8 istruzioni, eseguite al più una volta. Tutte impiegano un tempo finito per essere valutate o eseguite.Generalità: in ingresso è ammissibile una qualsiasi tripla di numeri reali e l’uscita è un numero realeNon ambiguità: istruzioni ben definite: operazioni aritmetiche o confronti fra reali

Page 32: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 32

CorrettezzaCorrettezza

CompletezzaCompletezza

EfficienzaEfficienza

…continua…

Page 33: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 33

Descrizione degli algoritmi

Le proposizioni usate da un linguaggio formale descrivono due classi principali di entità:

Le OPERAZIONI che devono essere eseguite

I DATI, cioè gli oggetti sui quali si devono eseguire le operazioni

Page 34: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 34

Variabilità nel tempo -costanti -variabili

Struttura - elementari - strutturati

Tipo - predefinito - definito dall’utente

Visibilità - utente - codice

Criteri di classificazione dei DATI

Page 35: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 35

Costanti

dati che rimangono inalterati durante tutta l’esecuzione dell’algoritmo

Ex. Nell’Algoritmo delle radici in = b2-4ac, 4 è costante.

Page 36: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 36

si riferirsi ad un oggetto indipendentemente dal valore specifico di questo

<nome, valore>

alle variabili deve essere assegnato esplicitamente un valore dato che all’inizio di un algoritmo le variabili hanno un valore indeterminato

Ex: Nell’Algoritmo delle Radici sono presenti le variabili: a,b,c, x1 e x2

Variabili

Page 37: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 37

L’istruzione di assegnazione permette di definire il valore attuale di una variabile che rimane inalterato fino a una nuova assegnazione alla variabile

<nome espressione>

L’assegnazione viene eseguita nei seguenti passi:si valuta l’espressione di destrasi attribuisce il valore determinato alla variabile

Assegnazione

Page 38: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 38

Ogni volta che una variabile appare a destra dell’istruzione di assegnazione , è necessario che un valore sia già stato assegnato a quella variabile

Ex:nel caso a 2, b 3, c a+b, allora c=5

nel caso x 2, x x+3, allora x=5

nel caso a 2, a a+1, allora a=3

…continua…

Page 39: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 39

Scambiare il valore delle due variabili x e y

Esercizio

Page 40: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 40

Soluzione di getto

x←yy←x

y x;

x y;

7 9

x y

7 9

9 9

9 9

9 9

… … …

… … …

x y tempo

t1

t0

t3

t2

t4

…continua…

Page 41: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 41

tmp←xx←yy ← tmp

Soluzione

y tmp;

x y;

7 9

x y

7 9

9 9

9 9

9 7

… … …

… … …

x y

??

tmp

7

7

7

7

tmp

tmp x; 7 9

7 9

7

tempo

t1

t0

t3

t2

t4

t6

t5

??

Page 42: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 42

consentono di riferirsi a più valori reciprocamente correlati come se si trattasse di un’unica variabile aggregata - array (vettori, matrici, array multidimensionali) - record

Variabili strutturate

Page 43: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 43

Vettori

Una variabile vettore è una coppia<nome, insieme di valori>

vocali = A E U O I

pos. 0 pos. 1 pos. 2 pos. 3 pos. 4

Page 44: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 44

Ogni valore di un vettore è individuato dal nome della vettore seguito dal numero della posizione occupata (indice)Ex: vocali [i] i=0,…,4

La dimensione di un vettore è il numero dei suoi elementi

Assegnazione assegnazione per ogni elemento del vettore

…continua…

Page 45: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 45

Matrice

insieme di valori indicizzati da due o più indici

M[i,j]

Per una matrice a 2 dimensioni l’indice i è detto indice riga e j indice colonnaAssegnazione assegnazione per ogni elemento della matrice

Page 46: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 46

Esempio

… … … … … … … … … … … …

… … … … … … … …

… … … …

… … … …

f[0,0] f[0,1] f[0,j ] f[0,m]

f[1,0] f[, ] f[1, j ] f[1,m]

… … … … f[i,0] f[i ,1] f[i , j ] f[ i ,m]

… … … …

… … … … f[n,0] f[n,1] f[n, j ] f[n,m]

1, 1

Page 47: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 47

matr_vocali [1,2] Omatr_vocali [0,0] A

Esempio

matr_vocali =

I A O E

O U I E

I U U E

matr_vocali =

A A O E

O U O E

I U U E

Page 48: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 48

Record

strutture articolate, in cui una sola variabile comprende più componenti di diverso tipo, i componenti del record si definiscono campi

Assegnazione assegnazione per ogni camponome_record.nome_campo = valore

Page 49: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 49

Esempio

cod cognome nome indirizzo luogo n data nstudente =

intero stringa data

Page 50: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 50

Array di record

array i cui elementi sono di tipo record

Assegnazione assegnazione per ogni campo di ogni elementonome_array[i].nome_campo = valore

Page 51: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 51

Esempio

cod cognome nome indirizzo luogo n data nclasse =

cod cognome nome indirizzo luogo n data n

cod cognome nome indirizzo luogo n data n

…………………………………………….

Page 52: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 52

istruzioni di inizio/fine esecuzione

istruzioni di ingresso/uscita

istruzioni operative

istruzioni controllocondizionaliloop o di ciclosalto

Istruzioni

Page 53: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 53

Istruzioni di inizio/fine

Indicano quale istruzione dell’algoritmo debba essere eseguita inizialmente e quale determini la fine dell’esecuzione

Istruzioni di ingresso/uscitaIstruzioni che indicano una trasmissione di dati o messaggi fra l’algoritmo e tutto ciò che è esterno all’algoritmo

Page 54: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 54

Istruzioni operative

Istruzioni che producono un risultato se eseguite

Ex.: operazioni aritmetiche, logiche, funzioni matematiche e le assegnazioni, …

Ex:l'istruzione: 5+3l'istruzione: x 2l'istruzione: 3 mod 2 (mod resto della divisione intera)

Page 55: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 55

Istruzioni di controllo

Alterano il normale ordine di esecuzione delle istruzioni di un algoritmo, specificando esplicitamente quale sia la successiva istruzione da eseguire

Page 56: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 56

Istruzioni condizionali

Istruzioni che controllano il verificarsi di condizioni specificate e che in base al risultato determinano quale istruzione eseguire

Istruzioni che alterano il normale ordine di esecuzione delle istruzioni di un algoritmo, specificando esplicitamente quale sia la successiva istruzione da eseguire

if … then … else

Page 57: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 57

Istruzioni di loop o di ciclo

Determinano il ripetersi di una stessa serie di istruzione fintanto che una condizione rimane verificata (vera) o non verificata (falsa)Tale condizione può essere testata sia prima che dopo l’esecuzione, per la prima volta, della serie di istruzioni

for … do …

repeat … until …

Page 58: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 58

Esempio

Nell’Algoritmo delle Radici

Le istruzioni 1,8 sono di inizio/fineLe istruzioni 2,7 sono di ingresso/uscitaLa istruzione 3 è operativaLa istruzione 4 è di saltoLe istruzioni 5,6 sono condizionali

Page 59: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 59

Esprimere una condizione

Una condizione deve assumere valore vero o falso ed è costituita utilizzando operatori relazionali o operatori logici

Page 60: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 60

Esercizio

Esprimere

eta' compresa fra 18 e 60 anni60<=eta and eta>=18

altezza superiore a 1.90m oppure peso superiore a 100Kg

peso>100kg or altezza>190cm

un anno multiplo di 4 ma non multiplo di 100

(anno mod 4)=0 and not (anno mod 100)=0

Page 61: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 61

Esercizio

Per ciascuna delle seguenti formule fornire un insieme di valori per le variabili che le rendano vere  ((età = 20) AND (età >15)) OR (peso <50) età = 20 peso = 49 colore = qualsiasi ((peso > 0) AND (colore = 15)) OR (NOT (peso = 70)età =qualsiasi peso = 1 colore = 15 NOT ( NOT ( età > 31) ) OR (colore = giallo)età =32 peso =qualsiasi colore =verde

Page 62: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 62

Istruzioni di salto incondizionato

Vai a……

Page 63: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 63

formulato per essere comunicato tra esseri umani

-sintetico e intuitivo -linguaggio naturale, pseudo-codice, diagrammi di flusso

formulato per essere eseguito automaticamente

-preciso ed eseguibile -linguaggi comprensibili dagli esecutori automatici (linguaggio macchina o linguaggio di programmazione di alto livello)

Codifica degli algoritmi

Page 64: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 64

P1 leggi un valore dall’esterno e assegnalo alla variabile x;P2 leggi un secondo valore dall’esterno e assegnalo alla variabile y;P3 calcola la differenza d fra x e y, cioè esegui d ← x – y;P4 valuta se d è positivo: in caso affermativo prosegui con il passo P5, altrimenti (in caso negativo) salta al passo P7;P5 scrivi “il numero maggiore è ” seguito dal valore di x;P6 salta al passo P8;P7 scrivi “il numero maggiore è ” seguito dal valore di y;P8 termina l’esecuzione.

problema elementare

Esempio: determinare il maggiore di due numeri

Page 65: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 65

P1 leggi un valore dall’esterno e assegnalo alla variabile x;P2 leggi un secondo valore dall’esterno e assegnalo alla variabile y;P3 calcola la differenza d fra x e y, cioè esegui d ← x – y;P4 valuta se d è positivo: in caso affermativo prosegui con il passo P5, altrimenti (in caso negativo) salta al passo P7;P5 scrivi “il numero maggiore è ” seguito dal valore di x;P6 salta al passo P11;P7 valuta se d è nullo: in caso affermativo prosegui con il passo P8, altrimenti (in caso negativo) salta al passo P10;P8 scrivi “i due numeri sono uguali”;P9 salta al passo P11;P10 scrivi “il numero maggiore è ” seguito dal valore di y;P11 termina l’esecuzione.

Esempio: determinare il maggiore di due numeri

Page 66: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 66

P1P1 leggi i primi due numeri leggi i primi due numeri xx e e yy e valuta se e valuta se xx è è maggiore di maggiore di yy ( (problema precedenteproblema precedente):):

in caso in caso affermativoaffermativo prosegui con il passo prosegui con il passo P2P2;; in caso in caso negativo negativo salta al passo salta al passo P4P4;;P2P2 leggi il terzo numero leggi il terzo numero zz e presenta come soluzione e presenta come soluzione

il risultato del confronto fra il risultato del confronto fra xx e e zz ( (problema problema precedenteprecedente););P3P3 salta al passo salta al passo P5P5;;P4P4 leggi il terzo numero leggi il terzo numero zz e presenta come soluzione e presenta come soluzione il risultato del confronto fra il risultato del confronto fra y y e e z z ((problema problema precedenteprecedente););P5P5 termina l’esecuzione.termina l’esecuzione.

Esempio: determinare il maggiore di tre numeri

Page 67: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 67

P1P1 leggi i primi due numeri;leggi i primi due numeri;P2P2 trova il maggiore tra i primi due numeri;trova il maggiore tra i primi due numeri;P3P3 se ci sono altri numeri da esaminare procedi con il se ci sono altri numeri da esaminare procedi con il passo passo P4P4, altrimenti (se sono stati letti tutti i , altrimenti (se sono stati letti tutti i numeri) salta al passo numeri) salta al passo P7P7;;P4P4 leggi un nuovo numero;leggi un nuovo numero;P5P5 trova il maggiore fra il nuovo numero e il numero trova il maggiore fra il nuovo numero e il numero più grande trovato finora;più grande trovato finora;P6P6 torna al passo torna al passo P3P3;;P7P7 presenta all’utente il numero più grande trovato presenta all’utente il numero più grande trovato finora: questo è il maggiore dei numeri inseriti;finora: questo è il maggiore dei numeri inseriti;P8P8 termina l’esecuzione.termina l’esecuzione.

Esempio: determinare il maggiore di tot numeri

Page 68: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 68

Esercizio

Scrivere un algoritmo per effettuare il prodotto di due numeri naturali per somme ripetute

Page 69: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 69

P1 Leggi Leggi aaP2 Leggi Leggi bbP3 Somma Somma bb a se stesso a se stesso aa volte volteP4 Scrivi il risultato Scrivi il risultato

Esempio: prodotto di due numeri naturali per somme ripetute

Page 70: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 70

1.1. Leggi Leggi a a ee b b2.2. prod ← 0prod ← 03.3. finchè finchè aa ≠ 00 ripetiripeti

prodprod ←← prod prod ++ bb; aa ←← a - 1a - 1;

..continua…

Page 71: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 71

Diagrammi a blocchi

Linguaggio formale di tipo grafico per rappresentare gli algoritmi

Un particolare simbolo grafico detto blocco elementare è associato ad ogni tipo di istruzione elementare

I blocchi sono collegati tra loro tramite frecce che indicano il susseguirsi delle istruzioni

Page 72: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 72

blocchi elementari

…continua…

leggi x Abegin

Cend scrivi x

inizio input azione

vero falso

fineoutput

selezione

Page 73: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 73

…continua…

nome-sub

sottoprogramma

Problema terminale non elementare

Page 74: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 74

Un diagramma a blocchi descrive un algoritmo se: ha un blocco iniziale e uno finale è costituito da un numero finito di blocchi azione e/o

blocchi lettura/scrittura e/o blocchi di controllo ciascun blocco elementare soddisfa le seguenti

condizioni di validità:ciascun blocco azione, lettura/scrittura ha una sola freccia entrante e una sola freccia uscenteciascun blocco di controllo ha una sola freccia entrante e due uscenticiascuna freccia entra in un blocco o si innesta su una altra frecciaciascun blocco è raggiungibile dal blocco inizialeil blocco finale è raggiungibile da qualsiasi altro blocco

…continua…

Page 75: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 75

Analisi strutturata

Una descrizione è di tipo strutturato se i blocchi sono collegati tramite i seguenti schemi di flusso strutturato:

schema di sequenza

schema di selezione

schema di iterazione

In un diagramma a blocchi di tipo strutturato non apparirà mai una istruzione di salto incondizionato

Page 76: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 76

…continua…

Teorema di Bohm-JacopiniOgni diagramma a blocchi non strutturato è sempre trasformabile in un diagramma a blocchi strutturato ad esso equivalente

Page 77: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 77

Schema di sequenza:due o più schemi di flusso sono eseguiti in successioneNota: lo schema di sequenzaè strutturato se e solo se lo sono i blocchi S1 e S2

begin

end

S1

S2

…continua…

Page 78: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 78

Schema di selezione:

esiste un blocco di controllo

che permette di scegliere

quale schema di flusso

debba essere eseguito tra

due schemi, in funzione

del valore di verità

del controllo

begin

end

S1

C verofalso

begin

end

S1

C verofalso

S2

…continua…

Page 79: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 79

Schema di iterazione (ciclo o loop):

modo conciso per descrivere azioni che devono essere ripetute

begin

end

S1

C vero

falso

begin

end

S1

C

vero

falso

Page 80: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 80

I due schemi non sono equivalenti: in un caso lo schema S1 è eseguito almeno una volta e nell’altro potrebbe non essere mai eseguitoLa condizione vero/falso per il controllo possono essere invertite: si parla di iterazione per vero quando S1 è eseguito finché la condizione su C è vera e iterazione per falso nell’altro casoQuando è necessario eseguire lo stesso insieme di operazioni per un numero specificato di volte si adotta un particolare schema di iterazione:

inizia con una sequenza di azioni di assegnazione dette istruzioni di inizializzazionepossiede sequenza di azioni (iterazione) che viene ripetuta per un numero specificato di volte

…continua…

Page 81: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 81

inizializzazione

iterazione

condizione di fine ciclo

falso

vero

inizializzazione

iterazione

condizione di fine ciclo

falso

vero

…continua…

Page 82: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 82

Condizione di fine ciclo: viene controllata dopo l’esecuzione di ogni blocco di iterazione, può essere con controllo in coda al ciclo o in testa

Un ciclo è detto enumerativo quando è noto a priori il numero di volte che deve essere eseguito

Si usa un contatore di ciclo per controllarne l’esecuzione: si usa cioè una variabile che viene incrementata (o decrementata) fino a raggiungere un valore prefissato

…continua…

Page 83: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 83

Un ciclo è indefinito quando non è noto a priori il numero di volte che deve essere eseguito

Questo accade quando la condizione di fine ciclo dipende dal valore di una o più variabili che

o dipendono dall’interazione con l’esterno

o vengono modificate all’interno dell’iterazione in modo complesso

…continua…

Page 84: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 84

begin

end

INPUTa, b

prod ← 0prod ← 0

a<>0a<>0

vero

falso OUTPUTprod

prod ←prod + bprod ←prod + ba ← a – 1a ← a – 1

Esempio: prodotto di due numeri naturali per somme ripetute

1.1. Leggi Leggi a a ee b b2.2. prod ← 0prod ← 03.3. finchè finchè aa ≠ 00 ripetiripeti

prodprod ←← prod prod ++ bb; aa ←← a - 1a - 1;

Page 85: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 85

P3

Inizio

Leggi x e y

d x – y

d > 0 ? No

Fine

P1 e P2

P5

Scrivi “max è x”

P4

Scrivi “max è y”

P6

P7

Esempio: maggiore di due numeri naturali per differenza

P1 leggi un valore dall’esterno e assegnalo alla variabile x;P2 leggi un secondo valore dall’esterno e assegnalo alla variabile y;P3 calcola la differenza d fra x e y,cioè esegui d ← x – y;P4 valuta se d è positivo:in caso affermativo prosegui con il passo P5, altrimenti (in caso negativo) salta al passo P7;P5 scrivi “il numero maggiore è ” seguito dal valore di x;P6 salta al passo P8;P7 scrivi “il numero maggiore è ” seguito dal valore di y;P8 termina l’esecuzione.

Page 86: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 86

P1 leggi un valore dall’esterno e assegnalo alla variabile x;P2 leggi un secondo valore dall’esterno e assegnalo alla variabile y;P3 calcola la differenza d fra x e y,cioè esegui d ← x – y;P4 valuta se d è positivo:in caso affermativo prosegui con il passo P5, altrimenti (in caso negativo) salta al passo P7;P5 scrivi “il numero maggiore è ” seguito dal valore di x;P6 salta al passo P11;P7 valuta se d è nullo:in caso affermativo prosegui con il passo P8, altrimenti (in caso negativo) salta al passo P10;P8 scrivi “i due numeri sono uguali”;P9 salta al passo P11;P10scrivi “il numero maggiore è ” seguito dal valore di y;P11termina l’esecuzione.

…continua…

Page 87: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 87

Esempio: maggiore di tot numeri naturali

Page 88: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 88

Esempio

Page 89: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 89

Dato un intero N restituire N! Dato un intero N restituire N!

Esercizio

Page 90: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 90

Leggi N

P 1I 1

I < NNO SI

I I + 1P P * I

Scrivi P

1 * 2 = 22 * 3 = 66 * 4 = 24

24 * 5 = 120120 * 6 = 720720 * 7 = 5040

Soluzione 1

begin

end

Page 91: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 91

7 * 6 = 4242 * 5 = 210

210 * 4 = 840840 * 3 = 2520

2520 * 2 = 5040

Leggi N

P N

N > 2NO SI

N N - 1P P * N

Scrivi P

Soluzione 2

begin

end

Page 92: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 92

T pos N I P notet1 ?? ?? ??t2 4 ?? ??t3 4 1 1 I < Nt4 4 1 1t5 4 2 2 I < Nt6 4 2 2t7 4 3 6 I < Nt8 4 3 6t9 4 4 24 I = Nt10 4 4 24t11 4 4 24

Start

Leggi N

P 1I 1

I < NNO SI

I I + 1P P * I

Scrivi P

End

…continua…

Page 93: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 93

Start

Leggi N

P 1I 1

I < NNO SI

I I + 1P P * I

Scrivi P

End

Start

Leggi N

P N

N > 2NO SI

N N - 1P P * N

Scrivi P

EndN = 0 P = 1⇨N = -4 P = 1⇨

N = 0 P = 0⇨N = -4 P = -4⇨

…continua…

Page 94: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 94

N > 0NO SI

Scrivi“Errore!”

End

P 1I 1

I < NNO SI

I I + 1P P * I

Scrivi P

Start

Leggi N

Start

Leggi N

P 1I 1

I < NNO SI

I I + 1P P * I

Scrivi P

End

Start

Leggi N

P 1I 1

I < NNO SI

I I + 1P P * I

Scrivi P

End

N > 0NO SI

Scrivi“Errore!”

Gestione inserimenti indesiderati

…continua…

Page 95: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 95

Leggi N

funzione fattoriale(n)

n=0

NO

SI

fattoriale = n * fattoriale(n-1)

Scrivi fattoriale(N)

Soluzione 3: ricorsiva

begin

end

n=1

NO

SI

fattoriale = 1

fattoriale = 1

return

Page 96: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 96

Dato un intero N restituire la somma dei primi N numeri naturali

Esercizio

Page 97: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 97

Inizio

Leggi n

No Sì

ris 0 i 0

Scrivi ris

Fine

i > n ?

ris ris + i i i +1

Inizio

Leggi n

No Sì

ris n

Scrivi ris

Fine

n < 1 ?

n n –1 ris ris + n

Soluzione

Page 98: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 98

…continua…

Page 99: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 99

Start

Leggi N

S 0I 1

S S+II I+1

Scrivi S

END

I > N ?NOSI

Versione con un ciclo a condizione finale

…continua…

Page 100: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 100

Soluzione ottima

Page 101: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 101

Stampa del resto della divisione intera tra due numeri (senza la funzione mod)

Esercizio

Page 102: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 102

Soluzione

begin

end

INPUTX, Y

X < Y

falso

vero OUTPUTX

X X - Y

Inserimento di eventuali controlli “Y diverso da 0” “X o Y negativi”

Page 103: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 103

1. Stampa dell’area di un triangolo2. Stampa delle radici di una eq. di 2° grado 3. Stampa dei multipli di un numero in ingresso x minori di

y, x.y>04. Stampa della massima potenza minore di y di un numero

in ingresso x, x.y>05. Approssimazione intera, per eccesso, della radice

quadrata di un numero in ingresso positivo6. Stampa il quoziente della divisione intera tra due numeri

positivi utilizzando solo la differenza7. Dato un numero x in input, se x<10 allora stampa “ciao”

5 volte, se x>20 allora stampa “evviva” x volte, altrimenti chiedi un numero y in input e stampa “salve” x-y volte, se x>y, y-x volte altrimenti

Esercizi

Page 104: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 104

Soluzione 3begin

end

INPUTx , y

i 1

i * x < y

i i+1

falso

veroOUTPUT

i *x

X>0 and y>0

vero

falso

Page 105: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 105

Soluzione 4begin

end

INPUTx , y

i 1

i < y

i i * x

falso

vero

OUTPUTi/x

X>0 and y>0

vero

falso

Page 106: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 106

Soluzione 6begin

end

INPUTx , y

i 0

x >= y x x-yi i+1

falso

vero

OUTPUTi

X>0 and y>0

vero

falso

Page 107: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 107

Public Sub restoquoziente() 'stampa resto e quoziente della divisione intera tra x e y

'dichiarazioniDim n As StringDim X, Y, i As Integer

'corpoDon = InputBox("Inserisci un valore numerico maggiore di 0")Loop Until (Numero_Intero(n) And Val(n) > 0)X = Val(n)Don = InputBox("Inserisci un valore numerico maggiore di 0")Loop Until (Numero_Intero(n) And Val(n) > 0)Y = Val(n)i = 0Do While (X >= Y)X = X - Yi = i + 1LoopMsgBox "Resto: " & X & " Quoziente: " & iEnd Sub

Page 108: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 108

Soluzione 7begin

end

INPUTx

x < 10vero

falso

x > 20

INPUTy

x > y

vero

vero

falso

falso

Stampa(“ciao”,5)

Stampa(“evviva”,x)

Stampa(“salve”,x-y)

Stampa(“salve”,y-x)

Page 109: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 109

continua

Stampa(x,y)

end y>o

vero

falso

y y-1

OUTPUTx

Page 110: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 110

Dato un valore determinare se è presente tra gli elementi di un vettore

Esercizio

Page 111: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 111

Soluzione

Passo 1:- dati in ingresso (variabili) richiesti all’utente

- dati costanti propri del problema - output richiesto per ciascun input

Passo 2: da esempi concreti, astrazione della soluzione

Passo 3: scomposizione di ciascun passo individuato per la soluzione in uno o più passi elementari (descrivibili tramite blocchi )

Page 112: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 112

Passo 1:- vettore- elemento da cercare- eventualmente la dimensione del vettore di ingresso, altrimenti nessuno

Passo 2:Input: Vettore=(2,5,43,72,0,26,2,4) Elemento = 26Output: “Elemento trovato”Procedura: si esamina il primo elemento del vettore, se è 26 allora “Elemento

trovato”, altrimenti si prosegue con il secondo elemento. Se il secondo elemento è 26 allora “Elemento trovato”, altrimenti si prosegue con il terzo elemento, etc. fino alla fine degli elementi del vettore. Se l’elemento non è stato trovato dico “Elemento NON trovato”

Soluzione

Page 113: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 113

1. Controllo di tutti gli elementi del vettore ciclo con variabile che assume tutti i valori delle posizioni del vettore, per tutta la sua lunghezza.

2. Uscita dal ciclo con esito positivo quando l’elemento è stato trovato, con esito negativo quando la variabile di ciclo ha raggiunto la fine del vettore

Passo 3: formalizzazione del diagramma di flusso

…continua…

Page 114: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 114

begin

end

INPUTVettore , Elemento

i 0

dimensione Vettore K

i = Ki i+1

Vettore [i] = Elementoverofalso

falso

vero OUTPUTElemento NON trovato

OUTPUTElemento trovato

Passo 1, 1: dati in input dall’utente

Passo 1, 1: costanti del problema

…continua…

Page 115: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 115

begin

end

INPUTVettore , Elemento

i 0

dimensione Vettore K

i = Ki i+1

Vettore [i] = Elementoverofalso

falso

vero OUTPUTElemento NON trovato

OUTPUTElemento trovato

Passo 2: la variabile di ciclo i arriverà fino alla fine di Vettore

Passo 2: controllo se l’ i-esimo elemento del Vettore è quello cercato

Passo 2: ad ogni passo la variabile di ciclo i viene aumentata di 1 scorrendo gli elementi di Vettore

…continua…

Page 116: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 116

Soluzionebegin

end

INPUTVettore , Elemento

i 0

i = dimensione Vettorei i+1

Vettore [i] = Elementoverofalso

falso

vero OUTPUTElemento NON trovato

OUTPUTElemento trovato

Page 117: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 117

1. Dato un valore determinare la posizione della sua prima occorrenza se presente tra gli elementi di un vettore, altrimenti restituire la dimensione del vettore stesso

2. Determinare il valore massimo tra gli elementi di un vettore, non vuoto

3. Calcolare la media degli elementi di un vettore, non vuoto4. Determinare il numero di elementi pari in un vettore5. Determinare il numero di elementi positivi in un vettore6. Determinare il numero di occorrenze di un valore in un

vettore7. Dato un valore determinare la posizione della sua ultima

occorrenza se presente tra gli elementi di un vettore, altrimenti restituire la dimensione del vettore stesso

8. Dato un vettore di numeri interi ordinarlo in modo crescente

Esercizi

Page 118: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 118

Soluzione 1begin

end

INPUTVettore , Elemento

i 0Trovato=falso

i = dimensione Vettore ORtrovato

i i+1

trovato

vero

falso

falso veroOUTPUTi OUTPUT

i-1

Vettore[i]=Elemento

vero

falso

Trovato=vero

Page 119: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 119

Soluzione 2 begin

end

INPUTVettore

i 0Max Vettore [ i ]

i = dimensione Vettore-1

i i+1

Vettore [ i ] > Max

vero

falso

falso

vero OUTPUTMax

Max Vettore [ i ]

Page 120: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 120

Soluzione 3begin

end

INPUTVettore

i 0Media 0

K dimensione Vettore

i = K

falso

vero OUTPUTMedia

Media Media + Vettore [ i ]

i i+1

Media Media / K

Page 121: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 121

Soluzione 4begin

end

INPUTVettore

i 0conta 0

K dimensione Vettore

i = K

falso

vero OUTPUTconta

conta conta + 1

Vettore [ i ] mod 2 = 0

vero

falso

i i + 1

Page 122: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 122

Soluzione 7begin

end

INPUTVettore , Elemento

i 0pos dimensione Vettore

i = dimensione Vettore

i i+1Vettore [ i ] = Elemento

vero

falso

falso

vero

OUTPUTpos

pos = i

Page 123: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 123

Come comunicare

Linguaggio macchina: 01111100 00001 00010 00011- sequenze di 0 ed 1- rigoroso, essenziale

Linguaggio assembler: add R01, R02, R03- simbolico- semplice traduzione aggiuntiva

Linguaggio naturale: somma a a b- linguaggio preferito dall’essere umano- ambiguo, ridondante, non preciso, sintatticamente complesso

Linguaggio di programmazione ad alto livello: c = a+b

Page 124: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 124

Traduttori

traduttore

programma

macchina

Codice in linguaggio macchina

dati

macchina

Codice in linguaggiomacchina

risultati

Page 125: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 125

CompilatoriCompilatoriAccettano in ingresso l’intero programma e producono in uscita la rappresentazione dell'intero programma in linguaggio macchina

InterpretiInterpretiTraducono ed eseguono direttamente ciascuna istruzione del programma sorgente, istruzione per istruzione

Compilatori vs Interpreti

Page 126: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 126

Unità Centrale di ElaborazioneUnità Centrale di Elaborazione

Memoria

Bus di sistema

Programma P in un linguaggio ad alto livello L

Programma P’ in linguag-gio macchina della CPU

Programma compilatore del

linguaggio ad alto livello L

Dati del compilatore

Fase 1

Unità Centrale di ElaborazioneUnità Centrale di Elaborazione

Memoria

Bus di sistema

Dati del programma P’

Programma P’ in linguaggio macchina

della CPU Fase 2

Compilatori

Page 127: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 127

Unità Centrale di Elaborazione

Unità Centrale di Elaborazione

Memoria

Bus di sistema

Programma P in un linguaggio ad alto livello L

Dati del programma P

Programma interprete del

linguaggio ad alto livello L

Dati dell’interprete

Interpreti

Page 128: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 128

Compilazione-migliori prestazioni nell’esecuzione-attuazione di processi di ottimizzazione- tempi maggiori di messa a punto- copyright

Interpretazione- programmi meno efficienti- tempi di sviluppo più contenuti- buono per la fase di prototipazione- maggiore portabilità

…continua…

Page 129: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 129

-sintassi: insieme delle regole che specificano come comporre istruzioni ben formate

-semantica: specifica il significato di ogni istruzione ben formata determinando la successione delle operazioni che vengono compiute allorché l’istruzione viene eseguita

Linguaggio di programmazione

Page 130: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 130

Identificazione Identificazione del programmadel programma

Dichiarazione Dichiarazione delle variabili utilizzate (tipo e delle variabili utilizzate (tipo e nome)nome)

Specificazione della parte Specificazione della parte esecutiva esecutiva del del programma (programma (corpo del programma)corpo del programma)

Parti fondamentali di un programma

Page 131: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 131

Sottoprogrammi

Nella scrittura di un programma, ogni sottoproblema (sufficientemente ben definito) può essere assunto come terminale, ipotizzando quindi che esista una singola istruzione del linguaggio che lo risolve.Una volta completato il programma si passa a considerare i sottoproblemi pseudo-terminali e per ognuno si scrive un opportuno sottoprogramma che lo risolve

Struttura dei programmi comprensibile e modulare:- semplifica lo sviluppo- migliorare il coordinamento- facilità di debugging - estensione delle funzionalità

Page 132: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 132

Paradigmi di programmazione

Funzionale

Logico

Imperativo

Object Oriented

Page 133: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 133

Paradigma funzionale

combinazione di funzioni per ottenerne altre più potenti

(define (square x)*xx)

square(5)

Page 134: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 134

Paradigma logico

-uso di fatti, relazioni e regole per rappresentare l’informazione-uso della deduzione per ottenere domande a risposte

Minore(1,2)Minore(2,3)E_Minore(x,y):- Minore(x,y)E_Minore(x,y):- Minore(x,z)

E_Minore(z,y)

? E_Minore(1,3)

Page 135: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 135

Paradigma imperativo

inviare ordini alla macchina

Page 136: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 136

Paradigma OO

programma come contenitore di oggetti e la sua realizzazione consiste nella

- definizione delle caratteristiche di tali oggetti

- definizione delle regole che tali oggetti devono seguire al momento in cui si trovano ad interagire

Il programma stesso è a sua volta un oggetto capace di interagire con altri programmi/oggetti

Page 137: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 137

OO: concetto di classe

tipo di dato dotato di proprietà e metodi

Page 138: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 138

attributi che determinandone l'aspetto e le funzionalità dei membri di una classe

Molte proprietà sono comuni a diverse classi (ex.: ogni classe dovrebbe avere una proprietà in cui riportare il “nome specifico” di ciascun suo membro) altre sono più specifiche per una data classe

Solitamente sono di lettura/scrittura

OO: concetto di proprietà

Page 139: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 139

azioni che determinano ciò che i membri della classe possono svolgere

- modificare i valori delle proprietà di un oggetto - eseguire azioni sui dati memorizzati dall’oggetto

OO: concetto di metodo

Page 140: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 140

Esempio

Classe: Auto

MarcaPesoLunghezzaColoreStato

Pro

prie

MuoveFermaCambia_StatoMeto

di

Page 141: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 141

Oggetto = Istanza di una classeIstanza = assegnazione di un insieme di valori (ammissibili) a tutte o a parte delle proprietà di una classe

Ogni oggetto di una classe è univocamente determinato dai suoi valori rispetto alle proprietà presenti nella definizione della classe, esso eredita tutti i metodi della classe

OO: concetto di oggetto

Page 142: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 142

Esempio

Classe: Auto Oggetto: Mia_auto

MarcaPesoLunghezzaColoreStato

Pro

prie

MuoveFermaCambia_StatoMeto

di

Marca:FiatPeso: 1qLunghezza:1.5mColore:rossoStato:pessimo

Pro

prie

tàMuoveFermaCambia_StatoM

eto

di

Page 143: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 143

Eventi e procedure-evento

Un evento è un’azione che il sistema compie in risposta a un’azione effettuata dall’utente quando interagisce con un oggetto dell’applicazione

Una procedura-evento è una procedura specificamente associata a un dato evento che interessa un dato oggetto specificando il comportamento dell’applicazione in risposta al verificarsi dell’evento stesso

Page 144: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 144

Esempio

Classe: Auto Oggetto: Mia_auto

MarcaPesoLunghezzaColoreStato

Pro

prie

MuoveFermaCambia_StatoM

eto

di

Marca:FiatPeso: 1qLunghezza:1.5mColore:rossoStato:pessimo

Pro

prie

MuoveFermaCambia_StatoM

eto

di

IncidenteNon_parteE

ven

ti

IncidenteNon_parteE

ven

ti

Page 145: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 145

Esempio: CommandButton

Left

Top

Caption

Page 146: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 146

…continua…

Metodo

Eventi

Page 147: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 147

VBA

BASIC(Beginners All-Purpose Symbolic Instruction

Code)

- linguaggio semplice- molto diffuso- implemento nei primi calcolatori ad uso domestico

Page 148: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 148

VBA

VVisual

progettazione di interfacce grafiche di un'applicazione tramite un ambiente di sviluppo grafico utilizzando vari componenti già disponibili - semplice

- veloce- pesante

Page 149: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 149

VBA

AApplication

presente nelle applicazioni Office (ex. Word, Excel, Power Point ed Access) con lo scopo di rendere programmabili tali applicativi per personalizzarli a seconda delle specifiche esigenze

Page 150: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 150

VBA: linguaggio OO event-driven

Ogni oggetto inserito in un programma Visual Basic è in grado di riconoscere automaticamente gli eventi più comuni

clic dell'utente su un pulsantedigitazione in una casella di testoselezione di un comando di menucambiamento della risoluzioneaggiunta di una periferica al sistemaecc.

Page 151: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 151

Sottoprogrammi/Procedure

-suddividono il programma in unità logiche-semplificano il debug-semplificano le operazioni di programmazione-riuniscono operazioni ripetute o condivise

Tipi

- Function: restituiscono un singolo valore- Sub: compiono azioni, modificano valori di variabili o di proprietà

predefinite o definite dall’utente

Page 152: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 152

Procedure: sintassi di definizione

Sub nome (lista parametri) Function nome (lista parametri) as tipo… …End Sub End Function

Es:Sub ciao()CommandButton1.Caption = “Ciaoooo!”MsgBox “Mi sono modificato”End Sub

Private Sub CommandButton1_Click()CommandButton1.Caption = “Evviva”End Sub

procedura definita dall’utente

procedura legata ad un evento

Page 153: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 153

Procedure: sintassi di chiamata

Call nome(lista parametri)Nome(lista parametri)

Es:Sub ciao ()CommandButton1.Caption = “Ciaoooo!”MsgBox “Mi sono modificato”End Sub

Private Sub CommandButton1_Click()CommandButton1.Caption = “Evviva”Call ciaoEnd Sub

Page 154: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 154

functionfunction media (w asas integerinteger) as integerdimdim i, j, z as integeras integerdimdim p(100, 12) as integeras integer

i = 0j = 0Do whileDo while i <= 12 j = j + p(w, i) i = i + 1LoopLoopz = j / 12media = zend functionend function

dimdim w, fine, z as integeras integer

fine = 0Do whileDo while fine=0 inputinput w ifif w > 0 thenthen z = media(w) print z elseelse fine = -1 end ifend ifLoopLoop

Esempio

Page 155: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 155

Variabili e procedure

Variabile locale: dichiarata all’interno di una procedura e vive fintantoché la procedura è attiva. Non appena la procedura termina, anche la variabile cessa di esistere

Variabile di modulo: dichiarata all’inizio del modulo (fuori da ogni procedura) possono essere viste e modificate da qualsiasi procedura all’interno del modulo

Variabile pubblica: dichiarata all’inizio di un modulo con la parola chiave Public (fuori da ogni procedura) possono essere viste e modificate da qualsiasi procedura all’interno di un modulo che compone il progetto

Page 156: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 156

Esempio

Dim pippo as String

Sub ciao ()Pippo = “Ciao!”MsgBox pippoEnd Sub

Sub Evviva ()MsgBox pippoEnd Sub

Private Sub CommandButton1_Click()Ciao ‘ compare la scritta “Ciao!”Evviva ‘ compare la scritta “Ciao!”End Sub

Variabile DI MODULO Variabile LOCALE

Sub ciao ()Dim pippo as StringPippo = “Ciao!”MsgBox pippoEnd Sub

Sub Evviva ()MsgBox pippoEnd Sub

Private Sub CommandButton1_Click()Ciao ‘ compare la scritta “Ciao!”Evviva ‘ non compare alcuna scritta End Sub

Page 157: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 157

Parametri e procedure

Parametro passato per riferimento: è effettivamente modificabile permanentemente dal corpo della proceduraAnteporre la parola chiave Byref al nome della variabile nella lista degli argomenti e richiamare la procedura con Call

Parametro passato per valore: anche se modificato all’interno della procedura tale modifica cessa all’uscita dalla stessa

Page 158: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 158

Esempio

Sub ciao (pippo as String)pippo = “Ciao!”MsgBox pippoEnd Sub

Private Sub CommandButton1_Click()Dim par as stringpar =“Come stai?”ciao(par)MsgBox par ‘compare la scritta “Come stai?”End Sub

Variabile per valore Variabile per valore

Sub ciao (pippo as String)pippo = “Ciao!”MsgBox pippoEnd Sub

Private Sub CommandButton1_Click()Dim par as stringpar =“Come stai?”Call ciao(par)MsgBox par ‘compare la scritta “Come stai?”End Sub

Page 159: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 159

Esempio

Sub ciao (Byref pippo as String)pippo = “Ciao!”MsgBox pippoEnd Sub

Private Sub CommandButton1_Click()Dim par as stringpar =“Come stai?”ciao(par)MsgBox par ‘compare la scritta “Come stai?”End Sub

Variabile per valore Variabile per riferimento

Sub ciao (Byref pippo as String)pippo = “Ciao!”MsgBox pippoEnd Sub

Private Sub CommandButton1_Click()Dim par as stringpar =“Come stai?”Call ciao(par)MsgBox par ‘compare la scritta “Come stai?”End Sub

Page 160: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 160

1. Definizione del problema2. Definizione dell’algoritmo per la soluzione

del problema3. Codifica dell’algoritmo4. Debugging del programma5. Validazione del programma6. Produzione della documentazione

L’arte della programmazione

Page 161: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 161

Commenti e continuazione delle linee

Sintassi ‘ commento

quanto segue l’apostrofo è considerato commento ed è ignoratoEs: ‘ dichiarazione delle variabiliDim pippo as StringPippo = “ciao mondo!” ‘primo assegnamento di un valore a pippo

Sintassi spazio_continuazione a capoEs: CommandButton1.Label = “Questo viene scritto sopra il _bottone appena creato”

Page 162: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 162

Le costanti

valori non modificabili durante l’esecuzione

Dichiarazione:Const NomeCostante As TipoCostante = ValoreCostante

Page 163: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 163

Le variabili

contenitori etichettati (cioè con un nome, quello della variabile) che contengono un dato

Ogni variabile può contenere solo un determinato tipo di dato, che può essere specificato all’inizio del programma, all’atto della sua creazione. Se il tipo della variabile non viene specificato, il VBA procederà di volta in volta ad assegnarlo

Errori- assegnazione ad una variabile un tipo di dato diverso da quello dichiarato- utilizzo di una variabile senza una sua precedente definizione

Page 164: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 164

Tipi di variabili

Primitive numeriche

Parola chiave Tipo di informazione

Byte interi positivi

Integer interi

Long interi

Currency Importo monetario

Single Decimali con singola precisione

Double Decimali con doppia precisione

Page 165: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 165

…continua…

Primitive non numeriche

Parola chiave Tipo di informazione

String Stringhe

Date Date e ore

Boolean Valori logici

Variant Generica (conversione automatica)

Page 166: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 166

…continua…

Non primitive

Ex.: Controlli, fogli di lavoro, cartelle, etc…

Parola chiave Tipo di informazione

Object riferimenti verso altre variabili

Page 167: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 167

…continua…

Per la creazione di una variabile si usa la sintassi:Dim nome_variabile as tipo_variabile

Inizializzazioni per default-tipo numerico assegnato il valore 0-tipo String assegnata la stringa vuota-tipo boolean assegnato il valore False

Es: Dim a,b as Integer ‘ a e b avranno valore 0Dim c as Boolean ‘ c avrà valore False

Page 168: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 168

Vettori

insieme di dati ordinato che viene gestito tramite un nome ed un indice che indica la posizione dell’elemento all’interno del vettore stesso

Sintassi:Dim nome_vett1 (1 to 100) as tipo_dati (da 1)

oppureDim nome_vett2 (99) as tipo_dati (da 0)

oppureDim nome_vett3 (100) as tipo_dati

Option Base 1 (da 1)Es: Dim pippo (99) as Integerpippo (0) = 3pippo (1) = 9MsgBox pippo(0) & “ “ & pippo(1) & “ “ & pippo(2)

‘si visualizza 3 9 0

Page 169: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 169

Matrici

insieme di dati ordinato che viene gestito tramite un nome ed un insieme di indici che indica la posizione dell’elemento all’interno della matrice stessa

Sintassi:Dim nome_array1 (1 to 100, 1 to 20) as tipo_dati (da 1)

oppureDim nome_array2 (99,2) as tipo_dati (da 0)

oppureDim nome_array3 (100,5,8) as tipo_dati

Option Base 1 (da 1)

Page 170: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 170

Record

insieme di dati definito dall’utente gestito tramite un nome ed il riferimento al dato singolo all’interno del record

Sintassi:Type nome_struttura‘ tipo e nome campi

End TypeEs: type indirizzo via as string numero civico as integer ….. Provincia as stringend type

dim mio_indirizzo as indirizzo… …mio_indirizzo.via = … ………….

Page 171: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 171

Esercizio

Definire una struttura dati per memorizzare gli studenti del corso

Page 172: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 172

Soluzione

type studente matricola as integer cognome as string nome as string cdl as string …..end typeDim studenti_corso(1 to 400) as studentestudenti_corso(1).matricola = 501234studenti_corso(1).cognome = “Rossi”studenti_corso(1).nome = “Mario”studenti_corso(1).cdl = “Psicologia”….

Page 173: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 173

Operatori

Operatori aritmetici: + , -, *, /, \, mod, ^

Operatore di assegnazione: =

Operatori di stringa: &

Operatori logici: AND, OR, NOT

Operatori di confronto: =, <, >, <=, >=, <>

Page 174: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 174

Gerarchia di operatori

1.Operatori aritmetici

2.Operatori di concatenamento

3.Operatori di confronto

4.Operatori logici

Page 175: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 175

Blocchi di istruzioni

Le istruzioni elementari siano costrutti identificati dal fatto di essere scritti su di un’unica riga

Per istruzioni non elementari, è necessario indicare l’insieme di istruzioni (blocchi) che ne fanno parte

Per indicare blocchi di istruzioni come appartenenti alla stessa unità concettuale, i vari costrutti adoperano la convenzione di racchiudere le istruzioni fra una parola chiave PAROLA per specificare il tipo di istruzione e END PAROLA.

Page 176: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 176F

unzi

oni p

er in

tera

zion

e co

n l’u

tent

e

Page 177: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 177

Sub Main()Dim messaggio As VbMsgBoxResultobj = MsgBox("Testo visualizzato nella finestra", vbExclamation + vbYesNo, "Titolo finestra")End Sub

Esempio

3257146

Page 178: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 178F

unzi

oni p

er in

tera

zion

e co

n l’u

tent

e

Page 179: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 179

Esempio

Sub Main()Dim Risultato As StringRisultato = InputBox("Testo visualizzato nella finestra", "Titolo finestra", "Valore default")End Sub

Page 180: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 180

Funzioni matematiche

Page 181: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 181

Funzioni di conversione

Page 182: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 182

Funzioni per stringhe

Page 183: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 183

Istruzioni condizionali

valutano il valore di verità di una espressione e agiscono sulla base di ciò scegliendo tra due possibili insiemi (uno dei quali eventualmente vuoto) di istruzioni. Tali valutazioni e scelte possono anche essere annidate.

Sintassi

If <cond_1> Then <blocco_1>Elseif <cond_2><ablocco_2>…Else <blocco_3>End If

Semantica

Se cond_1 è vera allora compi le blocco_1 e prosegui dopo End If, altrimenti se cond_2 è vera allora compi le blocco_2 e prosegui dopo End If, altrimenti se … infine se nessuna delle espressioni è stata valutata vera, compi blocco_3 e prosegui dopo End If

Page 184: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 184

Selezione semplice

If <cond>Then <blocco> End If

begin

end

condvero

blocco

Page 185: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 185

Selezione a due vie

If <cond>Then <blocco_1> Else <blocco_2> End If

begin

end

blocco_1

espressioneverofalso

blocco_2

Page 186: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 186

Selezione a più vie

If <cond_1> Then <blocco_1> Elseif <cond_2> Then<blocco_2> Elseif <cond_3> Then<blocco_3>….Elseif <cond_n> Then<blocco_n> Else<blocco_n+1>End If

Page 187: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 187

Istruzioni di ciclo o loop

Valutano il valore di una variabile e compiono una serie di azioni fintantoché questo rimane all’interno di un determinato intervallo

La variabile coinvolta in un ciclo viene detta variabile di ciclo

I cicli possono essere: Ciclo con iterazione fissata: è un ciclo che si ripete esattamente un numero prefissato di volte, cioè viene fissato a priori l’intervallo di valori che la variabile di ciclo può assumere Ciclo indefinito: è un ciclo che si ripete un numero variabile di volte, a seconda della condizione inserita. In tal caso l’intervallo di valori ammissibile per la variabile di ciclo cambia ad ogni esecuzione del programma

L’intervallo di valori ammissibile per la variabile di ciclo può essere fornito sia tramite un intervallo numerico, sia tramite una lista di elementi

Page 188: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 188

Istruzioni di ciclo o loop

Sintassi ( For )

For variabile = inizio To fine <blocco>Next

For Each variabile In insieme<blocco>Next

Semantica ( For )

La variabile (numerica) prende tutti i valori tra inizio e fine e, per ciascuno di essi, viene compiuto <azioni>. La variabile passa da un valore al successivo alla lettura dell’istruzione Next, dopo la quale si verifica l’appartenenza all’intervallo inizio-fine.

Semantica ( For )

La variabile prende tutti i valori all’interno di insieme e, per ciascuno di essi, viene compiuto <azioni>. La variabile passa da un elemento di insieme al successivo alla lettura dell’istruzione Next. Quando non sono presenti altri elementi in insieme il ciclo termina.

Page 189: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 189

Diagramma di flusso

For nextEspressione

(valutazione della variabile di ciclo)

vero

falso

inizializzazione(variabile di ciclo)

blocco

incremento (variabile di ciclo)

Page 190: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 190

Istruzioni di ciclo o loop

Sintassi ( Do While )

Do While <cond> <blocco>Loop

Do<blocco>Loop While <cond>

Semantica (Do While)

cond viene valutata e <blocco> è compiuta fintantoché espressione è vera.

Se While è posto alla fine del ciclo, allora prima si

compie <blocco> e poi si verifica cond. In tal

modo <blocco> sono eseguite almeno una volta.

Semantica (Do Until)

cond viene valutata e <blocco> è compiuta fintantoché espressione è falsa.

Se Until è posto alla fine del ciclo, allora prima si

compie <blocco> e poi si verifica cond. In tal

modo <blocco> sono eseguite almeno una volta

Sintassi ( Do Until )

Do Until <cond> <blocco>Loop

Do<blocco>Loop Until <cond>

Page 191: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 191

Cicli a condizione finale

condvero

falso

inizializzazione

blocco

Do blocco Loop While cond Do blocco Loop Until cond

cond

vero

falso

inizializzazione

blocco

Page 192: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 192

Cicli a condizione iniziale

condvero

falso

inizializzazione

blocco

Do While cond blocco Loop Do Until cond blocco Loop

condfalso

vero

inizializzazione

blocco

Page 193: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 193

'prodotto VBAdim a, b, prod as integer……‘input a, b……prod = 0do while a <> 0 prod = prod + b a = a – 1loop……‘print prod……

begin

end

INPUTa, b

prod ← 0prod ← 0

a<>0a<>0

vero

falso OUTPUTprod

prod ←prod + bprod ←prod + ba ← a – 1a ← a – 1

Esempio

Page 194: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 194

Function Numero_Intero(stringa As String) As BooleanDim i As IntegerDim numero As Booleannumero = False

i = 1numero = TrueIf (Mid(stringa, 1, 1) = "-") Theni = i + 1End IfDo While (i <= Len(stringa) And numero)If (Not (Mid(stringa, i, 1) >= "0" And Mid(stringa, i, 1) <= "9")) Thennumero = FalseEnd Ifi = i + 1LoopNumero_Intero = numeroEnd Function

Page 195: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 195

Public Sub radici() 'calcolo delle radici di una equazione di secondo grado

'dichiarazione variabiliDim n As StringDim a, b, c, delta As Integer

'corpoDon = InputBox("Inserisci un valore numerico coefficiente di x elevato alla 2")Loop Until (Numero_Intero(n))a = Val(n)Don = InputBox("Inserisci un valore numerico coefficiente di x elevato alla 1")Loop Until (Numero_Intero(n))b = Val(n)Don = InputBox("Inserisci un valore numerico coefficiente di x elevato alla 0")Loop Until (Numero_Intero(n))c = Val(n)delta = b * b - 4 * a * cIf (delta < 0) ThenMsgBox "Non esistono radici nel campo dei reali"ElseIf (delta = 0) ThenMsgBox "Esistono due radici reali e coincidenti x1=x2=" & -b / (2 * a)ElseMsgBox "Esistono due radici reali e distinte x1=" & (-b - Sqr(delta)) / (2 * a) & " x2=" & (-b + Sqr(delta)) / (2 * a)End IfEnd Sub

Page 196: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 196

Soluzione 3begin

end

INPUTx , y

i 1

i * x < y

i i+1

falso

veroOUTPUT

i *x

X>0 and y>0

vero

falso

Page 197: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 197

Public Sub multipli() 'stampa dei multimpli di x fino al valore y

'dichiarazioniDim n As StringDim X, Y, i As Integer

'corpoDon = InputBox("Inserisci un valore numerico maggiore di 0")Loop Until (Numero_Intero(n) And Val(n) > 0)X = Val(n)Don = InputBox("Inserisci un valore numerico maggiore di 0")Loop Until (Numero_Intero(n) And Val(n) > 0)Y = Val(n)i = 1Do While (i * X < Y)MsgBox i & "° multiplo: " & i * Xi = i + 1LoopMsgBox "Fine sequenza"End Sub

Page 198: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 198

Soluzione 4begin

end

INPUTx , y

i 1

i < y

i i * x

falso

vero

OUTPUTi/x

X>0 and y>0

vero

falso

Page 199: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 199

Public Sub potenze() 'stampa potenze di x fino al valore y

'dichiarazioniDim n As StringDim X, Y, i As Integer

'corpoDon = InputBox("Inserisci un valore numerico maggiore di 0")Loop Until (Numero_Intero(n) And Val(n) > 0)X = Val(n)Don = InputBox("Inserisci un valore numerico maggiore di 0")Loop Until (Numero_Intero(n) And Val(n) > 0)Y = Val(n)i = 1Do While (i < Y)i = i * XLoopMsgBox "Potenza di " & X & " minore di " & Y & ": " & i / XEnd Sub

Page 200: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 200

Soluzione 6begin

end

INPUTx , y

i 0

x >= y x x-yi i+1

falso

vero

OUTPUTi

X>0 and y>0

vero

falso

Page 201: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 201

Public Sub restoquoziente() 'stampa resto e quoziente della divisione intera tra x e y

'dichiarazioniDim n As StringDim X, Y, i As Integer

'corpoDon = InputBox("Inserisci un valore numerico maggiore di 0")Loop Until (Numero_Intero(n) And Val(n) > 0)X = Val(n)Don = InputBox("Inserisci un valore numerico maggiore di 0")Loop Until (Numero_Intero(n) And Val(n) > 0)Y = Val(n)i = 0Do While (X >= Y)X = X - Yi = i + 1LoopMsgBox "Resto: " & X & " Quoziente: " & iEnd Sub

Page 202: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 202

Soluzione 7begin

end

INPUTx

x < 10vero

falso

x > 20

INPUTy

x > y

vero

vero

falso

falso

Stampa(“ciao”,5)

Stampa(“evviva”,x)

Stampa(“salve”,x-y)

Stampa(“salve”,y-x)

Page 203: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 203

Public Sub stampa()Dim n As StringDim X As IntegerDim Y As Integer

Don = InputBox("Inserisci un valore numerico maggiore di 0")Loop While (Not Numero_Intero(n) Or Val(n) < 0)X = Val(n)If (X < 10) ThenCall stamperipetute("ciao", 5)ElseIf (X > 20) ThenCall stamperipetute("evviva", X)ElseDon = InputBox("Inserisci un valore numerico maggiore di 0")Loop While (Not Numero_Intero(n) And Val(n) < 0)Y = Val(n)If (X > Y) ThenCall stamperipetute("salve", X - Y)ElseCall stamperipetute("salve", Y - X)End IfEnd IfEnd Sub

Page 204: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 204

continua

Stampa(x,y)

end y>o

vero

falso

y y-1

OUTPUTx

Page 205: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 205

Public Sub stamperipetute(pippo As String, volte As Integer)

'dichiarazioniDim i As Integer

'corpoFor i = 1 To volteMsgBox "stampa n. " & i & ": " & pippoNextEnd Sub

Page 206: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 206

EsempioPublic Sub conta()Dim n As StringDim i As Integeri = 0DoDon = InputBox("Inserisci un valore numerico intero, la stringa vuota termina l'inserimento")Loop Until (n = CStr(Val(n)) Or n = "")i = i + 1Loop While (n <> "")MsgBox "Numero elementi inseriti: " & i - 1End Sub

Page 207: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 207

EsempioPublic Sub contase()Dim n As StringDim i As Integeri = 0

DoDon = InputBox("Inserisci un valore numerico intero, la stringa vuota termina l'inserimento")Loop Until (n = CStr(Val(n)) Or n = "")

If (Val(n) Mod 2 = 0 And n <> "") Theni = i + 1End IfLoop While (n <> "")MsgBox "Numero elementi inseriti pari: " & iEnd Sub

Page 208: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 208

EsempioPublic Sub sommase()Dim n As StringDim i As Integeri = 0DoDon = InputBox("Inserisci un valore numerico intero, la stringa vuota termina l'inserimento")Loop Until (n = CStr(Val(n)) Or n = "")

If (Val(n) > 17) Theni = i + Val(n)End IfLoop While (n <> "")MsgBox "Somma elementi maggiori 17: " & iEnd Sub

Page 209: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 209

EsempioPublic Sub mediase()Dim n As StringDim i, somma As Integeri = 0somma = 0DoDon = InputBox("Inserisci un valore numerico intero, la stringa vuota termina l'inserimento")Loop Until (n = CStr(Val(n)) Or n = "")

If (Val(n) > 17) Theni = i + 1somma = somma + Val(n)End IfLoop While (n <> "")If (i=0) thenMsgBox “Nessun elemento sddisfa la condizione"ElseMsgBox "Media elementi maggiori 17: " & somma / iendifEnd Sub

Page 210: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 210

Ambiente di sviluppo

Strumenti -> Macro -> Visual Basic Editor

Page 211: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 211

La finestra progetto

Visualizza in modo gerarchico l'insieme dei file che compongono il progetto dell’applicazione oggetto di creazione

Ad ogni progetto sono associate quattro cartelle:- Microsoft Excel Oggetti: contiene il codice legato ai fogli ed alla cartella di lavoro - Form: contiene le interfaccia utente associate al progetto - Moduli: contiene i moduli di codice generici- Moduli di classe: contiene i moduli per la creazione di nuove classi di oggetti

Page 212: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 212

La finestra proprietà

Selezionando un oggetto la finestra Proprietà riporta tutti gli attributi relativi all’oggetto stesso, tra cui quelli relativi all'aspetto ed alle varie funzionalità Ex.: - Height: l’altezza del form che stiamo creando, - Icon: l’icona che sarà associata a tale form ecc…

Alla creazione di un oggetto alcuni attributi hanno valori di default, mentre altri ne sono privi, lasciando il loro eventuale settaggio al programmatore

Page 213: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 213

…continua…

Molti attributi sono comuni a diversi oggetti (ex.: Name), altri sono specifici di un controllo particolare (ex.: Interval è disponibile solo per il controllo Timer)

Solitamente le proprietà possono essere lette e impostate. Esistono proprietà di sola lettura.

Page 214: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 214

La finestra codice

Cliccando due volte su un oggetto si accede ad una finestra nella quale è possibile inserire il codice relativo all’oggetto stesso (per eventi predefiniti il codice inizialmente è automaticamente inserito)

Page 215: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 215

…continua…

In alto sulla finestra di codice vi sono due menù a tendina il cui contenuto dipende dall’oggetto selezionato nel progetto:– se modulo la prima lista contiene solo la voce General e la seconda contiene la lista di tutte le procedure– se documento (foglio di lavoro) o form la prima lista contiene la lista degli oggetti e la seconda gli eventi connessi con ciascun oggetto

Page 216: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 216

VisualizzaVisualizzatore oggetti

Elenco di tutti gli oggetti e relative caratteristiche, in particolare proprietà, subroutine e eventi

Page 217: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 217

InserisciUserForm

Page 218: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 218

Form e casella degli strumenti

Form: interfaccia utente della applicazione, personalizzabile a seconda del programma sviluppato ma con look and feel Windows

Casella degli strumenti: contiene una serie di icone ciascuna delle quali rappresenta un particolare oggetto inseribile sul form: etichette, caselle di testo, pulsanti, ecc.; selezionando un'icona è possibile creare direttamente sul form l'oggetto ad essa associato

Page 219: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 219

Le modalità dell’editor VBA

modalità di lavoro con l’editor VBA:1. modalità di scrittura (DESIGN): modalità di default, permette la scrittura del codice2. modalità di esecuzione (RUN): (Esegui -> Esegui Sub/User Form) una procedura si interrompe con il tasto Pausa/Interrompi3. modalità di tracciamento (BREAK): attivata da

- interruzione dell’esecuzione di una procedura

- verificarsi di un errore (mostrata una finestra con un codice di errore e una descrizione sommaria delle cause di errore)

- incontro di una condizione di interruzione programmata

Page 220: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 220

Gli errori

-sintattici: quando un’istruzione viene scritta in modo non corretto e l’interprete non la riconosce (Ex.: x==5 invece di x=5)

- logici: il risultato dell’elaborazione non coincide con quanto preventivato (Ex.: calcolo della media di 4 variabili sommando il valore di ciascuna e dividendo il risultato per 3, lettura di un file inesistente)

Page 221: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 221

Controlli: oggetti predefiniti in VBA

possono essere inseriti in una applicazione (ex. foglio Excel) o in una finestra di dialogo (form) e che prevedono proprietà, metodi ed eventi specifici

sono propri dell’applicazione alla quale si riferiscono

permettono di ricevere l'input dall'utente, visualizzare l'output e generare routine di eventi

possono essere gestiti (quasi sempre) utilizzando i metodi

spesso interattivi, ovvero rispondenti alle azioni eseguite dall'utente, più raramente statici, ovvero accessibili solo attraverso il codice

Page 222: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 222

Alcuni controlli standard di VBA

Immagine

Command button

Seleziona oggetti

Option Button

Combo BoxCheck Box

Label

Text Box

Scrolling Bar

Page 223: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 223

Nota Bene

Per visualizzare la lista completa delle proprietà, dei metodi e degli eventi relativi ad un dato controllo è utilizzare guida in linea (?)

Page 224: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 224

Command Button ( ) : proprietàavvia, termina o interrompe una o più azionipuò essere utilizzato per l'apertura di un altro formalcune proprietà:

Accelerator: contiene l’identificativo del tasto di scelta rapida del bottone (selezione premendo ALT + tale

tasto)Caption: indica le parole visualizzate sul bottone Control: restituisce o imposta un valore che indica se un pulsante di comando è il pulsante Annulla in un form (valore TRUE o FALSE)

Enabled: indica se il click è abilitato sul bottone Picture: percorso dell’eventuale immagine da inserire come sfondo del bottone Visible: indica se il bottone è visibile o no all’avvio del progetto (valore TRUE o FALSE)

Page 225: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 225

Evento di default del bottone: singolo click

Doppio click sul bottone.

Command Button ( ) :metodi e eventi

Page 226: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 226

Esercizio

Realizzare un form contenente una casella di testo e un pulsante il quale richiama una procedura che raddoppia il contenuto di ciò che è scritto nella casella di testo, se questo è un numero intero, altrimenti lo concatena a se stesso

Page 227: Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

Approfondimenti di Informatica Elaborazione dell'informazione 227

Soluzione

Sub raddoppia()Dim stringa As Stringstringa = TextBox1.TextIf (CStr(Val(stringa)) = stringa) ThenTextBox1.Text = Val(stringa) * 2ElseTextBox1.Text = stringa + stringaEnd IfEnd Sub

Private Sub CommandButton1_Click()raddoppiaEnd Sub