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 unintestazione allinizio
di ogni pagina, e poi vogliamo cambiarla, dobbiamo modificare la
scritta in tutte le pagine; invece con le subroutine basta modificare
il codice allinterno di questultime.
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
Nellesempio 1 creiamo la subroutine Intestazione
, in cui scriviamo le precedenti tre righe, allinterno del
file testo.asp. Poi la richiamiamo in molti file tramite listruzione
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 lintestazione 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
allinterno 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
Nellesempio 5 noi vorremmo utilizzare la variabile valore
che risiede allesterno della subroutine, ma nel ciclo viene
utilizzato il valore di quella locale, provocando problemi; qui
lerrore è 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
Nellesempio 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 dallesempio vedremo:
Il valore assoluto di 5 è 5
Vorrei puntualizzare di nuovo la differenza fra subroutine e funzioni::
Le subroutine non assumono alcun valore. Lunico modo di richiamarle
è scrivere una riga con il loro nome, mentre le funzioni restituiscono
un valore, possono essere incluse in unespressione, vi possono
essere aggiunti altri elementi, ecc.
Torna all'indice Generale del corso di Corso di ASP di Software Planet