Funciones y Arreglos en C#

Funciones y métodos


Las funciones y los métodos son elementos muy importantes de programación. En C# estaremos utilizándolos frecuentemente, en especial cuando avancemos hacia la programación orientada a objetos. Las funciones nos dan muchas ventajas y nos permiten desarrollar de forma más rápida y más ordenada nuestras aplicaciones.



LAS FUNCIONES

Empecemos a conocer las funciones. Veamos un ejemplo de un problema y luego la forma cómo la utilización de la función nos puede ayudar. La función es un elemento del programa que contiene código y se puede ejecutar, es decir, lleva a cabo una operación.
La función puede llamarse o invocarse cuando sea necesario y entonces el código que se encuentra en su interior se va a ejecutar. Una vez que la función termina de ejecutarse el programa continúa en la sentencia siguiente de donde fue llamada.

Nota: Podemos observar cómo la ejecución del programa se dirige a la función y luego regresa a la sentencia siguiente de donde fue invocada.

Las funciones, para que sean útiles, deben estar especializadas. Es decir que cada
función debe hacer solamente una cosa y hacerla bien. Nosotros ya hemos utilizado 
una función, es la función Main() y podemos crear más funciones conforme las 
necesitemos. Dentro de la programación orientada a objetos las clases tienen código 
y este código se encuentra adentro de funciones llamadas métodos. Por ejemplo, 
cuando hemos convertido de cadena a un entero, hacemos uso de una función llamada 
ToIn32() que se encuentra adentro de la clase Convert.

Las funciones constan de cinco partes:

Veremos ahora las cinco partes, pero conforme estudiemos a las funciones sabremos cómo son utilizadas. Las funciones pueden regresar información y esta información puede ser cadena, entero, flotante o cualquier otro tipo.

En la sección de tipo tenemos que indicar precisamente la clase de información que regresa. Si la función no regresa ningún valor entonces tenemos que indicar a su tipo como void. Todas las funciones deben identificarse y lo hacemos por medio de su nombre. Las funciones que coloquemos adentro de las clases deben de tener un nombre único. 

El nombre también es utilizado para invocar o ejecutar a la función. Las funciones pueden necesitar de datos o información para poder trabajar. Nosotros le damos esta información por medio de sus parámetros. 

Los parámetros no son otra cosa que una lista de variables que reciben estos datos. Si la función no necesita usar a los parámetros, entonces simplemente podemos dejar los paréntesis vacíos. Nunca debemos olvidar colocar los paréntesis aunque no haya parámetros. 

El código de la función se sitúa adentro de un bloque de código. En esta sección podemos colocar cualquier código válido de C#, es decir, declaración de variables, ciclos, estructuras selectivas e incluso invocaciones a funciones. 

Las funciones al ser declaradas pueden llevar un modificador antes del tipo. Los modificadores cambian la forma como trabaja la función. Nosotros estaremos utilizando un modificador conocido como static. Este modificador nos permite usar a la función sin tener que declarar un objeto de la clase a la que pertenece.


Tenemos cuatro tipos básicos de funciones:

  • Funciones que ejecutan código
  • Funciones que regresan un valor
  • Funciones que reciben valores
  • Funciones que reciben parámetros y regresan un valor 


Funciones que ejecutan código
El primer tipo de funciones que vamos a conocer son las que ejecutan código. Estas funciones no reciben datos y no regresan ningún dato. Solamente llevan a cabo alguna operación. Aunque en este momento no parecen muy útiles, sí lo son. Para poder utilizar la función, debemos declararla. La declaración se debe hacer adentro del bloque de código correspondiente a una clase. Para los ejemplos analizados en este libro, estamos usando la clase denominada Program. Nuestra función Main() se encuentra también adentro de esta clase.

A continuación veremos un ejemplo de la función.

- Programa que nos muestre: Dios es amor.
El modificador  será static, tipo en este caso es void, el nombre de la función: mostrarDiosesamor y pues no lleva parámetros.
De una sola ves llamaremos la función para que nos muestre el código ingresado.

Y se nos ejecutara de la siguiente manera.


Funciones que regresan un valor
Nuestro siguiente tipo de función puede regresar un valor. Esto significa que cuando la función es invocada va a llevar a cabo la ejecución de su código. El código va a calcular un valor de alguna manera y este valor calculado por la función será regresado a quien haya invocado a la función. La invocación puede haber sido hecha por la función Main() o algún otra función.

