Cuore Batti Cuore - Loris Reinhard - Radio Genius - Alex Damiani e-Thomas.net Network:
 
Il tuo IP: 38.103.63.60
 

Altro
Scarica

 

Sei in: Per i Webmaster - Corso di ASP - Strutture di controllo

Una struttura di controllo è una serie di istruzioni che permette di controllare il flusso dei dati all'interno del codice. Ve ne sono tre tipi principali che sono definiti di logica condizionale, logica ciclica e logica ramificata.

Controlli della logica condizionale
La logica condizionale verifica una condizione o una serie di condizioni e, in base ai risultati, sceglie il codice da eseguire. La più utilizzata è senz'altro l'istruzione If... Then. Ha il seguente aspetto:

If condizione/i Then
    codice da eseguire
End If

<%
    If Hour(Now()) >= 0 And Hour(Now()) < 8 Then
        Response.Write "E' ancora notte fonda!!!"
    End If
%>

Una variante è data dall'istruzione If... Then... Else che permette di eseguire altro codice se la prima condizione è falsa. Ecco come si presenta:

If condizione/i Then
    codice da eseguire
Else
    codice alternativo da eseguire
End If

<%
    If Hour(Now()) >= 0 And Hour(Now()) < 8 Then
        Response.Write "E' ancora notte fonda."
    Else
        Response.Write "E' giorno o sera."
    End If
%>

Notare che è possibile nidificare svariate istruzioni If... Then... Else una dentro l'altra ottenendo una struttura di questo tipo:

If condizione/i Then
    If altra/e condizione/i Then
        codice da eseguire
    Else
        altro codice da eseguire
    End If
Else
    altro codice da eseguire
End If

Un'altra variante che permette di semplificare due o più istruzioni If... Then comuni annidate si ottiene con l'uso della istruzione Elseif in questo modo:

If condizione/i Then
    codice da eseguire
Elseif condizione/i Then
    altro codice da eseguire
End If

Può essere presente più di una istruzione Elseif; basti ricordare che solitamente si conclude con una istruzione Else e che dopo l'istruzione Else non può essere presente un'ulteriore istruzione Elseif.

<%
    If Hour(Now()) >= 0 And Hour(Now()) < 8 Then
        Response.Write "E' ancora notte fonda."
    Elseif Hour(Now()) >= 8 And Hour(Now()) < 19 Then
        Response.Write "E' giorno"
    Else
        Response.Write "E' sera."
    End If
%>

La seconda struttura che fa parte della logica condizionale è la Select Case che si utilizza di solito quando le opzioni da controllare sono molte e sarebbe scomodo utilizzare l'istruzione If... Then... tradizionale. Si presenta così:

Select Case variabile
    Case opzioneA
        codiceA
    Case opzioneB
        codiceB
    Case Else
        codiceC
End Select

La parte finale, cioè il Case Else non è obbligatoria ma di solito si lascia per eventuali valori che non sono stati erroneamente previsti. Segue un esempio:

<%
    Dim intTemperatura, strTesto
    intTemperatura = 25
    Select Case intTemperatura
        Case 0,1,2,3,4,5,6,7,8,9
            strTesto = "fredda"
        Case 10,11,12,13,14,15,16,17,18,19
            strTesto = "temperata"
        Case 20,21,22,23,24,25,26,27,28,29
            strTesto = "calda"
        Case Else
            strTesto = "freddissima o caldissima"
        End Select
%>
<p>Oggi è una giornata <% = strTesto %>.</p>

Controlli della logica ciclica
La logica ciclica esegue ripetutamente un blocco di codice fino al momento in cui vengono soddisfatte alcune condizioni oppure mentre si verifica se alcune condizioni sono vere. Vi sono due strutture principali che sono la Do While e la For... Next. La prima solitamente viene usata quando non si sa il numero preciso di cicli da compiere mentre la seconda si usa di solito quando si sa esattamente quante volte un ciclo deve essere effettuato.
Il ciclo For... Next si presenta così:

For contatore = valoreIniziale To valoreFinale Step incremento
    codice da eseguire
Next

Se l'incremento è in positivo di un numero alla volta, la parte finale, in questo caso Step 1, si può omettere come nell'esempio che segue:

<%
    For intCont = 1 To 10
        Response.Write "Numero " & intCont & "<br>"
    Next
%>

Per ottenere i numeri dispari tra 1 e 10 è sufficiente modificare la riga 2 come segue:

<%
    For intCont = 1 To 10 Step 2
        Response.Write "Numero " & intCont & "<br>"
    Next
%>

Un derivato della struttura For... Next è la For Each... Next che è molto comoda quando si ha a che fare con degli array o con delle collection (che vedremo più avanti). Ecco un esempio con un array:

<%
    Dim Item, strCitta(2)
    strCitta(0) = "Roma"
    strCitta(1) = "Londra"
    strCitta(2) = "Parigi"
    For Each Item In strCitta
        Response.Write Item & "<br>"
    Next
%>

La struttura Do While... Loop si presenta così:

Do While condizione
    codice da eseguire
Loop

<%
    Dim intCont
    intCont = 1
    Do While intCont <= 10
        Response.Write "Numero " & intCont & "<br>"
        intCont = intCont + 1
    Loop
%>

Quando si lavora con i cicli bisogna fare estrema attenzione a non creare i cosiddetti cicli infiniti che sono cicli che non hanno mai soddisfatte le condizioni per essere terminati e provocano quindi rallentamenti del sistema su cui girano. Nell'esempio precedente se non ci fosse la riga 6 si creerebbe un ciclo infinito in quanto intCont rimarrebbe per sempre inferiore a 10 in quanto verrebbe a mancare l'istruzione per il suo incremento di 1 ad ogni giro del ciclo.

Nel caso della struttura Do While... Loop, non siamo obbligati a controllare la condizione nella prima riga ma possiamo farlo anche nell'ultima riga di istruzione del ciclo:

Do
    codice da eseguire
Loop While condizione

La differenza fondamentale fra le due sintassi è che nel secondo caso il nostro ciclo viene comunque effettuato una volta; la condizione cioè è controllata solo dopo che il codice centrale è stato eseguito almeno una volta.

Un'altra variante del ciclo Do While... Loop è la Do Until... Loop che anch'essa ha la possibilità del controllo nell'ultima riga del ciclo con la struttura Do... Loop Until. La differenza qui sta nel significato stesso della parola; in inglese While significa Mentre, invece Until significa Fino A Quando. Una istruzione deve essere eseguita MENTRE una condizione è vera oppure, nel caso Do Until... Loop, deve essere eseguita FINO A QUANDO una condizione non diventa vera. Segue un esempio:

<%
    Dim intCont
    intCont = 1
    Do While intCont <= 10
        Response.Write "Numero " & intCont & "<br>"
        intCont = intCont + 1
    Loop
%>

che diventa come segue nel caso si utillizzi il Do Until... Loop

<%
    Dim intCont
    intCont = 1
    Do Until intCont > 10
        Response.Write "Numero " & intCont & "<br>"
        intCont = intCont + 1
    Loop
%>

Un'ultima alternativa alla struttura Do While... Loop che è esattamente identica per funzionamento è la While... Wend. Non vi è nessuna differenza se non nelle parole che determinano l'istruzione.

<%
    Dim intCont
    intCont = 1
    While intCont <= 10
        Response.Write "Numero " & intCont & "<br>"
        intCont = intCont + 1
    Wend
%>

Contattaci. Stampa questa pagina. Contattaci via SMS. e-Thomas.net © 2009 Tutti i diritti riservati
 

F.A.Q. - Chi Siamo - Sitemap - Aspetti legali - Privacy - Le nostre fonti - RSS

Utenti connessi: 2 - Visite: 436.582 dal 10/02/2004 - Visite medie giornaliere: 243