Fundamentos de programación. Constantes en C#.

Para la realización de este artículo he utilizado Ubuntu 10.0.4 LTS Lucid Lynx, con entorno GNOME 2, como sistema operativo y MonoDevelop 2.2 como entorno de desarrollo.

Después de varios post sobre administración, toca ahora, retomar la serie de fundamentos en programación que comencé en este artículo, donde comentaba la importancia de las variables desde el punto de vista del desarrollo de software.

Bien, una paradoja de las variables en C#, es precisamente que podemos quitarles su esencia, la variabilidad, y convertirlas en su antónimo.
Pueden funcionar como constantes.

Y si el uso de las variables es lo que nos proporciona versatilidad en nuestro software, el uso de constantes nos proporcionará comodidad a la hora de desarrollarlo.

Imaginemos, por ejemplo, que nos enfrentamos a algoritmos propios de geometría y trigonometría.
Intentemos diseñar un pequeño programa, que nos permita calcular la longitud de una circunferencia:

Longitud de la circunferencia de radio r :

C = 2 * Π * r

Donde C es la longitud de la circunferencia y r es el radio de la misma.
Vamos a empezar a diseñar nuestro pequeño programa. Desplegamos nuestro entorno de desarrollo desde Aplicaciones -> Programación -> MonoDevelop:

Aplicaciones > Programación > MonoDevelop

Se carga nuestro editor de la siguiente manera:

Pantalla de carga MonoDevelop

Pantalla inicial de MonoDevelop

Iniciamos una nueva solución:

Iniciar una solución en MonoDevelop

Al igual que en el primer post, vamos a diseñar una aplicación de consola para quitarnos el proceso de diseño gráfico de la interfaz. Elegimos esta opción en nuestro entorno:

Pantalla de diálogo Nueva Solución en MonoDevelop

Nos ofrece la posibilidad de integrar funcionalidades a nuestra aplicación, como acabo de decir, es recomendable simplificar nuestra aplicación cuando estamos practicando los fundamentos del lenguaje.
No marcamos ninguna de ellas:

Pantalla de agregar funcionalidades a nueva solución en MonoDevelop

Según aceptemos estas condiciones, nos aparece nuestro editor para empezar a diseñar nuestro código:

Pantalla de edición de código inicial en MonoDevelop

Borramos la línea predefinida “Hola mundo” que nos crea el editor y ya tenemos nuestro lienzo en blanco:

Editor preparado para nuestro código propio

Analicemos ahora nuestro problema.
Queremos hallar la longitud de una circunferencia de un determinado radio. Aquí podemos empezar desglosando ciertas posibilidades:

      Cuestiones sobre el radio r
  • ¿Será arbitrario o permitiremos que el usuario elija su valor?
  • ¿Será un radio entero o racional?
  • Si es un radio racional, ¿qué cantidad de decimales permitimos introducir?

Como podéis observar, la parte fundamental del desarrollo de un programa es precisamente esta.
No existe una sola receta para aplicar. Y decidir que permitirá, o no, nuestro software, cuando comience a funcionar, es clave antes de comenzar a escribir ningún código.

De las cuestiones anteriores, la primera nos plantea una decisión de estructura en nuestro código y las dos posteriores atañen directamente al tipo de datos seleccionado.
Si la respuesta a la primera pregunta es que nuestro radio será arbitrario, seremos nosotros como desarrolladores quien elijamos el valor de esta variable.
Si la respuesta a la segunda pregunta es que será un radio entero, lo declararemos así en su tipo de datos.

Un primer boceto, cumpliendo estas condiciones, sería algo así:

Longitud de una circunferencia en C#. Versión 1

Probemos la ejecución de este primer bosquejo:

Test de Longitud de circunferencia en C#. Versión 1

Es funcional…
Como podemos observar, en la línea 9, hemos cumplido las condiciones que nos imponemos desde el principio:

int r = 2;

