La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione.

Presentazioni simili


Presentazione sul tema: "Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione."— Transcript della presentazione:

1 Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione

2 Approfondimenti di Informatica Elaborazione dell'informazione2 Informatica Hardware Software Modulo Centrale Modulo Centrale Periferiche Software di base Software di base Software applicativo Software applicativo

3 Approfondimenti di Informatica Elaborazione dell'informazione3 …continua… Calcolatore ProgrammaInputOutput

4 Approfondimenti di Informatica Elaborazione dell'informazione4 Quotidianamente Soluzione di problemi Elaborazione di informazione un insieme di dati di partenza un risultato cercato una soluzione: procedura che genera il risultato a partire dai dati di partenza Esempi: calcolare larea di un cerchio riconoscere il volto di una persona

5 Approfondimenti di Informatica Elaborazione dell'informazione5 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.

6 Approfondimenti di Informatica Elaborazione dell'informazione6 Modello F = m × a fttt re1214 tf1315 Costruzione modello Ricerca della soluzione Interpretazione della soluzione Mondo Reale Relazione tra realtà e modello

7 Approfondimenti di Informatica Elaborazione dell'informazione7 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?

8 Approfondimenti di Informatica Elaborazione dell'informazione8 Istruttore vs esecutore Lesperto che conosce la soluzione di un problema comunica come operare per risolvere il problema

9 Approfondimenti di Informatica Elaborazione dell'informazione9 Il processo che porta alla soluzione di un problema è quindi unattività di natura logico-linguistica, che può essere studiata nelle sue caratteristiche prescindendo in larga misura dalla struttura fisica dellesecutore …continua…

10 Approfondimenti di Informatica Elaborazione dell'informazione10 Conoscenza di come si risolve il problema Descrizione della soluzione Effettiva capacità di eseguire la procedura risolutiva di un problema Soggett o 1 (cuoco) Soggetto 2 (io) (ricetta) Processo di soluzione di un pb.

11 Approfondimenti di Informatica Elaborazione dell'informazione11 Problem a Analisi Modello di Soluzione Soluzione descritta Interpretazione Descrizione interpretata Soluzione Attuazione Descrizion e Soggetto 1: istruttore Soggetto 2: esecutore …continua…

12 Approfondimenti di Informatica Elaborazione dell'informazione12 …continua… Problema elementare: listruttore riconosce listruzione corrispondente e la comunica allesecutore che associa tale istruzione a una azione che infine esegue Problema complesso: - listruttore 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 -lesecutore attua delle azioni elementari associate alle istruzioni elementari identificate

13 Approfondimenti di Informatica Elaborazione dell'informazione13 Finitezza Finitezza lazione deve concludersi in un tempo finito Osservabilità Osservabilità lazione 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

14 Approfondimenti di Informatica Elaborazione dell'informazione14 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…

15 Approfondimenti di Informatica Elaborazione dell'informazione15 h2h2h2h2 h1h1h1h1 B r=b/2 b Problema h2h2h2h2 b h1h1h1h1 B Sottoproblema 1 Sottoproblema 2 Sottoproblema 3 soluzione elementare: s = ½ r 2 soluzione elementare: s = b h 2 r Scomposizione del problema in sottoproblemi soluzione elementare: s = ?? soluzione elementare: s = ?? Esempio: area di una campana

16 Approfondimenti di Informatica Elaborazione dell'informazione16 Sottoproblema 3 h1h1h1h1 b h1h1h1h1 ½ (B–b) h1h1h1h1 Sottoproblema 3.1 soluzione elementare: s =½ (½(B–b) h 1 ) Sottoproblema 3.2 soluzione elementare: s = b h 1 soluzione effettiva: s = ½ (½(B–b) h 1 ) + b h 1 + b h 1 + ½ (½(B–b) h 1 ) ½ (½(B–b) h 1 ) Sottoproblema 3.3 soluzione elementare: s =½ (½(B–b) h 1 ) Scomposizione del sottoproblema 3 in tre ulteriori sottoproblemi Composizione delle soluzioni dei tre sottoproblemi 3.1, 3.2 e 3.3 per risolvere il sottoproblema 3 h1h1h1h1 B b …continua…

17 Approfondimenti di Informatica Elaborazione dell'informazione17 h2h2h2h2 h1h1h1h1 B r=b/2r=b/2r=b/2r=b/2 b Problema h2h2h2h2 b h1h1h1h1 B Sottoproblema 1 Sottoproblema 2 Sottoproblema 3 soluzione elementare: s = ½ r 2 soluzione elementare: s = b h 2 r soluzione effettiva: s = ½ (½(B–b) h 1 ) + b h 1 + b h 1 + ½ (½(B–b) h 1 ) ½ (½(B–b) h 1 ) soluzione effettiva: s = ½ r 2 + b h 2 + b h 2 + ½ (½(B–b) h 1 ) + ½ (½(B–b) h 1 ) + b h 1 + b h 1 + ½ (½(B–b) h 1 ) ½ (½(B–b) h 1 ) Composizione delle soluzioni dei tre sottoproblemi 1, 2 e 3 per risolvere il problema originario …continua…

18 Approfondimenti di Informatica Elaborazione dell'informazione18 Si dice procedura effettiva per un esecutore una successione di azioni tale che: - tutte le azioni della successione sono elementari per lesecutore, 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 lordine di esecuzione delle azioni - è esplicitamente specificato il modo in cui unazione utilizza i risultati delle azioni che la precedono Procedura effettiva

19 Approfondimenti di Informatica Elaborazione dell'informazione19 Dati un problema P e un esecutore E, si definisce soluzione effettiva del problema P per lesecutore E una successione di istruzioni elementari tale che: - lesecutore è in grado di interpretare le istruzioni nella successione e quindi di associare a ciascuna di esse lazione (o la successione di azioni) che deve compiere per eseguirla - la successione di azioni risultante dallinterpretazione delle istruzioni costituisca una procedura effettiva per lesecutore stesso Soluzione effettiva

20 Approfondimenti di Informatica Elaborazione dell'informazione20 Caratterizzazione formale di un esecutore Sintattica: il linguaggio che lesecutore è in grado di interpretare deve essere definito in modo completo e non ambiguo Pragmatica: linsieme delle azioni che lesecutore è in grado di compiere deve essere univocamente definito, e tali azioni devono essere elementari per lesecutore Semantica: linsieme delle regole di associazione tra costrutti del linguaggio e azioni deve essere definito in modo completo e non ambiguo

21 Approfondimenti di Informatica Elaborazione dell'informazione21 Algoritmo Definizione informale: Soluzioni effettive (soluzioni che possono essere rese comprensibili allesecutore) per esecutori caratterizzati formalmente

22 Approfondimenti di Informatica Elaborazione dell'informazione22 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 - linsieme delle azioni che è in grado di compiere -linsieme delle regole (istruzioni) che a ogni costrutto linguistico sintatticamente corretto associano le rispettive azioni da compiere Il calcolatore come esecutore

23 Approfondimenti di Informatica Elaborazione dell'informazione23 1.analisi del problema e identificazione di una soluzione 2.formalizzazione della soluzione e definizione dellalgoritmo 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

24 Approfondimenti di Informatica Elaborazione dell'informazione24 Problem a Analisi Algoritmo Programm a Traduzione Codice in linguaggio macchina Soluzione Esecuzione Codifica Soggetto 1: istruttore Soggetto 2: esecutore …continua…

25 Approfondimenti di Informatica Elaborazione dell'informazione25 …continua… procedura effettiva

26 Approfondimenti di Informatica Elaborazione dell'informazione26 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.)

