...Personalizza la tua HomePage...
Questa Sezione è Dedicata a Tutti i Webmaster Nofiti e Non
Funzioni & Procedure | ||||
|
||||
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. |