Facultad: Ingeniería Escuela: Ingeniería en Computación Asignatura: Programación Estructurada Tema: “Funciones y Procedimientos en C#”. Objetivos Utilizar la sintaxis de las funciones definidas por el usuario (programador) para resolver problemas. Identificar la diferencia entre una función y un procedimiento. Introducción Un problema complejo se puede dividir en pequeños subproblemas más sencillos. Estos subproblemas se conocen como módulos y su implementación en un lenguaje se llama subprograma (procedimientos y funciones). Un subprograma realiza las mismas acciones que un programa, sin embargo, vamos a utilizar el subprograma o módulo para una acción u operación específica. Un subprograma recibe datos de un programa y le devuelve resultados (el programa “llama” o “invoca” al subprograma, éste ejecuta una tarea específica y devuelve el “control” al programa que lo llamó). En C# a las funciones o procedimientos se le conocen con el nombre de métodos. Métodos en C# Función Procedimiento Funciones (Retornan un valor) En el ámbito de la programación, una función es un tipo de subalgoritmo, es el término para describir una secuencia de órdenes que hacen una tarea específica de una aplicación más grande. Las declaraciones de las funciones, generalmente son especificadas por: Un nombre único en el ámbito. Nombre de la función con el que se identifica y se distingue de otras. No podrá ser otra función o procedimiento con ese nombre (salvo sobrecarga o polimorfismo en programación orientada a objetos). Un tipo de dato de retorno. Tipo de dato del valor que la función devolverá al terminar su ejecución. Una lista de parámetros. Especificación del conjunto de argumentos (pueden ser cero uno o más) que la función debe recibir para realizar su tarea. Sintaxis de una Función. Modificador de acceso_Tipo Devuelto_Nombre Funcion (tipo(s) argumento(s) nombres) { // declaración de datos y cuerpo de la función. return (valor); } Procedimientos (No retornan valor) Fragmento de código (subprograma) que realiza una tarea específica y es relativamente independiente del resto del código. Los procedimientos suelen utilizarse para reducir la duplicación de códigos en un programa. Los procedimientos pueden recibir parámetros, pero no necesitan devolver un valor como es el caso de las funciones. Sintaxis Procedimiento Modificador_de_acceso void Nombre_procedimiento(tipo(s)_argunmento(s) nombres) { //declaración de datos y cuerpo de la función. } Material y Equipo Guía de laboratorio No. 7. Computadora con Visual Studio 2013 o superior. Dispositivo de almacenamiento (USB). Procedimiento G7Ejemplo1: Programa que permite digitar un número entero positivo y me diga si es par o impar. 1 static void Main(string[] args) 2 { 3 //Inicio del programa principal 4 Console.ForegroundColor = ConsoleColor.Black; 5 Console.BackgroundColor = ConsoleColor.White; 6 Console.Clear(); 7 Console.Title = "Uso de un procedimiento"; 8 int num; 9 Console.WriteLine("Digitar un numero entero positivo:"); 10 num = int.Parse(Console.ReadLine()); 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 Par(num); Console.WriteLine("\n"); Console.WriteLine("-->Fin del programa"); Console.ReadKey(); } //Aqui termina el programa principal static void Par(int a) { int x; x = (a % 2); if (x == 0) { Console.WriteLine("\nEs par"); } else { Console.WriteLine("\nEs impar"); } } G7Ejemplo2: En nuestro segundo ejemplo, vamos a implementar un procedimiento que sea capaz de realizar una suma y una resta. 1 static void Main(string[] args) 2 { 3 Console.Title = "Trabajando con Procedimientos"; 4 suma(); // llamando al procedimiento llamado suma 5 Console.ReadKey(); 6 Console.Clear(); 7 resta(); // llamando al procedimiento llamado resta 8 Console.ReadKey(); 9 } 10 11 static void suma() 12 { 13 Double r, n1, n2; 14 Console.WriteLine("Digitar primera cantidad"); 15 n1 = Double.Parse(Console.ReadLine()); 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Console.WriteLine("Digitar segunda cantidad"); n2 = Double.Parse(Console.ReadLine()); r = n1 + n2; Console.WriteLine("El resultado de la suma es: " + r); } static void resta() { Double r, n1, n2; Console.WriteLine("Digitar primera cantidad"); n1 = Double.Parse(Console.ReadLine()); Console.WriteLine("Digitar segunda cantidad"); n2 = Double.Parse(Console.ReadLine()); r = n1 - n2; Console.WriteLine("El resultado de la resta es: " + r); } Corrida del programa1 Corrida del programa2 G7Ejemplo3: Programa que permite hacer conversión de monedas digitando una cantidad en dólares, utilizando funciones. 1 2 3 4 5 6 7 8 9 10 11 static void Main(string[] args) { //Inicia el programa principal Console.ForegroundColor = ConsoleColor.Black; Console.BackgroundColor = ConsoleColor.White; Console.Clear(); Console.Title = "Ejemplo3 utilizando la sintaxis de funciones"; Double x,p,r; Console.WriteLine("Digitar la cantidad en dólares:"); x = Double.Parse(Console.ReadLine()); // llamadas a las funciones 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 p = euros(x); Console.WriteLine("Los {0} dolares son {1} euros ", x, p); r = libras(x); Console.WriteLine("Los {0} dolares son {1} libras ", x, r); Console.WriteLine("\n"); Console.WriteLine("-->Fin del programa"); Console.ReadKey(); } static Double euros(Double a) { Double g; g = a * 1.15; return g; } static Double libras(Double a) { Double v; v = a * 3.15; return v; } G7Ejemplo4: Utilización de un menú principal con la estructura Switch-Case y su facilidad al unirse con los procedimientos 1 2 3 4 5 6 7 8 9 10 11 12 13 14 static void Main(string[] args) { Console.ForegroundColor = ConsoleColor.Black; Console.BackgroundColor = ConsoleColor.Yellow; Console.Clear(); Console.Title = "Ejemplo4 de Procedimientos en un menú"; Int32 num1, num2; int opcion; Console.WriteLine("\n MENU PRINCIPAL DE OPERACIONES MATEMATICAS:"); Console.WriteLine("\n"); Console.Write("\tDigitar el primer número: "); num1 = Int32.Parse(Console.ReadLine()); Console.WriteLine("\n"); Console.Write("\tDigitar el segundo numero: "); 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 num2 = Int32.Parse(Console.ReadLine()); Console.Clear(); Console.WriteLine("\n MENU PRINCIPAL DE OPERACIONES MATEMATICAS:"); Console.ForegroundColor = ConsoleColor.Blue; Console.WriteLine("\n ==============================================="); Console.WriteLine("\n"); Console.WriteLine("\t1) Mayor de los 2"); Console.WriteLine("\t2) Multiplo"); Console.WriteLine("\t3) Potencia"); Console.WriteLine("\n ==============================================="); Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("\n"); Console.Write("\tDigitar la opción deseada [1..3]: "); opcion = int.Parse(Console.ReadLine()); Console.WriteLine("\n"); switch (opcion) { case 1: mayor(num1,num2); break; case 2: multiplo(num1,num2); break; case 3: potencia(num1,num2); break; default: Console.WriteLine("\tSe ha equivocado de opcion, solo acepta[1..3]"); break; } Console.WriteLine("\n"); Console.WriteLine("\t-->Fin del programa"); Console.ReadKey(); } static void mayor(Int32 a, Int32 b) { if (a > b) { Console.WriteLine("\tEl numero {0} es mayor que {1} ", a, b); } else { Console.WriteLine("\tEl numero {0} es mayor que {1} ", b, a); } } static void multiplo(Int32 a, Int32 b) { Int32 w; w = (a%b); if (w == 0) { Console.WriteLine("\tEl numero {0} es multiplo de {1} ", a, b); 68 69 70 71 72 73 74 75 76 77 78 79 } else { Console.WriteLine("\tEl numero {0} no es multiplo de {1} ", b, a); } } static void potencia(Int32 a, Int32 b) { Double s; s = Math.Pow(a,b); Console.WriteLine("\tEl numero {0} a la potencia de {1} es: {2}",a,b,s); } Análisis de Resultados 1. Crear un programa que solicite el año de nacimiento de una persona y retorne la edad haciendo uso de procedimientos. 2. Desarrollar un programa que implemente una función para convertir coordenadas polares a rectangulares. Debe tener en cuenta lo siguiente: x = rcos(θ) ; y = rsen(θ) 3. Cree un programa que contenga el siguiente menú: a) Dividir. b) Obtener cubo. c) Cálculo de IMC (Índice de Masa Corporal). d) Salir. Consideraciones: El menú debe permanecer disponible hasta que el usuario elija la opción d. Utilizar una función o procedimiento para cada opción. Para la opción d, utilice la fórmula: IMC = Peso[Kg] / Altura2[Metros]. Investigación Complementaria 1. Escribir un programa que lea dos números desde teclado (x y n) e implemente una función para calcular la siguiente progresión: 1 + X + X2 + X3 +… + Xn 2. Escribir un programa que permita al usuario elegir el cálculo del área de cualquiera de las figuras geométricas: circulo, cuadrado, rectángulo o triangulo, mediante procedimientos o funciones. No se le olvide presentarlo en un menú. Bibliografía Deitel, Harvey M. y Paul J. Deitel, Cómo Programar en C#, Segunda Edición, México, 2007.
© Copyright 2024