Lez ione 2 Diagrammi a blocchi

Transcript

Lez ione 2 Diagrammi a blocchi
Lez ione 2
Diagr ammi a blocchi
Analis i s tr uttur ata
Diagr ammi a blocchi
• E’ un linguaggio for male di tipo gr afico per
r appr es entar e gli algor itmi
• Attr aver s o il diagr amma a blocchi (o flow char t)
s i può indicar e l’or dine di es ecuz ione delle
is tr uz ioni.
• Un par ticolar e s imbolo gr afico detto blocco
elementar e è as s ociato ad ogni tipo di is tr uz ione
elementar e
• I blocchi s ono collegati tr a lor o tr amite fr ecce
che indicano il s us s eguir s i delle is tr uz ioni
1
Diagr amma a blocchi
• I blocchi elementar i s ono:
begin
Leggi
X
A
blocco iniz iale
blocco di lettur a
blocco az ione
end
blocco finale
Scr ivi
X
blocco di s crittur a
fals o
C
vero
blocco di contr ollo
Sottopr ogr amma
• Con il blocco
A
s ottopr ogramma
• s i indica un s ottopr ogr amma di cui è nota la
r appr es entaz ione in diagr amma a blocchi
2
Diagr amma a blocchi
• Un diagr amma a blocchi des cr ive un algor itmo
s e:
– ha un blocco iniz iale e uno finale
– è cos tituito da un numer o finito di blocchi az ione e/o
blocchi lettur a/s cr ittur a e/o blocchi di contr ollo
– cias cun blocco elementar e s oddis fa le condiz ioni di
validità
Diagr amma a blocchi
• Condiz ioni di validità
– cias cun blocco az ione, lettur a/s cr ittur a ha una s ola
fr eccia entr ante e una s ola fr eccia us cente
– cias cun blocco di contr ollo ha una s ola freccia entr ante
e due us centi
– cias cuna fr eccia entr a in un blocco o s i innes ta s u una
altr a fr eccia
– cias cun blocco è r aggiungibile dal blocco iniz iale
– il blocco finale è r aggiungibile da quals ias i altr o blocco
3
Es er ciz io
• Scr iver e un algor itmo e r appr es entar lo tr amite
un diagr amma a blocchi per i s eguenti pr oblemi:
–
–
–
–
attr avers ar e la s tr ada
calcolar e l’ar ea del tr iangolo
tr ovar e il max di due numer i
moltiplicar e due numer i (us ando s olo l’oper az ione di
s omma)
Analis i s tr uttur ata
• Analis i volta alla s tes ur a di des cr iz ioni di
algor itmi tr amite diagr ammi a blocchi di tipo
s tr uttur ato
• Un diagr amma a blocchi s tr uttur ato è più
facilmente compr ens ibile e modificabile
• In un diagr amma s tr uttur ato non appar ir à mai
una is tr uz ione di s alto incondiz ionato
4
Analis i s tr uttur ata
• T eor ema di Bohm- Jacopini
Ogni diagr amma a blocchi non s tr uttur ato è s empre
tr as for mabile in un diagr amma a blocchi s tr uttur ato ad
es s o equivalente
• dove due diagr ammi s ono equivalenti s e
par tendo dagli s tes s i dati iniz iali pr oducono gli
s tes s i r is ultati
Analis i s tr uttur ata
• Una des cr iz ione è di tipo s tr uttur ato s e i blocchi
s ono collegati tr amite i s eguenti s chemi di
flus s o s tr uttur ato:
– s chema di s equenz a
– s chema di s elez ione
– s chema di iter az ione
5
Analis i s tr uttur ata
• Schema di s equenz a
– due o più s chemi di flus s o s ono es eguiti in
s ucces s ione
• Nota: lo s chema di s equenz a
è s tr uttur ato s e e s olo s e lo s ono
i blocchi S 1 e S 2
begin
S1
S2
end
Analis i s tr uttur ata
• Schema di s elez ione
es is te un blocco di contr ollo
che permette di s ceglier e
quale s chema di flus s o
debba es s er e es eguito tra
due s chemi, in funz ione
del valor e di verità
del controllo
begin
fals o
C
begin
ver o
S1
end
fals o
C
S2
ver o
S1
end
6
Analis i s tr uttur ata
• Schema di iter az ione (ciclo o loop)
– modo concis o per des cr iver e az ioni che devono es s er e
r ipetute
begin
begin
S
C
ver o
fals o
end
S
C
fals o
ver o
end
Analis i s tr uttur ata
• Nota:
– I due s chemi non s ono equivalenti: in un cas o lo
s chema S è es eguito almeno una volta e nell’altr o
potr ebbe non es s er e mai es eguito
– La condiz ione ver o/fals o per il contr ollo pos s ono
es s er e inver tite: s i par la di iter az ione per ver o quando
S è es eguito finché la condiz ione s u C è ver a e
iteraz ione per fals o nell’altr o cas o
7
Note s ullo s chema di iter az ione
• Quando è neces s ar io es eguir e lo s tes s o ins ieme
di oper az ioni più volte s i adotta un par ticolar e
s chema di iter az ione:
– è cos tituito da una s equenz a di az ioni di as s egnaz ione
dette is tr uz ioni di iniz ializ z az ione
– una iter az ione (r ipetiz ione) di una s equenz a di az ioni
(iteraz ione) per un numer o s pecificato di volte
Analis i s tr uttur ata
iniz ializ z az ione
iniz ializ z az ione
fals o
iteraz ione
Condiz ione
di fine ciclo
Condiz ione
di fine ciclo
vero
fals o
iteraz ione
vero
8
Analis i s tr uttur ata
• Condiz ione di fine ciclo: viene contr ollata dopo
l’es ecuz ione di ogni blocco di iter az ione
• può es s er e con contr ollo in coda al ciclo o con
contr ollo in tes ta
Analis i s tr uttur ata
• Un ciclo è detto enumer ativo quando è noto a
pr ior i il numer o di volte che deve es s er e
es eguito
– s i us a la tecnica del contator e per contr ollarne
l’es ecuz ione: s i us a cioè una var iabile detta contator e
del ciclo che viene iniz ializ z ata oppor tunamente prima
di iniz iar e il ciclo e poi viene incr ementata (o
decr ementata) fino a r aggiunger e un valor e prefis s ato,
per mettendo cos ì di es eguir e una iter az ione un
numer o s peciicato di volte
9
Analis i s tr uttur ata
• Un ciclo e indefinito quando non è noto a pr ior i
il numer o di volte che deve es s er e es eguito
• Ques to accade quando la condiz ione di fine
ciclo dipende dal valor e di una o più var iabili
che o dipendono dall’inter az ione con l’es ter no o
vengono modificate all’inter no dell’iter az ione in
modo comples s o
Es er ciz i
• Ricer ca di un elemento in un vettor e
• Deter minar e il mas s imo numer o in un vettor e
• Media di un vettor e
10
Soluz ione: T r ova
begin
i←0
i←i+ 1
vero
V[i]= k
fals o
fals o i= 100
vero
s ucces s o
ins ucces s o
end
Soluz ione: Max
begin
i←1
max ←V[i]
i←i+ 1
fals o
V[i]> max
vero
max ←V[i]
fals o i= 100
vero
end
11
Soluz ione: Media
begin
input
V[K]
i←0
m ←0
i←i+ 1
m←m+ V[i]
fals o
i= K
vero
m←m/K
output
m
end
I pr ogr ammi
• Per far e s ì che un algor itmo s ia effettivamente
utiliz z abile da un es ecutor e automatico occor r e
eliminar e le ambiguità cir ca la codifica dei dati e
l’inter az ione con gli es s er i umani
• in gener ale dur ante la s tes ur a di un pr ogr amma
ci s i deve pr eoccupar e dei limiti nell’inter vallo di
r appr es entaz ione dei numer i, della dur ata non
nulla delle oper az ioni, etc
• La s oluz ione integr ata di ques te pr oblematiche
e di quelle dell’algor itmo in s é r is ulta comples s a
e r ichiede alta competenz a
12
Linguaggi di alto livello
• Per facilitar e la s tes ur a dei pr ogr ammi s ono s tati
definiti linguaggi di pr ogr ammaz ione di alto
livello che
– per mettono di des cr iver e le s oluz ioni dei pr oblemi ad
un livello di as traz ione di poco infer ior e a quanto vis to
fino ad or a per gli algor itmi
– per mettono di des cr iver e le oper az ioni di
ingres s o/us cita
– per mettono di definir e il tipo dei dati
– s ono tr aducibili automaticamente in linguaggio
macchina
Diver s ità dei linguaggi
• Sono s tati s viluppati diver s i linguaggi
– For tr an, Lis p, Cobol, Bas ic, Pas cal, C, C+ + , Java, Pr olog
• i linguaggi s i car atter iz z ano per
– s intas s i: l’ins ieme delle r egole che s pecificano come
compor r e is truz ioni ben for mate
– s emantica: l’ins ieme delle r egole che s pecificano come
as s ociar e ad una is tr uz ione una az ione da compier e
• la diver s ità fr a i var i linguaggi può cons is ter e
nella s intas s i (le s tes s e az ioni vengono des cr itte
con ter mini diver s i) o nella s emantica
13
VBA
Il Vis ual Bas ic for Application
–La documentaz ione
–Le cos tanti e le var iabili
–L’as s egnaz ione
–Gli oper ator i
L’ar te della pr ogr ammaz ione
• La s oluz ione di un pr oblema tr amite un
pr ogr amma è un pr ocedimento che non s i
es aur is ce s olo nello s cr iver e linee di codice in un
dato linguaggio di pr ogr ammaz ione, ma
compr ende una fas e di pr ogetto che pr ecede e
di ver ifica che s egue la s cr ittur a del codice
14
L’ar te della pr ogr ammaz ione
•
•
•
•
•
•
•
Definiz ione del pr oblema
Algor itmo per la s oluz ione del pr oblema
Codifica
Debugging
Validaz ione
Documentaz ione
Manutenz ione
Definiz ione del pr oblema
• Definiz ione degli ingr es s i e delle us cite
– quali variabili
– quale dominio per ogni var iabile
• Ris oluz ione delle ambiguità
• Scompos iz ione in pr oblemi più s emplici
15
Algor itmo
• Soluz ione in ps eudocodice
• Soluz ione in diagr amma a blocchi s tr uttur ato
Codifica
• T r aduz ione dell’algor itmo in is tr uz ioni del
linguaggio di pr ogr ammaz ione
16
Debugging
• Cor r ez ione degli er r or i s intattici e s emantici
• Er r or i s intattici
– es pr es s ioni non valide o non ben for mate nel
linguaggio di pr ogr ammaz ione
• Er r or i s emantici
– compor tamento non ader ente alle as pettative/alla
intenz ionalità del programmatore
Validaz ione
• T es t s u tutte le condiz ioni oper ative del
pr ogr amma
• Cas o degli input es tr emi (vettor i di dimens ione
0 o 1, var iabili nulle)
17
Documentaz ione
• Ins er imento di commenti es plicativi nelle var ie
par ti del pr ogr amma per facilitar ne la
compr ens ione dopo molto tempo dalla s ua
s tes ur a o per ter z e per s one
Manutenz ione
• Modifica del pr ogr amma per s oddis far e il
cambiamento delle s pecifiche con cui deve
oper ar e
18
Commenti
• L’impor tanz a dei commenti e della
documentaz ione:
– i pr ogr ammi vengono utiliz z ati più volte nel cor s o di
tempi lunghi (mes i, anni)
• far e cambiamenti (aggiunta di car atter is tiche)
• r is olver e er r or i
– documentar e il pr ogr amma s erve per r ender e chiaro ed
evidente lo s copo delle var ie par ti del codice
Commenti
• Si devono evitar e commenti inutili
• Es :
‘Set the variable x to 5
x=5
• Si deve evitar e di ins er ir ne tr oppo pochi
• Un buon modo per ver ificar e il livello di
commento è quello di legger e s olo i commenti
(e non il codice) ed ottener e una chiar a idea di
cos a fa un pr ogr amma e di come lo fa
19
Commenti
• La s intas s i per aggiunger e commenti in VBA è
‘ commento
• T utto ciò che s egue un apos tr ofo è cons ider ato
un commento ed è ignor ato dal VBA
• Es empio:
‘ Dichiarazioni
Dim Nome as String
name = ActiveDocument.Name ‘Acquisisci nome
Continuaz ione delle linee
• Può es s er e più conveniente per la lettur a da
par te di un es s er e umano s pez z ar e s u più linee
il codice tr oppo lungo
• Lo s i fa con un car atter e di under s cor e _
pr eceduto da uno s paz io e andando a capo
s ubito dopo
• Es empio:
ActiveDocument.Paragraphs(1).Alignment = _
wdAlignParagraphCenter
20
Le cos tanti
• Vi s ono due tipi di cos tanti
– cos tanti letter ali
– cos tanti s imboliche
• Le cos tanti letter ali s ono valor i s pecifici, come
numer i, date, s tr inghe che non pos s ono es s er e
modificate e che s ono us ate es attamente come
vengono s cr itte
• Es empio:
num=45
nome=“Mario Rossi”
oggi=#1/5/03#
Le cos tanti
• Le cos tanti s imboliche fanno invece us o di un
nome per r ifer ir s i alla cos tante letter ale
• per indicar e che un nome s i r ifer is ce ad una
cos tante s i pr emette al nome l’identificativo
Cons t
• Es empio:
Const nome = “Giovanni Verdi”
21
Le cos tanti
• E’ buona nor ma dichiar ar e tutte le cos tanti
s imboliche all’iniz io della pr ocedur a in cui s ono
utiliz z ate
• ques to per miglior ar e la leggibilità
Enumer az ioni
• Quando vi è un ins ieme ampio di cos tanti
numer iche inter e s i può utiliz z ar e il cos tr utto
enum
• la s intas s i è:
Enum nome_complessivo
si=0
no=1
forse=2
End Enum
22
Enumer az ioni
• Es empio:
If risposta = si Then …
• Che è meglio di
If risposta = 0 Then …
• Un cas o comune è di us ar e il cos tr utto enum per
definir e i color i in VBA:
Enum ColorConstants
vbBlue=16711680
vbRed=255
End Enum
Var iabili e tipi di dati
• Una var iabile è una s catola (una locaz ione di
memor ia) che può contener e valor i di tipo
s pecificato
• Il valor e contenuto può var iar e dur ante il
pr ogr amma, da cui il nome “var iabile”
23
T ipi di dato
• Vi s ono 5 tipi di dato pr edefiniti in VBA:
Tipo
Dimensione Intervallo
Byte
1 0-255
Boolean
2 true/false
Integer
2 -32768 +32767
Long
4 2 miliardi
Single
4 -3.4E38 +3.4E38
Double
8 -1.8E308 4.9E324
Currency
8 1E16
Date
8 1/1/100 12/31/9999
Object
4
String
variabile
Variant
16
La dichiar az ione di var iabili
• Dichiar ar e una var iabile s ignifica definir ne il
nome ed il tipo
• Le var iabili s i dichiar ano nel s eguente modo
Dim NomeVariabile As TipoDato
•
ovver o pr emettendo lo s pecificator e Dim al
nome della var iabile e facendo s eguir e As e il
tipo di dato
24
Nomi per var iabili
• Quals ias i car atter e alfabetico (maius colo e
minus colo) e il s egno di under s cor e _ vanno
bene per for mar e il nome di una var iabile
• s i pos s ono us ar e anche numer i a patto che non
s iano i pr imi car atter i del nome
• Es empi cor r etti:
– nome_cognome
– nome23
– NomeCognome
• Es empi non cor r etti:
– 23nome
– nome%cognome
Nota
• Se non dichiar ate il tipo VBA as s umer à che il
tipo s ia Var iant
• s i pos s ono metter e più dichiar az ioni s u una
s tes s a linea come in
Dim a As Integer, b As Integer, d As Double
• non s i pos s ono dichiar ar e con
Dim a, b As Integer, d As Double
• cioè ogni var iabile deve aver e s pecificato il tipo
25
Var iabili implicite
•
•
•
•
!! Attenz ione !!
Pur tr oppo il Bas ic per mette di utiliz z ar e
var iabili s enz a che s iano pr ecedentemente
dichiar ate!
Una var iabile di ques to tipo viene cons ider ata
Var iant e dichiar ata automaticamente ed
implicitamente quando viene us ata
ques to è un pes s imo s tile di pr ogr ammaz ione
e’ buona nor ma dichiar ar e tutte le var iabili con i l
lor o tipo all’iniz io del pr ogr amma che le us a
Nota
• E’ facile veder e come ques to pos s a cr ear e er r or i
difficili da individuar e
• s i pens i ad un pr ogr amma dove indichiamo una
var iabile che debba contener e il r is ultato di un
calcolo con il nome ilMioRis ultato e per s baglio
utiliz z iamo s ucces s ivamente la var iabile
indicandola con il nome llMioRis ultato
• in ques to cas o il VBA is tanz ier à
automaticamente una nuova var iabile che non
conter r à il dato che ci as pettiamo!
26
Dichiar az ione es plicita
• Per r ender e la dichiar az ione delle var iabili
obbligator ia s i pr emette al pr ogr amma
l’is tr uz ione
Option Explicit
• ques to fa in modo che venga s egnalato come
er r or e l’us o non dichiar ato di una var iabile
T ipo numer ico
• I numer i pos s ono es s er e manipolati e
memor iz z ati tr amite var iabili di tipo Integer ,
Long, Single, Double e Cur r ency
• In gener ale avr emo a che far e s olo con
– Integer per trattare inter i (pos itivi e negativi)
– Single per tr attar e numer i decimali (pos itivi e negativi)
27
T ipo Booleano
• Il tipo Boolean pr ende s olo due valor i tr ue e
fals e
• è utile quando vogliamo r ealiz z ar e funz ioni che
pos s ano ver ificar e delle condiz ioni s u
pr opos iz ioni e deter minar ne il valor e di ver ità
T ipo s tr inga
• Il tipo s tr ing è una s equenz a di car atter i
• La s tr inga vuota non ha alcun car atter e
• Una s tr inga può contener e letter e, numer i, s egni
di inter punz ione
• ma può anche contener e car atter i s peciali di
contr ollo come ad es :
– vbCrLf per andar e a capo
– vbT ab per ins er ir e un s egno di tabulaz ione
28
Concatenaz ione di s tr inghe
• Per unir e fr a di lor o una o più s tr inghe s i us a
l’oper ator e di concatenaz ione &
• Es empio:
Dim nome As String
Dim cognome As String
Dim ris As String
nome=“Mario”
cognome=“Rossi”
ris=nome & cognome
T ipo Data
• Per mettono la manipolaz ione e la
memor iz z az ione di dati di tipo Data
• Si pos s ono as s egnar e tr amite cos tanti letter ali di
data come in
Dim dt As Date
dt=#1/2/98#
• o in for ma di s tr inga
dt = “January 12, 2001”
• Nota: noi non le us er emo
29
T ipo Var iant
• Il tipo Var iant per mette di memor iz z ar e un
quals ias i altr o tipo di dato
• in gener e è uno s pr eco di memor ia utiliz z ar e i
var iant invece che il tipo appr opr iato
– s i pens i ad es empio ad un vettor e di inter i di gr os s e
dimens ioni
• inoltr e mantener e l’infor maz ione del tipo di
dato as s ociato con una var iabile per mette di
evitar e er r or i logici
Oggetti di Wor d
• Il VBA per Wor d for nis ce un elevato numer o di
tipi di dato s pecifico per Wor d
• Fr a ques ti:
–
–
–
–
–
Document
Font
Par agr aph
T able
etc
30
Dichiar az ione e as s egnaz ione di Oggetti
• La dichiar az ione di una var iabile di un tipo
oggetto avviene nel modo us uale tr amite lo
s pecificator e Dim
Dim doc As Document
Dim fnt As Font
• L’as s egnaz ione invece avviene diver s amente: s i
deve pr emetter e lo s pecificator e Set
Set doc = ActiveDocument
Vettor i
• Un vettor e o ar r ay è una collez ione di dati che
s ono manipolabili tr amite uno s tes s o nome e un
indice.
• Si dichiar a nel modo s eguente
Dim vet(1 To 100) As Integer
• oppur e
Dim vet(99) As Integer
• infatti s e s i omette il pr imo indice ques to vi ene
cons ider ato 0
31
Vettor i dinamici
• Nel cas o in cui non s ia nota a pr ior i la
dimens ione dei dati s i può dichiar ar e un vettor e
come
Dim vect() As Integer
• dopodichè è pos s ibile s pecificar ne la
dimens ione utiliz z ando l’is tr uz ione ReDim
ReDim vect(1 To 100)
Pr es er ve
• Il r idimens ionamento di un vettor e compor ta la
dis tr uz ione dei dati contenuti
• cos ì non s ar ebbe pos s ibile r idimens ionar e un
vettor e via via che ne s or ges s e la neces s ità
dur ante l’es ecuz ione di un pr ogr amma
• per cons er var e i dati s i ins er is ce lo s pecificator e
Pr es er ve, ottenendo:
ReDim Preserve vect(1 To 200)
32
UBound
• Nel cas o in cui s i voglia conos cer e la dimens i one
di un vettor e dinamico s i utiliz z a la funz ione
UBound che r es tituis ce il limite s uper ior e (Upper
Bound) del vettor e
• UBound(vect)
• Nota: un vettor e di capacità 100 elementi può
contener ne un numer o minor e: UBound
r es tituis ce la capacità del vettor e e non quanti
elementi effettivamente ci s iano
La vis ibilità
(s cope)
• Le var iabili (s tes s o identico dis cor s o per le
cos tanti) hanno una vis ibilità all’inter no delle
var ie par ti che copongono un pr ogr amma
• ciò s ignifica che le var iabili pos s ono es s er e
dichiar ate in un punto del pr ogr amma ed us ate
in un altr o
• quando una var iabile non è più vis ibile non s i
può più far e r ifer imento ad es s a
33
Vis ibilità
• Le var iabili pos s ono aver e vis ibilità locale o
globale
• hanno vis ibilità globale quelle var iabili
dichiar ate al di fuor i di ogni pr ocedur a
• hanno vis ibilità locale le var iabili dichiar ate
all’inter no di una pr ocedur a o funz ione
La iniz ializ z az ione delle var iabili
• Quando una pr ocedur a iniz ia la pr opr ia
es ecuz ione tutte le var iabili s ono iniz ializ z ate
con un valor e di default (in gener e 0 per i
numer i e la s tr inga nulla per le s tr inghe)
• tuttavia è bene non affidar s i a ques te
iniz ializ z az ioni automatiche
• è buona nor ma iniz ializ z ar e es plicitamente le
tutte le var iabili
34
Gli oper ator i
• Gli oper ator i s ono dei s imboli e par ole chi ave in
VBA us ati per r appr es entar e in modo più
compatto is tr uz ioni fr equenti
• Gli oper ator i s i dividono in:
–
–
–
–
oper ator i
oper ator i
oper ator i
oper ator i
ar itmetici
di s tr inga
logici
compar ativi
Oper ator i
• Oper ator i ar itmetici
–
–
–
–
–
–
–
addiz ione
s ottr az ione
moltiplicaz ione
divis ione
divis ione inter a
es ponente
modulo
+
*
/
\
^
Mod
35
Oper ator i
• Oper ator i di s tr inga
– concatenaz ione &
• Oper ator i logici
– E
– O
– negaz ione
AND
OR
NOT
Oper ator i
• Oper ator i compar ativi
–
–
–
–
–
–
Egualianz a
Maggior e
Minor e
Magg. eguale
Minor e eguale
Non eguale
=
>
<
> = oppur e = >
< = oppur e = <
< > oppur e > <
36