27 Approfondimenti di Informatica Elaborazione dell'informazione27 1. Inizio algoritmo 2. Acquisire i coefficienti a,b,c 3. Calcolare il valore = b 2 -4ac 4. Se <0 non esistono radici reale vai allistruzione 8 5. Se =0 allora x 1 = x 2 = -b/2a 6. Se >0 allora x 1 =(-b + )/2a, x 2 =(-b - )/2a 7. Comunicare allesterno i valori x 1 e x 2 8. Fine dellalgoritmo Esempio: determinare le radici di una equazione di 2° grado

28 Approfondimenti di Informatica Elaborazione dell'informazione28 …continua… Finitezza – il numero di istruzioni è finito – ogni istruzione è eseguita in un intervallo finito di tempo – ogni istruzione è eseguita un numero finito di volte

29 Approfondimenti di Informatica Elaborazione dell'informazione29 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 lalgoritmo può operare su tutti i dati appartenenti al dominio per fornire una soluzione allinterno dei codominio …continua…

30 Approfondimenti di Informatica Elaborazione dell'informazione30 Non ambiguità – le istruzioni sono definite in modo univoco – non ci sono paradossi, contraddizioni, ambiguità – il risultato dellalgoritmo è identico indipendentemente da chi lo sta eseguendo …continua…

31 Approfondimenti di Informatica Elaborazione dell'informazione31 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 luscita è un numero reale Non ambiguità: istruzioni ben definite: operazioni aritmetiche o confronti fra reali

32 Approfondimenti di Informatica Elaborazione dell'informazione32 Correttezza Correttezza Completezza Completezza Efficienza Efficienza …continua…

33 Approfondimenti di Informatica Elaborazione dell'informazione33 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

34 Approfondimenti di Informatica Elaborazione dell'informazione34 Variabilità nel tempo -costanti -variabili Struttura - elementari - strutturati Tipo - predefinito - definito dallutente Visibilità - utente - codice Criteri di classificazione dei DATI

35 Approfondimenti di Informatica Elaborazione dell'informazione35 Costanti dati che rimangono inalterati durante tutta lesecuzione dellalgoritmo Ex. NellAlgoritmo delle radici in = b 2 -4ac, 4 è costante.

36 Approfondimenti di Informatica Elaborazione dell'informazione36 si riferirsi ad un oggetto indipendentemente dal valore specifico di questo alle variabili deve essere assegnato esplicitamente un valore dato che allinizio di un algoritmo le variabili hanno un valore indeterminato Ex: NellAlgoritmo delle Radici sono presenti le variabili: a,b,c, x 1 e x 2 Variabili

37 Approfondimenti di Informatica Elaborazione dell'informazione37 Listruzione di assegnazione permette di definire il valore attuale di una variabile che rimane inalterato fino a una nuova assegnazione alla variabile Lassegnazione viene eseguita nei seguenti passi: si valuta lespressione di destra si attribuisce il valore determinato alla variabile Assegnazione

38 Approfondimenti di Informatica Elaborazione dell'informazione38 Ogni volta che una variabile appare a destra dellistruzione 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…

39 Approfondimenti di Informatica Elaborazione dell'informazione39 Scambiare il valore delle due variabili x e y Esercizio

40 Approfondimenti di Informatica Elaborazione dell'informazione40 Soluzione di getto xy yx …continua…

41 Approfondimenti di Informatica Elaborazione dell'informazione41 tmpx xy y tmp Soluzione ??

42 Approfondimenti di Informatica Elaborazione dell'informazione42 consentono di riferirsi a più valori reciprocamente correlati come se si trattasse di ununica variabile aggregata - array (vettori, matrici, array multidimensionali) - record Variabili strutturate

43 Approfondimenti di Informatica Elaborazione dell'informazione43 Vettori Una variabile vettore è una coppia vocali = AEUOI pos. 0pos. 1pos. 2pos. 3pos. 4

44 Approfondimenti di Informatica Elaborazione dell'informazione44 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…

45 Approfondimenti di Informatica Elaborazione dell'informazione45 Matrice insieme di valori indicizzati da due o più indici M[i,j] Per una matrice a 2 dimensioni lindice i è detto indice riga e j indice colonna Assegnazione assegnazione per ogni elemento della matrice

46 Approfondimenti di Informatica Elaborazione dell'informazione46 Esempio … f[0,0] f[0,1] f j] f 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

47 Approfondimenti di Informatica Elaborazione dell'informazione47 matr_vocali [1,2] O matr_vocali [0,0] A Esempio matr_vocali = IAOE OUIE IUUE AAOE OUOE IUUE

48 Approfondimenti di Informatica Elaborazione dell'informazione48 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 campo nome_record.nome_campo = valore

49 Approfondimenti di Informatica Elaborazione dell'informazione49 Esempio codcognome nome indirizzoluogo n data n studente = intero stringa data

50 Approfondimenti di Informatica Elaborazione dell'informazione50 Array di record array i cui elementi sono di tipo record Assegnazione assegnazione per ogni campo di ogni elemento nome_array[i].nome_campo = valore

51 Approfondimenti di Informatica Elaborazione dell'informazione51 Esempio codcognome nome indirizzoluogo n data n classe = codcognome nome indirizzoluogo n data n codcognome nome indirizzoluogo n data n …………………………………………….

52 Approfondimenti di Informatica Elaborazione dell'informazione52 istruzioni di inizio/fine esecuzione istruzioni di ingresso/uscita istruzioni operative istruzioni controllo condizionali loop o di ciclo salto Istruzioni

53 Approfondimenti di Informatica Elaborazione dell'informazione53 Istruzioni di inizio/fine Indicano quale istruzione dellalgoritmo debba essere eseguita inizialmente e quale determini la fine dellesecuzione Istruzioni di ingresso/uscita Istruzioni che indicano una trasmissione di dati o messaggi fra lalgoritmo e tutto ciò che è esterno allalgoritmo

54 Approfondimenti di Informatica Elaborazione dell'informazione54 Istruzioni operative Istruzioni che producono un risultato se eseguite Ex.: operazioni aritmetiche, logiche, funzioni matematiche e le assegnazioni, … Ex: l'istruzione: 5+3 l'istruzione: x 2 l'istruzione: 3 mod 2 (mod resto della divisione intera)

55 Approfondimenti di Informatica Elaborazione dell'informazione55 Istruzioni di controllo Alterano il normale ordine di esecuzione delle istruzioni di un algoritmo, specificando esplicitamente quale sia la successiva istruzione da eseguire

56 Approfondimenti di Informatica Elaborazione dell'informazione56 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

57 Approfondimenti di Informatica Elaborazione dell'informazione57 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 lesecuzione, per la prima volta, della serie di istruzioni for … do … repeat … until …

58 Approfondimenti di Informatica Elaborazione dell'informazione58 Esempio NellAlgoritmo delle Radici Le istruzioni 1,8 sono di inizio/fine Le istruzioni 2,7 sono di ingresso/uscita La istruzione 3 è operativa La istruzione 4 è di salto Le istruzioni 5,6 sono condizionali

59 Approfondimenti di Informatica Elaborazione dell'informazione59 Esprimere una condizione Una condizione deve assumere valore vero o falso ed è costituita utilizzando operatori relazionali o operatori logici

60 Approfondimenti di Informatica Elaborazione dell'informazione60 Esercizio Esprimere eta' compresa fra 18 e 60 anni 60 =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

61 Approfondimenti di Informatica Elaborazione dell'informazione61 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à = 20peso = 49colore = qualsiasi ((peso > 0) AND (colore = 15)) OR (NOT (peso = 70) età =qualsiasi peso = 1colore = 15 NOT ( NOT ( età > 31) ) OR (colore = giallo) età =32 peso =qualsiasi colore =verde

