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