15 - Estructuras condicionales anidadas


Habíamos visto la estructura condicional if

if condicion then
  instrucciones
else
  instrucciones
end if

Hay situaciones donde por la rama del else podemos disponer otra estructura condicional y así sucesivamente.

Para ver la sintaxis desarrollaremos un formulario donde ingresaremos un valor por teclado comprendido entre 1 y 1000. Luego mostraremos cuantos dígitos tiene. Emplearemos una serie de if anidados para ver la cantidad de dígitos.

pagina1.html

<html>
<head>
<title>problema</title>
</head>
<body>
<form action="pagina1.asp" method="post">
Ingresar un valor entre 1 y 1000:
<input type="text" name="valor"><br>
<input type="submit" value="calcular">
</form>
</body>
</html> 

La página que contiene el programa ASP es
pagina1.asp

<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim v
v=cint(request.form("valor"))
if v<10 Then
  response.write("Tiene un dígito")
else
  if v<100 Then
    response.write("Tiene dos dígitos")
  else
    if v<1000 Then
      response.write("Tiene tres dígitos")
    else
      if v<10000 Then
        response.write("Tiene cuatro dígitos")
      end if
    end if
  end if
end if 
%>
</body>
</html>

Definimos una variable y guardamos el contenido del control text en esta, previa conversión a tipo de dato entero:

dim v
v=cint(request.form("valor"))

La parte del verdadero del primer if es similar a lo ya visto:

if v<10 Then
  response.write("Tiene un dígito")
else

La rama del else contiene otra estructura condicional:

  if v<100 Then
    response.write("Tiene dos dígitos")

Nuevamente esta estructura condicional interna por la rama del else tiene otra estructura condicionas:

    if v<1000 Then
      response.write("Tiene tres dígitos")

Finalmente por el else de esta estructura condicional tenemos una nueva estructura condicional:

      if v<10000 Then
        response.write("Tiene cuatro dígitos")
      end if

Es importante notar que debemos cerrar con end if cada estructura condicional:

    end if
  end if
end if 

La técnica mas adecuada para no confundirse como cerrar cada estructura condicional es escribir inicialmente esto:

if v<10 Then
  response.write("Tiene un dígito")
else
end if 

Es decir disponemos todo el código que hay por la rama del verdadero, luego la palabra else y procedemos a cerrar el if.

Como segundo paso procedemos a escribir la actividad del else:

if v<10 Then
  response.write("Tiene un dígito")
else
  if v<100 Then
    response.write("Tiene dos dígitos")
  else
  end if
end if 

Nuevamente planteamos la estructura condicional sin indicar la actividad del else, pero cerramos correctamente con el end if.

Repetimos el mismo proceso para la rama del else:

if v<10 Then
  response.write("Tiene un dígito")
else
  if v<100 Then
    response.write("Tiene dos dígitos")
  else
    if v<1000 Then
      response.write("Tiene tres dígitos")
    else
    end if
  end if
end if 

Por último disponemos el código del else de la estructura if más anidada, quedando el código:

if v<10 Then
  response.write("Tiene un dígito")
else
  if v<100 Then
    response.write("Tiene dos dígitos")
  else
    if v<1000 Then
      response.write("Tiene tres dígitos")
    else
      if v<10000 Then
        response.write("Tiene cuatro dígitos")
      end if
    end if
  end if
end if 


Retornar