Scomposizione di programmi e approccio in visual basic

  • 1,123 views
Uploaded on

Utilizzo di sottoprogrammi in Visual Basic

Utilizzo di sottoprogrammi in Visual Basic

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
1,123
On Slideshare
0
From Embeds
0
Number of Embeds
3

Actions

Shares
Downloads
0
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 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.
  • 17. Diagramma delle procedure Programma Carica Somma
  • 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.
  • 20. Le procedure carica e somma
  • 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.
  • 24. Il Form
  • 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.