Elaborazione dell’informazione

Presentazioni simili


Presentazione sul tema: "Elaborazione dell’informazione"— Transcript della presentazione:

1 Elaborazione dell’informazione
Mari, Buonanno, Sciuto – Informatica e cultura dell’informazione – McGraw-Hill 3/27/2017 Elaborazione dell’informazione Approfondimenti di Informatica Elaborazione dell'informazione Capitolo 5 – La formalizzazione dell'informazione 1

2 Approfondimenti di Informatica Elaborazione dell'informazione
Software Hardware Software applicativo Insieme dei programmi che svolgono attività e compiti specifici per determinati tipi di lavori, finalizzati a produrre certi risultati. Applicazioni esistenti word-processor/editor web browser fogli elettronici Applicazioni create dall’utente Software di base Modulo Centrale Periferiche Software applicativo Approfondimenti di Informatica Elaborazione dell'informazione

3 Approfondimenti di Informatica Elaborazione dell'informazione
…continua… Programma Calcolatore Input Output Approfondimenti di Informatica Elaborazione dell'informazione

4 Approfondimenti di Informatica Elaborazione dell'informazione
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 l’area di un cerchio riconoscere il volto di una persona Approfondimenti di Informatica Elaborazione dell'informazione

5 Approfondimenti di Informatica Elaborazione dell'informazione
27/03/2017 Definizione del pb. 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 Prima di affrontare la soluzione occorre capire esattamente il problema Non serve saper risolvere il problema sbagliato In questo corso supporremo che il problema sia ben noto è chiaramente formulato e ci concentreremo sul formulare una soluzione Spesso in pratica è più difficile capire esattamente la natura del problema che non trovarne una soluzione! (Requirements engineering) Approfondimenti di Informatica Elaborazione dell'informazione Introduzione ai sistemi informatici 5

6 Ricerca della soluzione Interpretazione della soluzione
Relazione tra realtà e modello 27/03/2017 Ricerca della soluzione Costruzione modello <b> <b> Mondo Reale Modello F = m × a ft tt re tf 13 15 <a> <c> <d> Interpretazione della soluzione Approfondimenti di Informatica Elaborazione dell'informazione SLIDE 07 Introduzione ai sistemi informatici 6

7 Conoscenza vs. capacità
La conoscenza di come si risolve un problema e la capacità di risolverlo sono competenze distinte Esempio: ognuno è capace di riconoscere un volto, ma come avviene questo riconoscimento? Come descrivere la procedura per riconoscere uno specifico volto? Può capitare di trovarsi di fronte ad un problema la cui soluzione debba essere attuata non da noi, ma da una altro soggetto (anche un calcolatore). Il soggetto può non sapere come risolvere il problema, sebbene possa dichiarare la sua disponibilità ad attuare la soluzione nel momento in cui gli venisse insegnata Approfondimenti di Informatica Elaborazione dell'informazione

8 Istruttore vs esecutore
L’esperto che conosce la soluzione di un problema comunica come operare per risolvere il problema Approfondimenti di Informatica Elaborazione dell'informazione

9 Approfondimenti di Informatica Elaborazione dell'informazione
27/03/2017 …continua… Il processo che porta alla soluzione di un problema è quindi un’attività di natura logico-linguistica, che può essere studiata nelle sue caratteristiche prescindendo in larga misura dalla struttura fisica dell’esecutore Approfondimenti di Informatica Elaborazione dell'informazione Introduzione ai sistemi informatici 9

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

11 Descrizione interpretata
…continua… Problema Soggetto 1: istruttore Analisi Modello di Soluzione Descrizione Soluzione descritta Interpretazione La procedura di soluzione deve allora essere realizzata in fasi distinte e successive: analisi del problema e identificazione di una soluzione da parte del primo soggetto descrizione della soluzione da parte del primo soggetto in termini comprensibili al secondo soggetto interpretazione della soluzione da parte del secondo soggetto attuazione della soluzione da parte del secondo soggetto Attuazione Descrizione interpretata Soggetto 2: esecutore Soluzione Approfondimenti di Informatica Elaborazione dell'informazione

12 Approfondimenti di Informatica Elaborazione dell'informazione
…continua… Problema elementare: l’istruttore riconosce l’istruzione corrispondente e la comunica all’esecutore che associa tale istruzione a una azione che infine esegue Problema complesso: - l’istruttore scompone il problema originario in sottoproblemi, scompone i sottoproblemi in sotto-sottoproblemi e itera il procedimento fino a giungere a problemi elementari/primitivi, la soluzione di ognuno dei quali viene descritta mediante una istruzione elementare l’esecutore attua delle azioni elementari associate alle istruzioni elementari identificate Approfondimenti di Informatica Elaborazione dell'informazione

13 Approfondimenti di Informatica Elaborazione dell'informazione
27/03/2017 Proprietà di una azione elementare Finitezza l’azione deve concludersi in un tempo finito Osservabilità l’azione deve avere un effetto osservabile, cioè deve produrre qualcosa Riproducibilità a partire dallo stesso stato iniziale, la stessa azione deve produrre sempre lo stesso risultato <a> <b> <c> Approfondimenti di Informatica Elaborazione dell'informazione SLIDE 08 Introduzione ai sistemi informatici 13

14 Approfondimenti di Informatica Elaborazione dell'informazione
27/03/2017 …continua… 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 Il calcolatore “capisce” le istruzioni che fanno parte del linguaggio macchina istruzioni primitive semplici (e.g. max 2 operandi) attenzione all’efficienza (costi, complessità, velocità) difficile e noioso da utilizzare per un programmatore Approfondimenti di Informatica Elaborazione dell'informazione Introduzione ai sistemi informatici 14

15 Scomposizione del problema in sottoproblemi
27/03/2017 Esempio: area di una campana Scomposizione del problema in sottoproblemi r Sottoproblema 1 Problema soluzione elementare: s = ½  r 2 h2 h1 B r=b/2 b Per problemi più complessi il numero di passi cresce notevolmente Per semplificare la scrittura di un algoritmo lo si può scrivere in funzione di sottoproblemi non elementari purché di essi sia nota la scomposizione in problemi elementari Questi problemi dalla soluzione nota sono detti problemi terminali Sottoproblema 2 h2 b soluzione elementare: s = b h 2 h1 B Sottoproblema 3 soluzione elementare: s = ?? soluzione elementare: s = ?? Approfondimenti di Informatica Elaborazione dell'informazione Introduzione ai sistemi informatici 15

16 Scomposizione del sottoproblema 3 in tre ulteriori sottoproblemi
27/03/2017 …continua… Scomposizione del sottoproblema 3 in tre ulteriori sottoproblemi b h1 B Sottoproblema 3 h1 soluzione effettiva: s = ½ (½(B–b) h1) + b h1 + ½ (½(B–b) h1) h1 h1 b ½ (B–b) ½ (B–b) Sottoproblema 3.1 Sottoproblema 3.2 Sottoproblema 3.3 soluzione elementare: s =½ (½(B–b) h1) soluzione elementare: s = b h1 soluzione elementare: s =½ (½(B–b) h1) Composizione delle soluzioni dei tre sottoproblemi 3.1, 3.2 e 3.3 per risolvere il sottoproblema 3 Approfondimenti di Informatica Elaborazione dell'informazione Introduzione ai sistemi informatici 16

17 Approfondimenti di Informatica Elaborazione dell'informazione
27/03/2017 …continua… Sottoproblema 1 Problema r soluzione elementare: s = ½  r2 h2 h1 B r=b/2 b Composizione delle soluzioni dei tre sottoproblemi 1, 2 e 3 per risolvere il problema originario Sottoproblema 2 h2 b soluzione elementare: s = b h2 h1 B Sottoproblema 3 soluzione effettiva: s = ½  r2 + b h2 + ½ (½(B–b) h1) + b h1 + ½ (½(B–b) h1) soluzione effettiva: s = ½ (½(B–b) h1) + b h1 + ½ (½(B–b) h1) Approfondimenti di Informatica Elaborazione dell'informazione Introduzione ai sistemi informatici 17

18 Approfondimenti di Informatica Elaborazione dell'informazione
27/03/2017 Procedura effettiva Si dice procedura effettiva per un esecutore una successione di azioni tale che: - tutte le azioni della successione sono elementari per l’esecutore, che è in grado di eseguire ciascuna di esse in un tempo finito e in modo deterministico, cioè ottenendo sempre gli stessi risultati a parità di input - è fissato l’ordine di esecuzione delle azioni - è esplicitamente specificato il modo in cui un’azione utilizza i risultati delle azioni che la precedono Ad ogni scomposizione di un problema in sotto-problemi può essere associata una procedura effettiva quando vengano considerati come elementari tutti i sotto-problemi I concetti di problema elementare e azione elementare sono strettamente associati ed evidenziano l’aspetto descrittivo ed esecutivo delle procedure risolutive. Approfondimenti di Informatica Elaborazione dell'informazione Introduzione ai sistemi informatici 18