Como la función va a regresar un valor, necesitamos indicar su tipo. El tipo va a depender del valor devuelto. Si el valor es un entero, entonces el tipo de la función es int. Si el valor es un flotante, la función tendrá tipo float y así sucesivamente. La función puede regresar cualquiera de los tipos definidos en el lenguaje y también tipos definidos por el programador y objetos de diferentes clases.

La función va a utilizar un comando especial para regresar el valor, este comando se conoce como return y se usa de la siguiente manera:

En cuanto la ejecución del programa encuentra un return, la función es finalizada aun si no ha llegado a su fin. Al mismo tiempo que finaliza la función el valor colocado después del return es regresado a quien hizo la invocación. El valor puede ser colocado con una variable o explícita mente con un valor en particular. No hay que olvidar colocar el punto y coma al finalizar la sentencia. La finalización de la función se lleva a cabo aunque tengamos código escrito después del return.

Como la función regresa un valor, del lado del invocador necesitamos tener alguien que pueda recibir el valor regresado. Generalmente usaremos una variable, pero en algunos casos puede ser una expresión que será evaluada con el valor regresado por la función.

Veremos a continuación un ejemplo de función que regresa un valor.

- Programa que me regresa el valor de una suma.
1-En primer lugar aremos un llamado al método donde estará la operación.

2-Aremos una función que se llamara resultado.

3-Comenzaremos capturando el nombre del programa y mostrándolo en pantalla e igual, aremos que nos muestre un mensaje pidiéndonos que ingresemos el primer numero y el segundo.

4-Después Declararemos las variables y convirtiéndola a la ves de cadena de texto a números enteros.

5-Ponemos una variable suma sin declarar, para hacer el llamado de los dos numero ingresados.

6- A dentro de la función aremos el procedimiento de la suma, también aremos que nos retorne el valor de la suma.
Nos quedara de la siguiente manera:

Al ejecutarlo nos compilara así:



Funciones que reciben valores
Hasta el momento las funciones que hemos utilizado piden directamente al usuario los valores que necesitan para trabajar. Sin embargo, las funciones también pueden recibir valores en el momento que son invocadas. De esta forma trabajarán con los valores pasados por el programa en lugar de pedirlos al usuario. Estos valores son conocidos como parámetros. Los parámetros pueden ser de cualquier tipo, ya sea de los tipos nativos de C# como entero, flotante, cadena o de tipos definidos por el programador como clases y estructuras.

Los parámetros deben llevar su tipo y su nombre. El nombre nos permite acceder a los datos que contiene y de hecho van a trabajar como si fueran variables locales a la función. Adentro de la función los usamos como variables normales. Los parámetros se definen en la declaración de la función. Adentro de los paréntesis de la función los listamos. La forma de listarlos es colocando primero en tipo seguido del nombre. Si tenemos más de un parámetro para la función, entonces debemos separarlos por medio de comas.

La invocación de la función es muy sencilla, simplemente debemos colocar el nombre de la función y, entre los paréntesis, los datos que vamos a enviar como parámetros. Los datos pueden ser situados por medio de variables o un valor colocado explícita mente.


Veremos a continuación un ejemplo de función que reciben valores.

- Programa que convierte Grados Centigrados a Grados Fahrenheit.
1- Comenzaremos capturando el nombre del programa y mostrándolo en pantalla e igual, aremos que nos muestre un mensaje pidiéndonos que ingresemos el primer numero y el segundo.

2-Después Declararemos las variables y convirtiéndola a la ves de cadena de texto a números enteros.

3- Pondremos una variable pero no la declararemos y dentro de la variable, llamamos la variable num.

4- Aremos una función llamada Fahrenheit y dentro de la función ira declarado la variable num.

5- Declaramos la variable Fahrenheit como double.

6- Después aremos el procedimiento correspondiente.

7- Por ultimo asemos un llamado al resultado de fahrenheit y lo mostraremos en pantalla.
Nos quedara de la siguiente manera:

Al ejecutarlo nos compilara así:

Funciones que reciben parámetros y regresan un valor
Ya hemos visto tres tipos diferentes de funciones, y seguramente ya hemos comprendido cómo funcionan y podemos fácilmente imaginar lo que hará este tipo de función. Esta función va a recibir de quien la invoque información. La información es pasada por medio de parámetros. La función lleva a cabo alguna acción o cálculo y obtiene un valor que va a ser regresado. El valor regresado es recibido en el lugar donde se invocó a la función y se puede trabajar con él.

Los parámetros serán usados como variables y los declaramos adentro de los paréntesis de la función. Tenemos que indicar el tipo que va a recibir seguido de su nombre, si tenemos más de un parámetro, entonces debemos de separarlos por comas. Como la función regresa un valor, es necesario indicar su tipo en la declaración. La variable que va a recibir el valor retornado deberá tener de preferencia el mismo tipo que la función o cuando menos un tipo que sea compatible o posible de convertir. Como siempre haremos uso de return para poder regresar el valor calculado. De hecho este tipo de función utiliza todas las partes de las que consiste una función. En este momento debemos programar la función que lleva a cabo la división. La función recibirá dos valores flotantes, verificará que no llevemos a cabo la división entre cero, realiza el cálculo y regresa el valor.


Los Arreglos
En C# llamamos arreglo a una colección de objetos, dicha colección tiene longitud definida y esta no puede cambiar con el flujo del programa, esto podrá sonar limitante, pero al trabajar con arreglos se obtiene un mejor desempeño que con cualquier otra colección. Usando el lenguaje podemos crear, recorrer y manipular arreglos de cualquier tipo de objeto.

El tamaño de los arreglos
En un arreglo es conveniente colocar la cantidad correcta de elementos, ya que una vez creado, no puede crecer a menos que utilicemos una función especial. Si hacemos lo último en forma constante, esto indica que nuestro programa tiene problemas de diseño. En el próximo capítulo veremos estructuras que permiten variar la cantidad de elementos a guardar.

Declaración de los arreglos de una dimensión
CUIDADO CON EL RANGO DEL ARREGLO
Los arreglos tienen una cantidad finita de elementos y ésta se indica en el momento en que se declaran. Cuando intentamos acceder a uno de sus elementos debemos colocar un valor de índice válido y que no exceda el tamaño del arreglo. Un error común con los arreglos es intentar acceder a elementos más allá de los que tiene.

En C# los arreglos son objetos, y deberemos usar new al declararlos. El arreglo será de tipo flotante, y usaremos [ ] para indicar su declaración. Luego debemos colocar el nombre con el que lo identificaremos. 

Asignación y uso de valores
Ya hemos visto cómo declarar el arreglo. Ahora tenemos que aprender cómo poder colocar información en su interior y hacer uso de ésta.
Para poder asignarle un valor a alguno de los elementos del arreglo necesitamos hacer uso del índice del elemento que queremos utilizar, y como dijimos antes, no debemos olvidar que el primer elemento se encuentra en la posición 0. 

Arreglos de dos dimensiones
Hasta aquí hemos visto que los arreglos nos ayudan a guardar información y a trabajar de una manera más cómoda con ella. Cuando tenemos mucha información que almacenar es más fácil manipular un arreglo que muchas variables. Los arreglos que vimos son similares a una lista, pero no todos los problemas se pueden resolver con este esquema, y veamos por qué. Supongamos que ahora debemos hacer un nuevo programa para una fábrica que produce automóviles y desea tener la información de las unidades producidas a diario. La información será procesada por semana, con el promedio semanal de vehículos producidos. Hasta el momento el problema sería muy similar al anterior. Podríamos crear un arreglo de 7 elementos llamado semana y estaría resuelto, pero ahora también desean la información por mes. El mes tiene cuatro semanas, por lo que podemos pensar en tener cuatro arreglos, uno que se corresponda con cada semana, pero en realidad existe una forma mejor de solucionar este problema.

Si pensamos un poco más en el problema veremos que podemos guardar la información en una tabla, cada columna sería una semana y cada renglón representaría un día. Esto se conoce como matriz, y es un arreglo de dos dimensiones. En los arreglos de dos dimensiones tenemos que utilizar dos índices. Uno controlará el renglón y el otro la columna. Con la creación de estos dos índices es posible que accedamos a cualquier celda ubicada dentro de la matriz.

