Web - Amazon

We provide Linux to the World


We support WINRAR [What is this] - [Download .exe file(s) for Windows]

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
SITEMAP
Audiobooks by Valerio Di Stefano: Single Download - Complete Download [TAR] [WIM] [ZIP] [RAR] - Alphabetical Download  [TAR] [WIM] [ZIP] [RAR] - Download Instructions

Make a donation: IBAN: IT36M0708677020000000008016 - BIC/SWIFT:  ICRAITRRU60 - VALERIO DI STEFANO or
Privacy Policy Cookie Policy Terms and Conditions
Sentencia condicional - Wikipedia, la enciclopedia libre

Sentencia condicional

De Wikipedia, la enciclopedia libre

En programación, una sentencia condicional es una instrucción grupo de instrucciones que se pueden ejecutar o no en función del valor de una condición.

Los tipos más conocidos de setencias condicionales son el SI..ENTONCES (if..then), el SI..ENTONCES..SINO (if..then..else) y el SEGÚN (case o switch), aunque también podríamos mencionar al lanzamiento de errores como una alternativa más moderna para evitar el "anidamiento" de sentencias condicionales.

Los 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.

[editar] Sentencias condicionales simples

La estructura de las sentencias condicionales simples (SI...ENTONCES y SI...ENTONCES...SINO) se mantiene en casi todos los lenguajes de programación, y se representa en pseudolenguaje de la siguiente manera:

SI condición ENTONCES
   Cuerpo
FIN SI
SI condición ENTONCES
   CuerpoAfirmativo
SINO
   CuerpoNegativo
FIN SI

La palabra ENTONCES es uno de los casos más curiosos, en algunos lenguajes es obligatoria (Pascal), en otros no existe (como en C) y en unos terceros es opcional (como Basic o FoxPro)

[editar] Sentencia condicional SEGÚN

La sentencia condicional SEGÚN surgió como alternativa a la notación de las sentencias condicionales SIMPLES anidadas, del tipo:

SI condición ENTONCES
   Cuerpo1
SINO
   SI condición2 ENTONCES
      Cuerpo2
   SINO
       SI condición3 ENTONCES
           Cuerpo3
           ...
       FIN SI
   FIN SI
FIN SI

El sentencia condicional SEGÚN presenta uno de los casos de variaciones más grandes en los distintos lenguajes, y prácticamente es imperioso visitar la definición de la misma las primeras veces que se lo utiliza al aventurarnos en algún un lenguaje en particular para poder adecuarnos a su uso. En pseudolenguaje se lo suele ocupar de la siguiente manera:

SEGÚN Condición HACER
     Valor1:
           Cuerpo1

     Valor2:
           Cuerpo2

     Valor3:
           Cuerpo3
...

     ValorN:
           CuerpoN

     SINO
           CuerpoSiNo

FIN SEGÚN

Donde la variable Condición es un entero al igual que Valor1, Valor2 ... ValorN y donde la sentencia que se ejecutará dependerá del valor que tome la variable condición. Si la variable Condición es igual a Valor1 se ejecutará el Cuerpo1, si es igual a Valor2 se ejecutará Cuerpo2 y así sucesivamente. En caso de que no coincida con ninguno de los valores especificados se ejecutará CuerpoSiNo.

En algunos casos se permiten cadenas de caracteres, y en otros valores enumerados (que no vienen a ser más que representacionse de valores enteros) como valores para la condición. Raras veces las sentencias condiciones permiten una condición libre (del tipo por ejemplo > ó <). El SINO, también conocido como DEFAULT o POR DEFECTO en algunos lenguajes, es opcional. Tanto las palabras SEGÚN como la sintaxis de las condiciones y del tipo de valor admitido en la condición sufren grandes cambios de un lenguaje a otro. El caso de C y Java, que utiliza parte de la sintaxis de C, es muy particular, el final de cada Cuerpo debe ser una instrucción break (para escapar o romper el grupo de instrucciones) o return (par terminar un método, procedimiento o función) si no se desea que las siguientes líneas de código se ejecuten, aun cuando el valor de la condición no se cumpla.

[editar] Lanzamiento de errores

En el caso de algoritmos donde se ejecutan muchas instrucciones que pueden devolver errores se vuelve a tener el caso de condicionales anidados 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 "LANZA" 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
    }
Our "Network":

Project Gutenberg
https://gutenberg.classicistranieri.com

Encyclopaedia Britannica 1911
https://encyclopaediabritannica.classicistranieri.com

Librivox Audiobooks
https://librivox.classicistranieri.com

Linux Distributions
https://old.classicistranieri.com

Magnatune (MP3 Music)
https://magnatune.classicistranieri.com

Static Wikipedia (June 2008)
https://wikipedia.classicistranieri.com

Static Wikipedia (March 2008)
https://wikipedia2007.classicistranieri.com/mar2008/

Static Wikipedia (2007)
https://wikipedia2007.classicistranieri.com

Static Wikipedia (2006)
https://wikipedia2006.classicistranieri.com

Liber Liber
https://liberliber.classicistranieri.com

ZIM Files for Kiwix
https://zim.classicistranieri.com


Other Websites:

Bach - Goldberg Variations
https://www.goldbergvariations.org

Lazarillo de Tormes
https://www.lazarillodetormes.org

Madame Bovary
https://www.madamebovary.org

Il Fu Mattia Pascal
https://www.mattiapascal.it

The Voice in the Desert
https://www.thevoiceinthedesert.org

Confessione d'un amore fascista
https://www.amorefascista.it

Malinverno
https://www.malinverno.org

Debito formativo
https://www.debitoformativo.it

Adina Spire
https://www.adinaspire.com