...Personalizza la tua HomePage...

Questa Sezione è Dedicata a Tutti i Webmaster Nofiti e Non

Versione Stampabile Versione PDF Versione .DOC Versione .ZIP Scrivimi i tuoi Commenti

Funzioni & Procedure
Autore :   Linguaggio :  ASP - Active Server Pages
Data :  11/11/2003 12:42:35 Accessi :  14
La creazione di Funzioni e Procedure nel nostro programma è una tecnica programmatica utile per diverse ragioni.
Prima di tutto rende il programma più leggibile partizionando dei blocchi di logica che compiono dei lavori definitivi e in più,
poiché spesso la stessa cosa deve essere fatta in molti posti diversi, ci permette di riutilizzare del codice.


<html>
<head>
<title>Chiedi e Rispondi</title>
</head>
<body
clickato = Request.Querystring("clickato")

'se clickato ha un valore, il cliente ha clickato il bottone

If clickato then nome = Request.Form("nome")
citta = Request.Form("citta")
Response.write "Ciao " & nome & ",<br> Oooh, " & citta & "…, mi piacerebbe venire…<br>"
Else

'altrimenti è appena entrato in questa pagina

Response.Write "<form action='chiedi_rispondi.asp?clickato=truè method='post'>"
Response.Write "<input type='text' name='nomè> "
Response.Write "<input type='text' name='citta'>"
Response.Write "<input type='submit' name='submit' value='dimmelo'> "
Response.Write "</form>"

end if
</body>
</html>

Questo programma, essendo così corto, è certamente leggibile; ma se le righe invece di essere poche fossero diverse centinaia?
Con una form molto lunga e con una presentazione complessa basata su un numero di parametri passati da pagine precedenti?
Tipo una situazione di e-commerce dove raccogliamo dati di carte di credito?


Guarda un po' com'è bello usando procedure:

Option Explicit
Dim clickato, form Dim nome, citta Dim saluti
'--------------------------------------------------------
'Purpose:Dimostra gli oggetti Response e Request
'Date: 10 March 2001
'Commenti:
'--------------------------------------------------------
call Main()

Sub Main()
'--------------------------------------------------------
'Purpose:contiene l'intera logica dell' applicazione
'Date: 10 March 2001
'Commenti:
'--------------------------------------------------------
FaiLaTesta()
clickato = Request.QueryString("clickato")
If NOT clickato then MostraLaForma()
Else
LeggiLaForma(form)
DaiLaRisposta()
End if
FaiLaCoda()
End Sub

Sub FaiLaTesta()
'--------------------------------------------------------
'Purpose:Scrive HTML header
'Date: 10 March 2001
'Commenti:
'--------------------------------------------------------
Response.write "<html><head><title>Chiedi e Rispondi</title></head><body>"
End Sub

Sub MostraLaForma()
'--------------------------------------------------------
'Purpose:mostra la form al cliente
'Date: 10 March 2001
'Commenti:
'--------------------------------------------------------
Response.Write "<form action='showproc.asp?clickato=truè method='post'><br>"
Response.Write "come ti chiami?"
Response.Write "<input type='text' name='nomè><br>"
Response.Write "di che citta' sei?"
Response.Write "<input type='text' name='citta'><br>"
Response.Write "<input type='submit' value='dimmelo'>"
Response.Write "</form>"
End Sub

Sub LeggiLaForma(form)
'--------------------------------------------------------
'Purpose: Legge i dati e mantiene le variabili
'Date: 10 March 2001
'Commenti:
'--------------------------------------------------------
nome = Request.Form("nome")
citta = Request.Form("citta")
End Sub

Sub DaiLaRisposta()
'--------------------------------------------------------
'Purpose: Produce output
'Date: 10 March 2001
'Commenti:
'--------------------------------------------------------
Response.write "Ciao " & nome & ",<br> Oooh, " & citta & "…, mi piacerebbe venire…<br>"
End Sub

Sub FaiLaCoda()
'--------------------------------------------------------
'Purpose:scrive HTML Footer
'Date: 10 March 2001
'Commenti:
'--------------------------------------------------------
Response.write "</body></html>"
End Sub


Certo che a vederlo in questo contesto sembra un po' strafatto ma immagina che la prossima volta che dobbiamo costruire un file simile ne abbiamo già una metà già scritta.
Comunque svilupperemo l'argomento durante il corso di queste lezioni e vedrai che questo metodo è molto utile.

Nel programma precedente non ci sono Funzioni ma solo Procedure.

Così mettiamone una e vediamo qual è la differenza.