Al igual que con los arreglos de una sola dimensión, los índices están basados en 0. Esto es tanto para los renglones como para las columnas.

Declaración de los arreglos de dos dimensiones
La declaración es similar al arreglo de una dimensión, pero indicamos la cantidad de elementos en cada dimensión.
En este caso, hemos creado una matriz de valores flotantes llamada tabla. Hay que notar que hemos colocado una coma entre los [ ] para indicar que serán dos dimensiones. En el lado derecho indicamos el tamaño de cada dimensión. Para este ejemplo tenemos cinco columnas y tres renglones.
También es posible declarar la matriz por medio de variables.
Acceso a un arreglo de dos dimensiones
La utilización del arreglo de dos dimensiones es muy sencilla, podemos acceder a la información si indicamos el renglón y la columna de la celda que nos interesa. Por ejemplo, si deseamos hacer uso del valor que se encuentra almacenado en la celda (3, 2) hacemos lo siguiente:
En este caso se toma el valor de la celda (3,2) del arreglo producto, se multiplica por 0.15 y el valor resultante se asigna a impuesto.
De igual forma podemos hacer la asignación al arreglo.
Para mostrar el valor en la consola hacemos lo siguiente:
No debemos olvidar que los índices siempre se inician en cero, y que no es posible colocar índices más grandes que la cantidad de elementos contenidos en el arreglo. Con este conocimiento podemos comenzar a trabajar en un ejemplo. Tomaremos el código del ejemplo de la escuela y ahora haremos posible que trabaje para varios salones. Para este caso pediremos la cantidad de salones y la cantidad de alumnos. Cada columna representará el salón y los renglones guardarán la información de los alumnos. De esta forma podemos capturar toda la información de la escuela y calcular el promedio, y la calificación mínima y máxima de toda la escuela.

Arreglos de tipo jagged
Así podemos controlar de forma independiente la cantidad de renglones en cada arreglo. Estos arreglos son más flexibles que los tradicionales, pero requieren que seamos más cuidadosos con ellos.

Declaración de un arreglo jagged
La declaración de los arreglos jagged es ligeramente más complicada que la de los tradicionales. Cuando los declaramos debemos declarar en primer lugar el arreglo contenedor y luego cada uno de los arreglos independientes que tiene.

A continuación veremos unos ejemplos:
1) Programa que saca el promedio de 5 calificaciones.

y se nos ejecutara de la siguiente manera:

2) Programa que me dice cuantas veces e escrito el mismo numero
-Comenzaremos capturando el nombre del programa y mostrándolo en pantalla, y declararemos las variables.

-Llamaremos un ciclo repetitivo for ,que le diremos que va a comenzar de 0 y terminara en 11, y ira aumentando de uno en uno.

-Capturaremos un mensaje que diga asta que números podemos ingresar y que nos muestre en pantalla.

-Le diremos que nos capture los datos, y de una sola ves convertiremos la variable numero a entero.

-Lo usamos un incremento para contar las veces que ingresemos el mismo numero.

-Llamaremos otro ciclo repetitivo for ,que le diremos que va a comenzar de 0 y terminara en 11, y ira aumentando de uno en uno.

-De ultimo llamaremos el resultado de las variables.

-El numero es controlado por n y la variable valores es la cantidad de veces que apareció en el indice del mismo numero.

Nos quedara de la siguiente manera:

Y nos ejecutara de la siguiente manera:

3) Programa que imprime 10 valores en orden, y los valores almacenados son del 0 al 9.

-Comenzaremos capturando el tema del programa y mostrándolo en pantalla.

-Después declararemos el arreglo y le diremos que tenga una longitud de 10.

-Declararemos una variable i.

-A continuación veremos un ciclo for, lo utilizaremos para que podamos ingresar 10 números.

-Dentro del ciclo for, aremos el procedimiento.

- Declaramos otro ciclo for, para que nos imprima el resultado.

-Llamaremos el resultado de n y lo mostraremos en pantalla.

Y se nos ejecutara así:



Espero que les sirva este blogs.
Gracias por su atención


link para que pongas a prueba tus conocimiento:

Comentarios

Entradas populares de este blog

Diseño de un CRUD de Datos de estudiantes con Visual Studio 2010 y workbench.

Gráfica Estadística, Objeto Chart Control