62 Approfondimenti di Informatica Elaborazione dell'informazione62 Istruzioni di salto incondizionato Vai a……

63 Approfondimenti di Informatica Elaborazione dell'informazione63 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

64 Approfondimenti di Informatica Elaborazione dell'informazione64 P1 leggi un valore dallesterno e assegnalo alla variabile x ; P2 leggi un secondo valore dallesterno 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 lesecuzione. problema elementare Esempio: determinare il maggiore di due numeri

65 Approfondimenti di Informatica Elaborazione dell'informazione65 P1 leggi un valore dallesterno e assegnalo alla variabile x ; P2 leggi un secondo valore dallesterno 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 lesecuzione. Esempio: determinare il maggiore di due numeri

66 Approfondimenti di Informatica Elaborazione dell'informazione66 P1 leggi i primi due numeri x e y e valuta se x è maggiore di y ( problema precedente ): in caso affermativo prosegui con il passo P2 ; in caso affermativo prosegui con il passo P2 ; in caso negativo salta al passo P4 ; in caso negativo salta al passo P4 ; P2 leggi il terzo numero z e presenta come soluzione il risultato del confronto fra x e z ( problema precedente ); P3 salta al passo P5 ; P4 leggi il terzo numero z e presenta come soluzione il risultato del confronto fra y e z ( problema precedente ); P5 termina lesecuzione. Esempio: determinare il maggiore di tre numeri

67 Approfondimenti di Informatica Elaborazione dell'informazione67 P1 leggi i primi due numeri; P2 trova il maggiore tra i primi due numeri; P3 se ci sono altri numeri da esaminare procedi con il passo P4, altrimenti (se sono stati letti tutti i numeri) salta al passo P7 ; P4 leggi un nuovo numero; P5 trova il maggiore fra il nuovo numero e il numero più grande trovato finora; P6 torna al passo P3 ; P7 presenta allutente il numero più grande trovato finora: questo è il maggiore dei numeri inseriti; P8 termina lesecuzione. Esempio: determinare il maggiore di tot numeri

68 Approfondimenti di Informatica Elaborazione dell'informazione68 Esercizio Scrivere un algoritmo per effettuare il prodotto di due numeri naturali per somme ripetute

69 Approfondimenti di Informatica Elaborazione dell'informazione69 Leggi a P1 Leggi a Leggi b P2 Leggi b Somma b a se stesso a volte P3 Somma b a se stesso a volte Scrivi il risultato P4 Scrivi il risultato Esempio: prodotto di due numeri naturali per somme ripetute

70 Approfondimenti di Informatica Elaborazione dell'informazione70 1.Leggi a e b 2. prod 0 3.finchè a 0 ripeti prodprod +b aa finchè a 0 ripeti prod prod + b ; a a - 1 ;..continua…

71 Approfondimenti di Informatica Elaborazione dell'informazione71 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

72 Approfondimenti di Informatica Elaborazione dell'informazione72 blocchi elementari …continua… leggi xAbegin C end scrivi x inizioinputazione verofalso fine output selezione

73 Approfondimenti di Informatica Elaborazione dell'informazione73 …continua… nome-sub sottoprogramma Problema terminale non elementare

74 Approfondimenti di Informatica Elaborazione dell'informazione74 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 uscente ciascun blocco di controllo ha una sola freccia entrante e due uscenti ciascuna freccia entra in un blocco o si innesta su una altra freccia ciascun blocco è raggiungibile dal blocco iniziale il blocco finale è raggiungibile da qualsiasi altro blocco …continua…

75 Approfondimenti di Informatica Elaborazione dell'informazione75 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

76 Approfondimenti di Informatica Elaborazione dell'informazione76 …continua… Teorema di Bohm-Jacopini Ogni diagramma a blocchi non strutturato è sempre trasformabile in un diagramma a blocchi strutturato ad esso equivalente

77 Approfondimenti di Informatica Elaborazione dell'informazione77 Schema di sequenza: due o più schemi di flusso sono eseguiti in successione Nota: lo schema di sequenza è strutturato se e solo se lo sono i blocchi S 1 e S 2 begin end S1S1 S2S2 …continua…

78 Approfondimenti di Informatica Elaborazione dell'informazione78 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 S1S1 C verofalso begin end S1S1 C verofalso S2S2 …continua…

79 Approfondimenti di Informatica Elaborazione dell'informazione79 Schema di iterazione (ciclo o loop): modo conciso per descrivere azioni che devono essere ripetute begin end S1S1 C vero falso begin end S1S1 C vero falso

80 Approfondimenti di Informatica Elaborazione dell'informazione80 I due schemi non sono equivalenti: in un caso lo schema S 1 è eseguito almeno una volta e nellaltro potrebbe non essere mai eseguito La condizione vero/falso per il controllo possono essere invertite: si parla di iterazione per vero quando S 1 è eseguito finché la condizione su C è vera e iterazione per falso nellaltro caso Quando è 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 inizializzazione possiede sequenza di azioni (iterazione) che viene ripetuta per un numero specificato di volte …continua…

81 Approfondimenti di Informatica Elaborazione dell'informazione81 inizializzazione iterazione condizione di fine ciclo falso vero inizializzazione iterazione condizione di fine ciclo falso vero …continua…

82 Approfondimenti di Informatica Elaborazione dell'informazione82 Condizione di fine ciclo: viene controllata dopo lesecuzione 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 lesecuzione: si usa cioè una variabile che viene incrementata (o decrementata) fino a raggiungere un valore prefissato …continua…

83 Approfondimenti di Informatica Elaborazione dell'informazione83 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 dallinterazione con lesterno o vengono modificate allinterno delliterazione in modo complesso …continua…

84 Approfondimenti di Informatica Elaborazione dell'informazione84 begin end INPUT a, b prod 0 a<>0 vero falso OUTPUT prod prod prod + b a a – 1 Esempio: prodotto di due numeri naturali per somme ripetute 1.Leggi a e b 2. prod 0 3.finchè a 0 ripeti prodprod +b aa finchè a 0 ripeti prod prod + b ; a a - 1 ;

85 Approfondimenti di Informatica Elaborazione dell'informazione85 Esempio: maggiore di due numeri naturali per differenza P1 leggi un valore dallesterno e assegnalo alla variabile x ; P2 leggi un secondo valore dallesterno 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 lesecuzione.

86 Approfondimenti di Informatica Elaborazione dell'informazione86 P1 leggi un valore dallesterno e assegnalo alla variabile x ; P2 leggi un secondo valore dallesterno 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 lesecuzione. …continua…

87 Approfondimenti di Informatica Elaborazione dell'informazione87 Esempio: maggiore di tot numeri naturali

88 Approfondimenti di Informatica Elaborazione dell'informazione88 Esempio

89 Approfondimenti di Informatica Elaborazione dell'informazione89 Dato un intero N restituire N! Esercizio

90 Approfondimenti di Informatica Elaborazione dell'informazione90 Leggi N P 1 I 1 I < N NO SI I I + 1 P P * I Scrivi P 1*2=21*2=2 2*3=62*3=6 6*4=24 24*5= *6= *7=5040 Soluzione 1 beginend

91 Approfondimenti di Informatica Elaborazione dell'informazione91 7*6=42 42*5= *4= *3= *2=5040 Leggi N P N N > 2 NO SI N N - 1 P P * N Scrivi P Soluzione 2 beginend

