Corso di ASP

Strutture di controllo del linguaggio VBScript IV

 

1.8 Strutture di controllo della logica ramificata

In questa lezioni vedremo le subroutine e le funzioni. La differenza è che le prime eseguono solo azioni, le seconde calcolano e restituiscono valori.

1.8.1 Subroutine

La sintassi è la seguente:

Sub (nome subroutine)
(blocco codice)
End Sub

Se per esempio vogliamo inserire un’intestazione all’inizio di ogni pagina, e poi vogliamo cambiarla, dobbiamo modificare la scritta in tutte le pagine; invece con le subroutine basta modificare il codice all’interno di quest’ultime.

Ecco un esempio:

<%
   Sub Intestazione

   Response.Write “Sei su www.pignatelli.com <BR>”
   Response.Write “il mio sito <BR>”
   Response.Write “Buona navigazione <BR>”

   End Sub
%>

esempio 1

Nell’esempio 1 creiamo la subroutine Intestazione , in cui scriviamo le precedenti tre righe, all’interno del file testo.asp. Poi la richiamiamo in molti file tramite l’istruzione include, descritta nelle prossime lezioni.

Ecco un altro esempio:

<%@ Language = VBScript %>
<% Option Explicit %>
<!-- #include file="librerie/testo.asp" -->

<HTML>
<BODY>
<% Intestazione %>
</BODY>
</HTML>

esempio 2

Ciò che apparirà a video sarà:

   Sei su www.pignatelli.com
   il mio sito
   Buona navigazione

Se ad un certo punto vogliamo cambiare il valore da www.pignatelli.com a www.pippo.com basterà modificare la riga 1 ed automaticamente sarà modificata l’intestazione in ogni file del sito.

Per passare degli argomenti ad una subroutine abbiamo due possibilità: o direttamente tramite il codice oppure usando variabili già dichiarate all’interno dello script.

Nel primo caso avremo:

<%@ Language = VBScript %>
<% Option Explicit %>
<%
   Sub Intestazione (url)

   Response.Write “Sei su “ & url & “<BR>”
   Response.Write “il mio sito <BR>”
   Response.Write “Buona navigazione <BR>”

   End Sub

%>
<HTML>
<BODY>
<% Intestazione “www.pignatelli.com” %>
</BODY>
</HTML>

esempio 3

Nel secondo caso avremo:

<%@ Language = VBScript %>
<% Option Explicit %>
<HTML>
<BODY>
<%
   DIM url

   url = “www.pignatelli.com”


   Sub Intestazione

   Response.Write “Sei su “ & url & “<BR>”
   Response.Write “il mio sito <BR>”
   Response.Write “Buona navigazione <BR>”

   End Sub

   Intestazione 
%>
</BODY>
</HTML>

esempio 4

Nel secondo caso la subroutine espansa in quel punto usa il valore di una variabile dichiarata in precedenza, ma io sconsiglio di utilizzare questa tecnica perché può generare confusione, ed inoltre usando lo stesso nome per una variabile globale ed una locale, verrà usato il valore di quella locale, mentre potremmo volere quello della variabile globale.

Ecco un esempio:

<%@ Language = VBScript %>
<% Option Explicit %>
<HTML>
<BODY>
<%
   DIM valore

   valore = 1

   Sub Intestazione

    DIM valore

    valore = “www.pignatelli.com”
    while valore < 5
      Response.Write “ciclo numero : “ & valore & “<BR>”
      valore = valore + 1
    wend
   End Sub

   Intestazione 
%>
</BODY>
</HTML>

esempio 5

Nell’esempio 5 noi vorremmo utilizzare la variabile valore che risiede all’esterno della subroutine, ma nel ciclo viene utilizzato il valore di quella locale, provocando problemi; qui l’errore è identificabile, ma pensate ad una pagina con centinaia di subroutine o include.

1.8.2 Funzioni

La sintassi delle funzioni è la seguente:

Funcion (nome funzione)
(blocco codice)
(nome funzione) = (valore)
End Function

La riga

La riga 3 è utilizzata dalla funzione per restituire il valore generato al suo interno dal blocco di codice.

Ecco un esempio:

<%@ Language = VBScript %>
<% Option Explicit %>
<HTML>
<BODY>
<%
   Function ValoreAssoluto(numero)
 
    If numero < 0 then
     ValoreAssoluto = -numero
    End if

    ValoreAssoluto = numero

   End Function

   DIM valore

   valore = -5
%>
Il valore assoluto di <%= valore %> è <%= Valore Assoluto(valore) %>
</BODY>
</HTML>

esempio 6

Nell’esempio 6 abbiamo creato prima la funzione ValoreAssoluto() a cui passiamo come parametro un numero, e ci viene restituito il suo valore assoluto, e quindi a video dall’esempio vedremo:

Il valore assoluto di –5 è 5

Vorrei puntualizzare di nuovo la differenza fra subroutine e funzioni::
Le subroutine non assumono alcun valore. L’unico modo di richiamarle è scrivere una riga con il loro nome, mentre le funzioni restituiscono un valore, possono essere incluse in un’espressione, vi possono essere aggiunti altri elementi, ecc.

 

Torna all'indice Generale del corso di Corso di ASP di Software Planet