Function ParteDelGiorno()
'--------------------------------------------------------
'Purpose: calcola la parte del giorno per salutare
'Date: 10 March 2001
'Commenti:
'--------------------------------------------------------
Dim cheora
cheora = Hour(Now)
Select case cheora
case 8,9,10,11,12 cheora = "Buongiorno"
case 13,14,15,16,17 cheora = "Buon pomeriggio"
case 18,19,20,21,22,23,24 cheora = "Buonanotte"
case else cheora = "Spegni il computer e vai a letto"
End Select
ParteDelGiorno = cheora
End Function


Come vedi questa Funzione è certamente riutilizzabile anche se un po' semplice (ma bisogna pur cominciare da qualche parte o no? ;o).


Aggiungi queste due linee nel codice fra:

If NOT clickato then saluti = ParteDelGiorno()
Response.Write saluti
MostraLaForma()

Come vedi, poiché la funzione ci restituisce un valore, bisogna dargli una variabile per raccogliere l'informazione.
Oppure volendo avremmo potuto scriverla direttamene con:


Response.write
ParteDelGiorno()

Allora, in sostanza, abbiamo messo un po' di ordine nel nostro programma.

Anche se ti sembra un po' troppa strutturato per quello che fa, so di sicuro che mi ringrazierai se per caso ritorni a questo programma fra qualche mese ;o)


Funzioni Matematiche

Cint(espressione): converte espressione in un numero intero.
Int(number): restituisce la parte intera di un numero.
Tan(number): restituisce la tangente in radianti di number.
Atn(number): restituisce l’arcotangente in radianti di number.
Cos(number): restituisce il coseno in radianti di number.
Sin(number): restituisce il seno in radianti di number.
Log(number): restituisce il logaritmo di number.
Round(number): restituisce number arrotondato ad intero.


Funzioni di data

Date(): restituisce la data corrente del server.
Time(): restituisce l’ora corrente del server.
Now(): restituisce la data e l’ora corrente del server.
Year(data): restituisce l’anno di data.
Month(data): restituisce il mese di data.
Day(data): restituisce il giorno di data.
MonthName(data): restituisce un numero per indicare il nome del mese corrispondente.
Weekday(data): restituisce un numero per indicare il nome del giorno della settimana corrispondente.
Hour(ora): restituisce l’ora dell’ora corrente.
Minute(ora): restituisce i minuti dell’ora corrente.
Second(ora): restituisce i secondi dell’ora corrente.


Funzioni di stringa

Ucase(stringa): converte la stringa in lettere maiuscole.
Lcase(stringa): converte la stringa in lettere minuscole.
Ltrim(stringa): toglie tutti gli spazi a sinistra della stringa.
Rtrim(stringa): toglie tutti gli spazi a destra della stringa.
Trim(stringa): toglie tutti gli spazi a sinistra e a destra della stringa.
Len(stringa): restituisce il numero di caratteri di stringa.
Right(stringa, numero): restituisce iI numero di caratteri all’estrema destra di stringa.
Left(stringa, numero): restituisce iI numero di caratteri all’estrema sinistra di stringa.
Mid(stringa, inizio, lunghezza): restituisce la lunghezza dei caratteri di stringa, a partire dalla posizione di inizio.
Replace(stringa, cerca, replace): sostituisce cerca con replace nella stringa.
Split(espressione, delimitatore, contatore, tipo): decompone una stringa in una matrice di stringhe, dividendo la stringa dove trova delimitare.

Ritorna


 NEWS 
12/09/2007 13:08:14
PAURA
Marco Travaglio con Gomez e Crozza ed Elio

11/09/2007 14:44:48
IL V-DAY: un evento NUOVO !!!!!
Aria fresca in Parlamento articolo del Sole24ore: http://www.ilsole24ore.com/art/SoleOnLine4/At...


28/06/2007 14:20:55
LEOPARDI SALUTI i 500
Certo ragazzi, anche noi nel nostro piccolo cresciamo, e Leopardi è il cinquecentesimo saggio nella ...


12/04/2007 11:31:15
ATTENZIONE A CheckMessenger.NET! , è una TRUFFA
Ennesito sito truffaldino: si chiama CheckMessenger e vi promette di mostrarvi se i vostri contatti ...


26/01/2007 11:58:34
AGGIORNATE TUTTE LE SEZIONI
AGGIORNATE TUTTE LE SEZIONI Sì, cari amici. Ho provveduto ad aggiornare le principali sazioni de...


:: ELENCO NEWS ::

  
Valid XHTML 1.0! Valid CSS!