92 Approfondimenti di Informatica Elaborazione dell'informazione92 TposNIPnote t 1 ?????? t 2 4???? t 3 411I < N t t 5 422I < N t t 7 436I < N t t I = N t t Start Leggi N P 1 I 1 I < N NO SI I I + 1 P P * I Scrivi P End …continua…

93 Approfondimenti di Informatica Elaborazione dell'informazione93 Start Leggi N P 1 I 1 I < N NO SI I I + 1 P P * I Scrivi P End Start Leggi N P N N > 2 NO SI N N - 1 P P * N Scrivi P End N = 0 P = 1 N = -4 P = 1 N = 0 P = 0 N = -4 P = -4 …continua…

94 Approfondimenti di Informatica Elaborazione dell'informazione94 N > 0 NO SI Scrivi Errore! End P 1 I 1 I < N NO SI I I + 1 P P * I Scrivi P Start Leggi N Start Leggi N P 1 I 1 I < N NO SI I I + 1 P P * I Scrivi P End Start Leggi N P 1 I 1 I < N NO SI I I + 1 P P * I Scrivi P End N > 0 NO SI Scrivi Errore! Gestione inserimenti indesiderati …continua…

95 Approfondimenti di Informatica Elaborazione dell'informazione95 Leggi N funzione fattoriale(n) n=0 NO SI fattoriale = n * fattoriale(n-1) Scrivi fattoriale(N) Soluzione 3: ricorsiva beginend n=1 NO SI fattoriale = 1 return

96 Approfondimenti di Informatica Elaborazione dell'informazione96 Dato un intero N restituire la somma dei primi N numeri naturali Esercizio

97 Approfondimenti di Informatica Elaborazione dell'informazione97 Soluzione

98 Approfondimenti di Informatica Elaborazione dell'informazione98 …continua…

99 Approfondimenti di Informatica Elaborazione dell'informazione99 Start Leggi N S 0 I 1 S S+I I I+1 Scrivi S END I > N ? NOSI Versione con un ciclo a condizione finale …continua…

100 Approfondimenti di Informatica Elaborazione dell'informazione100 Soluzione ottima

101 Approfondimenti di Informatica Elaborazione dell'informazione101 Stampa del resto della divisione intera tra due numeri (senza la funzione mod) Esercizio

102 Approfondimenti di Informatica Elaborazione dell'informazione102 Soluzione begin end INPUT X, Y X < Y falso vero OUTPUT X X X - Y Inserimento di eventuali controlli Y diverso da 0 X o Y negativi

103 Approfondimenti di Informatica Elaborazione dell'informazione103 1.Stampa dellarea di un triangolo 2.Stampa delle radici di una eq. di 2° grado 3.Stampa dei multipli di un numero in ingresso x minori di y, x.y>0 4.Stampa della massima potenza minore di y di un numero in ingresso x, x.y>0 5.Approssimazione intera, per eccesso, della radice quadrata di un numero in ingresso positivo 6.Stampa il quoziente della divisione intera tra due numeri positivi utilizzando solo la differenza 7.Dato un numero x in input, 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

104 Approfondimenti di Informatica Elaborazione dell'informazione104 Soluzione 3 begin end INPUT x, y i 1 i * x < y i i+1 falso vero OUTPUT i *x X>0 and y>0 vero falso

105 Approfondimenti di Informatica Elaborazione dell'informazione105 Soluzione 4 begin end INPUT x, y i 1 i < y i i * x falso vero OUTPUT i/x X>0 and y>0 vero falso

106 Approfondimenti di Informatica Elaborazione dell'informazione106 Soluzione 6 begin end INPUT x, y i 0 x >= y x x-y i i+1 falso vero OUTPUT i X>0 and y>0 vero falso

107 Approfondimenti di Informatica Elaborazione dell'informazione107 Public Sub restoquoziente() 'stampa resto e quoziente della divisione intera tra x e y 'dichiarazioni Dim n As String Dim X, Y, i As Integer 'corpo Do n = InputBox("Inserisci un valore numerico maggiore di 0") Loop Until (Numero_Intero(n) And Val(n) > 0) X = Val(n) Do n = InputBox("Inserisci un valore numerico maggiore di 0") Loop Until (Numero_Intero(n) And Val(n) > 0) Y = Val(n) i = 0 Do While (X >= Y) X = X - Y i = i + 1 Loop MsgBox "Resto: " & X & " Quoziente: " & i End Sub

108 Approfondimenti di Informatica Elaborazione dell'informazione108 Soluzione 7 begin end INPUT x x < 10 vero falso x > 20 INPUT y x > y vero falso Stampa(ciao,5) Stampa(evviva,x) Stampa(salve,x-y)Stampa(salve,y-x)

109 Approfondimenti di Informatica Elaborazione dell'informazione109 continua Stampa(x,y) end y>o vero falso y y-1 OUTPUT x

110 Approfondimenti di Informatica Elaborazione dell'informazione110 Dato un valore determinare se è presente tra gli elementi di un vettore Esercizio

111 Approfondimenti di Informatica Elaborazione dell'informazione111 Soluzione Passo 1: - dati in ingresso (variabili) richiesti allutente - 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 )

112 Approfondimenti di Informatica Elaborazione dell'informazione112 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 = 26 Output: 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 lelemento non è stato trovato dico Elemento NON trovato Soluzione

113 Approfondimenti di Informatica Elaborazione dell'informazione 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 lelemento è stato trovato, con esito negativo quando la variabile di ciclo ha raggiunto la fine del vettore Passo 3: formalizzazione del diagramma di flusso …continua…

114 Approfondimenti di Informatica Elaborazione dell'informazione114 begin end INPUT Vettore, Elemento i 0 dimensione Vettore K i = K i i+1 Vettore [i] = Elemento verofalso vero OUTPUT Elemento NON trovato OUTPUT Elemento trovato Passo 1, 1: dati in input dallutente Passo 1, 1: costanti del problema …continua…

115 Approfondimenti di Informatica Elaborazione dell'informazione115 begin end INPUT Vettore, Elemento i 0 dimensione Vettore K i = K i i+1 Vettore [i] = Elemento verofalso vero OUTPUT Elemento NON trovato OUTPUT Elemento 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…

116 Approfondimenti di Informatica Elaborazione dell'informazione116 Soluzione begin end INPUT Vettore, Elemento i 0 i = dimensione Vettore i i+1 Vettore [i] = Elemento verofalso vero OUTPUT Elemento NON trovato OUTPUT Elemento trovato

117 Approfondimenti di Informatica Elaborazione dell'informazione117 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 vuoto 4.Determinare il numero di elementi pari in un vettore 5.Determinare il numero di elementi positivi in un vettore 6.Determinare il numero di occorrenze di un valore in un vettore 7.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

118 Approfondimenti di Informatica Elaborazione dell'informazione118 Soluzione 1 begin end INPUT Vettore, Elemento i 0 Trovato=falso i = dimensione Vettore OR trovato i i+1 trovato vero falso vero OUTPUT i OUTPUT i-1 Vettore[i]=Elemento vero falso Trovato=vero

119 Approfondimenti di Informatica Elaborazione dell'informazione119 Soluzione 2 begin end INPUT Vettore i 0 Max Vettore [ i ] i = dimensione Vettore-1 i i+1 Vettore [ i ] > Max vero falso vero OUTPUT Max Max Vettore [ i ]

120 Approfondimenti di Informatica Elaborazione dell'informazione120 Soluzione 3 begin end INPUT Vettore i 0 Media 0 K dimensione Vettore i = K falso vero OUTPUT Media Media Media + Vettore [ i ] i i+1 Media Media / K