19 Approfondimenti di Informatica Elaborazione dell'informazione
27/03/2017 Soluzione effettiva Dati un problema P e un esecutore E, si definisce soluzione effettiva del problema P per l’esecutore E una successione di istruzioni elementari tale che: - l’esecutore è in grado di interpretare le istruzioni nella successione e quindi di associare a ciascuna di esse l’azione (o la successione di azioni) che deve compiere per eseguirla - la successione di azioni risultante dall’interpretazione delle istruzioni costituisca una procedura effettiva per l’esecutore stesso In generale, possono esistere diverse soluzioni effettive dello stesso problema per lo stesso esecutore Se il problema è “semplice” per l’esecutore… L’esecutore lo svolge direttamente Altrimenti… Il descrittore deve scomporre il problema in sottoproblemi finché l’algoritmo non è espresso esclusivamente tramite operazioni elementari La soluzione si dice effettiva se l’esecutore è in grado di: interpretarla compiere le azioni (in un tempo finito!) Approfondimenti di Informatica Elaborazione dell'informazione Introduzione ai sistemi informatici 19

20 Caratterizzazione formale di un esecutore
Sintattica: il linguaggio che l’esecutore è in grado di interpretare deve essere definito in modo completo e non ambiguo Pragmatica: l’insieme delle azioni che l’esecutore è in grado di compiere deve essere univocamente definito, e tali azioni devono essere elementari per l’esecutore Semantica: l’insieme delle regole di associazione tra costrutti del linguaggio e azioni deve essere definito in modo completo e non ambiguo Finché la soluzione di un problema viene descritta in termini informali (come ad es. tra gli esseri umani) può rimanere l’ambiguità circa l’attuabilità della soluzione da parte dell’esecutore (la sua effettività). Si ha ambiguità quando due soggetti giudicano come effettiva la stessa soluzione di un problema, ma poi compiono azioni che producono risultati differenti Per rimuovere tale ambiguità si deve formalizzare la definizione di un esecutore Approfondimenti di Informatica Elaborazione dell'informazione

21 Approfondimenti di Informatica Elaborazione dell'informazione
Algoritmo Definizione informale: Soluzioni effettive (soluzioni che possono essere rese comprensibili all’esecutore) per esecutori caratterizzati formalmente sequenza di operazioni la cui esecuzione porta alla soluzione di un problema L’algoritmo è una sequenza di azioni che in un numero finito di passi, elementari e non ambigui, elabora i dati di partenza per giungere al risultato finale La sequenza di azioni è specificata sulla base di un insieme di dati iniziali ben definito le caratteristiche dell’esecutore. Tutte le operazioni specificate dall’algoritmo devono essere eseguibili dall’esecutore (in questo caso si chiamano operazioni elementari) … … altrimenti è necessario “scomporre” il problema troppo complesso in sottoproblemi più semplici Approfondimenti di Informatica Elaborazione dell'informazione

22 Approfondimenti di Informatica Elaborazione dell'informazione
27/03/2017 Il calcolatore come esecutore I calcolatori sono esecutori di soluzioni che esseri umani hanno precedentemente identificato e descritto - velocità di esecuzione ripetitività e determinismo Il calcolatore in quanto esecutore è caratterizzato da: - un linguaggio che è in grado di interpretare, con il quale devono essere descritte le soluzioni che vuole che esso attui - l’insieme delle azioni che è in grado di compiere -l’insieme delle regole (istruzioni) che a ogni costrutto linguistico sintatticamente corretto associano le rispettive azioni da compiere Un calcolatore, in quanto esecutore, è caratterizzato da il linguaggio che è in grado di interpretare, con cui devono essere descritte le soluzioni che si vuole che esso attui, le azioni che è in grado di eseguire. Approfondimenti di Informatica Elaborazione dell'informazione Introduzione ai sistemi informatici 22

23 Approfondimenti di Informatica Elaborazione dell'informazione
27/03/2017 Sviluppo di un programma analisi del problema e identificazione di una soluzione formalizzazione della soluzione e definizione dell’algoritmo risolutivo (realizzata da esseri umani, e raramente supportata da strumenti CASE, Computer Aided Software Engineering); programmazione, cioè scrittura del programma in un linguaggio di programmazione “ad alto livello” (programmatori con il supporto di opportuni ambienti di sviluppo) traduzione del programma nel “linguaggio macchina” (svolta automaticamente) Approfondimenti di Informatica Elaborazione dell'informazione Introduzione ai sistemi informatici 23

24 Codice in linguaggio macchina
…continua… Problema Soggetto 1: istruttore Analisi Algoritmo Codifica Programma Traduzione Esecuzione Codice in linguaggio macchina Soggetto 2: esecutore Soluzione Approfondimenti di Informatica Elaborazione dell'informazione

25 Approfondimenti di Informatica Elaborazione dell'informazione
27/03/2017 …continua… procedura effettiva Algoritmo = descrizione di come si risolve un problema Programma = algoritmo scritto in modo che possa essere eseguito da un calcolatore (linguaggio di programmazione) Linguaggio macchina = linguaggio effettivamente “compreso” da un calcolatore, caratterizzato da istruzioni primitive semplici (e.g. max 2 operandi) attenzione all’efficienza (costi, complessità, velocità) difficile e noioso da utilizzare per un programmatore Due aspetti rilevanti: produrre algoritmi (cioè capire la sequenza di passi che portano alla soluzione di un problema) codificarli in programmi (cioè renderli comprensibili al calcolatore) Approfondimenti di Informatica Elaborazione dell'informazione Introduzione ai sistemi informatici 25

26 Approfondimenti di Informatica Elaborazione dell'informazione
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.) sequenza di operazioni la cui esecuzione porta alla soluzione di un problema L’algoritmo è una sequenza di azioni che in un numero finito di passi, elementari e non ambigui, elabora i dati di partenza per giungere al risultato finale La sequenza di azioni è specificata sulla base di un insieme di dati iniziali ben definito le caratteristiche dell’esecutore. Tutte le operazioni specificate dall’algoritmo devono essere eseguibili dall’esecutore (in questo caso si chiamano operazioni elementari) … … altrimenti è necessario “scomporre” il problema troppo complesso in sottoproblemi più semplici Approfondimenti di Informatica Elaborazione dell'informazione

27 Approfondimenti di Informatica Elaborazione dell'informazione
Esempio: determinare le radici di una equazione di 2° grado 1. Inizio algoritmo 2. Acquisire i coefficienti a,b,c 3. Calcolare il valore  = b2-4ac 4. Se  <0 non esistono radici reale vai all’istruzione 8 5. Se  =0 allora x1= x2= -b/2a 6. Se  >0 allora x1=(-b + √ )/2a , x2=(-b - √ )/2a 7. Comunicare all’esterno i valori x1 e x2 8. Fine dell’algoritmo Approfondimenti di Informatica Elaborazione dell'informazione

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

29 Approfondimenti di Informatica Elaborazione dell'informazione
…continua… Generalità – un algoritmo deve fornire la soluzione ad una classe di problemi dato un insieme di definizione o dominio dato un insieme di arrivo o codominio l’algoritmo può operare su tutti i dati appartenenti al dominio per fornire una soluzione all’interno dei codominio Approfondimenti di Informatica Elaborazione dell'informazione

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

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

32 Approfondimenti di Informatica Elaborazione dell'informazione
27/03/2017 …continua… Correttezza Completezza Efficienza Approfondimenti di Informatica Elaborazione dell'informazione Introduzione ai sistemi informatici 32

33 Descrizione degli algoritmi
Le proposizioni usate da un linguaggio formale descrivono due classi principali di entità: I DATI, cioè gli oggetti sui quali si devono eseguire le operazioni Le OPERAZIONI che devono essere eseguite Approfondimenti di Informatica Elaborazione dell'informazione

34 Approfondimenti di Informatica Elaborazione dell'informazione
27/03/2017 Criteri di classificazione dei DATI Variabilità nel tempo -costanti -variabili Struttura - elementari - strutturati Tipo - predefinito - definito dall’utente Visibilità - utente - codice <a> <b> <c> Approfondimenti di Informatica Elaborazione dell'informazione SLIDE 08 Introduzione ai sistemi informatici 34

35 Approfondimenti di Informatica Elaborazione dell'informazione
Costanti dati che rimangono inalterati durante tutta l’esecuzione dell’algoritmo Ex. Nell’Algoritmo delle radici in  = b2-4ac, 4 è costante. Approfondimenti di Informatica Elaborazione dell'informazione

36 Approfondimenti di Informatica Elaborazione dell'informazione
Variabili si riferirsi ad un oggetto indipendentemente dal valore specifico di questo <nome, valore> alle variabili deve essere assegnato esplicitamente un valore dato che all’inizio di un algoritmo le variabili hanno un valore indeterminato Ex: Nell’Algoritmo delle Radici sono presenti le variabili: a,b,c, x1 e x2 Gli algoritmi sono parametrici: producono un risultato che dipende da un insieme di dati di partenza; descrivono la soluzione non di un singolo problema, ma di una intera classe di problemi strutturalmente equivalenti. Esempi: l’algoritmo per la moltiplicazione di due numeri specifica come effettuare il prodotto di tutte le possibili coppie di numeri; l’algoritmo per la ricerca di un libro nello schedario della biblioteca vale per tutti i possibili libri; Le istruzioni dell’algoritmo fanno riferimento a variabili, il cui valore non è fissato a priori ma cambia a seconda della situazione elaborativa in cui l’esecutore si trova. Approfondimenti di Informatica Elaborazione dell'informazione

37 Assegnazione L’istruzione di assegnazione permette di definire il valore attuale di una variabile che rimane inalterato fino a una nuova assegnazione alla variabile <nome  espressione> L’assegnazione viene eseguita nei seguenti passi: si valuta l’espressione di destra si attribuisce il valore determinato alla variabile All’interno di espressioni, l’esecutore usa il valore contenuto nelle variabili per calcolare il risultato dell’espressione, per esempio op1 + op2 × op3 oppure op1 / op2 – op3, … in istruzioni di assegnamento introdurre nel contenitore identificato dal nome della variabile il valore specificato a destra dell’assegnamento; per esempio r ← 35 (assegna 35 alla variabile il cui nome è r), pi ← 3,14, … in istruzioni di assegnamento combinate con espressioni assegna a una variabile il risultato ottenuto dalla valutazione di un’espressione, per esempio in “circ ← 2 × r × pi” il risultato dell’espressione 2 × r × pi viene calcolato utilizzando i valori contenuti nelle variabili r e pi e il risultato viene poi assegnato alla variabile circ; la stessa variabile può comparire in entrambi i lati dell’istruzione di assegnamento, per esempio in “k ← k + 1” il valore contenuto in k viene utilizzato per trovare il valore dell’espressione k + 1 che viene memorizzato come nuovo valore di k. Approfondimenti di Informatica Elaborazione dell'informazione

38 Approfondimenti di Informatica Elaborazione dell'informazione
…continua… Ogni volta che una variabile appare a destra dell’istruzione di assegnazione  , è necessario che un valore sia già stato assegnato a quella variabile Ex: nel caso a  2, b  3, c  a+b, allora c=5 nel caso x  2, x  x+3, allora x=5 nel caso a  2, a  a+1, allora a=3 Approfondimenti di Informatica Elaborazione dell'informazione

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

40 Approfondimenti di Informatica Elaborazione dell'informazione
27/03/2017 …continua… Soluzione di getto x←y y←x Il valore assegnato a una variabile si sostituisce a quello che era presente in precedenza: il vecchio valore non potrà più essere recuperato. Esempio: si ipotizzi di voler scambiare i valori contenuti in due variabili x e y. Soluzione proposta: doppio assegnamento del tipo x ← y y ← x per indicare che il valore di y deve essere copiato in x e che, nello stesso tempo, il valore di x sia trasferito in y. Le istruzioni però vengono eseguite in sequenza! Quindi l’assegnamento x ← y viene completato prima di iniziare y ← x. Approfondimenti di Informatica Elaborazione dell'informazione Introduzione ai sistemi informatici 40

41 Approfondimenti di Informatica Elaborazione dell'informazione
27/03/2017 Soluzione y tmp; x y; 7 9 … … … ?? tmp x; temp o t 1 3 2 4 6 5 ?? tmp←x x←y y ← tmp Approfondimenti di Informatica Elaborazione dell'informazione Introduzione ai sistemi informatici 41

42 Approfondimenti di Informatica Elaborazione dell'informazione
27/03/2017 Variabili strutturate consentono di riferirsi a più valori reciprocamente correlati come se si trattasse di un’unica variabile aggregata - array (vettori, matrici, array multidimensionali) - record Approfondimenti di Informatica Elaborazione dell'informazione Introduzione ai sistemi informatici 42

43 <nome, insieme di valori>
Vettori Una variabile vettore è una coppia <nome, insieme di valori> vettori (array) Ogni vettore è caratterizzato da un nome e da un tipo può contenere un numero n stabilito di elementi, ognuno identificato mediante un indice che varia tra 1 e n (oppure, in certi linguaggi come il C, tra 0 e n–1) se vett è il nome di un vettore, i suoi elementi sono dunque riferiti come vett[1], vett[2] e così via. È possibile utilizzare la notazione vett[i], dove i è una variabile il cui valore può essere dunque impiegato per controllare in modo parametrico lo specifico elemento del vettore a cui si intende riferirsi. vocali = A E U O I pos. 0 pos. 1 pos. 2 pos. 3 pos. 4 Approfondimenti di Informatica Elaborazione dell'informazione

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

45 Approfondimenti di Informatica Elaborazione dell'informazione
Matrice insieme di valori indicizzati da due o più indici M[i,j] Per una matrice a 2 dimensioni l’indice i è detto indice riga e j indice colonna Assegnazione  assegnazione per ogni elemento della matrice matrici (o array multidimensionali), gli elementi sono identificati da più indici, ognuno corrispondente a una dimensione della matrice se mat è il nome di una matrice bidimensionale, i suoi elementi sono mat[1,1], mat[1,2] e così via. Approfondimenti di Informatica Elaborazione dell'informazione

46 Approfondimenti di Informatica Elaborazione dell'informazione
27/03/2017 Esempio f [0,0] f [0, 1 ] … … f [0, j ] … … f [0, m ] f [ 1 ,0] f [ 1, 1 ] … … 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 ] Approfondimenti di Informatica Elaborazione dell'informazione Introduzione ai sistemi informatici 46

47 Approfondimenti di Informatica Elaborazione dell'informazione
Esempio matr_vocali = I A O E U matr_vocali [1,2]  O matr_vocali [0,0]  A matr_vocali = A O E U I Approfondimenti di Informatica Elaborazione dell'informazione

48 Approfondimenti di Informatica Elaborazione dell'informazione
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 superano il limite principale di vettori e matrici, rappresentato dal fatto che i loro elementi devono essere tutti dello stesso tipo. Approfondimenti di Informatica Elaborazione dell'informazione

49 Approfondimenti di Informatica Elaborazione dell'informazione
27/03/2017 Esempio studente = cod cognome nome indirizzo luogo n data n intero stringa data Approfondimenti di Informatica Elaborazione dell'informazione Introduzione ai sistemi informatici 49

50 Approfondimenti di Informatica Elaborazione dell'informazione
27/03/2017 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 Approfondimenti di Informatica Elaborazione dell'informazione Introduzione ai sistemi informatici 50

51 Approfondimenti di Informatica Elaborazione dell'informazione
27/03/2017 Esempio classe = cod cognome nome indirizzo luogo n data n cod cognome nome indirizzo luogo n data n ……………………………………………. cod cognome nome indirizzo luogo n data n Approfondimenti di Informatica Elaborazione dell'informazione Introduzione ai sistemi informatici 51

52 Approfondimenti di Informatica Elaborazione dell'informazione
Istruzioni istruzioni di inizio/fine esecuzione istruzioni di ingresso/uscita istruzioni operative istruzioni controllo condizionali loop o di ciclo salto Istruzioni di ingresso/uscita acquisizione dei dati (ingresso); presentazione dei risultati (uscita). Istruzioni aritmetico–logiche consentono la manipolazione dei dati e sono quindi quelle che realizzano l’elaborazione vera e propria; assegnamento: una variabile riceve un valore che è il risultato ottenuto dalla valutazione di un’espressione che può contenere costanti e variabili; nelle espressioni sono comprese le operazioni aritmetiche di base, alcune funzioni matematiche più complesse (logaritmi, esponenziali, radici, …), le operazioni di tipo logico (cioè quelle che fanno riferimento a dati booleani). Istruzioni di controllo modificano il flusso di esecuzione delle istruzioni all’interno di un programma; selezione (semplice, a due vie o a più vie); cicli (a condizione iniziale, finale, iterativi) Approfondimenti di Informatica Elaborazione dell'informazione

53 Istruzioni di inizio/fine
Indicano quale istruzione dell’algoritmo debba essere eseguita inizialmente e quale determini la fine dell’esecuzione Istruzioni di ingresso/uscita Istruzioni che indicano una trasmissione di dati o messaggi fra l’algoritmo e tutto ciò che è esterno all’algoritmo Approfondimenti di Informatica Elaborazione dell'informazione

54 Approfondimenti di Informatica Elaborazione dell'informazione
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) Approfondimenti di Informatica Elaborazione dell'informazione

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

56 Istruzioni condizionali
Istruzioni che controllano il verificarsi di condizioni specificate e che in base al risultato determinano quale istruzione eseguire Istruzioni che alterano il normale ordine di esecuzione delle istruzioni di un algoritmo, specificando esplicitamente quale sia la successiva istruzione da eseguire if … then … else Approfondimenti di Informatica Elaborazione dell'informazione

