Ing. Jakeline Marcos Abed 7/30/11 Objetivos del tema: ¿Qué es un método? Métodos Estáticos C# ¿Qué métodos conoces? Métodos que NO devuelven valor. Métodos que SI devuelven un valor. Paso de parámetros. Variables Locales y Globales Fundamentos de Programación. 1 Fundamentos de programación C# Jakeline Marcos. 2 Fundamentos de programación C# Jakeline Marcos. ¿Qué es un método? Métodos CON valor de retorno Cuando escribimos programas grandes y complejos, puede resultar difícil crearlos, entenderlos y corregirlos. Una técnica muy útil en estos casos es dividir el problema en pequeñas secciones, por eso se utiliza la frase: “divide y vencerás”... Estas pequeñas secciones de código, o pequeños procesos se llaman métodos. En algunos otros lenguajes equivale a las funciones. Datos de entrada (parámetros) Método 3 Fundamentos de programación C# Jakeline Marcos. Fundamentos de Programación. TC1002 Dato de salida (valor de retorno) 4 Fundamentos de programación C# Jakeline Marcos. 1 Ing. Jakeline Marcos Abed 7/30/11 Ejemplo de método predefinido CON valor de retorno a b Math.Pow ab Ejemplo de método predefinido CON valor de retorno n raiz Math.Sqrt 5 Fundamentos de programación C# Jakeline Marcos. 6 Fundamentos de programación C# Jakeline Marcos. Una vez definido el método, este puede ser “llamado” o “invocado” Es un proceso o fragmento de código que recibe valores de entrada y a partir de ellos produce un valor de salida. cuantas veces sea necesario, para diferentes valores, obteniendo en cada caso el resultado correspondiente. 90 Por ejemplo: 70 80 PromedioFinal 80 70 c1 c2 PromedioFinal 75 cFinal 75 PromedioFinal 80 c3 7 Fundamentos de programación C# Jakeline Marcos. Fundamentos de Programación. TC1002 8 Fundamentos de programación C# Jakeline Marcos. 2 Ing. Jakeline Marcos Abed 7/30/11 La definición del método PromedioFinal sería la Encabezado siguiente: static double PromedioFinal (int a, int b, int c) { return (a + b + c) / 3.0; Cuerpo static double PromedioFinal (int a, int b, int c) { return (a + b + c) / 3.0; } } En el encabezado se define: • La definición de un método está compuesto de dos partes: – Encabezado del método. – Cuerpo del método. El tipo del valor resultante o de retorno El nombre del método y los parámetros del método 9 Fundamentos de programación C# Jakeline Marcos. 10 Fundamentos de programación C# Jakeline Marcos. Métodos CON valor de RETORNO sí devuelven un valor.- Cuando queremos que el método nos ayude a obtener un resultado, utilizamos el encabezado siguiente: Tipos de métodos: Métodos que sí devuelven un valor. Métodos que Formato general: Llamado al método Suma dentro del Main. int s = Suma(10,4,6); Devuelve un valor de tipo int. return a + b + c; Llamado o invocación al método nom. tipo s = nom(p1,p2,...pn); Método suma. Devuelve un valor de este tipo. static int Suma(int a, int b, int c) { Se utiliza return para devolver un valor tipo de dato resultante: int, double, boolean, String Parámetros. Nombre Método. Parámetros. public tipo nom(tipo p1, tipo p2,.... tipo pn) { } return ________; tipo de dato resultante puede ser: int, double, boolean, o String Fundamentos de programación C# Jakeline Marcos. Fundamentos de Programación. TC1002 } 12 Fundamentos de programación C# Jakeline Marcos. 3 Ing. Jakeline Marcos Abed 7/30/11 La cantidad de variables que se definan en la lista de parámetros dependerá de los valores de entrada que necesite tu método. Si requiere 5 datos de entrada, tendrá 5 variables. Si no requiere de valores de entrada, entonces la lista será vacía (paréntesis vacíos). double resultado; resultado = PromedioFinal(70,60,90); O: resultado = PromedioFinal(80,70,70) + tareas + faltas; Las variables definidas en la lista de parámetros sólo podrán ser utilizadas dentro del cuerpo del método. Una vez que el método haya terminado de hacer sus cálculos y haya regresado el resultado, las variables de los parámetros se mueren =( O: Dentro de la impresión de un resultado: Console.WriteLine(“Promedio: ”+ PromedioFinal(90,80,70)); Puedes utilizar esos mismos nombres de variables, pero debes estar consciente que NO se refiere a las mismas. 13 Fundamentos de programación C# Jakeline Marcos. 14 Fundamentos de programación C# Jakeline Marcos. static bool Positivos (int x, int y, int z) { if (x > 0 && y > 0 && z > 0) { return true; } else { return false; } } 15 Fundamentos de programación C# Jakeline Marcos. Fundamentos de Programación. TC1002 16 Fundamentos de programación C# Jakeline Marcos. 4 Ing. Jakeline Marcos Abed 7/30/11 Métodos SIN valor de retorno Es un método que NO regresa ningún valor, sólo lleva a cabo una secuencia de instrucciones. Para indicar esto escribiremos en el encabezado de la función la palabra void (vacío) como tipo de valor de retorno. Este método NO necesita el estatuto return, ¿? pero puede tenerlo vacío: return; Puede tener cero o más parámetros. 17 Fundamentos de programación C# Jakeline Marcos. 18 Fundamentos de programación C# Jakeline Marcos. La definición del método ImprimeMenu, que NO recibe parámetros y NO devuelve ningún valor sería el siguiente: Por ejemplo: static void Main(String[] args) { imprimeMenu(); // NO se tiene que asignar static void ImprimeMenu( ) { Console.WriteLine(“1. Sumar 2 numeros”); Console.WriteLine (“2. Dividir 2 numeros”); Console.WriteLine (“3. Salir”); } } 19 Fundamentos de programación C# Jakeline Marcos. Fundamentos de Programación. TC1002 20 Fundamentos de programación C# Jakeline Marcos. 5 Ing. Jakeline Marcos Abed 7/30/11 Reglas sobre el paso de parámetros: La definición del método MuestraPrecioConIva, que Sí recibe un parámetro y NO devuelve ningún valor sería el siguiente: static void MuestraPrecioConIva (double precio ) { double p = precio * 1.15; Console.WriteLine (“Precio con 15% de iva: ” + p); } Al pasar parámetros o valores a los métodos se debe tener cuidado de que los valores enviados deben coincidir en: número.- Si en la llamada al método se envían 3 valores, el método debe recibir 3 valores. tipo.- Si en la llamada al método se envían 2 valores enteros y uno decimal, el método debe recibirlos de la misma manera. orden.- Si en la llamada al método se envían 3 valores a,b,c se deben de recibir en el mismo orden. 21 Fundamentos de programación C# Jakeline Marcos. 22 Fundamentos de programación C# Jakeline Marcos. Alcance de las variables: Los siguientes comentarios son aplicables al estatuto return: Variables Locales y Globales. El return se usa para establecer el valor que va a regresar el método ( return resultado; ). Al llegar al estatuto return, el método se deja de ejecutar y se envía como valor de retorno el valor que viene al lado del return. Una función void puede tener un return vacío( return; ), o no tener return. Una función que no es void – es decir, que sí tiene valor de retorno, debe tener al menos un return; Solo uno se ejecutará cuando la función sea invocada. Cuando dentro de un método necesitamos hacer diferentes operaciones, podemos utilizar variables auxiliares o locales. Estas variables solo “viven” dentro del método en el que son definidas y utilizadas y al finalizar el método se desechan. Es por eso que si una variable fue definida dentro de un método, No puede ser utilizada en otra parte del programa. Si necesitas utilizar una variable a lo largo de todo el programa, la debes definir como variable global, esto es, afuera de todos los métodos pero dentro de la clase. 23 Fundamentos de programación C# Jakeline Marcos. Fundamentos de Programación. TC1002 24 Fundamentos de programación C# Jakeline Marcos. 6 Ing. Jakeline Marcos Abed 7/30/11 Errores comunes de programación CirculoConMetodos El encabezado del método debe incluir los nombres de los tipos. El siguiente código está mal: private void MetodoUno(x){ Debemos utilizar algo como esto: private void MetodoUno(int x) { 1) Circunferencia: 2 * Pi * radio (regresa un double) // correcto 2) Area: Pi * radio2 (regresa un entero) La llamada a un método NO debe incluir los nombres de los tipos. Por ejemplo, en vez de: MetodoUno(int y); Desarrolla un programa que pregunte al usuario el RADIO de un círculo, utilizando los siguientes métodos: // incorrecto 3) Volumen: 4/3 * Pi * radio3 (regresa un double) 4) SALIR // incorrecto Debemos usar: MetodoUno(y); Desarrollar UN METODO para cada opción // correcto Al llamar a un método debemos enviar el número correcto de parámetros y los tipos correctos de éstos. Siempre debemos consumir o asignar un valor devuelto de alguna forma, para el caso de métodos que Sí tienen valor de retorno. int x = CalculaAlgo(); 25 Fundamentos de programación C# Jakeline Marcos. 26 Fundamentos de programación C# Jakeline Marcos. ConversionConMetodos Ejemplo método void Desarrolla un programa que ayude a convertir: Desarrolla un programa DesplegarNombre que utilice un método de tipo void para: 1) de grados Fahrenheit a grados Celsius ( °C = 5/9(°F-32) ) 2) de °C a °F 1) Recibir como parámetros: nombre, apellido1, apellido2 (°F = (C * 9) / 5 + 32) Y despliegue en pantalla: ap1, ap2 y nombre EI programa deberá llamar varias veces a los métodos, 2) Recibir como parámetros: nombre, apellido1 Y despliegue en pantalla: apellido1 y nombre utilizando diferentes valores. Los métodos deben de regresar un valor double. EI programa deberá llamar varias veces a los métodos, utilizando diferentes valores. 27 Fundamentos de programación C# Jakeline Marcos. Fundamentos de Programación. TC1002 28 Fundamentos de programación C# Jakeline Marcos. 7 Ing. Jakeline Marcos Abed 7/30/11 Ejemplo método void ConversiónConMetodos Desarrolla un programa DesplegarIniciales que utilice un método de tipo void para: Desarrolla un programa que sea capaz de convertir: 1) de minutos a horas. Tipo int 2) de pies a metros ( 1 pie = 0.3048 metros) Tipo double 1) Recibir como parámetros: nombre, apellido1, apellido2 3) de grados Fahrenheit a grados Celsius ( °C = 5/9(°F-32) ) Y despliegue en pantalla: las iniciales del nombre 2) Recibir como parámetros: nombre, apellido1 Y despliegue en pantalla: las iniciales del nombre 4) de °C a °F utilizando diferentes valores. las opciones. EI usuario seleccionará la opción deseada y dará los datos requeridos para hacer la conversión correspondiente. 29 Fundamentos de Programación. TC1002 Tipo double EI programa deberá desplegar un menú para cada una de EI programa deberá llamar varias veces a los métodos, Fundamentos de programación C# Jakeline Marcos. (°F = (C * 9) / 5 + 32 5) SALIR 30 Fundamentos de programación C# Jakeline Marcos. 8