121 Approfondimenti di Informatica Elaborazione dell'informazione121 Soluzione 4 begin end INPUT Vettore i 0 conta 0 K dimensione Vettore i = K falso vero OUTPUT conta conta conta + 1 Vettore [ i ] mod 2 = 0 vero falso i i + 1

122 Approfondimenti di Informatica Elaborazione dell'informazione122 Soluzione 7 begin end INPUT Vettore, Elemento i 0 pos dimensione Vettore i = dimensione Vettore i i+1 Vettore [ i ] = Elemento vero falso vero OUTPUT pos pos = i

123 Approfondimenti di Informatica Elaborazione dell'informazione123 Come comunicare Linguaggio macchina: 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 dallessere umano - ambiguo, ridondante, non preciso, sintatticamente complesso Linguaggio di programmazione ad alto livello: c = a+b

124 Approfondimenti di Informatica Elaborazione dell'informazione124 Traduttori traduttore programma macchina Codice in linguaggio macchina dati macchina Codice in linguaggio macchina risultati

125 Approfondimenti di Informatica Elaborazione dell'informazione125 Compilatori Compilatori Accettano in ingresso lintero programma e producono in uscita la rappresentazione dell'intero programma in linguaggio macchina Interpreti Interpreti Traducono ed eseguono direttamente ciascuna istruzione del programma sorgente, istruzione per istruzione Compilatori vs Interpreti

126 Approfondimenti di Informatica Elaborazione dell'informazione126 Unità 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 Elaborazione Memoria Bus di sistema Dati del programma P Programma P in linguaggio macchina della CPU Fase 2 Compilatori

127 Approfondimenti di Informatica Elaborazione dell'informazione127 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 dellinterprete Interpreti

128 Approfondimenti di Informatica Elaborazione dell'informazione128 Compilazione -migliori prestazioni nellesecuzione -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…

129 Approfondimenti di Informatica Elaborazione dell'informazione129 -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é listruzione viene eseguita Linguaggio di programmazione

130 Approfondimenti di Informatica Elaborazione dell'informazione130 Identificazione del programma Identificazione del programma Dichiarazione delle variabili utilizzate (tipo e nome) Dichiarazione delle variabili utilizzate (tipo e nome) Specificazione della parte esecutiva del programma (corpo del programma) Specificazione della parte esecutiva del programma (corpo del programma) Parti fondamentali di un programma

131 Approfondimenti di Informatica Elaborazione dell'informazione131 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à

132 Approfondimenti di Informatica Elaborazione dell'informazione132 Paradigmi di programmazione Funzionale Logico Imperativo Object Oriented

133 Approfondimenti di Informatica Elaborazione dell'informazione133 Paradigma funzionale combinazione di funzioni per ottenerne altre più potenti (define (square x)*xx) square(5)

134 Approfondimenti di Informatica Elaborazione dell'informazione134 Paradigma logico - uso di fatti, relazioni e regole per rappresentare linformazione -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)

135 Approfondimenti di Informatica Elaborazione dell'informazione135 Paradigma imperativo inviare ordini alla macchina

136 Approfondimenti di Informatica Elaborazione dell'informazione136 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

137 Approfondimenti di Informatica Elaborazione dell'informazione137 OO: concetto di classe tipo di dato dotato di proprietà e metodi

138 Approfondimenti di Informatica Elaborazione dell'informazione138 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 ilnome specifico di ciascun suo membro) altre sono più specifiche per una data classe Solitamente sono di lettura/scrittura OO: concetto di proprietà

139 Approfondimenti di Informatica Elaborazione dell'informazione139 azioni che determinano ciò che i membri della classe possono svolgere - modificare i valori delle proprietà di un oggetto - eseguire azioni sui dati memorizzati dalloggetto OO: concetto di metodo

140 Approfondimenti di Informatica Elaborazione dell'informazione140 Esempio Classe: Auto Marca Peso Lunghezza Colore Stato Proprietà Muove Ferma Cambia_Stato Metodi

141 Approfondimenti di Informatica Elaborazione dell'informazione141 Oggetto = Istanza di una classe Istanza = 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

142 Approfondimenti di Informatica Elaborazione dell'informazione142 Esempio Classe: Auto Oggetto: Mia_auto Marca Peso Lunghezza Colore Stato Proprietà Muove Ferma Cambia_Stato Metodi Marca:Fiat Peso: 1q Lunghezza:1.5m Colore:rosso Stato:pessimo Proprietà Muove Ferma Cambia_Stato Metodi

143 Approfondimenti di Informatica Elaborazione dell'informazione143 Eventi e procedure-evento Un evento è unazione che il sistema compie in risposta a unazione effettuata dallutente quando interagisce con un oggetto dellapplicazione Una procedura-evento è una procedura specificamente associata a un dato evento che interessa un dato oggetto specificando il comportamento dellapplicazione in risposta al verificarsi dellevento stesso

144 Approfondimenti di Informatica Elaborazione dell'informazione144 Esempio Classe: Auto Oggetto: Mia_auto Marca Peso Lunghezza Colore Stato Proprietà Muove Ferma Cambia_Stato Metodi Marca:Fiat Peso: 1q Lunghezza:1.5m Colore:rosso Stato:pessimo Proprietà Muove Ferma Cambia_Stato Metodi Incidente Non_parte Eventi Incidente Non_parte Eventi

145 Approfondimenti di Informatica Elaborazione dell'informazione145 Esempio: CommandButton Left Top Caption

146 Approfondimenti di Informatica Elaborazione dell'informazione146 …continua… Metodo Eventi

147 Approfondimenti di Informatica Elaborazione dell'informazione147 VBAVBA BASIC (Beginners All-Purpose Symbolic Instruction Code) - linguaggio semplice - molto diffuso - implemento nei primi calcolatori ad uso domestico

148 Approfondimenti di Informatica Elaborazione dell'informazione148 VBA V Visual progettazione di interfacce grafiche di un'applicazione tramite un ambiente di sviluppo grafico utilizzando vari componenti già disponibili - semplice - veloce - pesante

149 Approfondimenti di Informatica Elaborazione dell'informazione149 VBA A Application 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

150 Approfondimenti di Informatica Elaborazione dell'informazione150 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 pulsante digitazione in una casella di testo selezione di un comando di menu cambiamento della risoluzione aggiunta di una periferica al sistema ecc.

151 Approfondimenti di Informatica Elaborazione dell'informazione151 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 dallutente

152 Approfondimenti di Informatica Elaborazione dell'informazione152 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 dallutente procedura legata ad un evento

153 Approfondimenti di Informatica Elaborazione dell'informazione153 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 ciao End Sub

154 Approfondimenti di Informatica Elaborazione dell'informazione154 functionasinteger function media (w as integer) as integer dimas integer dim i, j, z as integer dimas integer dim p(100, 12) as integer i = 0 j = 0 Do while Do while i <= 12 j = j + p(w, i) i = i + 1Loop z = j / 12 media = z end function dimas integer dim w, fine, z as integer fine = 0 Do while Do while fine=0 input input w ifthen if w > 0 then z = media(w) print z else fine = -1 end if Loop Esempio

155 Approfondimenti di Informatica Elaborazione dell'informazione155 Variabili e procedure Variabile locale: dichiarata allinterno di una procedura e vive fintantoché la procedura è attiva. Non appena la procedura termina, anche la variabile cessa di esistere Variabile di modulo: dichiarata allinizio del modulo (fuori da ogni procedura) possono essere viste e modificate da qualsiasi procedura allinterno del modulo Variabile pubblica: dichiarata allinizio di un modulo con la parola chiave Public (fuori da ogni procedura) possono essere viste e modificate da qualsiasi procedura allinterno di un modulo che compone il progetto

156 Approfondimenti di Informatica Elaborazione dell'informazione156 Esempio Dim pippo as String Sub ciao () Pippo = Ciao! MsgBox pippo End Sub Sub Evviva () MsgBox pippo End Sub Private Sub CommandButton1_Click() Ciao compare la scritta Ciao! Evviva compare la scritta Ciao! End Sub Variabile DI MODULOVariabile LOCALE Sub ciao () Dim pippo as String Pippo = Ciao! MsgBox pippo End Sub Sub Evviva () MsgBox pippo End Sub Private Sub CommandButton1_Click() Ciao compare la scritta Ciao! Evviva non compare alcuna scritta End Sub

157 Approfondimenti di Informatica Elaborazione dell'informazione157 Parametri e procedure Parametro passato per riferimento: è effettivamente modificabile permanentemente dal corpo della procedura Anteporre 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 allinterno della procedura tale modifica cessa alluscita dalla stessa

158 Approfondimenti di Informatica Elaborazione dell'informazione158 Esempio Sub ciao (pippo as String) pippo = Ciao! MsgBox pippo End Sub Private Sub CommandButton1_Click() Dim par as string par =Come stai? ciao(par) MsgBox par compare la scritta Come stai? End Sub Variabile per valore Sub ciao (pippo as String) pippo = Ciao! MsgBox pippo End Sub Private Sub CommandButton1_Click() Dim par as string par =Come stai? Call ciao(par) MsgBox par compare la scritta Come stai? End Sub

159 Approfondimenti di Informatica Elaborazione dell'informazione159 Esempio Sub ciao (Byref pippo as String) pippo = Ciao! MsgBox pippo End Sub Private Sub CommandButton1_Click() Dim par as string par =Come stai? ciao(par) MsgBox par compare la scritta Come stai? End Sub Variabile per valoreVariabile per riferimento Sub ciao (Byref pippo as String) pippo = Ciao! MsgBox pippo End Sub Private Sub CommandButton1_Click() Dim par as string par =Come stai? Call ciao(par) MsgBox par compare la scritta Come stai? End Sub

160 Approfondimenti di Informatica Elaborazione dell'informazione160 1.Definizione del problema 2.Definizione dellalgoritmo per la soluzione del problema 3.Codifica dellalgoritmo 4.Debugging del programma 5.Validazione del programma 6.Produzione della documentazione Larte della programmazione

161 Approfondimenti di Informatica Elaborazione dell'informazione161 Commenti e continuazione delle linee Sintassi commento quanto segue lapostrofo è considerato commento ed è ignorato Es: dichiarazione delle variabili Dim pippo as String Pippo = ciao mondo! primo assegnamento di un valore a pippo Sintassi spazio_continuazione a capo Es: CommandButton1.Label = Questo viene scritto sopra il _ bottone appena creato

162 Approfondimenti di Informatica Elaborazione dell'informazione162 Le costanti valori non modificabili durante lesecuzione Dichiarazione: Const NomeCostante As TipoCostante = ValoreCostante

163 Approfondimenti di Informatica Elaborazione dell'informazione163 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 allinizio del programma, allatto 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

164 Approfondimenti di Informatica Elaborazione dell'informazione164 Tipi di variabili Primitive numeriche Parola chiaveTipo di informazione Byteinteri positivi Integerinteri Longinteri CurrencyImporto monetario SingleDecimali con singola precisione DoubleDecimali con doppia precisione

165 Approfondimenti di Informatica Elaborazione dell'informazione165 …continua… Primitive non numeriche Parola chiaveTipo di informazione StringStringhe DateDate e ore BooleanValori logici VariantGenerica (conversione automatica)

166 Approfondimenti di Informatica Elaborazione dell'informazione166 …continua… Non primitive Ex.: Controlli, fogli di lavoro, cartelle, etc… Parola chiaveTipo di informazione Objectriferimenti verso altre variabili

167 Approfondimenti di Informatica Elaborazione dell'informazione167 …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 0 Dim c as Boolean c avrà valore False

168 Approfondimenti di Informatica Elaborazione dell'informazione168 Vettori insieme di dati ordinato che viene gestito tramite un nome ed un indice che indica la posizione dellelemento allinterno del vettore stesso Sintassi: Dim nome_vett1 (1 to 100) as tipo_dati (da 1) oppure Dim nome_vett2 (99) as tipo_dati (da 0) oppure Dim nome_vett3 (100) as tipo_dati Option Base 1 (da 1) Es: Dim pippo (99) as Integer pippo (0) = 3 pippo (1) = 9 MsgBox pippo(0) & & pippo(1) & & pippo(2) si visualizza 3 9 0

169 Approfondimenti di Informatica Elaborazione dell'informazione169 Matrici insieme di dati ordinato che viene gestito tramite un nome ed un insieme di indici che indica la posizione dellelemento allinterno della matrice stessa Sintassi: Dim nome_array1 (1 to 100, 1 to 20) as tipo_dati (da 1) oppure Dim nome_array2 (99,2) as tipo_dati (da 0) oppure Dim nome_array3 (100,5,8) as tipo_dati Option Base 1 (da 1)

170 Approfondimenti di Informatica Elaborazione dell'informazione170 Record insieme di dati definito dallutente gestito tramite un nome ed il riferimento al dato singolo allinterno del record Sintassi: Type nome_struttura tipo e nome campi End Type Es: type indirizzo via as string numero civico as integer ….. Provincia as string end type dim mio_indirizzo as indirizzo … mio_indirizzo.via = … … ……….

171 Approfondimenti di Informatica Elaborazione dell'informazione171 Esercizio Definire una struttura dati per memorizzare gli studenti del corso

172 Approfondimenti di Informatica Elaborazione dell'informazione172 Soluzione type studente matricola as integer cognome as string nome as string cdl as string ….. end type Dim studenti_corso(1 to 400) as studente studenti_corso(1).matricola = studenti_corso(1).cognome = Rossi studenti_corso(1).nome = Mario studenti_corso(1).cdl = Psicologia ….

173 Approfondimenti di Informatica Elaborazione dell'informazione173 Operatori Operatori aritmetici: +, -, *, /, \, mod, ^ Operatore di assegnazione: = Operatori di stringa: & Operatori logici: AND, OR, NOT Operatori di confronto: =,, =, <>

174 Approfondimenti di Informatica Elaborazione dell'informazione174 Gerarchia di operatori 1.Operatori aritmetici 2.Operatori di concatenamento 3.Operatori di confronto 4.Operatori logici

175 Approfondimenti di Informatica Elaborazione dell'informazione175 Blocchi di istruzioni Le istruzioni elementari siano costrutti identificati dal fatto di essere scritti su di ununica riga Per istruzioni non elementari, è necessario indicare linsieme 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.

176 Approfondimenti di Informatica Elaborazione dell'informazione176 Funzioni per interazione con lutente

177 Approfondimenti di Informatica Elaborazione dell'informazione177 Sub Main() Dim messaggio As VbMsgBoxResult obj = MsgBox("Testo visualizzato nella finestra", vbExclamation + vbYesNo, "Titolo finestra") End Sub Esempio

178 Approfondimenti di Informatica Elaborazione dell'informazione178 Funzioni per interazione con lutente

179 Approfondimenti di Informatica Elaborazione dell'informazione179 Esempio Sub Main() Dim Risultato As String Risultato = InputBox("Testo visualizzato nella finestra", "Titolo finestra", "Valore default") End Sub

180 Approfondimenti di Informatica Elaborazione dell'informazione180 Funzioni matematiche