57 Istruzioni di loop o di ciclo
Determinano il ripetersi di una stessa serie di istruzione fintanto che una condizione rimane verificata (vera) o non verificata (falsa) Tale condizione può essere testata sia prima che dopo l’esecuzione, per la prima volta, della serie di istruzioni for … do … repeat … until … Approfondimenti di Informatica Elaborazione dell'informazione

58 Approfondimenti di Informatica Elaborazione dell'informazione
Esempio Nell’Algoritmo 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 Approfondimenti di Informatica Elaborazione dell'informazione

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

60 Approfondimenti di Informatica Elaborazione dell'informazione
Esercizio Esprimere eta' compresa fra 18 e 60 anni 60<=eta and eta>=18 altezza superiore a 1.90m oppure peso superiore a 100Kg peso>100kg or altezza>190cm un anno multiplo di 4 ma non multiplo di 100 (anno mod 4)=0 and not (anno mod 100)=0 Approfondimenti di Informatica Elaborazione dell'informazione

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

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

63 Approfondimenti di Informatica Elaborazione dell'informazione
27/03/2017 Codifica degli algoritmi 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) Approfondimenti di Informatica Elaborazione dell'informazione Introduzione ai sistemi informatici 63

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

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

66 Approfondimenti di Informatica Elaborazione dell'informazione
Esempio: determinare il maggiore di tre numeri 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 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 l’esecuzione. Approfondimenti di Informatica Elaborazione dell'informazione

67 Approfondimenti di Informatica Elaborazione dell'informazione
Esempio: determinare il maggiore di tot numeri 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 all’utente il numero più grande trovato finora: questo è il maggiore dei numeri inseriti; P8 termina l’esecuzione. Approfondimenti di Informatica Elaborazione dell'informazione

68 Approfondimenti di Informatica Elaborazione dell'informazione
27/03/2017 Esercizio Scrivere un algoritmo per effettuare il prodotto di due numeri naturali per somme ripetute Approfondimenti di Informatica Elaborazione dell'informazione Introduzione ai sistemi informatici 68

69 Approfondimenti di Informatica Elaborazione dell'informazione
27/03/2017 Esempio: prodotto di due numeri naturali per somme ripetute P1 Leggi a P2 Leggi b P3 Somma b a se stesso a volte P4 Scrivi il risultato Approfondimenti di Informatica Elaborazione dell'informazione Introduzione ai sistemi informatici 69

70 Approfondimenti di Informatica Elaborazione dell'informazione
27/03/2017 ..continua… 1. Leggi a e b 2. prod ← 0 3. finchè a ≠ 0 ripeti prod ← prod + b; a ← a - 1; Approfondimenti di Informatica Elaborazione dell'informazione Introduzione ai sistemi informatici 70

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

72 Approfondimenti di Informatica Elaborazione dell'informazione
…continua… blocchi elementari begin leggi x A inizio input azione C scrivi x vero falso end selezione fine output Approfondimenti di Informatica Elaborazione dell'informazione

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

74 Approfondimenti di Informatica Elaborazione dell'informazione
…continua… 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 Approfondimenti di Informatica Elaborazione dell'informazione

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

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

77 Approfondimenti di Informatica Elaborazione dell'informazione
…continua… begin Schema di sequenza: due o più schemi di flusso sono eseguiti in successione S1 S2 Nota: lo schema di sequenza è strutturato se e solo se lo sono i blocchi S1 e S2 end Approfondimenti di Informatica Elaborazione dell'informazione

78 Approfondimenti di Informatica Elaborazione dell'informazione
…continua… 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 begin C C falso vero falso vero S1 S2 S1 end end Approfondimenti di Informatica Elaborazione dell'informazione

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

80 Approfondimenti di Informatica Elaborazione dell'informazione
…continua… I due schemi non sono equivalenti: in un caso lo schema S1 è eseguito almeno una volta e nell’altro potrebbe non essere mai eseguito La condizione vero/falso per il controllo possono essere invertite: si parla di iterazione per vero quando S1 è eseguito finché la condizione su C è vera e iterazione per falso nell’altro 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 Approfondimenti di Informatica Elaborazione dell'informazione

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

82 Approfondimenti di Informatica Elaborazione dell'informazione
…continua… Condizione di fine ciclo: viene controllata dopo l’esecuzione di ogni blocco di iterazione, può essere con controllo in coda al ciclo o in testa Un ciclo è detto enumerativo quando è noto a priori il numero di volte che deve essere eseguito Si usa un contatore di ciclo per controllarne l’esecuzione: si usa cioè una variabile che viene incrementata (o decrementata) fino a raggiungere un valore prefissato Approfondimenti di Informatica Elaborazione dell'informazione

83 Approfondimenti di Informatica Elaborazione dell'informazione
…continua… Un ciclo è indefinito quando non è noto a priori il numero di volte che deve essere eseguito Questo accade quando la condizione di fine ciclo dipende dal valore di una o più variabili che o dipendono dall’interazione con l’esterno o vengono modificate all’interno dell’iterazione in modo complesso Approfondimenti di Informatica Elaborazione dell'informazione

84 Approfondimenti di Informatica Elaborazione dell'informazione
27/03/2017 Esempio: prodotto di due numeri naturali per somme ripetute begin 1. Leggi a e b 2. prod ← 0 3. finchè a ≠ 0 ripeti prod ← prod + b; a ← a - 1; INPUT a, b prod ← 0 a<>0 falso OUTPUT prod vero prod ←prod + b a ← a – 1 end Approfondimenti di Informatica Elaborazione dell'informazione Introduzione ai sistemi informatici 84

85 Approfondimenti di Informatica Elaborazione dell'informazione
27/03/2017 Esempio: maggiore di due numeri naturali per differenza P1 leggi un valore dall’esterno e assegnalo alla variabile x; P2 leggi un secondo valore dall’esterno e assegnalo alla variabile y; P3 calcola la differenza d fra x e y, cioè esegui d ← x – y; P4 valuta se d è positivo: in caso affermativo prosegui con il passo P5, altrimenti (in caso negativo) salta al passo P7; P5 scrivi “il numero maggiore è ” seguito dal valore di x; P6 salta al passo P8; P7 scrivi “il numero maggiore è ” seguito dal valore di y; P8 termina l’esecuzione. Approfondimenti di Informatica Elaborazione dell'informazione Introduzione ai sistemi informatici 85

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

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

88 Approfondimenti di Informatica Elaborazione dell'informazione
27/03/2017 Esempio Approfondimenti di Informatica Elaborazione dell'informazione Introduzione ai sistemi informatici 88

89 Approfondimenti di Informatica Elaborazione dell'informazione
27/03/2017 Esercizio Dato un intero N restituire N! Attenzione scrivere una prima versione dell’algoritmo immaginando che i dati di ingresso siano sempre corretti (cioè sempre maggiori di zero); scrivere una seconda versione dell’algoritmo in cui sia considerata anche la possibilità che siano inseriti valori inferiori a 1. Approfondimenti di Informatica Elaborazione dell'informazione Introduzione ai sistemi informatici 89

90 Approfondimenti di Informatica Elaborazione dell'informazione
27/03/2017 Soluzione 1 begin 1 * 2 = 2 2 * 3 = 6 6 * 4 = 24 24 * 5 = 120 120 * 6 = 720 720 * 7 = 5040 Leggi N P  1 I  1 NO I < N SI Scrivi P I  I + 1 P  P * I end Approfondimenti di Informatica Elaborazione dell'informazione Introduzione ai sistemi informatici 90

91 Approfondimenti di Informatica Elaborazione dell'informazione
27/03/2017 Soluzione 2 begin 7 * 6 = 42 42 * 5 = 210 210 * 4 = 840 840 * 3 = 2520 2520 * 2 = 5040 Leggi N P  N NO N > 2 SI Scrivi P N  N - 1 P  P * N end Approfondimenti di Informatica Elaborazione dell'informazione Introduzione ai sistemi informatici 91

92 Approfondimenti di Informatica Elaborazione dell'informazione
27/03/2017 …continua… Start Leggi N P  1 I  1 I < N NO SI I  I + 1 P  P * I Scrivi P End T pos N I P note t1  ?? ?? ?? t2  4 ?? ?? t3  I < N t4  4 1 1 t5  I < N t6  4 2 2 t7  I < N t8  4 3 6 t9  I = N t10  t11  Approfondimenti di Informatica Elaborazione dell'informazione Introduzione ai sistemi informatici 92

93 Approfondimenti di Informatica Elaborazione dell'informazione
27/03/2017 …continua… 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 Approfondimenti di Informatica Elaborazione dell'informazione Introduzione ai sistemi informatici 93

94 Gestione inserimenti indesiderati
27/03/2017 …continua… Start Leggi N P  1 I  1 I < N NO SI I  I + 1 P  P * I Scrivi P End Start Leggi N Start Leggi N P  1 I  1 I < N NO SI I  I + 1 P  P * I Scrivi P End N > 0 Scrivi “Errore!” P  1 I  1 I < N NO SI I  I + 1 P  P * I Scrivi P N > 0 NO SI Scrivi “Errore!” End Gestione inserimenti indesiderati Approfondimenti di Informatica Elaborazione dell'informazione Introduzione ai sistemi informatici 94

