5 metodos y parametros
TRANSCRIPT
Módulo I- Introducción a la Módulo I- Introducción a la Programación en la Plataforma .Net Programación en la Plataforma .Net con C#con C#
TEMARIOTEMARIO
CAPITULO III.- INTRODUCCIÓN AL LENGUAJE DE PROGRAMACIÓN C#
Introducción a los MétodosIntroducción a los Métodos Utilización de ParámetrosUtilización de Parámetros
Definición de métodosDefinición de métodosMain es un métodoMain es un método Para definir métodos propios se usa la Para definir métodos propios se usa la
misma sintaxismisma sintaxis
using System;
class ExampleClass { static void ExampleMethod( ) { Console.WriteLine("ExampleMethod"); } static void Main( ) { // ... }}
using System;
class ExampleClass { static void ExampleMethod( ) { Console.WriteLine("ExampleMethod"); } static void Main( ) { // ... }}
INTRODUCCIÓN A LOS MÉTODOSINTRODUCCIÓN A LOS MÉTODOSINTRODUCCIÓN A LOS MÉTODOSINTRODUCCIÓN A LOS MÉTODOS
Tipos MétodosTipos MétodosProcedimiento VoidProcedimiento Void: Un procedimiento : Un procedimiento debe tener un nombre. Este nombre será debe tener un nombre. Este nombre será utilizado para invocarle. No retorna datos. utilizado para invocarle. No retorna datos. Ej: Void Hola Mundo()Ej: Void Hola Mundo()Funciones:Funciones: Si un método devuelve valor, Si un método devuelve valor, se llama función sino retorna valor se le se llama función sino retorna valor se le llama procedimiento.llama procedimiento.Procedimientos de eventosProcedimientos de eventos: 2 : 2 elementos distinguen un procedimiento elementos distinguen un procedimiento clásico a un de eventos:clásico a un de eventos: La llamada al procedimiento de eventos se La llamada al procedimiento de eventos se
realiza automáticamente.realiza automáticamente. El nombre del procedimiento de eventos es la El nombre del procedimiento de eventos es la
concatenación del nombre del evento para la concatenación del nombre del evento para la cual se gestiona el evento: Ej: button_click()cual se gestiona el evento: Ej: button_click()
Llamadas a métodosLlamadas a métodosUna vez definido un método, se Una vez definido un método, se puedepuede:: Llamar a un método desde dentro de la Llamar a un método desde dentro de la
misma clasemisma clase Se usa el nombre del método seguido Se usa el nombre del método seguido
de una lista de parámetros entre de una lista de parámetros entre paréntesisparéntesis
Llamar a un método que está en una Llamar a un método que está en una clase diferenteclase diferente Hay que indicar al compilador cuál es Hay que indicar al compilador cuál es
la clase que contiene el método que la clase que contiene el método que se desea llamarse desea llamar
El método llamado se debe declarar El método llamado se debe declarar con la palabra con la palabra claveclave public public
Usar llamadas anidadasUsar llamadas anidadas Unos métodos pueden hacer llamadas Unos métodos pueden hacer llamadas
a otros, que a su vez pueden llamar a a otros, que a su vez pueden llamar a otros métodos, y así sucesivamente.otros métodos, y así sucesivamente.
Uso de la instrucción Uso de la instrucción returnreturn
Return inmediatoReturn inmediatoReturn con una instrucción Return con una instrucción condicionalcondicional
static void ExampleMethod( ){ int numBeans; //...
Console.WriteLine("Hello"); if (numBeans < 10) return; Console.WriteLine("World");}
static void ExampleMethod( ){ int numBeans; //...
Console.WriteLine("Hello"); if (numBeans < 10) return; Console.WriteLine("World");}
Uso de variables localesUso de variables locales
Variables localesVariables locales Se crean cuando comienza el métodoSe crean cuando comienza el método Son privadas para el métodoSon privadas para el método Se destruyen a la salidaSe destruyen a la salida
Variables compartidasVariables compartidas Para compartir se utilizan variables de Para compartir se utilizan variables de
claseclase
Conflictos de ámbitoConflictos de ámbito El compilador no avisa si hay conflictos El compilador no avisa si hay conflictos
entre nombres locales y de claseentre nombres locales y de clase
Devolución de valoresDevolución de valoresEl método se debe declarar con un El método se debe declarar con un tipo que no sea voidtipo que no sea voidSe añade una instrucción return Se añade una instrucción return con una expresióncon una expresión Fija el valor de retornoFija el valor de retorno Se devuelve al llamadorSe devuelve al llamador
Los métodos que no son void deben Los métodos que no son void deben devolver un valordevolver un valor
static int DosMasDos( ) { int a,b; a = 2; b = 2; return a + b;}
static int DosMasDos( ) { int a,b; a = 2; b = 2; return a + b;}
int x;x = DosMasDos( );Console.WriteLine(x);
int x;x = DosMasDos( );Console.WriteLine(x);
Declaración y llamadas a Declaración y llamadas a parámetrosparámetros
Declaración de parámetrosDeclaración de parámetros Se ponen entre paréntesis después del Se ponen entre paréntesis después del
nombre del métodonombre del método Se definen el tipo y el nombre de cada Se definen el tipo y el nombre de cada
parámetroparámetro
Llamadas a métodos con parámetrosLlamadas a métodos con parámetros Un valor para cada parámetroUn valor para cada parámetro
static void MethodWithParameters(int n, string y) { ... }
MethodWithParameters(2, "Hola, mundo");
static void MethodWithParameters(int n, string y) { ... }
MethodWithParameters(2, "Hola, mundo");
UTILIZACIÓN DE PARAMETROSUTILIZACIÓN DE PARAMETROSUTILIZACIÓN DE PARAMETROSUTILIZACIÓN DE PARAMETROS
Mecanismos de paso de Mecanismos de paso de parámetrosparámetros
Tres maneras de pasar parámetrosTres maneras de pasar parámetros
entradaentrada Paso por valorPaso por valor
entradasalida
entradasalida
Paso por referenciaPaso por referencia
salidasalida Parámetros de salidaParámetros de salida
Paso por valorPaso por valorMecanismo predeterminado para el paso Mecanismo predeterminado para el paso de parámetros:de parámetros: Se copia el valor del parámetroSe copia el valor del parámetro Se puede cambiar la variable dentro del Se puede cambiar la variable dentro del
métodométodo No afecta al valor fuera del métodoNo afecta al valor fuera del método El parámetro debe ser de un tipo igual o El parámetro debe ser de un tipo igual o
compatiblecompatiblestatic void SumaUno(int x) {
x++; // Incrementar x}static void Main( ) {
int k = 6;SumaUno(k);Console.WriteLine(k); // Muestra el valor 6, no 7
}
static void SumaUno(int x) {
x++; // Incrementar x}static void Main( ) {
int k = 6;SumaUno(k);Console.WriteLine(k); // Muestra el valor 6, no 7
}
Paso por referenciaPaso por referencia
¿Qué son los parámetros referencia?¿Qué son los parámetros referencia? Una referencia a una posición de Una referencia a una posición de
memoriamemoria
Uso de parámetros referenciaUso de parámetros referencia Se usa la palabra clave Se usa la palabra clave refref en la en la
declaración y las llamadas al métododeclaración y las llamadas al método Los tipos y valores de variables deben Los tipos y valores de variables deben
coincidircoincidir Los cambios hechos en el método Los cambios hechos en el método
afectan al llamadorafectan al llamador Hay que asignar un valor al parámetro Hay que asignar un valor al parámetro
antes de la llamada al método antes de la llamada al método
Parámetros de salidaParámetros de salida
¿Qué son los parámetros de ¿Qué son los parámetros de salida?salida? Pasan valores hacia fuera, pero Pasan valores hacia fuera, pero
no hacia dentrono hacia dentro
Uso de parámetros de salidaUso de parámetros de salida Como Como refref, pero no se pasan , pero no se pasan
valores al método valores al método Se usa la palabra clave Se usa la palabra clave outout en la en la
declaración y las llamadas al declaración y las llamadas al método método
static void OutDemo(out int p) {
// ...}int n;OutDemo(out n);
static void OutDemo(out int p) {
// ...}int n;OutDemo(out n);
Uso de listas de Uso de listas de parámetros de longitud parámetros de longitud variablevariableSe usa la palabra clave paramsSe usa la palabra clave params
Se declara como tabla al final de la Se declara como tabla al final de la lista de parámetroslista de parámetrosSiempre paso por valorSiempre paso por valor
static long AddList(params long[ ] v) { long total, i; for (i = 0, total = 0; i < v.Length; i++) total += v[i]; return total;}static void Main( ) { long x = AddList(63,21,84);}
static long AddList(params long[ ] v) { long total, i; for (i = 0, total = 0; i < v.Length; i++) total += v[i]; return total;}static void Main( ) { long x = AddList(63,21,84);}
Normas para el paso de Normas para el paso de parámetrosparámetros
Mecanismos Mecanismos El paso por valor es el más habitualEl paso por valor es el más habitual El valor de retorno del método es útil El valor de retorno del método es útil
para un solo valorpara un solo valor refref y/o y/o outout son útiles para más de un son útiles para más de un
valor de retornovalor de retorno refref sólo se usa si los datos se pasan en sólo se usa si los datos se pasan en
ambos sentidos ambos sentidos
Eficiencia Eficiencia El paso por valor suele ser el más eficaz El paso por valor suele ser el más eficaz
Uso de métodos Uso de métodos recursivosrecursivos
Un método puede hacer una llamada Un método puede hacer una llamada a sí mismoa sí mismo DirectamenteDirectamente IndirectamenteIndirectamente
Útil para resolver ciertos problemasÚtil para resolver ciertos problemas
Declaración de métodos Declaración de métodos sobrecargadossobrecargados
Métodos que comparten un nombre Métodos que comparten un nombre en una claseen una clase Se distinguen examinando la lista de Se distinguen examinando la lista de
parámetrosparámetrosclass OverloadingExample{ static int Suma(int a, int b) { return a + b; } static int Suma(int a, int b, int c) { return a + b + c; } static void Main( ) { Console.WriteLine(Suma(1,2) + Suma(1,2,3)); }}
class OverloadingExample{ static int Suma(int a, int b) { return a + b; } static int Suma(int a, int b, int c) { return a + b + c; } static void Main( ) { Console.WriteLine(Suma(1,2) + Suma(1,2,3)); }}
Signaturas de métodosSignaturas de métodos
Las signaturas de métodos Las signaturas de métodos deben ser únicas dentro de deben ser únicas dentro de una clase una clase Definición de signaturaDefinición de signatura
Nombre del método
Tipo de parámetro
Modificador
Nombre del método
Tipo de parámetro
Modificador
Forman la definiciónForman la definiciónde la signaturade la signatura
Forman la definiciónForman la definiciónde la signaturade la signatura
Nombre de parámetro
Tipo de retorno de método
Nombre de parámetro
Tipo de retorno de método
No afectan a laNo afectan a lasignaturasignatura
No afectan a laNo afectan a lasignaturasignatura
Uso de métodos Uso de métodos sobrecargadossobrecargados
Conviene usar métodos Conviene usar métodos sobrecargados sisobrecargados si:: Hay métodos similares que requieren Hay métodos similares que requieren
parámetros diferentesparámetros diferentes Se quiere añadir funcionalidad al código Se quiere añadir funcionalidad al código
existenteexistente
No hay que abusar, ya queNo hay que abusar, ya que:: Son difíciles de depurarSon difíciles de depurar Son difíciles de mantenerSon difíciles de mantener
EjerciciosEjercicios1. Desarrolle un programa que calcule la fórmula de energía
cinética. El cálculo debe estar definido en una función que reciba los datos para el cálculo y que retorne el resultado a una variable. Fórmula: Ec = 1 / 2 * M * V 2.
2. Desarrolle un programa que determine si un número es primo, el calculo debe ser realizado en una función que recibe como parámetro el numero a evaluar y retorno si es primo o no (verdadero o falso). Un número es primo cuando solo es divisible entre él y la unidad. Ej.: 3, 5, 7, 11,17….
3. Desarrolle un programa que calcule en factorial de un numero. El calculo debe ser realizado en una función que reciba como parámetro el numero a factorizar.
4. Opcional: Desarrollar el programa de factorial pero con funciones recursivas