181 Approfondimenti di Informatica Elaborazione dell'informazione181 Funzioni di conversione

182 Approfondimenti di Informatica Elaborazione dell'informazione182 Funzioni per stringhe

183 Approfondimenti di Informatica Elaborazione dell'informazione183 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 Then Elseif … Else 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

184 Approfondimenti di Informatica Elaborazione dell'informazione184 Selezione semplice If Then End If begin end cond vero blocco

185 Approfondimenti di Informatica Elaborazione dell'informazione185 Selezione a due vie If Then Else End If begin end blocco_1 espressione vero falso blocco_2

186 Approfondimenti di Informatica Elaborazione dell'informazione186 Selezione a più vie If Then Elseif Then Elseif Then …. Elseif Then Else End If

187 Approfondimenti di Informatica Elaborazione dell'informazione187 Istruzioni di ciclo o loop Valutano il valore di una variabile e compiono una serie di azioni fintantoché questo rimane allinterno 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 lintervallo 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 lintervallo di valori ammissibile per la variabile di ciclo cambia ad ogni esecuzione del programma Lintervallo di valori ammissibile per la variabile di ciclo può essere fornito sia tramite un intervallo numerico, sia tramite una lista di elementi

188 Approfondimenti di Informatica Elaborazione dell'informazione188 Istruzioni di ciclo o loop Sintassi ( For ) For variabile = inizio To fine Next For Each variabile In insieme Next Semantica ( For ) La variabile (numerica) prende tutti i valori tra inizio e fine e, per ciascuno di essi, viene compiuto. La variabile passa da un valore al successivo alla lettura dellistruzione Next, dopo la quale si verifica lappartenenza allintervallo inizio-fine. Semantica ( For ) La variabile prende tutti i valori allinterno di insieme e, per ciascuno di essi, viene compiuto. La variabile passa da un elemento di insieme al successivo alla lettura dellistruzione Next. Quando non sono presenti altri elementi in insieme il ciclo termina.

189 Approfondimenti di Informatica Elaborazione dell'informazione189 Diagramma di flusso For next Espressione (valutazione della variabile di ciclo) vero falso inizializzazione (variabile di ciclo) blocco incremento (variabile di ciclo)

190 Approfondimenti di Informatica Elaborazione dell'informazione190 Istruzioni di ciclo o loop Sintassi ( Do While ) Do While Loop Do Loop While Semantica (Do While) cond viene valutata e è compiuta fintantoché espressione è vera. Se While è posto alla fine del ciclo, allora prima si compie e poi si verifica cond. In tal modo sono eseguite almeno una volta. Semantica (Do Until) cond viene valutata e è compiuta fintantoché espressione è falsa. Se Until è posto alla fine del ciclo, allora prima si compie e poi si verifica cond. In tal modo sono eseguite almeno una volta Sintassi ( Do Until ) Do Until Loop Do Loop Until

191 Approfondimenti di Informatica Elaborazione dell'informazione191 Cicli a condizione finale cond vero falso inizializzazione blocco Do blocco Loop While cond Do blocco Loop Until cond cond vero falso inizializzazione blocco

192 Approfondimenti di Informatica Elaborazione dell'informazione192 Cicli a condizione iniziale cond vero falso inizializzazione blocco Do While cond blocco Loop Do Until cond blocco Loop cond falso vero inizializzazione blocco

193 Approfondimenti di Informatica Elaborazione dell'informazione193 'prodotto VBA dim a, b, prod as integer …… input a, b …… prod = 0 do while a <> 0 prod = prod + b a = a – 1 loop …… print prod …… begin end INPUT a, b prod 0 a<>0 vero falso OUTPUT prod prod prod + b a a – 1 Esempio

194 Approfondimenti di Informatica Elaborazione dell'informazione194 Function Numero_Intero(stringa As String) As Boolean Dim i As Integer Dim numero As Boolean numero = False i = 1 numero = True If (Mid(stringa, 1, 1) = "-") Then i = i + 1 End If Do While (i <= Len(stringa) And numero) If (Not (Mid(stringa, i, 1) >= "0" And Mid(stringa, i, 1) <= "9")) Then numero = False End If i = i + 1 Loop Numero_Intero = numero End Function

195 Approfondimenti di Informatica Elaborazione dell'informazione195 Public Sub radici() 'calcolo delle radici di una equazione di secondo grado 'dichiarazione variabili Dim n As String Dim a, b, c, delta As Integer 'corpo Do n = InputBox("Inserisci un valore numerico coefficiente di x elevato alla 2") Loop Until (Numero_Intero(n)) a = Val(n) Do n = InputBox("Inserisci un valore numerico coefficiente di x elevato alla 1") Loop Until (Numero_Intero(n)) b = Val(n) Do n = InputBox("Inserisci un valore numerico coefficiente di x elevato alla 0") Loop Until (Numero_Intero(n)) c = Val(n) delta = b * b - 4 * a * c If (delta < 0) Then MsgBox "Non esistono radici nel campo dei reali" ElseIf (delta = 0) Then MsgBox "Esistono due radici reali e coincidenti x1=x2=" & -b / (2 * a) Else MsgBox "Esistono due radici reali e distinte x1=" & (-b - Sqr(delta)) / (2 * a) & " x2=" & (-b + Sqr(delta)) / (2 * a) End If End Sub

196 Approfondimenti di Informatica Elaborazione dell'informazione196 Soluzione 3 begin end INPUT x, y i 1 i * x < y i i+1 falso vero OUTPUT i *x X>0 and y>0 vero falso

197 Approfondimenti di Informatica Elaborazione dell'informazione197 Public Sub multipli() 'stampa dei multimpli di x fino al valore y 'dichiarazioni Dim n As String Dim X, Y, i As Integer 'corpo Do n = InputBox("Inserisci un valore numerico maggiore di 0") Loop Until (Numero_Intero(n) And Val(n) > 0) X = Val(n) Do n = InputBox("Inserisci un valore numerico maggiore di 0") Loop Until (Numero_Intero(n) And Val(n) > 0) Y = Val(n) i = 1 Do While (i * X < Y) MsgBox i & "° multiplo: " & i * X i = i + 1 Loop MsgBox "Fine sequenza" End Sub

198 Approfondimenti di Informatica Elaborazione dell'informazione198 Soluzione 4 begin end INPUT x, y i 1 i < y i i * x falso vero OUTPUT i/x X>0 and y>0 vero falso

199 Approfondimenti di Informatica Elaborazione dell'informazione199 Public Sub potenze() 'stampa potenze di x fino al valore y 'dichiarazioni Dim n As String Dim X, Y, i As Integer 'corpo Do n = InputBox("Inserisci un valore numerico maggiore di 0") Loop Until (Numero_Intero(n) And Val(n) > 0) X = Val(n) Do n = InputBox("Inserisci un valore numerico maggiore di 0") Loop Until (Numero_Intero(n) And Val(n) > 0) Y = Val(n) i = 1 Do While (i < Y) i = i * X Loop MsgBox "Potenza di " & X & " minore di " & Y & ": " & i / X End Sub

200 Approfondimenti di Informatica Elaborazione dell'informazione200 Soluzione 6 begin end INPUT x, y i 0 x >= y x x-y i i+1 falso vero OUTPUT i X>0 and y>0 vero falso

201 Approfondimenti di Informatica Elaborazione dell'informazione201 Public Sub restoquoziente() 'stampa resto e quoziente della divisione intera tra x e y 'dichiarazioni Dim n As String Dim X, Y, i As Integer 'corpo Do n = InputBox("Inserisci un valore numerico maggiore di 0") Loop Until (Numero_Intero(n) And Val(n) > 0) X = Val(n) Do n = InputBox("Inserisci un valore numerico maggiore di 0") Loop Until (Numero_Intero(n) And Val(n) > 0) Y = Val(n) i = 0 Do While (X >= Y) X = X - Y i = i + 1 Loop MsgBox "Resto: " & X & " Quoziente: " & i End Sub