95 Soluzione 3: ricorsiva funzione fattoriale(n) begin SI n=0
27/03/2017 Soluzione 3: ricorsiva funzione fattoriale(n) begin SI n=0 fattoriale = 1 Leggi N NO SI n=1 fattoriale = 1 Scrivi fattoriale(N) NO fattoriale = n * fattoriale(n-1) end return Approfondimenti di Informatica Elaborazione dell'informazione Introduzione ai sistemi informatici 95

96 Approfondimenti di Informatica Elaborazione dell'informazione
27/03/2017 Esercizio Dato un intero N restituire la somma dei primi N numeri naturali Attenzione scrivere una prima versione dell’algoritmo immaginando che i dati di ingresso siano sempre corretti (cioè sempre maggiori di zero); scrivere una seconda versione dell’algoritmo in cui sia considerata anche la possibilità che siano inseriti valori inferiori a 1. Approfondimenti di Informatica Elaborazione dell'informazione Introduzione ai sistemi informatici 96

97 Approfondimenti di Informatica Elaborazione dell'informazione
27/03/2017 Soluzione Una prima strategia di soluzione di questo problema si basa sulla successiva somma di tutti i numeri compresi tra 1 e il valore n (si consideri come esempio il valore 4). Ovviamente la somma può essere eseguita sia partendo da 1 e proseguendo verso l’alto fino ad arrivare a n (nel­l’esempio, il risultato si otterrebbe da =10), sia partendo da n e proseguendo verso il basso finché non si arriva a 1 (cioè =10), come illustrato nei diagrammi di flusso riportati nella Figura 3.10. In ogni istante la somma dei numeri considerati fino a quel momento è registrata nella variabile ris, che alla conclusione dell’esecuzione conterrà il valore cercato. È interessante notare che i due algoritmi proposti danno lo stesso risultato quando i dati in ingresso sono corretti rispetto alle specifiche del problema; in altre parole, se i due algoritmi vengono applicati a un valore positivo, danno lo stesso risultato. Se invece il valore di ingresso non rispetta le specifiche (nel caso in esame potrebbe essere negativo invece che positivo, per esempio –4), i risultati che si ottengono sono diversi: il primo algoritmo restituisce come risultato il valore 0, indipendente­mente dal valore immesso, mentre il secondo dà come risultato il valore di n (nell’esempio, –4). Approfondimenti di Informatica Elaborazione dell'informazione Introduzione ai sistemi informatici 97

98 Approfondimenti di Informatica Elaborazione dell'informazione
27/03/2017 …continua… Approfondimenti di Informatica Elaborazione dell'informazione Introduzione ai sistemi informatici 98

99 Approfondimenti di Informatica Elaborazione dell'informazione
27/03/2017 …continua… Start Leggi N S  0 I  1 Versione con un ciclo a condizione finale S  S+I I  I+1 I > N ? NO SI Scrivi S END Approfondimenti di Informatica Elaborazione dell'informazione Introduzione ai sistemi informatici 99

100 Approfondimenti di Informatica Elaborazione dell'informazione
27/03/2017 Soluzione ottima Questo esempio permette di esaminare due delle principali proprietà di un algoritmo: la correttezza indica che l’algoritmo risolve il problema per cui è stato progettato e può essere quindi associata al concetto di efficacia dell’algo­ritmo, cioè alla capacità di ottenere l’effetto desiderato. Entrambi gli algoritmi riportati nelle Figure 3.11 e 3.12 sono corretti rispetto al problema del calcolo della somma dei primi n numeri naturali. la complessità di un algoritmo è collegata al numero di istruzioni che sono necessarie per completare la soluzione del problema e dipende, in genere, dalle dimensioni dei valori inseriti in ingresso. Si può quindi associare il concetto di complessità di un algoritmo a quello di efficienza: l’algoritmo in Figura 3.11 è più complesso di quello riportato in Figura 3.12 che quindi si può considerare più efficiente, naturalmente pur di ammettere che l’esecutore in questione sia capace di eseguire direttamente le operazioni di moltiplicazione e divisione, senza ricorrere a somme e sottrazioni ripetute. Approfondimenti di Informatica Elaborazione dell'informazione Introduzione ai sistemi informatici 100

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

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

103 Approfondimenti di Informatica Elaborazione dell'informazione
Esercizi Stampa dell’area di un triangolo Stampa delle radici di una eq. di 2° grado Stampa dei multipli di un numero in ingresso x minori di y, x.y>0 Stampa della massima potenza minore di y di un numero in ingresso x, x.y>0 Approssimazione intera, per eccesso, della radice quadrata di un numero in ingresso positivo Stampa il quoziente della divisione intera tra due numeri positivi utilizzando solo la differenza Dato un numero x in input, se x<10 allora stampa “ciao” 5 volte, se x>20 allora stampa “evviva” x volte, altrimenti chiedi un numero y in input e stampa “salve” x-y volte, se x>y, y-x volte altrimenti Approfondimenti di Informatica Elaborazione dell'informazione

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

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

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

107 Approfondimenti di Informatica Elaborazione dell'informazione
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) Y = Val(n) i = 0 Do While (X >= Y) X = X - Y i = i + 1 Loop MsgBox "Resto: " & X & " Quoziente: " & i End Sub Approfondimenti di Informatica Elaborazione dell'informazione

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

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

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

111 Approfondimenti di Informatica Elaborazione dell'informazione
Soluzione Passo 1: - dati in ingresso (variabili) richiesti all’utente - dati costanti propri del problema - output richiesto per ciascun input Passo 2: da esempi concreti, astrazione della soluzione Passo 3: scomposizione di ciascun passo individuato per la soluzione in uno o più passi elementari (descrivibili tramite blocchi ) Approfondimenti di Informatica Elaborazione dell'informazione

112 Approfondimenti di Informatica Elaborazione dell'informazione
Soluzione 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 l’elemento non è stato trovato dico “Elemento NON trovato” Approfondimenti di Informatica Elaborazione dell'informazione

113 Approfondimenti di Informatica Elaborazione dell'informazione
…continua… 1. Controllo di tutti gli elementi del vettore  ciclo con variabile che assume tutti i valori delle posizioni del vettore, per tutta la sua lunghezza. 2. Uscita dal ciclo con esito positivo quando l’elemento è stato trovato, con esito negativo quando la variabile di ciclo ha raggiunto la fine del vettore Passo 3: formalizzazione del diagramma di flusso Approfondimenti di Informatica Elaborazione dell'informazione

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

115 Approfondimenti di Informatica Elaborazione dell'informazione
…continua… Passo 2: ad ogni passo la variabile di ciclo i viene aumentata di 1 scorrendo gli elementi di Vettore begin Passo 2: la variabile di ciclo i arriverà fino alla fine di Vettore INPUT Vettore , Elemento i  0 dimensione Vettore  K Passo 2: controllo se l’ i-esimo elemento del Vettore è quello cercato i = K vero OUTPUT Elemento NON trovato i  i+1 falso end Vettore [i] = Elemento falso vero OUTPUT Elemento trovato Approfondimenti di Informatica Elaborazione dell'informazione

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

117 Approfondimenti di Informatica Elaborazione dell'informazione
Esercizi 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 Determinare il valore massimo tra gli elementi di un vettore, non vuoto Calcolare la media degli elementi di un vettore, non vuoto Determinare il numero di elementi pari in un vettore Determinare il numero di elementi positivi in un vettore Determinare il numero di occorrenze di un valore in un vettore 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 Dato un vettore di numeri interi ordinarlo in modo crescente Approfondimenti di Informatica Elaborazione dell'informazione

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

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

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

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

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

123 Approfondimenti di Informatica Elaborazione dell'informazione
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 dall’essere umano - ambiguo, ridondante, non preciso, sintatticamente complesso Linguaggio di programmazione ad alto livello: c = a+b L’insieme di istruzioni direttamente interpretabili ed eseguibili da un calcolatore si chiama linguaggio macchina Il linguaggio macchina è detto di basso livello perché dipende dalle specifiche caratteristiche del calcolatore. In particolare questo deve tenere conto del tipo di istruzioni elementari disponibili (che sono variabili) modo di specificare gli indirizzi dei dati (che è variabile) Approfondimenti di Informatica Elaborazione dell'informazione

124 Approfondimenti di Informatica Elaborazione dell'informazione
Traduttori macchina traduttore programma Codice in linguaggio macchina macchina Per rendere possibile l’esecuzione di un programma da parte di un calcolatore è necessario che le istruzioni siano: interpretabili attuabili Perché le istruzioni siano interpretabili devono essere codificate in binario Perché le istruzioni siano attuabili deve esistere un dispositivo nel computer che materialmente esegue l’istruzione (vedremo): Unità Centrale Unità Logico Aritmetica Codice in linguaggio macchina dati risultati Approfondimenti di Informatica Elaborazione dell'informazione

