Guía 7

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.