Está en la página 1de 3

Sentencia condicional

Ir a la navegación Ir a la búsqueda

Este artículo o sección necesita referencias que aparezcan en una publicación acreditada.
Este aviso fue puesto el 10 de febrero de 2016.

Este artículo trata sobre la sentencia de programación. Para otros usos de este término, véase Si.

Diágrama de flujo de If-Then-Else

Diágrama de flujo de "If–Then–Else" anidado

En programación, una sentencia condicional es una instrucción o grupo de instrucciones que se


pueden ejecutar o no en función del valor de una condición.

Los tipos más conocidos de sentencias condicionales son el SI..ENTONCES (if..then), el


SI..ENTONCES..SI NO (if..then..else) y el SEGÚN (case o switch), aunque también podríamos
mencionar al manejo de excepciones como una alternativa más moderna para evitar el
"anidamiento" de carne condicionales.

Las sentencias condicionales constituyen, junto con los bucles, los pilares de la programación
estructurada, y su uso es una evolución de una sentencia en lenguaje ensamblador que ejecutaba
la siguiente línea o no en función del valor de una condición.
Lanzamiento de errores
Véase también: Switch case

En el caso de algoritmos donde se ejecutan muchas instrucciones que pueden devolver errores se
vuelve a tener el caso de condicionales añadidos que dificultan la lectura. Por ejemplo:

Archivo f

SI (LeerArchivo(f)) ENTONCES
SI (AvanzarArchivo(f)) ENTONCES
SI (ObtenerEntero(Leer(f)) ENTONCES
Cuerpo
SINO
Imprimir "El valor no es entero"
FIN SI
SINO
Imprimir "Se llegó al fin del archivo"
FIN SI
SINO
Imprimir "No se pudo abrir el archivo"
FIN SI

CerrarArchivo(f)

Si bien es un problema que este anidamiento puede llegar a ser muy grande, la principal razón
para utilizar el lanzamiento de errores es que con el tipo de estructura anterior se pierde la noción
del camino principal, y cuesta mucho más encontrar las sentencias de ejecución normal, (en este
caso Cuerpo), por la presencia de las condiciones de error que entorpecen la legibilidad.

Algunos lenguajes como Java han tenido esto en cuenta y desarrollaron el lanzamiento de
errores, que consiste en separar el tratamiento de errores al final de la instrucción, para no perder
de vista el hilo de continuidad. Para esto, los métodos en lugar de devolver un valor lógico
(verdadero o falso) para determinar si la operación se efectuó correctamente, deben "lanzar"
excepciones.

El código es ejecutado normalmente hasta que ocurre una excepción, en este caso "salta" al
manejo de errores adecuado; es decir las sentencias pueden o no ejecutarse, en función de si
previamente se haya lanzado un error o no. En algunos casos puede darse que exista código que
debe ejecutarse al final, independientemente de si se haya lanzado o no un error (en nuestro caso
podría ser la operación de cerrar el archivo para que otros puedan acceder a él), para lo cual
también hay sentencias especiales.

INTENTAR
LeerArchivo(f)
AvanzarArchivo(f)
ObtenerEntero(Leer(f))
Cuerpo

CAPTURAR Error1(ExcepciónDeAperturaDeArchivo)
Imprimir "No se pudo abrir el archivo"

CAPTURAR Error2(ExcepciónDeLecturaDeArchivo)
Imprimir "Se llegó al final del archivo"

CAPTURAR Error3(ExcepciónDeConversiónDeDatos)
Imprimir "El valor no es entero)
FINALMENTE
CuCerrarArchivo(f)

A su vez los procedimientos que lanzan excepciones deben contener alguna línea con el siguiente
código:

LANZAR TipoExcepción

El código que llama a una subrutina que puede lanzar un error, tiene dos alternativas: o la trata él
mismo (con la estructura anterior) o la "LUlu" a la subrutina superior que la invocó. Algunas
veces no es obligatorio tratar estos errores.

En Java la estructura es la siguiente:

try {
instrucciones
}
catch (ClaseDeLaExcepción1 objetoExcepción1)
{
instruccionesPorError1
}
catch (ClaseDeExcepción2 ojbetoExcepción2)
{
instruccionesPorError2
}
finally {
instruccionesFinales
}

También podría gustarte