125 Approfondimenti di Informatica Elaborazione dell'informazione
Compilatori vs Interpreti Compilatori Accettano in ingresso l’intero programma e producono in uscita la rappresentazione dell'intero programma in linguaggio macchina Interpreti Traducono ed eseguono direttamente ciascuna istruzione del programma sorgente, istruzione per istruzione Compilatori Per ogni programma da tradurre, lo schema viene percorso una volta sola prima dell’esecuzione. Interpreti Lo schema viene attraversato tante volte quante sono le istruzioni che compongono il programma; ad ogni attivazione dell'interprete su una particolare istruzione, segue l’esecuzione dell’istruzione stessa. Approfondimenti di Informatica Elaborazione dell'informazione

126 Unità Centrale di Elaborazione
Mari, Buonanno, Sciuto – Informatica e cultura dell’informazione – McGraw-Hill 3/27/2017 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 Dati del programma P’ Programma P’ in linguaggio macchina della CPU Fase 2 Compilatori Approfondimenti di Informatica Elaborazione dell'informazione Capitolo 5 – La formalizzazione dell'informazione 126

127 Interpreti Unità Centrale di Elaborazione Memoria Bus di sistema
Programma P in un linguaggio ad alto livello L Dati del programma P Programma interprete del linguaggio ad alto livello L Dati dell’interprete Approfondimenti di Informatica Elaborazione dell'informazione

128 Approfondimenti di Informatica Elaborazione dell'informazione
…continua… Compilazione migliori prestazioni nell’esecuzione attuazione di processi di ottimizzazione tempi maggiori di messa a punto copyright Interpretazione - programmi meno efficienti tempi di sviluppo più contenuti buono per la fase di prototipazione maggiore portabilità Quale delle due soluzioni è la migliore? nella compilazione la traduzione viene effettuata una sola volta, in una fase che precede l’esecuzione; si ottengono in genere migliori prestazioni nell’esecuzione; nella compilazione si possono attuare processi di ottimizzazione dell’eseguibile, dato che il compilatore opera sull’intero programma e non istruzione per istruzione come l’interprete; per ogni modifica del programma sorgente, la compilazione deve essere ripetuta completamente per rigenerare il codice eseguibile; l’interprete consente invece di eseguire il programma non appena il codice sorgente sia stato aggiornato, per cui il costo di eventuali modifiche al programma è pressoché nullo. Compilazione applicazioni più veloci maggior lavoro nel processo di messa a punto e manutenzione OK per i prodotti commerciali a larga diffusione. Interpretazione consente tempi di sviluppo più contenuti, produce programmi meno efficienti; OK in fase di prototipazione dei programmi che, una volta ultimati, venivano compilati prima del rilascio commerciale. Considerare le applicazioni che debbono essere eseguite: I/O bound: programmi che eseguono molte operazioni di ingresso/uscita intervallate da brevi periodi di elaborazione; convenientemente eseguiti da un interprete senza penalizzazioni nell’efficienza (il tempo di ingresso/uscita è indipendente dalle modalità di esecuzione del programma), appartengono a questa categoria la maggioranza dei programmi gestionali. CPU bound: programmi che eseguono poche operazioni di ingresso/uscita rispetto alla mole delle elaborazioni effettuate. sono programmi prevalentemente di tipo scientifico o ingegneristico, sono scarsamente efficienti se eseguiti da un interprete e la loro compilazione risulta pressoché indispensabile. Considerazioni commerciali la distribuzione del codice eseguibile garantisce al programmatore che l’acquirente non sarà facilmente in grado di modificare e/o riutilizzare parti del programma sorgente, soggette ovviamente a vincoli di proprietà intellettuale. Considerazioni tecnologiche la diffusione di Internet e la disponibilità di calcolatori ad alte prestazioni e a costi contenuti hanno portato a una rinascita dell’uso di interpreti software (portabilità e indipendenza dall’hardware sul quale vengono eseguite le applicazioni). Approfondimenti di Informatica Elaborazione dell'informazione

129 Approfondimenti di Informatica Elaborazione dell'informazione
27/03/2017 Linguaggio di programmazione -sintassi: insieme delle regole che specificano come comporre istruzioni ben formate -semantica: specifica il significato di ogni istruzione ben formata determinando la successione delle operazioni che vengono compiute allorché l’istruzione viene eseguita Per fare sì che un algoritmo sia effettivamente utilizzabile da un esecutore automatico occorre eliminare le ambiguità circa la codifica dei dati e l’interazione con gli esseri umani. Per tale scopo occorre tradurre l’algoritmo in un linguaggio comprensibile e fruibile dal calcolatore: un linguaggio di programmazione. In generale, durante la stesura di un programma, ci si deve preoccupare dei limiti nell’intervallo di rappresentazione dei numeri, della durata non nulla delle operazioni, etc. Approfondimenti di Informatica Elaborazione dell'informazione Introduzione ai sistemi informatici 129

130 Approfondimenti di Informatica Elaborazione dell'informazione
27/03/2017 Parti fondamentali di un programma Identificazione del programma 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) le istruzioni presenti in questa parte sono eseguite in successione: una volta eseguita un’istruzione si passa alla successiva, e così via fino ad arrivare all’ultima istruzione del programma esistono però particolari istruzioni, dette di controllo, che consentono di modificare il flusso di esecuzione all’interno del programma e che corrispondono alle strutture di controllo, condizionali e iterative, introdotte a proposito degli algoritmi. Approfondimenti di Informatica Elaborazione dell'informazione Introduzione ai sistemi informatici 130

131 Approfondimenti di Informatica Elaborazione dell'informazione
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à È come se il linguaggio di programmazione che si sta utilizzando, che già dispone di un proprio insieme di istruzioni, venisse arricchito di ulteriori istruzioni, ognuna corrispondente a un sottoprogramma scritto dal programmatore È come se il linguaggio di programmazione che si sta utilizzando, che già dispone di un proprio insieme di istruzioni, venisse arricchito di ulteriori istruzioni, ognuna corrispondente a un sottoprogramma scritto dal programmatore Approfondimenti di Informatica Elaborazione dell'informazione

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

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

134 Approfondimenti di Informatica Elaborazione dell'informazione
Paradigma logico -uso di fatti, relazioni e regole per rappresentare l’informazione -uso della deduzione per ottenere domande a risposte Minore(1,2) Minore(2,3) E_Minore(x,y):- Minore(x,y) E_Minore(x,y):- Minore(x,z) E_Minore(z,y) ? E_Minore(1,3) Approfondimenti di Informatica Elaborazione dell'informazione

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

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

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

138 Approfondimenti di Informatica Elaborazione dell'informazione
OO: concetto di proprietà attributi che determinandone l'aspetto e le funzionalità dei membri di una classe Molte proprietà sono comuni a diverse classi (ex.: ogni classe dovrebbe avere una proprietà in cui riportare il “nome specifico” di ciascun suo membro) altre sono più specifiche per una data classe Solitamente sono di lettura/scrittura Tuttavia esistono anche proprietà di sola lettura, alle quali non è possibile assegnare un nuovo valore, ed altre di sola scrittura. Approfondimenti di Informatica Elaborazione dell'informazione

139 Approfondimenti di Informatica Elaborazione dell'informazione
OO: concetto di metodo azioni che determinano ciò che i membri della classe possono svolgere modificare i valori delle proprietà di un oggetto eseguire azioni sui dati memorizzati dall’oggetto I metodi permettono al programmatore di far compiere azioni (predeterminate) agli elementi stessi di una classe senza dover ogni volta scrivere del nuovo codice. Approfondimenti di Informatica Elaborazione dell'informazione

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

141 OO: concetto di oggetto
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 Approfondimenti di Informatica Elaborazione dell'informazione

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

143 Eventi e procedure-evento
Un evento è un’azione che il sistema compie in risposta a un’azione effettuata dall’utente quando interagisce con un oggetto dell’applicazione Una procedura-evento è una procedura specificamente associata a un dato evento che interessa un dato oggetto specificando il comportamento dell’applicazione in risposta al verificarsi dell’evento stesso Approfondimenti di Informatica Elaborazione dell'informazione

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

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

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

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

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

149 Approfondimenti di Informatica Elaborazione dell'informazione
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 Molte persone utilizzano correntemente il pacchetto Office, normalmente in uso in molti personal computer, ma ignorano questo tipo di funzionalità. Fornire le basi su questo tipo di programmazione permette a ciascuno di noi di sfruttare al meglio tali applicativi rendendocene evidenti possibilità e limiti. Approfondimenti di Informatica Elaborazione dell'informazione

150 VBA: linguaggio OO event-driven
Ogni oggetto inserito in un programma Visual Basic è in grado di riconoscere automaticamente gli eventi più comuni clic dell'utente su un pulsante digitazione in una casella di testo selezione di un comando di menu cambiamento della risoluzione aggiunta di una periferica al sistema ecc. Approfondimenti di Informatica Elaborazione dell'informazione

