SlideShare une entreprise Scribd logo
1  sur  28
Scomposizione di programmi
e approccio in Visual Basic
I parte
Metodologia Top-donw
• Scomposizione del problema in sottoproblemi
per:
– Semplificazione programma
– Riuso di codice riprodurre senza ripetere il codice
nello stesso programma
– Portabilità riuso stesso codice in altri programmi
Per gli ultimi due punti è necessario l’utilizzo di
scomposizione in sottoprogrammi con parametri.
Metodo Top Down
Problema
Sottoproblema 1 Sottoproblema 2 Sottoproblema 3
Chiamata a sottoprogramma
• Avviene quando nel programma principale
si chiama una serie di istruzioni locate in
altro punto della codifica per assolvere ad
una funzione specifica del programma.
• All’atto della chiamata possono essere
scambiati fra programma principale e
sottoprogramma valori o variabili
Chiamata a sottoprogramma
Sottoprogramma
Programma Principale
Chiamata
In questa fase il programma
Principale può passare dati
Al sottoprogramma
Tipi di chiamate a sottoprogrammi
• Non parametriche ovvero non vi è
scambio dati diretto fra programma
chiamante e sottoprogramma ma solo dati
in comune fra tutte le unità di programma
• Parametriche sono passati dati in valore o
per variabile dal programma chiamante al
sottoprogramma
Tipologia di dati utilizzati
• Variabili e costanti globali visibili nel
programma e nei sottoprogrammi i Visual
Basic si dichiarano con Public
• Variabili locali visibili solo nei
sottoprogrammi ove sono dichiarati in
Visual Basic si dichiarano con Dim,
Private;
Tipologia di dati utilizzati
• Parametri formali variabili e costanti
simboliche utilizzate nei sottoprogrammi
per la scrittura di codice che sia
indipendente dal programma principale
contesto;
• Parametri attuali variabili e costanti globali
che si sostituiscono all’atto della chiamata
nel sottoprogramma ove sono utilizzati;
Tipologia di chiamate parametriche
• Esiste la chiamata a sottoprogramma per
indirizzo o referenza o riferimento quando viene
passata la variabile globale. In questo caso se
nel sottoprogramma cambia la variabili globale
la modifica si propaga nel programma principale
• Nella chiamata per valore si passa il valore che
in quel momento assume la variabile globale nel
programma principale senza alterare quindi la
variabile globale nel programma principale.
Tipologia di chiamate parametriche
• Esiste la chiamata a sottoprogramma per
indirizzo o referenza o riferimento quando viene
passata la variabile globale. In questo caso se
nel sottoprogramma cambia la variabili globale
la modifica si propaga nel programma principale
• Nella chiamata per valore si passa il valore che
in quel momento assume la variabile globale nel
programma principale senza alterare quindi la
variabile globale nel programma principale.
Chiamata per valore in Visual Basic
Analizziamo lo spezzone di codice
PUBLIC A,B,S AS INTEGER
PUBLIC SUB SOMMA (BYVAL X,Y AS INTEGER, BYVAL T AS
INTEGER)
T=X+Y
END SUB
SUB MAIN()
A=3
B=5
CALL SOMMA(4,5,S)
A=B-2
MSGBOX (STR(S))
END SUB
La parola Byval indica che il parametro sarà
passato per valore;
Dopo la chiamata che avviene con la parola
Call seguito dal nome del sottoprogramma
la variabile globale A cambia ma la variazione
non coinvolge il risultato del sottoprogramma S.
Chiamata per referenza in Visual
Basic
Analizziamo la stessa porzione di codice
PUBLIC A,B,S AS INTEGER
PUBLIC SUB SOMMA (BYREF X,Y AS INTEGER, BYREF T AS INTEGER)
X=1
T=X+Y
END SUB
SUB MAIN()
A=3
B=5
CALL SOMMA(A,B,S)
A=B-2
MSGBOX (STR(S))
END SUB
La parola chiave Byref indica il passaggio per
referenza ora inizialmente A e B valevano 3 e 5,
ma nel sottoprogramma a X viene assegnato
il valore 1 ed equivale ad assegnare alla viabile
A il valore 1 e quindi il risultato cambia perché
nel sottoprogramma è cambiato la variabile globale
associata a X.
Procedure e Funzioni
In tutti i linguaggi di programmazione esiste
la possibilità di dichiarare e usare
procedure ovvero sottoprogrammi che
eseguono dei compiti specifici ma possono
non restituire dei risultati e delle funzioni
ovvero particolari tipi di programma che
permettono di essere richiamati all’interno
di un istruzione di calcolo o assegnazione e
quindi restituiscono obbligatoriamente un
risultato.
Funzione in Visual Basic
Supponiamo di voler realizzare una funzione
in Visual Basic che mi permetta di calcolare il cubo di un numero.
Scriveremo un codice del tipo
PUBLIC N,R AS DOUBLE
PUBLIC FUNCTION CUBO(BYVAL X AS DOUBLE)
CUBO=X*X*X
END SUB
SUB MAIN()
N=VAL(INPUTBOX(“DAMMI IL NUMERO”)
R=CUBO(N)
MSGBOX(N)
END SUB
Considerazioni sulla codifica
• In entrambi i casi di procedure e funzioni si sono
dichiarati sottoprogrammi a livello di modulo e
quindi di validità generale
• Sub Main nel modulo di Visual Basic indica
l’inizio di un eventuale programma principale. Il
sottoprogramma o oggetto GUI che deve essere
avviato per primo può essere specificato nelle
proprietà dle progetto.
• Le strutture dati devono essere passate a Visual
Basic come tipo Variant a meno di non volerle
dichiarare ogni volta nell’intestazione delle
procedure o funzioni.
Esercitazione
Realizzare un programma che permetta di
calcolare la somma degli elementi di due
vettori di uguale dimensione, dopo aver
inserito gli elementi.
Diagramma delle procedure
Programma
Carica Somma
Dati del problema
Classe Nome Tipo Uso
Input A,B Vettori di 100 interi Globale
Input N intero Globale
Input X,Y Vettpri di 100 interi Parametri
Formali
Interno I Intero Locale
Input M intero Parametro
Formale
Output S intero Globale
Output T intero Parametro
Formale
Il programma principale
Questo è il programma principale
che richiama due volte la procedura
carica con variabili globali diverse.
La chiamata è per riferimento.
Le variabili inserite come argomento
della chiamata vanno nominate nell’ordine
in cui sono state dichiarate nelle
intestazioni delle procedure.
Le procedure carica e somma
Considerazioni sulle procedure
• La carica serve per inserire gli elementi un
vettore X di M elementi
• La somma effettua la somma di due vettori
di pari dimensione e il risultato è in output
in un parametro formale T.
• Abbiamo generalizzato delle procedure
che possiamo riciclare in altri programmi
che coinvolgono i vettori.
Realizziamo il progetto in Visual
Basic
• Il form sarà costituito da due etichette e
due caselle di testo per inserire la
dimensione N dei vettori e per
visualizzarne la somma degli elementi;
• Sono presenti inoltre due pulsanti uno per
avviare il programma e l’altro per
terminarlo;
Modulo
• La codifica è effettuata a livello di modulo per
renderla condivisibile con atri progetti e
generalizzare gli algoritmi
• Per inserire un modulo basta scegliere dal Menù
Progetto – Inserisci Modulo;
• La variabili globali sono dichiarate come public,
mentre i parametri sono passati in alcuni casi
come variant. Variant è un tipo speciale che
assume come tipo variabili quelle che gli viene
costruita o assegnata in fase di esecuzione del
programma.
Il Form
La codifica degli eventi nel Form
Private Sub cmd_Avvia_Click()
N = Val(txtn)
Call principale
txts = s
End Sub
Private Sub cmdfine_Click()
Unload Me
End Sub
Nell’evento del bottone Avvia vi è Call principale ovvero il sottoprogramma
che in Visual Basic nell’esercizio è considerato il primo ad essere richiamato.
Il programma principale in Visual Basic dall’utente è scelto in base alle
sue esigenze.
Il modulo – I parte
Option Explicit
Public s, N As Integer
Public a(100), b(100) As Integer
Public Sub carica(ByRef x As Variant, m As Integer)
Dim i As Integer
For i = 1 To m
x(i) = Val(InputBox("Inserisci elementi del vettore"))
Next i
End Sub
Public Sub somma(ByRef x, y As Variant, ByRef m, ByRef t As Variant)
Dim i As Integer
t = 0
For i = 1 To m
t = x(i) + y(i) + t
Next i
End Sub
Il modulo – parte II
Public Sub principale()
Call carica(a, N)
Call carica(b, N)
Call somma(a, b, N, s)
End Sub
Il programma principale sempre a livello di modulo richiama
i tre sottoprogrammi.
Per Concludere
• Svolgere il seguente esercizio realizzare
un programma che carichi e calcoli la
somma di due vettori di dimensione N e P
diverse.

Contenu connexe

Tendances

Caratteristiche del linguaggio c
Caratteristiche del linguaggio cCaratteristiche del linguaggio c
Caratteristiche del linguaggio cughetta
 
Soluzione esame b del 13 giugno 2012
Soluzione esame b del 13 giugno 2012Soluzione esame b del 13 giugno 2012
Soluzione esame b del 13 giugno 2012STELITANO
 
Python - Primi passi
Python - Primi passi Python - Primi passi
Python - Primi passi orestJump
 
Laboratorio Programmazione: Operatori logici
Laboratorio Programmazione: Operatori logiciLaboratorio Programmazione: Operatori logici
Laboratorio Programmazione: Operatori logiciMajong DevJfu
 
03 - Programmazione: Istruzioni C++
03 - Programmazione: Istruzioni C++03 - Programmazione: Istruzioni C++
03 - Programmazione: Istruzioni C++Majong DevJfu
 
Soluzioni abilità informatiche 16 maggio 2012
Soluzioni abilità informatiche 16 maggio 2012Soluzioni abilità informatiche 16 maggio 2012
Soluzioni abilità informatiche 16 maggio 2012STELITANO
 
Introduzione a Matlab
Introduzione a MatlabIntroduzione a Matlab
Introduzione a MatlabMarco Suma
 
05 - Programmazione: Funzioni
05 - Programmazione: Funzioni05 - Programmazione: Funzioni
05 - Programmazione: FunzioniMajong DevJfu
 
15 - Programmazione: Algoritmi
15 - Programmazione: Algoritmi15 - Programmazione: Algoritmi
15 - Programmazione: AlgoritmiMajong DevJfu
 
Analizzatori di programmi in C
Analizzatori di programmi in CAnalizzatori di programmi in C
Analizzatori di programmi in CBoymix81
 

Tendances (13)

Caratteristiche del linguaggio c
Caratteristiche del linguaggio cCaratteristiche del linguaggio c
Caratteristiche del linguaggio c
 
Soluzione esame b del 13 giugno 2012
Soluzione esame b del 13 giugno 2012Soluzione esame b del 13 giugno 2012
Soluzione esame b del 13 giugno 2012
 
Flow chart
Flow chartFlow chart
Flow chart
 
Python - Primi passi
Python - Primi passi Python - Primi passi
Python - Primi passi
 
Laboratorio Programmazione: Operatori logici
Laboratorio Programmazione: Operatori logiciLaboratorio Programmazione: Operatori logici
Laboratorio Programmazione: Operatori logici
 
Informatica di base
Informatica di baseInformatica di base
Informatica di base
 
03 - Programmazione: Istruzioni C++
03 - Programmazione: Istruzioni C++03 - Programmazione: Istruzioni C++
03 - Programmazione: Istruzioni C++
 
Soluzioni abilità informatiche 16 maggio 2012
Soluzioni abilità informatiche 16 maggio 2012Soluzioni abilità informatiche 16 maggio 2012
Soluzioni abilità informatiche 16 maggio 2012
 
Introduzione a Matlab
Introduzione a MatlabIntroduzione a Matlab
Introduzione a Matlab
 
05 - Programmazione: Funzioni
05 - Programmazione: Funzioni05 - Programmazione: Funzioni
05 - Programmazione: Funzioni
 
15 - Programmazione: Algoritmi
15 - Programmazione: Algoritmi15 - Programmazione: Algoritmi
15 - Programmazione: Algoritmi
 
Analizzatori di programmi in C
Analizzatori di programmi in CAnalizzatori di programmi in C
Analizzatori di programmi in C
 
Le basi di Pytthon 3 - Fondamenti n.1
Le basi di Pytthon 3 - Fondamenti n.1Le basi di Pytthon 3 - Fondamenti n.1
Le basi di Pytthon 3 - Fondamenti n.1
 

Similaire à Scomposizione di programmi e approccio in visual basic

Lezione 5 (7 marzo 2012)
Lezione 5 (7 marzo 2012)Lezione 5 (7 marzo 2012)
Lezione 5 (7 marzo 2012)STELITANO
 
Esercitazione 1 (27 febbraio 2012)
Esercitazione 1 (27 febbraio 2012)Esercitazione 1 (27 febbraio 2012)
Esercitazione 1 (27 febbraio 2012)STELITANO
 
Introduzione ai Big Data e alla scienza dei dati - Big Data
Introduzione ai Big Data e alla scienza dei dati - Big DataIntroduzione ai Big Data e alla scienza dei dati - Big Data
Introduzione ai Big Data e alla scienza dei dati - Big DataVincenzo Manzoni
 
Extended summary of code building genetic programming
Extended summary of code building genetic programmingExtended summary of code building genetic programming
Extended summary of code building genetic programmingMartinaMaione1
 
Drupal dashboard for dummies with d3
Drupal dashboard for dummies with d3Drupal dashboard for dummies with d3
Drupal dashboard for dummies with d3Eugenio Minardi
 
Lezione 6 (12 marzo 2012)
Lezione 6 (12 marzo 2012)Lezione 6 (12 marzo 2012)
Lezione 6 (12 marzo 2012)STELITANO
 
Lezione 12 (28 marzo 2012)
Lezione 12 (28 marzo 2012)Lezione 12 (28 marzo 2012)
Lezione 12 (28 marzo 2012)STELITANO
 
2 Linux Comandi Essenziali
2 Linux Comandi Essenziali2 Linux Comandi Essenziali
2 Linux Comandi EssenzialiMauro Ferrigno
 
Lezione 12 (28 marzo 2012)
Lezione 12 (28 marzo 2012)Lezione 12 (28 marzo 2012)
Lezione 12 (28 marzo 2012)STELITANO
 
Progetto MIPS/SPIM AA 2010-2011
Progetto MIPS/SPIM AA 2010-2011Progetto MIPS/SPIM AA 2010-2011
Progetto MIPS/SPIM AA 2010-2011Nicola Paoletti
 
Ripasso funzioni
Ripasso funzioniRipasso funzioni
Ripasso funzionimarckmart
 

Similaire à Scomposizione di programmi e approccio in visual basic (20)

La scomposizione in sotto programmi in C++.pptx
La scomposizione in sotto programmi in C++.pptxLa scomposizione in sotto programmi in C++.pptx
La scomposizione in sotto programmi in C++.pptx
 
Lezione 5 (7 marzo 2012)
Lezione 5 (7 marzo 2012)Lezione 5 (7 marzo 2012)
Lezione 5 (7 marzo 2012)
 
Esercitazione 1 (27 febbraio 2012)
Esercitazione 1 (27 febbraio 2012)Esercitazione 1 (27 febbraio 2012)
Esercitazione 1 (27 febbraio 2012)
 
Vb.Net
Vb.NetVb.Net
Vb.Net
 
Introduzione ai Big Data e alla scienza dei dati - Big Data
Introduzione ai Big Data e alla scienza dei dati - Big DataIntroduzione ai Big Data e alla scienza dei dati - Big Data
Introduzione ai Big Data e alla scienza dei dati - Big Data
 
Extended summary of code building genetic programming
Extended summary of code building genetic programmingExtended summary of code building genetic programming
Extended summary of code building genetic programming
 
Drupal dashboard for dummies with d3
Drupal dashboard for dummies with d3Drupal dashboard for dummies with d3
Drupal dashboard for dummies with d3
 
Lezione 6 (12 marzo 2012)
Lezione 6 (12 marzo 2012)Lezione 6 (12 marzo 2012)
Lezione 6 (12 marzo 2012)
 
07 1 funzioni
07 1 funzioni07 1 funzioni
07 1 funzioni
 
3DD 1e Reconfig
3DD 1e Reconfig3DD 1e Reconfig
3DD 1e Reconfig
 
Diagrammi di Attività
Diagrammi di AttivitàDiagrammi di Attività
Diagrammi di Attività
 
Hexagonal architecture ita
Hexagonal architecture itaHexagonal architecture ita
Hexagonal architecture ita
 
Lezione 12 (28 marzo 2012)
Lezione 12 (28 marzo 2012)Lezione 12 (28 marzo 2012)
Lezione 12 (28 marzo 2012)
 
2 Linux Comandi Essenziali
2 Linux Comandi Essenziali2 Linux Comandi Essenziali
2 Linux Comandi Essenziali
 
Lezione 12 (28 marzo 2012)
Lezione 12 (28 marzo 2012)Lezione 12 (28 marzo 2012)
Lezione 12 (28 marzo 2012)
 
La tua prima app per Ubuntu Touch
La tua prima app per Ubuntu TouchLa tua prima app per Ubuntu Touch
La tua prima app per Ubuntu Touch
 
Progetto MIPS/SPIM AA 2010-2011
Progetto MIPS/SPIM AA 2010-2011Progetto MIPS/SPIM AA 2010-2011
Progetto MIPS/SPIM AA 2010-2011
 
Azure functions
Azure functionsAzure functions
Azure functions
 
05 1 intro-struttura
05 1 intro-struttura05 1 intro-struttura
05 1 intro-struttura
 
Ripasso funzioni
Ripasso funzioniRipasso funzioni
Ripasso funzioni
 

Plus de I.S.I.S. "Antonio Serra" - Napoli

Le Applicazioni di Internet Web, FTP, Posta e App pr il Mobile
Le Applicazioni di Internet Web, FTP, Posta e App pr il MobileLe Applicazioni di Internet Web, FTP, Posta e App pr il Mobile
Le Applicazioni di Internet Web, FTP, Posta e App pr il MobileI.S.I.S. "Antonio Serra" - Napoli
 

Plus de I.S.I.S. "Antonio Serra" - Napoli (20)

Linguaggio Java - Classi e Oggetti
Linguaggio Java - Classi e OggettiLinguaggio Java - Classi e Oggetti
Linguaggio Java - Classi e Oggetti
 
Video python3 n2
Video python3 n2Video python3 n2
Video python3 n2
 
Nuova ECLD - Modulo Online Collaboration n.2
Nuova ECLD - Modulo Online Collaboration n.2Nuova ECLD - Modulo Online Collaboration n.2
Nuova ECLD - Modulo Online Collaboration n.2
 
Nuova ECDL - Modulo Online Essentials n.2
Nuova ECDL - Modulo Online Essentials n.2Nuova ECDL - Modulo Online Essentials n.2
Nuova ECDL - Modulo Online Essentials n.2
 
Nuova ECDL - Modulo Online Essentials n.2
Nuova ECDL - Modulo Online Essentials n.2Nuova ECDL - Modulo Online Essentials n.2
Nuova ECDL - Modulo Online Essentials n.2
 
Nuova ECDL - Modulo Presentation n.3
Nuova ECDL - Modulo Presentation n.3Nuova ECDL - Modulo Presentation n.3
Nuova ECDL - Modulo Presentation n.3
 
Nuova ECDL - Modulo Presentation n.2
Nuova ECDL - Modulo Presentation n.2Nuova ECDL - Modulo Presentation n.2
Nuova ECDL - Modulo Presentation n.2
 
Nuova ECDL - Word Processing
Nuova ECDL - Word ProcessingNuova ECDL - Word Processing
Nuova ECDL - Word Processing
 
Nuova ECDL - Word Processing n.2
Nuova ECDL - Word Processing n.2 Nuova ECDL - Word Processing n.2
Nuova ECDL - Word Processing n.2
 
Nuova ECDL - Word Processing n.1
Nuova ECDL - Word Processing n.1Nuova ECDL - Word Processing n.1
Nuova ECDL - Word Processing n.1
 
Computer Essentials n.3 - Edizione 2020
Computer Essentials n.3 - Edizione 2020Computer Essentials n.3 - Edizione 2020
Computer Essentials n.3 - Edizione 2020
 
Java - Lezione 1
Java - Lezione 1 Java - Lezione 1
Java - Lezione 1
 
primi comandi SQL con Mysql
primi comandi SQL con Mysqlprimi comandi SQL con Mysql
primi comandi SQL con Mysql
 
Modello TCP/IP
Modello TCP/IPModello TCP/IP
Modello TCP/IP
 
Le Applicazioni di Internet Web, FTP, Posta e App pr il Mobile
Le Applicazioni di Internet Web, FTP, Posta e App pr il MobileLe Applicazioni di Internet Web, FTP, Posta e App pr il Mobile
Le Applicazioni di Internet Web, FTP, Posta e App pr il Mobile
 
Nofire
NofireNofire
Nofire
 
Programmazione in Java Lezione 1
Programmazione in Java Lezione 1Programmazione in Java Lezione 1
Programmazione in Java Lezione 1
 
Strutture Cicliche in C++
Strutture Cicliche in C++Strutture Cicliche in C++
Strutture Cicliche in C++
 
Interazione di PHP con Mysql
Interazione di PHP con Mysql Interazione di PHP con Mysql
Interazione di PHP con Mysql
 
Array e Linguaggio PHP
Array e Linguaggio PHPArray e Linguaggio PHP
Array e Linguaggio PHP
 

Scomposizione di programmi e approccio in visual basic

  • 1. Scomposizione di programmi e approccio in Visual Basic I parte
  • 2. Metodologia Top-donw • Scomposizione del problema in sottoproblemi per: – Semplificazione programma – Riuso di codice riprodurre senza ripetere il codice nello stesso programma – Portabilità riuso stesso codice in altri programmi Per gli ultimi due punti è necessario l’utilizzo di scomposizione in sottoprogrammi con parametri.
  • 3. Metodo Top Down Problema Sottoproblema 1 Sottoproblema 2 Sottoproblema 3
  • 4. Chiamata a sottoprogramma • Avviene quando nel programma principale si chiama una serie di istruzioni locate in altro punto della codifica per assolvere ad una funzione specifica del programma. • All’atto della chiamata possono essere scambiati fra programma principale e sottoprogramma valori o variabili
  • 5. Chiamata a sottoprogramma Sottoprogramma Programma Principale Chiamata In questa fase il programma Principale può passare dati Al sottoprogramma
  • 6. Tipi di chiamate a sottoprogrammi • Non parametriche ovvero non vi è scambio dati diretto fra programma chiamante e sottoprogramma ma solo dati in comune fra tutte le unità di programma • Parametriche sono passati dati in valore o per variabile dal programma chiamante al sottoprogramma
  • 7. Tipologia di dati utilizzati • Variabili e costanti globali visibili nel programma e nei sottoprogrammi i Visual Basic si dichiarano con Public • Variabili locali visibili solo nei sottoprogrammi ove sono dichiarati in Visual Basic si dichiarano con Dim, Private;
  • 8. Tipologia di dati utilizzati • Parametri formali variabili e costanti simboliche utilizzate nei sottoprogrammi per la scrittura di codice che sia indipendente dal programma principale contesto; • Parametri attuali variabili e costanti globali che si sostituiscono all’atto della chiamata nel sottoprogramma ove sono utilizzati;
  • 9. Tipologia di chiamate parametriche • Esiste la chiamata a sottoprogramma per indirizzo o referenza o riferimento quando viene passata la variabile globale. In questo caso se nel sottoprogramma cambia la variabili globale la modifica si propaga nel programma principale • Nella chiamata per valore si passa il valore che in quel momento assume la variabile globale nel programma principale senza alterare quindi la variabile globale nel programma principale.
  • 10. Tipologia di chiamate parametriche • Esiste la chiamata a sottoprogramma per indirizzo o referenza o riferimento quando viene passata la variabile globale. In questo caso se nel sottoprogramma cambia la variabili globale la modifica si propaga nel programma principale • Nella chiamata per valore si passa il valore che in quel momento assume la variabile globale nel programma principale senza alterare quindi la variabile globale nel programma principale.
  • 11. Chiamata per valore in Visual Basic Analizziamo lo spezzone di codice PUBLIC A,B,S AS INTEGER PUBLIC SUB SOMMA (BYVAL X,Y AS INTEGER, BYVAL T AS INTEGER) T=X+Y END SUB SUB MAIN() A=3 B=5 CALL SOMMA(4,5,S) A=B-2 MSGBOX (STR(S)) END SUB La parola Byval indica che il parametro sarà passato per valore; Dopo la chiamata che avviene con la parola Call seguito dal nome del sottoprogramma la variabile globale A cambia ma la variazione non coinvolge il risultato del sottoprogramma S.
  • 12. Chiamata per referenza in Visual Basic Analizziamo la stessa porzione di codice PUBLIC A,B,S AS INTEGER PUBLIC SUB SOMMA (BYREF X,Y AS INTEGER, BYREF T AS INTEGER) X=1 T=X+Y END SUB SUB MAIN() A=3 B=5 CALL SOMMA(A,B,S) A=B-2 MSGBOX (STR(S)) END SUB La parola chiave Byref indica il passaggio per referenza ora inizialmente A e B valevano 3 e 5, ma nel sottoprogramma a X viene assegnato il valore 1 ed equivale ad assegnare alla viabile A il valore 1 e quindi il risultato cambia perché nel sottoprogramma è cambiato la variabile globale associata a X.
  • 13. Procedure e Funzioni In tutti i linguaggi di programmazione esiste la possibilità di dichiarare e usare procedure ovvero sottoprogrammi che eseguono dei compiti specifici ma possono non restituire dei risultati e delle funzioni ovvero particolari tipi di programma che permettono di essere richiamati all’interno di un istruzione di calcolo o assegnazione e quindi restituiscono obbligatoriamente un risultato.
  • 14. Funzione in Visual Basic Supponiamo di voler realizzare una funzione in Visual Basic che mi permetta di calcolare il cubo di un numero. Scriveremo un codice del tipo PUBLIC N,R AS DOUBLE PUBLIC FUNCTION CUBO(BYVAL X AS DOUBLE) CUBO=X*X*X END SUB SUB MAIN() N=VAL(INPUTBOX(“DAMMI IL NUMERO”) R=CUBO(N) MSGBOX(N) END SUB
  • 15. Considerazioni sulla codifica • In entrambi i casi di procedure e funzioni si sono dichiarati sottoprogrammi a livello di modulo e quindi di validità generale • Sub Main nel modulo di Visual Basic indica l’inizio di un eventuale programma principale. Il sottoprogramma o oggetto GUI che deve essere avviato per primo può essere specificato nelle proprietà dle progetto. • Le strutture dati devono essere passate a Visual Basic come tipo Variant a meno di non volerle dichiarare ogni volta nell’intestazione delle procedure o funzioni.
  • 16. Esercitazione Realizzare un programma che permetta di calcolare la somma degli elementi di due vettori di uguale dimensione, dopo aver inserito gli elementi.
  • 18. Dati del problema Classe Nome Tipo Uso Input A,B Vettori di 100 interi Globale Input N intero Globale Input X,Y Vettpri di 100 interi Parametri Formali Interno I Intero Locale Input M intero Parametro Formale Output S intero Globale Output T intero Parametro Formale
  • 19. Il programma principale Questo è il programma principale che richiama due volte la procedura carica con variabili globali diverse. La chiamata è per riferimento. Le variabili inserite come argomento della chiamata vanno nominate nell’ordine in cui sono state dichiarate nelle intestazioni delle procedure.
  • 21. Considerazioni sulle procedure • La carica serve per inserire gli elementi un vettore X di M elementi • La somma effettua la somma di due vettori di pari dimensione e il risultato è in output in un parametro formale T. • Abbiamo generalizzato delle procedure che possiamo riciclare in altri programmi che coinvolgono i vettori.
  • 22. Realizziamo il progetto in Visual Basic • Il form sarà costituito da due etichette e due caselle di testo per inserire la dimensione N dei vettori e per visualizzarne la somma degli elementi; • Sono presenti inoltre due pulsanti uno per avviare il programma e l’altro per terminarlo;
  • 23. Modulo • La codifica è effettuata a livello di modulo per renderla condivisibile con atri progetti e generalizzare gli algoritmi • Per inserire un modulo basta scegliere dal Menù Progetto – Inserisci Modulo; • La variabili globali sono dichiarate come public, mentre i parametri sono passati in alcuni casi come variant. Variant è un tipo speciale che assume come tipo variabili quelle che gli viene costruita o assegnata in fase di esecuzione del programma.
  • 25. La codifica degli eventi nel Form Private Sub cmd_Avvia_Click() N = Val(txtn) Call principale txts = s End Sub Private Sub cmdfine_Click() Unload Me End Sub Nell’evento del bottone Avvia vi è Call principale ovvero il sottoprogramma che in Visual Basic nell’esercizio è considerato il primo ad essere richiamato. Il programma principale in Visual Basic dall’utente è scelto in base alle sue esigenze.
  • 26. Il modulo – I parte Option Explicit Public s, N As Integer Public a(100), b(100) As Integer Public Sub carica(ByRef x As Variant, m As Integer) Dim i As Integer For i = 1 To m x(i) = Val(InputBox("Inserisci elementi del vettore")) Next i End Sub Public Sub somma(ByRef x, y As Variant, ByRef m, ByRef t As Variant) Dim i As Integer t = 0 For i = 1 To m t = x(i) + y(i) + t Next i End Sub
  • 27. Il modulo – parte II Public Sub principale() Call carica(a, N) Call carica(b, N) Call somma(a, b, N, s) End Sub Il programma principale sempre a livello di modulo richiama i tre sottoprogrammi.
  • 28. Per Concludere • Svolgere il seguente esercizio realizzare un programma che carichi e calcoli la somma di due vettori di dimensione N e P diverse.