Definimos un tipo de dato de número entero y además asignamos un valor arbitrario.
Pero existen ciertos aspectos que no hemos podido elegir, pi (Π) tiene que ser necesariamente decimal, si queremos un mínimo de fiabilidad en la longitud que nos ofrece nuestro programa.
Como la longitud de la circunferencia depende directamente de este valor (Π), también nos “fuerza” a que su tipo de datos sea decimal.
Pero, claro, puestos a criticar este código, yo diría que es muy limitado en funcionalidad (sólo es válido para un único valor de radio) y en precisión (dos valores decimales).

Vamos a mejorar su diseño y su precisión. Demos la oportunidad al usuario de seleccionar el valor y añadamos más fiabilidad en el resultado de la longitud C.

Longitud de una circunferencia en C#. Versión 2

Probemos este segundo diseño:

Test de Longitud de circunferencia en C#. Versión 2

La funcionalidad para que el usuario tenga la libertad de elegir el valor de r está implementada. Elegimos un valor al azar:

Test de Longitud de circunferencia en C#. Versión 2

Y comprobemos el resultado:

Test de Longitud de circunferencia en C#. Versión 2

Vamos a verificar este valor con un programa ya probado, como puede ser la calculadora de Google:

Comprobación y verificación del resultado en otro programa independiente

Comprobación y verificación del resultado en otro programa independiente

Pues no solo es funcional, sino que es, incluso, más preciso que la calculadora on-line de Google, dado que le hemos permitido mayor número de decimales.
Pero este código no es del todo exacto…

La formula de la longitud de la circunferencia responde a una constante universal.
¿Porque añadimos pi (Π)?
¿A que significado responde este número arbitrario?

Imaginemos un pequeño experimento mental…
Queremos calcular cuanto mide la rueda de nuestra bicicleta si pudiéramos cortarla y extenderla en el suelo. Como es lógico, lo vamos a realizar sin dañar dicha rueda.
Si podemos realizar ciertos actos que nos permitirá este calculo sin infligir daño alguno a nuestra bicicleta.
Podemos medir el diámetro de nuestra rueda, de punta a punta. Esto equivale a medir un radio y sumarle su contiguo. Es decir … 2 * radio (imaginando que este radio se introduce en la goma de la rueda y llega hasta el extremo).
Dibujamos una línea en el suelo, dividida en partes. Cada parte medirá exactamente el diámetro que hemos medido de nuestra rueda. Pongamos, por ejemplo, una línea que mida 4 veces este diámetro…
Ahora dibujamos una marca en un extremo de la rueda y comenzamos a girarla por nuestra línea. Esta marca volverá a su posición inicial, justo al entrar en la cuarta sección de nuestra línea, aproximadamente.
Exactamente habremos recorrido 3.14159265359 veces el diámetro de nuestra rueda. Independientemente del tamaño de esta rueda. Si medimos la rueda trasera de un tractor o la de un triciclo sucederá absolutamente lo mismo.
Esto quiere decir que pi (Π) nunca varía. Es una CONSTANTE. En cualquier formula donde entre en juego la relación entre el diámetro y la longitud de una circunferencia esté número será invariable.

Esta circunstancia debemos reflejarla en nuestro código. Lo haremos de la siguiente manera:

Longitud de una circunferencia en C#. Versión final

La palabra clave const, indica al compilador que, una vez declarado el valor, este permanecerá inmutable durante todo el código. Se añaden, además, otras ventajas:

Ventajas del uso de constantes

  • Ante valores muy extensos, como el caso de Π, no tendremos más que escribir el identificador pi permitiendo mayor rapidez de desarrollo y menor posibilidad de errores.
  • En el caso de tener que cambiar el valor de una constante, por ejemplo, cambiar un programa con la aceleración de la gravedad en la Tierra para que sea funcional en la Luna, solamente será necesario cambiar este valor en su declaración inicial y se hará efectivo en todo el código.

Así que, como podemos observar, en determinados casos, hacer que nuestra variable no pueda variar, es muy conveniente.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s