151 Sottoprogrammi/Procedure
suddividono il programma in unità logiche semplificano il debug semplificano le operazioni di programmazione riuniscono operazioni ripetute o condivise Tipi Function: restituiscono un singolo valore Sub: compiono azioni, modificano valori di variabili o di proprietà predefinite o definite dall’utente Approfondimenti di Informatica Elaborazione dell'informazione

152 Procedure: sintassi di definizione
Sub nome (lista parametri) Function nome (lista parametri) as tipo … … End Sub End Function Es: Sub ciao() CommandButton1.Caption = “Ciaoooo!” MsgBox “Mi sono modificato” End Sub Private Sub CommandButton1_Click() CommandButton1.Caption = “Evviva” procedura definita dall’utente procedura legata ad un evento Approfondimenti di Informatica Elaborazione dell'informazione

153 Procedure: sintassi di chiamata
Call nome(lista parametri) Nome(lista parametri) Es: Sub ciao () CommandButton1.Caption = “Ciaoooo!” MsgBox “Mi sono modificato” End Sub Private Sub CommandButton1_Click() CommandButton1.Caption = “Evviva” Call ciao Approfondimenti di Informatica Elaborazione dell'informazione

154 Approfondimenti di Informatica Elaborazione dell'informazione
27/03/2017 Esempio function media (w as integer) as integer dim i, j, z as integer dim p(100, 12) as integer i = 0 j = 0 Do while i <= 12 j = j + p(w, i) i = i + 1 Loop z = j / 12 media = z end function dim w, fine, z as integer fine = 0 Do while fine=0 input w if w > 0 then z = media(w) print z else fine = -1 end if Loop Approfondimenti di Informatica Elaborazione dell'informazione Introduzione ai sistemi informatici 154

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

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

157 Approfondimenti di Informatica Elaborazione dell'informazione
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 all’interno della procedura tale modifica cessa all’uscita dalla stessa Approfondimenti di Informatica Elaborazione dell'informazione

158 Approfondimenti di Informatica Elaborazione dell'informazione
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?” 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?” Variabile per valore Variabile per valore Approfondimenti di Informatica Elaborazione dell'informazione

159 Approfondimenti di Informatica Elaborazione dell'informazione
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?” 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?” ATTENZIONE: le prove dicono che con call si ha sempre il passaggio per riferimento indipendentemente dal byref, senza sempre per valore indipendentemente dal byref in excell 2003 Variabile per valore Variabile per riferimento Approfondimenti di Informatica Elaborazione dell'informazione

160 Approfondimenti di Informatica Elaborazione dell'informazione
L’arte della programmazione Definizione del problema Definizione dell’algoritmo per la soluzione del problema Codifica dell’algoritmo Debugging del programma Validazione del programma Produzione della documentazione Definizione del problema: comprende la definizione degli ingressi e delle uscite del problema; la risoluzione delle ambiguità; la scomposizione in problemi più semplici; Definizione dell’algoritmo per la soluzione del problema: comprende Soluzione in pseudo-codice Soluzione tramite un diagramma a blocchi strutturato Codifica dell’algoritmo: traduzione dell’algoritmo in istruzioni del linguaggio di programmazione Debugging del programma: correzione degli errori sintattici e semantici Validazione del programma: test su tutte le condizioni operative del programma e verifica del caso di input estremi (variabili nulle, vettori di dimensione 0 …) Scrittura della documentazione: inserimento di commenti esplicativi nelle varie parti del programma per facilitarne la comprensione Approfondimenti di Informatica Elaborazione dell'informazione

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

162 Le costanti valori non modificabili durante l’esecuzione
Dichiarazione: Const NomeCostante As TipoCostante = ValoreCostante Approfondimenti di Informatica Elaborazione dell'informazione

163 Approfondimenti di Informatica Elaborazione dell'informazione
Le variabili contenitori etichettati (cioè con un nome, quello della variabile) che contengono un dato Ogni variabile può contenere solo un determinato tipo di dato, che può essere specificato all’inizio del programma, all’atto della sua creazione. Se il tipo della variabile non viene specificato, il VBA procederà di volta in volta ad assegnarlo Errori - assegnazione ad una variabile un tipo di dato diverso da quello dichiarato - utilizzo di una variabile senza una sua precedente definizione Approfondimenti di Informatica Elaborazione dell'informazione

164 Approfondimenti di Informatica Elaborazione dell'informazione
Tipi di variabili Primitive numeriche Parola chiave Tipo di informazione Byte interi positivi Integer interi Long Currency Importo monetario Single Decimali con singola precisione Double Decimali con doppia precisione Approfondimenti di Informatica Elaborazione dell'informazione

165 Approfondimenti di Informatica Elaborazione dell'informazione
…continua… Primitive non numeriche Parola chiave Tipo di informazione String Stringhe Date Date e ore Boolean Valori logici Variant Generica (conversione automatica) Approfondimenti di Informatica Elaborazione dell'informazione

166 Approfondimenti di Informatica Elaborazione dell'informazione
…continua… Non primitive Ex.: Controlli, fogli di lavoro, cartelle, etc… Parola chiave Tipo di informazione Object riferimenti verso altre variabili Approfondimenti di Informatica Elaborazione dell'informazione

167 …continua… Per la creazione di una variabile si usa la sintassi:
Dim nome_variabile as tipo_variabile Inizializzazioni per default tipo numerico assegnato il valore 0 tipo String assegnata la stringa vuota tipo boolean assegnato il valore False Es: Dim a,b as Integer ‘ a e b avranno valore 0 Dim c as Boolean ‘ c avrà valore False Approfondimenti di Informatica Elaborazione dell'informazione

168 Vettori insieme di dati ordinato che viene gestito tramite un nome ed un indice che indica la posizione dell’elemento all’interno del vettore stesso Sintassi: Dim nome_vett1 (1 to 100) as tipo_dati (da 1) oppure Dim nome_vett2 (99) as tipo_dati (da 0) 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 Approfondimenti di Informatica Elaborazione dell'informazione

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

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

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

172 Approfondimenti di Informatica Elaborazione dell'informazione
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” …. Approfondimenti di Informatica Elaborazione dell'informazione

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

174 Gerarchia di operatori
Operatori aritmetici Operatori di concatenamento Operatori di confronto Operatori logici Approfondimenti di Informatica Elaborazione dell'informazione

175 Approfondimenti di Informatica Elaborazione dell'informazione
Blocchi di istruzioni Le istruzioni elementari siano costrutti identificati dal fatto di essere scritti su di un’unica riga Per istruzioni non elementari, è necessario indicare l’insieme di istruzioni (blocchi) che ne fanno parte Per indicare blocchi di istruzioni come appartenenti alla stessa unità concettuale, i vari costrutti adoperano la convenzione di racchiudere le istruzioni fra una parola chiave PAROLA per specificare il tipo di istruzione e END PAROLA. Approfondimenti di Informatica Elaborazione dell'informazione

176 Funzioni per interazione con l’utente
Approfondimenti di Informatica Elaborazione dell'informazione

177 Approfondimenti di Informatica Elaborazione dell'informazione
Esempio 3 2 5 7 1 4 6 Sub Main() Dim messaggio As VbMsgBoxResult obj = MsgBox("Testo visualizzato nella finestra", vbExclamation + vbYesNo, "Titolo finestra") End Sub Approfondimenti di Informatica Elaborazione dell'informazione

178 Funzioni per interazione con l’utente
Approfondimenti di Informatica Elaborazione dell'informazione

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

180 Approfondimenti di Informatica Elaborazione dell'informazione
Funzioni matematiche Approfondimenti di Informatica Elaborazione dell'informazione

181 Funzioni di conversione
Approfondimenti di Informatica Elaborazione dell'informazione

182 Approfondimenti di Informatica Elaborazione dell'informazione
Funzioni per stringhe Len (stringa): restituisce la lunghezza (cioè il numero di caratteri) di una stringa, compresi spazi, segni d’interpunzione, etc. Len(“Oggi piove”) restituisce 10. Mid(stringa, inizio, lunghezza): restituisce un numero di caratteri di stringa pari a lunghezza, a partire dal carattere in posizione inizio Str (numero): converte numero in stringa Str (“123”) restituisce il numero 123 Val (stringa): converte stringa in numero Val (“53012 firenze”) restituisce 53012 Trim (stringa): elimina gli spazi dentro stringa Trim (“ c a sa ”) restituisce “casa” Left (stringa, lunghezza), Right (stringa, lunghezza): restituisce un numero pari a lunghezza di caratteri a partire da sinistra o destra di stringa Left(“Oggi piove”,6) restituisce “Oggi p”. Approfondimenti di Informatica Elaborazione dell'informazione

183 Istruzioni condizionali
valutano il valore di verità di una espressione e agiscono sulla base di ciò scegliendo tra due possibili insiemi (uno dei quali eventualmente vuoto) di istruzioni. Tali valutazioni e scelte possono anche essere annidate. Sintassi If <cond_1> Then <blocco_1> Elseif <cond_2> <ablocco_2> Else <blocco_3> End If Semantica Se cond_1 è vera allora compi le blocco_1 e prosegui dopo End If, altrimenti se cond_2 è vera allora compi le blocco_2 e prosegui dopo End If, altrimenti se … infine se nessuna delle espressioni è stata valutata vera, compi blocco_3 e prosegui dopo End If Approfondimenti di Informatica Elaborazione dell'informazione

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

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

