lunes, 11 de abril de 2016

Capitulo 13: Small Basic, Subrutinas. Parte 1


Diario de un programador.- Dia 37

Funciones, procedimientos y subrutinas

Después de haber masticado, tragado y digerido el capítulo anterior sobre arreglos, creo que me queda una última cuestión que aprender y que es común en muchos (o todos) lenguajes de programación, Me refiero a las funciones. Una función en programación se puede definir como lo siguiente que rescaté desde wikipedia "Una función es un conjunto de líneas de código que realizan una tarea específica y puede retornar un valor. Las funciones pueden tomar parámetros que modifiquen su funcionamiento. Las funciones son utilizadas para descomponer grandes problemas en tareas simples y para implementar operaciones que son comúnmente utilizadas durante un programa y de esta manera reducir la cantidad de código. Cuando una función es invocada se le pasa el control a la misma, una vez que esta finalizó con su tarea el control es devuelto al punto desde el cual la función fue llamada".

La gracia de las funciones, es que se pueden utilizar una y otra vez sin necesidad de volver a escribir todo el código, dicho de otra manera, una función es como un mini programa que funciona dentro del código, ya que recibe un valor (varios o incluso ninguno), los evalúa y devuelve un resultado. ¿A qué se refiere con devolver un resultado? Bueno, se refiere a que el resultado devuelto, lo puedo utilizar para realizar otra tarea. Los procedimientos en cambio, también se comportan como mini programas dentro del código, pero no devuelve un resultado. Lo que quiere decir es que el resultado mostrado, no lo puedo utilizar para evaluar otra tarea dentro del programa. Normalmente, un procedimiento muestra un resultado de tipo texto, ya sea un mensaje o algo similar.
Aun no me queda muy claro esto de las funciones y procedimientos, creo que lo mejor será buscar más información y probar unos cuantos ejemplos para agarrarle el truco. Bueno, así lo he hecho hasta ahora y me ha ido medianamente bien. Como todo, es solo cosa de practicar y practicar hasta que salga natural.

Leyendo varios artículos por la web, llegué a la conclusión de que las funciones las llevo escribiendo desde el inicio del curso y no me había dado cuenta. Por ejemplo la instrucción TextWindow.Write() es una función, que recibe como parámetro (parámetro es lo que se escribe entre paréntesis) texto, números u otra variable. Si pudiera ver cómo está programada esa función (creo que es función, podría ser procedimiento o algo más complicado) estoy seguro que se verían todas esas líneas de código que la conforman, las cuales permiten por ejemplo el poder mostrar texto en pantalla. No sería gracia y por supuesto nada provechoso ni eficiente el tener que escribir muchas líneas de código solamente para mostrar texto en pantalla. Es entonces que todo ese código es "guardado o almacenado" en un "mini programa" para luego utilizarlo cuantas veces se requiera, tan solo indicando  el nombre de ese "mini programa"

En Small Basic, existen  las subrutinas, las cuales serían el equivalente a los procedimientos, o sea que una subrutina no devuelve ningún valor. ¿Pero qué pasa si deseo recuperar un resultado de esa subrutina? Bueno, en Small Basic se permite ingresar directamente a las variables de las  subrutinas  y recuperar el resultado de alguna operación.
Para crear una subrutina, se debe anteponer la palabra clave Sub y luego el nombre que llevará esa subrutina, posteriormente se agregan todas las instrucciones y  para "cerrar" la subrutina, se utiliza la palabra clave EndSub.
Ej:
Sub nombreSubRutina
    instrucciones...
EndSub

Para utilizar la subrutina y permitir que se ejecute todo su código, se debe escribir su nombre seguido de una apertura y cierre de paréntesis (). Los paréntesis indican que esa instrucción se trata de una subrutina.
Ej:
nombreSubRutina()

A continuación pondré un ejemplo de uso de una sub rutina, la cual calcula el área de un círculo. Recordar que para calcular el área de un círculo se puede utilizar la fórmula:
area = radio2 * pi

Sub BuscaArea
  pi = Math.Pi
  radioCuadrado = Math.Power(radio,2)
  area = pi * radioCuadrado
EndSub

TextWindow.Write("Ingresa el largo del radio ")
radio = TextWindow.ReadNumber()

BuscaArea()
TextWindow.WriteLine("El area es " + area)



Diario de un programador.- Dia 38

Las primeras 5 líneas corresponden a la subrutina.
En la primera línea, la palabra "Sub", indica que se inicia una subrutina y seguidamente se encuentra la palabra "BuscaArea", que corresponde al nombre, etiqueta o identificador de la subrutina. Lo que sigue a continuación es el código que conforma a esta subrutina. Este código lo que hace es calcular el área de un circulo.

La segunda línea (pi = Math.Pi) lo que hace es guardar el valor de pi (3,14...) en una variable que llamé pi.

La tercera línea, lo que hace es guardar en la variable "radioCuadrado" el resultado de la variable "radio" elevado a 2. En otras palabras, el número ingresado por el usuario elevado a 2, será almacenado en esta variable.

En la cuarta línea se encuentra la variable "area", que almacena el resultado de multiplicar la variable "pi" por la variable "radioCuadrado"
Por último, la palabra clave "EndSub" indica el término de la subrutina.

Las siguientes dos líneas...

TextWindow.Write("Ingresa el largo del radio ")
radio = TextWindow.ReadNumber()

No es nada nuevo, aquí solamente se muestra un mensaje solicitando que se ingrese el largo del radio y luego ese número será guardado en la variable "radio"

En las siguientes dos líneas es en donde se ejecuta o se llama a la sub rutina.
BuscaArea()
TextWindow.WriteLine("El area es " + area)

La palabra "BuscaArea()" lo que hace es ejecutar la sub rutina cargándola en memoria, para luego realizar los cálculos con los datos ingresados por el usuario.

Esta sub rutina, se comporta como una función, ya que su valor de retorno, si es que se pude llamar así, es el resultado que almacena la variable "area" y que es ocupada   en la última línea de este programa.
Esto es todo por ahora. En la parte 2 se darán más ejemplos. Hasta la próxima.

Gustavo J. Cerda Nilo
Septiembre 2015, última modificación Abril 2016




No hay comentarios:

Publicar un comentario

C++ El apuntador This

El apuntador This En C++, cada objeto tiene acceso a su propia dirección a través de un puntero o apuntador denominado This. Lo...