202 Approfondimenti di Informatica Elaborazione dell'informazione202 Soluzione 7 begin end INPUT x x < 10 vero falso x > 20 INPUT y x > y vero falso Stampa(ciao,5) Stampa(evviva,x) Stampa(salve,x-y)Stampa(salve,y-x)

203 Approfondimenti di Informatica Elaborazione dell'informazione203 Public Sub stampa() Dim n As String Dim X As Integer Dim Y As Integer Do n = InputBox("Inserisci un valore numerico maggiore di 0") Loop While (Not Numero_Intero(n) Or Val(n) < 0) X = Val(n) If (X < 10) Then Call stamperipetute("ciao", 5) ElseIf (X > 20) Then Call stamperipetute("evviva", X) Else Do n = InputBox("Inserisci un valore numerico maggiore di 0") Loop While (Not Numero_Intero(n) And Val(n) < 0) Y = Val(n) If (X > Y) Then Call stamperipetute("salve", X - Y) Else Call stamperipetute("salve", Y - X) End If End Sub

204 Approfondimenti di Informatica Elaborazione dell'informazione204 continua Stampa(x,y) end y>o vero falso y y-1 OUTPUT x

205 Approfondimenti di Informatica Elaborazione dell'informazione205 Public Sub stamperipetute(pippo As String, volte As Integer) 'dichiarazioni Dim i As Integer 'corpo For i = 1 To volte MsgBox "stampa n. " & i & ": " & pippo Next End Sub

206 Approfondimenti di Informatica Elaborazione dell'informazione206 Esempio Public Sub conta() Dim n As String Dim i As Integer i = 0 Do n = InputBox("Inserisci un valore numerico intero, la stringa vuota termina l'inserimento") Loop Until (n = CStr(Val(n)) Or n = "") i = i + 1 Loop While (n <> "") MsgBox "Numero elementi inseriti: " & i - 1 End Sub

207 Approfondimenti di Informatica Elaborazione dell'informazione207 Esempio Public Sub contase() Dim n As String Dim i As Integer i = 0 Do n = 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 <> "") Then i = i + 1 End If Loop While (n <> "") MsgBox "Numero elementi inseriti pari: " & i End Sub

208 Approfondimenti di Informatica Elaborazione dell'informazione208 Esempio Public Sub sommase() Dim n As String Dim i As Integer i = 0 Do n = InputBox("Inserisci un valore numerico intero, la stringa vuota termina l'inserimento") Loop Until (n = CStr(Val(n)) Or n = "") If (Val(n) > 17) Then i = i + Val(n) End If Loop While (n <> "") MsgBox "Somma elementi maggiori 17: " & i End Sub

209 Approfondimenti di Informatica Elaborazione dell'informazione209 Esempio Public Sub mediase() Dim n As String Dim i, somma As Integer i = 0 somma = 0 Do n = InputBox("Inserisci un valore numerico intero, la stringa vuota termina l'inserimento") Loop Until (n = CStr(Val(n)) Or n = "") If (Val(n) > 17) Then i = i + 1 somma = somma + Val(n) End If Loop While (n <> "") If (i=0) then MsgBox Nessun elemento sddisfa la condizione" Else MsgBox "Media elementi maggiori 17: " & somma / i endif End Sub

210 Approfondimenti di Informatica Elaborazione dell'informazione210 Ambiente di sviluppo Strumenti -> Macro -> Visual Basic Editor

211 Approfondimenti di Informatica Elaborazione dell'informazione211 La finestra progetto Visualizza in modo gerarchico l'insieme dei file che compongono il progetto dellapplicazione 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

212 Approfondimenti di Informatica Elaborazione dell'informazione212 La finestra proprietà Selezionando un oggetto la finestra Proprietà riporta tutti gli attributi relativi alloggetto stesso, tra cui quelli relativi all'aspetto ed alle varie funzionalità Ex.: - Height: laltezza del form che stiamo creando, - Icon: licona 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

213 Approfondimenti di Informatica Elaborazione dell'informazione213 …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.

214 Approfondimenti di Informatica Elaborazione dell'informazione214 La finestra codice Cliccando due volte su un oggetto si accede ad una finestra nella quale è possibile inserire il codice relativo alloggetto stesso (per eventi predefiniti il codice inizialmente è automaticamente inserito)

215 Approfondimenti di Informatica Elaborazione dell'informazione215 …continua… In alto sulla finestra di codice vi sono due menù a tendina il cui contenuto dipende dalloggetto 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

216 Approfondimenti di Informatica Elaborazione dell'informazione216 Visualizza Visualizzatore oggetti Elenco di tutti gli oggetti e relative caratteristiche, in particolare proprietà, subroutine e eventi

217 Approfondimenti di Informatica Elaborazione dell'informazione217 Inserisci UserForm

218 Approfondimenti di Informatica Elaborazione dell'informazione218 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

219 Approfondimenti di Informatica Elaborazione dell'informazione219 Le modalità delleditor VBA modalità di lavoro con leditor VBA: 1. modalità di scrittura (DESIGN): modalità di default, permette la scrittura del codice 2. modalità di esecuzione (RUN): (Esegui -> Esegui Sub/User Form) una procedura si interrompe con il tasto Pausa/Interrompi 3. modalità di tracciamento (BREAK): attivata da - interruzione dellesecuzione 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

220 Approfondimenti di Informatica Elaborazione dell'informazione220 Gli errori -sintattici: quando unistruzione viene scritta in modo non corretto e linterprete non la riconosce (Ex.: x==5 invece di x=5) - logici: il risultato dellelaborazione 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)

221 Approfondimenti di Informatica Elaborazione dell'informazione221 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 dellapplicazione 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

222 Approfondimenti di Informatica Elaborazione dell'informazione222 Alcuni controlli standard di VBA Immagine Command button Seleziona oggetti Option Button Combo Box Check Box Label Text Box Scrolling Bar

223 Approfondimenti di Informatica Elaborazione dell'informazione223 Nota Bene Per visualizzare la lista completa delle proprietà, dei metodi e degli eventi relativi ad un dato controllo è utilizzare guida in linea (?)

224 Approfondimenti di Informatica Elaborazione dell'informazione224 Command Button ( ) : proprietà avvia, termina o interrompe una o più azioni può essere utilizzato per l'apertura di un altro form alcune proprietà: Accelerator: contiene lidentificativo 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 delleventuale immagine da inserire come sfondo del bottone Visible: indica se il bottone è visibile o no allavvio del progetto (valore TRUE o FALSE)

225 Approfondimenti di Informatica Elaborazione dell'informazione225 Evento di default del bottone: singolo click Doppio click sul bottone. Command Button ( ) :metodi e eventi

226 Approfondimenti di Informatica Elaborazione dell'informazione226 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

227 Approfondimenti di Informatica Elaborazione dell'informazione227 Soluzione Sub raddoppia() Dim stringa As String stringa = TextBox1.Text If (CStr(Val(stringa)) = stringa) Then TextBox1.Text = Val(stringa) * 2 Else TextBox1.Text = stringa + stringa End If End Sub Private Sub CommandButton1_Click() raddoppia End Sub


Scaricare ppt "Approfondimenti di Informatica Elaborazione dell'informazione1 Elaborazione dellinformazione."

Presentazioni simili


Annunci Google