186 Approfondimenti di Informatica Elaborazione dell'informazione
Selezione a più vie If <cond_1> Then <blocco_1> Elseif <cond_2> Then <blocco_2> Elseif <cond_3> Then <blocco_3> …. Elseif <cond_n> Then <blocco_n> Else <blocco_n+1> End If Approfondimenti di Informatica Elaborazione dell'informazione

187 Istruzioni di ciclo o loop
Valutano il valore di una variabile e compiono una serie di azioni fintantoché questo rimane all’interno di un determinato intervallo La variabile coinvolta in un ciclo viene detta variabile di ciclo I cicli possono essere: Ciclo con iterazione fissata: è un ciclo che si ripete esattamente un numero prefissato di volte, cioè viene fissato a priori l’intervallo di valori che la variabile di ciclo può assumere Ciclo indefinito: è un ciclo che si ripete un numero variabile di volte, a seconda della condizione inserita. In tal caso l’intervallo di valori ammissibile per la variabile di ciclo cambia ad ogni esecuzione del programma L’intervallo di valori ammissibile per la variabile di ciclo può essere fornito sia tramite un intervallo numerico, sia tramite una lista di elementi Approfondimenti di Informatica Elaborazione dell'informazione

188 Istruzioni di ciclo o loop
Semantica ( For ) La variabile (numerica) prende tutti i valori tra inizio e fine e, per ciascuno di essi, viene compiuto <azioni>. La variabile passa da un valore al successivo alla lettura dell’istruzione Next, dopo la quale si verifica l’appartenenza all’intervallo inizio-fine. Sintassi ( For ) For variabile = inizio To fine <blocco> Next For Each variabile In insieme Semantica ( For ) La variabile prende tutti i valori all’interno di insieme e, per ciascuno di essi, viene compiuto <azioni>. La variabile passa da un elemento di insieme al successivo alla lettura dell’istruzione Next. Quando non sono presenti altri elementi in insieme il ciclo termina. Approfondimenti di Informatica Elaborazione dell'informazione

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

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

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

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

193 Approfondimenti di Informatica Elaborazione dell'informazione
27/03/2017 Esempio '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 Approfondimenti di Informatica Elaborazione dell'informazione Introduzione ai sistemi informatici 193

194 Approfondimenti di Informatica Elaborazione dell'informazione
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 Loop Numero_Intero = numero End Function Approfondimenti di Informatica Elaborazione dell'informazione

195 Approfondimenti di Informatica Elaborazione dell'informazione
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) n = InputBox("Inserisci un valore numerico coefficiente di x elevato alla 1") b = Val(n) n = InputBox("Inserisci un valore numerico coefficiente di x elevato alla 0") 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 Approfondimenti di Informatica Elaborazione dell'informazione

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

197 Approfondimenti di Informatica Elaborazione dell'informazione
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) Y = Val(n) i = 1 Do While (i * X < Y) MsgBox i & "° multiplo: " & i * X i = i + 1 Loop MsgBox "Fine sequenza" End Sub Approfondimenti di Informatica Elaborazione dell'informazione

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

199 Approfondimenti di Informatica Elaborazione dell'informazione
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) Y = Val(n) i = 1 Do While (i < Y) i = i * X Loop MsgBox "Potenza di " & X & " minore di " & Y & ": " & i / X End Sub Approfondimenti di Informatica Elaborazione dell'informazione

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

201 Approfondimenti di Informatica Elaborazione dell'informazione
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) Y = Val(n) i = 0 Do While (X >= Y) X = X - Y i = i + 1 Loop MsgBox "Resto: " & X & " Quoziente: " & i End Sub Approfondimenti di Informatica Elaborazione dell'informazione

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

203 Approfondimenti di Informatica Elaborazione dell'informazione
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 Loop While (Not Numero_Intero(n) And Val(n) < 0) Y = Val(n) If (X > Y) Then Call stamperipetute("salve", X - Y) Call stamperipetute("salve", Y - X) End If End Sub Approfondimenti di Informatica Elaborazione dell'informazione

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

205 Approfondimenti di Informatica Elaborazione dell'informazione
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 Approfondimenti di Informatica Elaborazione dell'informazione

206 Approfondimenti di Informatica Elaborazione dell'informazione
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 Approfondimenti di Informatica Elaborazione dell'informazione

207 Approfondimenti di Informatica Elaborazione dell'informazione
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 Approfondimenti di Informatica Elaborazione dell'informazione

208 Approfondimenti di Informatica Elaborazione dell'informazione
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 Approfondimenti di Informatica Elaborazione dell'informazione

209 Approfondimenti di Informatica Elaborazione dell'informazione
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 Approfondimenti di Informatica Elaborazione dell'informazione

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

211 Approfondimenti di Informatica Elaborazione dell'informazione
La finestra progetto Visualizza in modo gerarchico l'insieme dei file che compongono il progetto dell’applicazione oggetto di creazione Ad ogni progetto sono associate quattro cartelle: - Microsoft Excel Oggetti: contiene il codice legato ai fogli ed alla cartella di lavoro - Form: contiene le interfaccia utente associate al progetto - Moduli: contiene i moduli di codice generici - Moduli di classe: contiene i moduli per la creazione di nuove classi di oggetti Approfondimenti di Informatica Elaborazione dell'informazione

212 Approfondimenti di Informatica Elaborazione dell'informazione
La finestra proprietà Selezionando un oggetto la finestra Proprietà riporta tutti gli attributi relativi all’oggetto stesso, tra cui quelli relativi all'aspetto ed alle varie funzionalità Ex.: Height: l’altezza del form che stiamo creando, Icon: l’icona che sarà associata a tale form ecc… Alla creazione di un oggetto alcuni attributi hanno valori di default, mentre altri ne sono privi, lasciando il loro eventuale settaggio al programmatore Approfondimenti di Informatica Elaborazione dell'informazione

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

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

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

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

217 Approfondimenti di Informatica Elaborazione dell'informazione
InserisciUserForm Approfondimenti di Informatica Elaborazione dell'informazione

218 Form e casella degli strumenti
Form: interfaccia utente della applicazione, personalizzabile a seconda del programma sviluppato ma con look and feel Windows Casella degli strumenti: contiene una serie di icone ciascuna delle quali rappresenta un particolare oggetto inseribile sul form: etichette, caselle di testo, pulsanti, ecc.; selezionando un'icona è possibile creare direttamente sul form l'oggetto ad essa associato Approfondimenti di Informatica Elaborazione dell'informazione

219 Le modalità dell’editor VBA
modalità di lavoro con l’editor VBA: 1. modalità di scrittura (DESIGN): modalità di default, permette la scrittura del 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 dell’esecuzione di una procedura - verificarsi di un errore (mostrata una finestra con un codice di errore e una descrizione sommaria delle cause di errore) - incontro di una condizione di interruzione programmata Approfondimenti di Informatica Elaborazione dell'informazione

220 Approfondimenti di Informatica Elaborazione dell'informazione
Gli errori sintattici: quando un’istruzione viene scritta in modo non corretto e l’interprete non la riconosce (Ex.: x==5 invece di x=5) - logici: il risultato dell’elaborazione non coincide con quanto preventivato (Ex.: calcolo della media di 4 variabili sommando il valore di ciascuna e dividendo il risultato per 3, lettura di un file inesistente) Approfondimenti di Informatica Elaborazione dell'informazione

221 Controlli: oggetti predefiniti in VBA
possono essere inseriti in una applicazione (ex. foglio Excel) o in una finestra di dialogo (form) e che prevedono proprietà, metodi ed eventi specifici sono propri dell’applicazione alla quale si riferiscono permettono di ricevere l'input dall'utente, visualizzare l'output e generare routine di eventi possono essere gestiti (quasi sempre) utilizzando i metodi spesso interattivi, ovvero rispondenti alle azioni eseguite dall'utente, più raramente statici, ovvero accessibili solo attraverso il codice Approfondimenti di Informatica Elaborazione dell'informazione

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

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

224 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 l’identificativo del tasto di scelta rapida del bottone (selezione premendo ALT + tale tasto) Caption: indica le parole visualizzate sul bottone Control: restituisce o imposta un valore che indica se un pulsante di comando è il pulsante Annulla in un form (valore TRUE o FALSE) Enabled: indica se il click è abilitato sul bottone Picture: percorso dell’eventuale immagine da inserire come sfondo del bottone Visible: indica se il bottone è visibile o no all’avvio del progetto (valore TRUE o FALSE) Approfondimenti di Informatica Elaborazione dell'informazione

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

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

227 Approfondimenti di Informatica Elaborazione dell'informazione
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 Approfondimenti di Informatica Elaborazione dell'informazione


Scaricare ppt "Elaborazione dell’informazione"
Annunci Google