Decimos que una estructura condicional es anidada cuando por la rama del verdadero o del falso de una estructura condicional hay otra estructura condicional.

El diagrama de flujo que se presenta contiene dos estructuras condicionales. La principal se trata de una estructura condicional compuesta y la segunda es una estructura condicional simple y está contenida por la rama del falso de la primer estructura.
Es común que se presenten estructuras condicionales anidadas aún más complejas.
Confeccionar un programa que pida por teclado tres notas de un alumno, calcule el promedio e imprima alguno de estos mensajes:
Si el promedio es >=7 mostrar "Promocionado".
Si el promedio es >=4 y <7 mostrar "Regular".
Si el promedio es <4 mostrar "Reprobado".

Analicemos el siguiente diagrama. Se ingresan tres valores por teclado que representan las notas de un alumno, se obtiene el promedio sumando los tres valores y dividiendo por 3 dicho resultado (Tener en cuenta que si el resultado es un valor real solo se almacena la parte entera).
Primeramente preguntamos si el promedio es superior o igual a 7, en caso afirmativo va por la rama del verdadero de la estructura condicional mostramos un mensaje que indica "Promocionado" (con comillas indicamos un texto que debe imprimirse en pantalla).
En caso que la condición nos de falso, por la rama del falso aparece otra estructura condicional, porque todavía debemos averiguar si el promedio del alumno es superior o igual a cuatro o inferior a cuatro.
Estamos en presencia de dos estructuras condicionales compuestas.
Module Module1
Sub Main()
Dim nota1, nota2, nota3, promedio As Integer
Console.Write("Ingrese primer nota:")
nota1 = Console.ReadLine()
Console.Write("Ingrese segunda nota:")
nota2 = Console.ReadLine()
Console.Write("Ingrese tercer nota:")
nota3 = Console.ReadLine()
promedio = (nota1 + nota2 + nota3) / 3
If promedio >= 7 Then
Console.Write("Promocionado")
Else
If promedio >= 4 Then
Console.Write("Regular")
Else
Console.Write("Reprobado")
End If
End If
Console.ReadKey()
End Sub
End Module
Codifiquemos y ejecutemos este programa. Al correr el programa deberá solicitar por teclado la carga de tres notas y mostrarnos un mensaje según el promedio de las mismas.
Podemos definir un conjunto de variables del mismo tipo en una misma línea:
Dim nota1, nota2, nota3, promedio As Integer
Esto no es obligatorio pero a veces, por estar relacionadas, conviene.
A la codificación del If anidado podemos observarla por el else del primer If.
Nivel máximo: Porcentaje>=90%. Nivel medio: Porcentaje>=75% y <90%. Nivel regular: Porcentaje>=50% y <75%. Fuera de nivel: Porcentaje<50%.
Module Module1
Sub Main()
Dim num1, num2, num3 As Integer
Console.Write("Ingrese primer valor:")
num1 = Console.ReadLine()
Console.Write("Ingrese segunda valor:")
num2 = Console.ReadLine()
Console.Write("Ingrese tercer valor:")
num3 = Console.ReadLine()
If num1 > num2 Then
If num1 > num3 Then
Console.Write(num1)
Else
Console.Write(num3)
End If
Else
If num2 > num3 Then
Console.Write(num2)
Else
Console.Write(num3)
End If
End If
Console.ReadKey()
End Sub
End Module
Module Module1
Sub Main()
Dim num As Integer
Console.Write("Ingrese un valor:")
num = Console.ReadLine()
If num = 0 Then
Console.Write("Se ingresó el cero")
Else
If num > 0 Then
Console.Write("Se ingresó un valor positivo")
Else
Console.Write("Se ingresó un valor negativo")
End If
End If
Console.ReadKey()
End Sub
End Module
Module Module1
Sub Main()
Dim num As Integer
Console.Write("Ingrese un valor de hasta tres dígitos positivo:")
num = Console.ReadLine()
If num < 10 Then
Console.Write("Tiene un dígito")
Else
If num < 100 Then
Console.Write("Tiene dos dígitos")
Else
If num < 1000 Then
Console.Write("Tiene tres dígitos")
Else
Console.Write("Error en la entrada de datos.")
End If
End If
End If
Console.ReadKey()
End Sub
End Module
Module Module1
Sub Main()
Dim totalPreguntas, totalCorrectas As Integer
Console.Write("Ingrese la cantidad total de preguntas del examen:")
totalPreguntas = Console.ReadLine()
Console.Write("Ingrese la cantidad total de preguntas contestadas correctamente:")
totalCorrectas = Console.ReadLine()
Dim porcentaje As Integer
porcentaje = totalCorrectas * 100 / totalPreguntas
If porcentaje >= 90 Then
Console.Write("Nivel máximo")
Else
If porcentaje >= 75 Then
Console.Write("Nivel medio")
Else
If porcentaje >= 50 Then
Console.Write("Nivel regular")
Else
Console.Write("Fuera de nivel")
End If
End If
End If
Console.ReadKey()
End Sub
End Module