domingo, 12 de febrero de 2012

#Principiantes - Entendiendo los métodos y funciones

Bien, después de haber entendido el uso de las variables ahora entendamos los métodos.

Los métodos son los mecanismos o procesos a través de los cuales ejecutamos actividades. En términos generales, los métodos están compuestos por un nombre, uno o varios parámetros de entrada, unas acciones y para algunos de ellos podemos tener un parámetro de salida, por lo cual puedes llegar a escuchar que los métodos que tienen un valor de retorno o parámetro de salida son conocidos como funciones, sin embargo hoy día muchos no hacen esa distinción. Otros nombres con que escucharás llamar los métodos en diferentes contextos son: servicios, subrutinas o subprogramas.

Todos estos elementos mencionados aquí componen la firma del método o la definición del métodoHagámonos una idea visual de este asunto, yo entendería un método así.

Ahora veamos un ejemplo y luego explicamos
Tratemos de entender varias cosas y de ver cual sería el retorno de este método. Bueno lo primero es que los parámetros de entrada de un método pueden ser variables o valores fijos, lo segundo sería que aunque "afuera" del método nosotros tengamos variables que se llaman de una forma, dentro del método se definen cada uno de los parámetros de entrada y no se trabaja con los nombres de variables que vienen de "afuera" si no con los que se han definido en la firma del método.

De los parámetros de entrada hay que decir varias cosas, los parámetros de entrada puede ser por valor o por referencia, para algunos tipos de datos en programación (más adelante) veremos que son siempre por referencia, pero por el momento vamos a entender estos 2 usos que se le dan a los parámetros.

Cuándo hablamos de parámetros por valor, estamos diciendo que cada variable que usamos afuera y adentro del método tiene su propio lugar en nuestro espacio de almacenamiento en memoria, por lo tanto si yo cambio una, la otra no va a cambiarse. Esto en términos prácticos significa, que cuando llamamos un método para que se ejecuten, los parámetros que tiene definidos (en nuestro ejemplo a,b,c) hacen una copia de los valores que venían cargados en las variables que se enviaron (es decir X, 1 y Y), por esta razón cuando el método finaliza, X y Y siguen teniendo los valores 2 y 3.

¿Recuerdan la imagen que veíamos entendiendo variables? Vamos a tratar de apoyarnos en ella para entender ahora los parámetros por referencia.

Si dijéramos que X y Y van por referencia estaríamos diciendo que X y A apuntan a la misma sección de memoria (Como en la imagen Carlos y H lo hacen), por lo tanto si modificamos A dentro del método, cuando este termine su ejecución, como estamos alterando el valor de A, X estaría cambiado y lo mismo sucedería con Y y B.

Qué tal si intentas responder ¿Si X y Y fueran por referencia, que valores tendrían después de la ejecución del método?

Con respecto al parámetro de salida tenemos que decir que dicho retorno es solo un valor, es decir, en nuestro ejemplo no "sale" S si no que sale su valor, la S que es la variable que retornamos se queda al interior y no existe por fuera del método, de hecho aunque retornemos otra de las variables que usamos, siempre saldrá un valor que en caso de necesitar evaluar o modificarlo vamos a tener que guardarlo en otra variable

Ahora intenta responder esto ¿Cual sería el valor de retorno de nuestro método de la imagen? 

Bien, hablemos del cuerpo o proceso que hay dentro de los métodos, estos son un conjunto de lineas simples, o invocaciones a otros métodos y que deben ser escritos en forma secuencial de acuerdo a lo que queramos que ejecute la computadora, es importante entender que "el algoritmo no hará nada que nosotros no le indiquemos que haga" y "tampoco lo hará en un orden lógico si nosotros no se lo indicamos en ese orden".

Esta es una de las falencias más comunes empezando a programar, cuando le enseñas a alguien como se piden datos en la pantalla a un usuario y como se capturan, y le pones la tarea de capturar varios datos, primero escribe todas las sentencias de pedir datos y luego todas las capturas, allí se evidencia la falta de un pensamiento en secuencia, no por hacerlo más rápido sale mejor, si yo voy a capturar varios datos debo, pedir un dato y capturarlo, luego el siguiente y capturarlo y así sucesivamente, y eso solo por poner un ejemplo, a veces se ven cosas como que antes de declarar una variable quieren hacer operaciones con ella, declarar una variable si lo recordamos es crear el espacio en memoria por lo tanto si no la hemos creado en memoria no existe y no podemos usarla.

Bien, para finalizar esta pequeña caja de herramientas con cosas básicas para empezar a programar es necesario conocer sentencias básicas o estructuras de control como acabo de encontrarlas en Wikipedia, explicarlas más de lo que está explicado en  Wikipedia sería solo repetir, por eso los invito a visitar en el enlace, y además te recomiendo empezar por ver la Cápsula de .NET #1 en este punto. Puede que ahora entiendas mucho mejor que antes.

Espero que este par de post les hayan sigo útiles ;)

No hay comentarios: