Vous êtes sur la page 1sur 24

PRACTICA 5

Races de Polinomios

5.1.

Objetivos

En la presente prctica utilizar el Lenguaje de Programacin Visual C# desde ShapDevelop 4.2 RC, Usted aanzar: Crear una solucin para una Aplicacin Windows desde SharpDevelop 4.0 Trabajar con una solucin en consola Denir variables y distinguir su mbito de uso. Mostrar los resultados en la consola Uso de datos tipo cadena de caracteres (string) Denir mtodos. Llamada a mtodos. Mtodos con valor retorno, especicar el tipo de valor de retorno de los mtodos. Mtodos sin valor de retorno y el mbito de uso de los mtodos. Instrucciones de decisin. Sintaxis para su creacin y edicin desde el entorno de desarrollo integrado

5.2.

Aplicacin propuesta

Dado un polinomio de segundo grado de la forma f (x) = ax2 + bx + c, obtener las races de ste, es decir valores x para las cuales la funcin f (x) se anula (f (x) = 0). La solucin se obtendr mediante la frmula cuadrtica y establece quelos va2 lores de la variable x que hacen nulo a la funcin estn dadas por x1,2 = b 2ba 4ac , donde la expresin b2 4ac es denominado discriminate () y del valor que tome depende los resultados de la funcin. Las races dependiendo de la discriminate, pueden ser: 1. Si > 0 entonces las races son nmeros reales y distintos entre s, que estn b+ b dados mediante: x1 = 2a y x2 = 2a 32

INICIO DATOS: a,b,c


b 2 4 ac

>0

SI

x1,2

b 2a
b 2a

NO

=0

SI

x1 x2

NO

x1,2

b i 2a 2a

RESULTADO: X1, X2

FIN

Figura 5.1: Races de una funcin cuadrtica - diagrama de ujo 2. Si = 0 entonces las races son nmeros reales e iguales y est dado por x1 = x2 = 2ba 3. Si < 0 las races son nmeros complejos conjugados, las mismas que estn i i b b dados mediante: x1 = + y x = 2 2a 2a 2a 2a

5.2.1.

Datos Requeridos

Los argumentos requeridos son tres nmeros reales que representan los coecientes de la funcin f (x) = ax2 + bx + c a es nmero real distinto de cero b es un nmero real c es un nmero real

5.2.2.

Resultados

Los resultados obtenidos sern las races de la ecuacin de segundo grado, dependiendo de la discriminate raz uno x1 raz uno x2

33

5.3.

Procedimiento

El procedimiento que se recomienda seguir es: 1. Crear la solucin en consola desde SharpDevelop 4.2 RC 2. Crear los mtodos necesarios que reciba de datos tres nmeros reales que representa los coecientes de la ecuacin de segundo grado, teniendo en cuenta que el coeciente de la expresin cuadrtica debe necesariamente ser distinto de cero. 3. Declarar las variables a nivel de clase 4. Utilizar las instrucciones de decisin para la obtener las races

5.3.1.

Diagrama de ujo

Para implementar el mtodo que obtenga las races de la funcin, tener en cuenta el diagrama de ujo mostrado en la Figura 5.1

5.3.2.

Pseudocdigo

El pseudocdigo para obtener las erices de un polinomio de segundo grado muestra en el Pseudocdigo 1 Algoritmo 1: pseudocdigo races de una funcin cuadrtica Datos: Coecientes de la funcin f (x) = ax2 + bx + c Resultado: Las races de la ecuacin x1 , x2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17

inicio;
/* Ingresar datos */ */

Ingresar los coecientes a, b, c;


/* Obtener discriminante

b2 4ac; Si > 0 Entonces x1 b+ c; 2a b x2 2a c; Sin, si = 0 Entonces x1 2ba ; x2 2ba ; En otro caso b x1 + i 2 ; 2a a i b x2 2a 2a ; Fin imprimir x1 y x2 ; n;

34

Figura 5.2: Races de una funcin cuadrtica - Interfaz principal

5.4.

Ventana principal de la aplicacin

La aplicacin en la presente prctica se realiza en modo consola, una captura nal de la ventana muestra la Figura 5.2

5.5.

Cdigo fuente

El cdigo fuente de la aplicacin, se muestra seguidamente

Listing 5.1: Cdigo fuente - Races de una funcin cuadrtica


1 /* 2 * 3 * 4 * 5 * 6 * 7 *
Created by SharpDevelop. User: EDMUNDO Date: 04/05/2012 Time: 12:48 p.m.

8 9 10 11 namespace PRACTICA05 12 { 13 class Program 14 { 15 public static void Main(string[] args) 16 { 17 Console.WriteLine("PRCTICA NRO 05"); 18 Console.WriteLine("OBTENCIN DE LAS RAICES DE ECUACIONES DE SGUNDO 19 20 21 22
GRADO"); Console.WriteLine("DE LA FORMA F(x)=A^2+BX+C"); // para almacenar los coeficientes A, B, C string A, B, C;

To change this template use Tools | Options | Coding | Edit Standard Headers. */ using System;

35

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 68 69 70 71 72 73 74 75 76

// ingreso de datos por teclado Console.WriteLine("INGRESE EL COEFICIENTE A (DISTINTO DE CERO)"); A=Console.ReadLine(); Console.WriteLine("INGRESE EL COEFICIENTE B"); B=Console.ReadLine(); Console.WriteLine("INGRESE EL COEFICIENTE C"); C=Console.ReadLine(); // Obtiene resultado Console.WriteLine("LOS RESULTADOS SON"); MetodoCuadratico(double.Parse(A), double.Parse(B), double.Parse(C)); Console.Write("Presione cualquier tecla para salir . . . "); Console.ReadKey(true); }

static void MetodoCuadratico(double a, double b, double c) { /* 1) OBJETIVO: * Mtodo para obtener las raices de una ecuacin de segundo grado, de la forma ax^2 + bx + c * 2) DATOS: * Los coeficintes de la ecuacin, ax^2 + bx + c, "a" distinto de cero * 3) RESULTADO * Las raices de la ecuacin, x1,x2 */ // raices de las ecuaciones nmeros reales (oarte real) double x1, x2; // raices de las ecuaciones (parte compleja) double x11=0, x22=0; // los resultados dependern del valor de la discriminante // llamada a mtodo double discriminante = MetodoDiscriminante(a,b,c); // las condiciones para obtener las raices se eligen segn el valor de la discriminante : dis>0, dis=0, dis<0 // se utiliza las estructuras condicionales en csharp if (discriminante>0) { /* se ejecuta cuando discriminante es mayor * en este caso, la ecuacin dispone de dos distintos que estn datos por: * / * x1=(-b+Math.Sqrt(discriminante))/(2*a); x2=(-b-Math.Sqrt(discriminante))/(2*a); } else if (discriminante==0) { /* se ejecuta cuando discriminante es igual * en este caso, la ecuacin dispone de dos * y estn datos por:

a cero raices reales y

a cero raices que son iguales

36

77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129

*/ x1=-b/(2*a); x2=x1; } else { /* se ejecuta cuando discriminante es menor a cero -- por defecto, cuando ninguna de las anteriores se cumple * en este caso, la ecuacin dispone de dos raices conplejos conjugados * y estn datos por: */ // parte real x1=-b/(2*a); x2=-b/(2*a); // parte compleja x11=Math.Sqrt(-discriminante)/(2*a); x22=Math.Sqrt(-discriminante)/(2*a); } // Muestra los resultados MuestraResultado(x1,x2,x11,x22); } static void MuestraResultado(double x1, double x2, double x11, double x22) { /* 1) OBJETIVO: * Mtodo que muestra los resultados en la pantalla de consola * 2 DATOS: * las raices de la ecuacin, parte real: x1 y x2, parte compleja: x11 , x22 / * // raices de las ecuaciones string r1, r2; if ((x11==0)&&(x22==0)) { /* * Si x11=0 y x22=0, * entonces son raices reales */ r1= " X1=" + x1.ToString(); // concatena cadenas r2= " X2=" + x2.ToString(); } else { /* * caso contrario, las raices son nmeros complejos * */ r1= " X1=" + x1.ToString() + "+" + x11.ToString() + "i"; r2= " X2=" + x2.ToString() + "-" + x22.ToString() + "i"; } // Imprime los resultados en pantalla Console.WriteLine(r1); Console.WriteLine(r2);

37

130 131 132 133 134 135 136

137 138 139 140 141 142 143 144 145 146 147 148 149 150 } 151 152 } 153 }

static double MetodoDiscriminante(double a, double b, double c) { /* 1) OBJETIVO * Mtodo para obtener la discriminante para la solucin de una ecuacin de segundo grado, desarrollado por el mtodo cuadrtico * (b^2-4ac)^1 * 2) DATOS * Los coeficintes de la ecuacin, ax^2 + bx + c, "a" distinto de cero * 3) RESULTADO * La discriminante, que es igual a (b^2-4ac)^1 */ // declara valor double retorno; // asigna valor retorno = Math.Pow(b,2)-4*a*c; // valor de retono de la funcin return retorno;

5.6.
5.6.1.

Explicacin de las rdenes necesarias


Importar de espacio de nombre

Mediante la palabra reservada using se importa un espacio de nombre (un espacio de nombre contiene mtodos, interfaces, ect), para una aplicacin en modo consola es suciente importar el espacio de nombre System como se muestra seguidamente.

Listing 5.2: Importar espacio de nombre


1 using System;

5.6.2.

Obtener datos desde el teclado

Para pedir datos en modo consola, se requiere utilizar el mtodo ReadLine de la clase Console que se encuentra en el espacio de nombre System, tal como se muestra en el cdigo fuente siguiente.

Listing 5.3: Obtener datos desde el teclado en modo consola


1 public static void Main(string[] args) 2 { 3 // ingreso de datos por teclado 4 Console.WriteLine("INGRESE EL COEFICIENTE A (DISTINTO DE CERO)"); 5 A=Console.ReadLine();

38

6 7 8 9 10 }

Console.WriteLine("INGRESE EL COEFICIENTE B"); B=Console.ReadLine(); Console.WriteLine("INGRESE EL COEFICIENTE C"); C=Console.ReadLine();

En el cdigo A=Console.ReadLine(); el mtodo ReadLine() devuelve una cadena que es almacenado en la variable A que previamente fue declarado de tipo string.

5.6.3.

Mostrar resultados

El mtodo WriteLine() requiere de dato una cadena de caracteres para mostrar en la pantalla de consola. Por defecto mostrar en la lnea disponible siguiente forzando a un cambio de lnea. Listing 5.4: Mostrar resultados en modo consola
1 2 3
// Imprime los resultados en pantalla Console.WriteLine(r1); Console.WriteLine(r2);

r1 y r2 son cadena de caracteres.

5.6.4.

Denicin de mtodo sin valor de retorno

El cdigo fuente que se muestra seguidamente, establece un mtodo1 sin valor de retorno, para su creacin es necesario cumplir la sintaxis establecido por Visual C#.

Listing 5.5: Denicin de mtodo sin valor de retorno


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
1

static void MetodoCuadratico(double a, double b, double c) { /* 1) OBJETIVO: * Mtodo para obtener las raices de una ecuacin de segundo grado, de la forma ax^2 + bx + c * 2) DATOS: * Los coeficintes de la ecuacin, ax^2 + bx + c, "a" distinto de cero * 3) RESULTADO * Las raices de la ecuacin, x1,x2 */ // raices de las ecuaciones nmeros reales (oarte real) double x1, x2; // raices de las ecuaciones (parte compleja) double x11=0, x22=0; // los resultados dependern del valor de la discriminante // llamada a mtodo

Un mtodo es una secuencia, un conjunto de instrucciones que reciben un mismo nombre. Cada vez que se requiera ejecutar aquel conjunto de instrucciones solamente se debe referir con el identicador del mtodo(nombre del mtodo)

39

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

double discriminante = MetodoDiscriminante(a,b,c); // las condiciones para obtener las raices se eligen segn el valor de la discriminante : dis>0, dis=0, dis<0 // se utiliza las estructuras condicionales en csharp if (discriminante>0) { /* se ejecuta cuando discriminante es mayor a cero * en este caso, la ecuacin dispone de dos raices distintos * que estn datos por: */ x1=(-b+Math.Sqrt(discriminante))/(2*a); x2=(-b-Math.Sqrt(discriminante))/(2*a); } else if (discriminante==0) { /* se ejecuta cuando discriminante es igual a cero * en este caso, la ecuacin dispone de dos raices * y estn datos por: */ x1=-b/(2*a); x2=x1; } else { /* se ejecuta cuando discriminante es menor a cero cuando ninguna de las anteriores se cumple en este caso, la ecuacin dispone de dos raices * conjugados * y estn datos por: */ // parte real x1=-b/(2*a); x2=-b/(2*a); // parte compleja x11=Math.Sqrt(-discriminante)/(2*a); x22=Math.Sqrt(-discriminante)/(2*a); } // Muestra los resultados MuestraResultado(x1,x2,x11,x22); }

reales y

que son iguales

-- por defecto, conplejos

En el mtodo anterior se distingue: static, es un modicador del mtodo, lo que hace posible que sea accesible desde otros mtodos que pertenecen a la misma clase void indica que no hay ningn valor de retorno MetodoCuadratico es el identicador del mtodo, nombre del mtodo double a, double b, double c son los parmetros, argumentos o datos de entrada requeridas por el mtodo 40

El cuerpo del mtodo est denido por la regin delimitada por { llave de inicio y } llave de cierre

5.6.5.

Denicin de mtodo con valor de retorno

El cdigo siguiente establece un mtodo con valor de retorno en Visual C#

Listing 5.6: Denicin de mtodo con valor de retorno


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
static double MetodoDiscriminante(double a, double b, double c) { /* 1) OBJETIVO * Mtodo para obtener la discriminante para la solucin de una ecuacin de segundo grado, desarrollado por el mtodo cuadrtico * (b^2-4ac)^1 * 2) DATOS * Los coeficintes de la ecuacin, ax^2 + bx + c, "a" distinto de cero * 3) RESULTADO * La discriminante, que es igual a (b^2-4ac)^1 */ // declara valor double retorno; // asigna valor retorno = Math.Pow(b,2)-4*a*c; // valor de retono de la funcin return retorno; }

En el mtodo anterior se distingue: static, es un modicador del mtodo, lo que hace posible que sea accesible desde otros mtodos que pertenecen a la misma clase double indica el tipo de valor de retorno, en este caso un nmero real MetodoDiscriminante es el identicador del mtodo, nombre del mtodo double a, double b, double c son los parmetros, argumentos o datos de entrada requeridas por el mtodo El cuerpo del mtodo est denido por la regin delimitada por { llave de inicio y } llave de cierre La palabra reservada return indica la variable de retorno, tal como muestra la variable anterior

5.6.6.

Llamada a mtodos sin valor de retorno

Llamar un mtodo equivale a ejecutar las instrucciones que contiene. Es necesario tomar el cuenta la sintaxis para la llamada de los mtodo en Visual C#, el cdigo fuente Llamada a mtodo sin valor de retorno que se muestra seguidamente ejecuta las instrucciones contenidas por el mtodo cuyo identicador es MuestraResultado 41

y para su ejecucin requiere como datos de entrada los valores de x1, x2, x11, x22. La llamada al mtodo es mediante MuestraResultado(x1,x2,x11,x22).

Listing 5.7: Llamada a mtodo sin valor de retorno


1 2
// Muestra los resultados MuestraResultado(x1,x2,x11,x22);

5.6.7.

Llamada a mtodos con valor de retorno

En el cdigo fuente que se muestra se realiza una llamada al mtodo cuyo identicador es MetodoDiscriminante, mediante MetodoDiscriminante(a,b,c). ste mtodo fue establecido para devolver un valor de retorno de tipo double, un nmero real, cuyo valor es almacenado en la variable discriminante.

Listing 5.8: Llamada a mtodo con valor de retorno


1 2 3 4 5 6
// los resultados dependern del valor de la discriminante // llamada a mtodo double discriminante = MetodoDiscriminante(a,b,c); // las condiciones para obtener las raices se eligen segn el valor de la discriminante : dis>0, dis=0, dis<0 // se utiliza las estructuras condicionales en csharp

5.6.8.

Uso de las sentencias if

Tener en cuenta la sintaxis para la creacin de instrucciones condiciones en Visual . . . . C#, en el siguiente cdigo fuente mostrado si ((x11 == 0)&&(x22 == 0)) es true (verdadero) entonces se ejecuta en campo siguiente, en caso contrario se ejecuta el campo siguiente al else.

Listing 5.9: Uso de las instrucciones if


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
// races de las ecuaciones string r1, r2; if ((x11==0)&&(x22==0)) { /* * Si x11=0 y x22=0, * entonces son raices reales */ r1= " X1=" + x1.ToString(); // concatena cadenas r2= " X2=" + x2.ToString(); } else { /* * caso contrario, las raices son nmeros complejos * */ r1= " X1=" + x1.ToString() + "+" + x11.ToString() + "i"; r2= " X2=" + x2.ToString() + "-" + x22.ToString() + "i";

42

17

5.6.9.

Uso de las sentencias if anidadas

Tener en cuenta la sintaxis para la creacin de instrucciones condiciones if anidadas en Visual C#, las condicionales evalan el valor de la discriminante, en la primera evaluacin que encuentre verdadero se ejecutar las instrucciones seguidas a ste y contina su ejecucin con las instrucciones lneas abajo fuera del bloque if anidado, en caso que ninguno sea verdadero se ejecuta la instruccin por omisin, las instrucciones seguidas a else continuando luego lneas abajo fuera del bloque if anidado. Listing 5.10: Uso de las instrucciones if anidadas
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
if (discriminante>0) { /* se ejecuta cuando discriminante es mayor a cero * en este caso, la ecuacin dispone de dos raices distintos * que estn datos por: */ x1=(-b+Math.Sqrt(discriminante))/(2*a); x2=(-b-Math.Sqrt(discriminante))/(2*a); } else if (discriminante==0) { /* se ejecuta cuando discriminante es igual a cero * en este caso, la ecuacin dispone de dos raices * y estn datos por: */ x1=-b/(2*a); x2=x1; } else { /* se ejecuta cuando discriminante es menor a cero cuando ninguna de las anteriores se cumple en este caso, la ecuacin dispone de dos raices * conjugados * y estn datos por: */ // parte real x1=-b/(2*a); x2=-b/(2*a); // parte compleja x11=Math.Sqrt(-discriminante)/(2*a); x22=Math.Sqrt(-discriminante)/(2*a); }

reales y

que son iguales

-- por defecto, conplejos

43

PRACTICA 6

Instrucciones Iterativas

6.1.

Objetivos

En la presente prctica utilizar el Lenguaje de Programacin Visual C# desde ShapDevelop 4.2, Usted aprender: Sintaxis de las instrucciones iterativas en Visual C# Semntica de las instrucciones iterativas desde el lenguaje de programacin Visual C# Uso de la instruccin f or - para procedimientos iterativos con nmero de repeticiones jo o conocido Uso de la instruccin while - para procedimientos iterativos cuya culminacin depende de una decisin evaluada al inicio del proceso repetitivo Uso de la instruccin do while para procedimientos iterativos cuya culminacin depende de una decisin evaluada al nal del proceso repetitivo Trabajar desde el entorno de desarrollo integrado SharpDevelop 4.2, con soluciones para windows en modo consola y proyectos con formularios

6.2.

Aplicacin propuesta

Con la nalidad de trabajar con instrucciones iterativas desde SharpDevelop 4.2 con el lenguaje de programacin Visual C#, se propone aproximar el valor de la base del logaritmo neperiano e mediante la Ecuacin 6.1

e=
k=1

k5 52(k !)

(6.1)

para aproximar el valor de e se utilizarn las instrucciones iterativas: for, while, do-while

44

6.2.1.

Datos Requeridos

Teniendo en cuenta la Ecuacin 6.1 para aproximar la base del logaritmo neperiano, el nico argumento requerido es un nmero entero positivo que represente a

6.2.2.

Resultados

El resultado ser el valor aproximado para e, cuando mayor sea el argumento de ingreso la aproximacin ser mucho mejor. La aproximacin para e se realizar mediante las tres instrucciones iterativas: for, while, do-while

6.3.

Procedimiento

El procedimiento que se recomienda seguir es: 1. Crear la solucin en consola o una aplicacin con formulario desde SharpDevelop 4.2 2. Crear los mtodos necesarios considerando los datos necesarios como entrada y los resultados requeridos 3. Declarar las variables a nivel de mtodo 4. Utilizar las instrucciones iterativas for, while, do-while para aproximar el valor de e

6.3.1.

Diagrama de ujo

Teniendo en cuenta la Ecuacin 6.1 y considerando las instrucciones iterativas disponibles desde Visual C# se tiene dos alternativas para aproximar el valor de e, y son: Conociendo previamente el nmero de iteraciones a ejecutar(instruccin f or) y cuando el procedimiento iterativo depende de una condicin evaluado al inicio del proceso(instruccin while), mostrado en la Figura 6.1 Cuando el procedimiento iterativo depende de una condicin evaluado al nal del proceso(instruccin do while), mostrado en la Figura 6.2

6.3.2.

Pseudocdigo

El pseudocdigo se desarrolla para las tres alternativas disponibles en el tratamiento de proceso iterativos en Visual C#, estas son: Conociendo previamente el nmero de iteraciones a ejecutar(instruccin f or), mostrado en el Pseudocdigo 2

45

INICIO

INGRESAR: n

e=0, factorial =1,k=1

K<=n

NO

IMPRIMIR e

FIN

SI
factorial=factorial*k e=e+k^5/(52*factorial) k=k+1

Figura 6.1: Aproximacin de e - instrucciones f or y while

INICIO

INGRESAR: n

e=0, factorial =1,k=1

factorial=factorial*k e=e+k^5/(52*factorial) k=k+1


SI

K<=n

NO

IMPRIMIR e

FIN

Figura 6.2: Aproximacin de e - instruccin do while

46

Algoritmo 2: Pseudocdigo para obtener e conociendo el nmero de ciclos a ser ejecutado Datos: Ingresar un nmero n entero positivo Resultado: Aproximacin de la base del logaritmo neperiano e hasta el nmero n, cuanto mayor sea n la aproximacin para e ser mejor
1 2 3 4 5 6 7 8 9 10 11 12 13

inicio;
/* Ingresar valor para n */ */

n ;
/* inicializar variables

e = 0, f actorial 1; Desde k 1 Hasta n Hacer


/* obtiene factorial para k */ */

f actorial f actorial k ;
/* aproxima e hasta k

ee+ Fin imprimir e; n;

k5 ; 52(f actorial)

Cuando el procedimiento iterativo depende de una condicin evaluado al inicio del proceso(instruccin while), mostrado en el Pseudocdigo 3 Algoritmo 3: Pseudocdigo para obtener e evaluando la condicin de nalizacin al inicio del proceso iterativo Datos: Ingresar un nmero n entero positivo Resultado: Aproximacin de la base del logaritmo neperiano e hasta el nmero n, cuanto mayor sea n la aproximacin para e ser mejor
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

inicio;
/* Ingresar valor para n */ */

n ;
/* inicializar variables

e = 0, f actorial 1, k 1; Mientras k n Hacer


/* obtiene factorial para k */ */ */

f actorial f actorial k ;
/* aproxima e hasta k

ee+

k5 ; 52(f actorial)

/* actualiza valor de k

k k + 1; Fin imprimir e; n; Cuando el procedimiento iterativo depende de una condicin evaluado al nal del proceso(instruccin do while), mostrado en el Pseudocdigo 4 47

Figura 6.3: Aproximacin para e - Interfaz principal Algoritmo 4: Pseudocdigo para obtener e evaluando la condicin de nalizacin al nal del proceso iterativo Datos: Ingresar un nmero n entero positivo Resultado: Aproximacin de la base del logaritmo neperiano e hasta el nmero n, cuanto mayor sea n la aproximacin para e ser mejor
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

inicio;
/* Ingresar valor para n */ */

n ;
/* inicializar variables

e = 0, f actorial 1, k 1; Repetir
/* obtiene factorial para k */ */ */

f actorial f actorial k ;
/* aproxima e hasta k

ee+

k5 ; 52(f actorial)

/* actualiza valor de k

k k + 1; Hasta que k > n; imprimir e; n;

6.4.

Ventana principal de la aplicacin

La aplicacin en la presente prctica se realiza en modo consola, una captura nal de la ventana muestra la Figura 6.3

6.5.

Cdigo fuente

El cdigo fuente de la aplicacin, se muestra seguidamente 48

Listing 6.1: Cdigo fuente - Instrucciones Iterativas


1 /* 2 * 3 * 4 * 5 * 6 * 7 *
Created by SharpDevelop. User: Carla Date: 10/06/2012 Time: 10:59 p.m.

8 9 10 11 namespace PRACTICA06 12 { 13 class Program 14 { 15 public static void Main(string[] args) 16 { 17 Console.WriteLine("================PRACTICA NMERO 06================" 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
); // para almacenar valor de entrada string cadena= Console.ReadLine(); // comprueba valor ingresado if (cadena == "") { Console.WriteLine("INGRESE UN NMERO ENTERO POSITIVO"); Console.ReadKey(true); // termina el mtodo return; } // e con mtodo e1 Console.WriteLine(e1(int.Parse(cadena)).ToString()); // e con mtodo e2 Console.WriteLine(e2(int.Parse(cadena)).ToString()); // e con mtodo e3 Console.WriteLine(e3(int.Parse(cadena)).ToString()); Console.ReadKey(true); }

To change this template use Tools | Options | Coding | Edit Standard Headers. */ using System;

static double e1(int n) { // inicializar variables double e=0; double factorial=1; // proceso iterativo for (int k = 1; k <= n; k++) { // obtiene factorial para k factorial=factorial*k; // aproxima e hasta k e=e+ Math.Pow(k,5)/(52*factorial); } // valor de retorno return e; }

49

54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 } 93 }

static double e2(int n) { // inicializar variables double e=0; double factorial=1; int k=1; // proceso iterativo while (k<=n) { // obtiene factorial para k factorial=factorial*k; // aproxima e hasta k e=e+ Math.Pow(k,5)/(52*factorial); // actualiza valor de k k++; } // valor de retorno return e; } static double e3(int n) { // inicializar variables double e=0; double factorial=1; int k=1; // proceso iterativo do { // obtiene factorial para k factorial=factorial*k; // aproxima e hasta k e=e+ Math.Pow(k,5)/(52*factorial); // actualiza valor de k k++; } while (k<=n); // valor de retorno return e; }

6.6.
6.6.1.

Explicacin de las rdenes necesarias


Instruccin for

La instruccin for ejecuta el proceso un nmero determinado de veces, es decir, el nmero de veces a ejecutarse un determinado proceso es conocido, se distingue: k = 1 controla el nmero de proceso que se ejecuta, inicia en 1. Es necesario declarar como un nmero entero k <= n condicin de parada, n del proceso iterativo k + + variacin de k , desde uno hasta n 50

Listing 6.2: Cdigo fuente instruccin for


1 static double e1(int n) 2 { 3 // inicializar variables 4 double e=0; 5 double factorial=1; 6 // proceso iterativo 7 for (int k = 1; k <= n; k++) { 8 // obtiene factorial para k 9 factorial=factorial*k; 10 // aproxima e hasta k 11 e=e+ Math.Pow(k,5)/(52*factorial); 12 } 13 // valor de retorno 14 return e; 15 }

6.6.2.

Instruccin while

La instruccin while ejecuta un proceso iterativo basndose en una condicin, mientas la condicin sea verdadera ejecuta el proceso, cuando la condicin sea falso termina el proceso iterativo. En el cdigo fuente mostrado seguidamente k <= n es la condicin, con k variando de uno en uno desde uno hasta n, es importante distinguir que la instruccin while pueda no ejecutar el proceso iterativo si a la primera evaluacin k <= n es falso.

Listing 6.3: Cdigo fuente instruccin while


1 static double e2(int n) 2 { 3 // inicializar variables 4 double e=0; 5 double factorial=1; 6 int k=1; 7 // proceso iterativo 8 while (k<=n) { 9 // obtiene factorial para k 10 factorial=factorial*k; 11 // aproxima e hasta k 12 e=e+ Math.Pow(k,5)/(52*factorial); 13 // actualiza valor de k 14 k++; 15 } 16 // valor de retorno 17 return e; 18 }

6.6.3.

Instruccin do-while

La instruccin do-while ejecuta un proceso iterativo basndose en una condicin al igual que la instruccin while, mientas la condicin sea verdadera ejecuta el 51

proceso, cuando la condicin sea falso termina el proceso iterativo. En el cdigo fuente mostrado seguidamente k <= n es la condicin, con k variando de uno en uno desde uno hasta n, es importante distinguir que la instruccin do-while siempre ejecuta por lo menos una vez el proceso iterativo.

Listing 6.4: Cdigo fuente instruccin do-while


1 static double e3(int n) 2 { 3 // inicializar variables 4 double e=0; 5 double factorial=1; 6 int k=1; 7 // proceso iterativo 8 do 9 { 10 // obtiene factorial para k 11 factorial=factorial*k; 12 // aproxima e hasta k 13 e=e+ Math.Pow(k,5)/(52*factorial); 14 // actualiza valor de k 15 k++; 16 } while (k<=n); 17 // valor de retorno 18 return e; 19 }

52

Bibliografa

[1] Pedro Ponce cruz. Inteligencia Articial con Aplicaciones a la Inge. 2010. [2] http://es.wikipedia.org/wiki/Red_neuronal_artificial. [3] hamdy A Taha. Investigacin de Operaciones. 1991. [4] James Anderson. Redes Neuronales. 2004. [5] James A. Anderson. An Introduction to Neural Networks. March 16, 1995. [6] Arango. Analisis de Seales con las Transformadas de Fourier, Cabor y Anditas. Colombia 2009. [7] Araujo. Algoritmos Evolutivos, un Enfoque prctico. Mxico 2009. [8] Lourdes Araujo and Carlos Cervign. Algoritmos Evolutivos, un Enfoque Prctico. 2009. [9] Eduardo Y Otro Caicedo Bravo. Una aproximacion practica a las redes neuronales articiciales. Universidad del Valle, 2009. [10] Bonifacio Martn del Briao; Alfredo Sanz. Redes Neuronales y Sistemas Borrosos. 2010. [11] Bonifacio Martin del Brio; Alfredo Sanz Molina. Redes Neuronales y Sistemas Difusos. December 2001. [12] Adenso Diaz. Optimizacion Heuristica y Redes Neuronales. December 2000. [13] Claudia Luca Zuluaga Echeverry. Un Aporte a la Gestin del Ruido Urbano en Colombia, Caso de Estudio: Municipio de Envigado. PhD thesis, Escuela de Geociencias y Medio Ambiente, 2009. [14] Juan Manuel Corchado; Fernando Daz ; Lourdes Borrajo; Florentino Fernndez. Redes Neuronales Articiales. 2000. [15] Raquel Flrez Lpez ; Jos Miguel Fernndez Fernndez. Las Redes Neuronales Articiales (Spanish Edition). NetBiblo S.L., February 1, 2008.

53

[16] Alfonzo Momtejo Fonseca. Ingeniera de Pavimentos Fundamentos, estudios Bsicos y Diseo, volume Tomo I. Universidad Catlica de Colombia, tercera edicin edition, 2006. [17] Alfonso Montejo Fonseca. Ingeniera de Pavimentos Evaluacin Estructural, Obras de Mejoramientos y Nuevas Tecnologas, volume Tomo II. Universidad Catlica de Colombia, tercera edicin edition, 2006. [18] Nicholas J Garber and Lester A Hoel. Ingeniera de Trnsito y Carreras. 2005. [19] Jose Ramon Hilera Gonzalez. Redes neuronales articiales: Fundamentos, modelos y aplicaciones (Serie Paradigma). 1995. [20] Dra. Ing. Alice Elizabeth Gonzlez. Modelos predictivos sencillos que podran dar complicaciones. Departamento de Ingeniera Ambiental Facultad de Ingeniera UdelaR Uruguay. [21] J. Gonzlez, M. Machimbarrena, and J.I. Snchez. Estudio comparativo de modelos predictivos de ruido para trco rodado. Universidad de Valladolid. [22] Daniel Graupe. Principles of Articial Neural Networks (Advanced Series in Circuits and Systems). 2 edition edition, April 5 2007. [23] Daniel Graupe. Principles of Articial Neural Networks (Advanced Series in Circuits and Systems). May 1997. [24] Puerta J and Quincha R. Evaluacin y Control de Ruido Industrial. Medelln 1991. [25] Leonor Hernndez Lpez. Prediccin y optimizacin de emisiones y consumo mediante redes neuronales. Editorial Revert, March 26, 2009. [26] Harris C M. Manual de Medidas Acsticas y Control del Ruido, volume Volumen I. 1995. [27] Garca Ortiz Eduardoand Fuentes Robles Marcos, Cepeda Riao Jess, Brdalo Salcedo Gabriel, and de Barrios Carro Mercedes. Estudio de un modelo de prediccin de ruido para un determinado tipo de va urbana en la ciudad de len. Laboratorio de Acstica Aplicada. Universidad de Len. Campus de Vegazana, 24071, Len Espaa. [28] Rafael Cal y Mayor R and James Cardenas G. Ingeniera de Trnsito fundamentos y Aplicaciones. 2007. [29] Sanchez. Redes Neuronales:Conceptos Fundamentales y Aplicaciones a Control Automatico. Espaa 2006. [30] Ministerio de Transportes y Comunicaciones. Manual Tcnico de Mantenimiento Peridico para la Red Vial Departamental no Pavimentada. Direccin General de Caminos y Ferrocarriles, 2008.

54

[31] Ministerio de Transportes y Comunicaciones. Manual Tcnico de Mantenimiento Rutinario para la Red Vial Departamental no Pavimentada. Direccin General de Caminos y Ferrocarriles, 2008. [32] Ministerio de Transportes y Comunicaciones. Manual de Diseo de Carreteras no Pavimentadas de Bajo Volumen de Trnsito. Direccin General de Caminos y Ferrocarriles, 2008. [33] Ministerio de Transportes y Comunicaciones. Manual de Diseo de Carreteras Pavimentadas de Bajo Volumen de Trnsito. Direccin General de Caminos y Ferrocarriles, 2008. [34] Ing Carlos Crespo Villalaz. Vas de Comunicacin. Noriega Editores, 2010. [35] Pedro Isasi Vinuela. Redes de Neuronas Articiales - Un Enfoque Practico (Spanish Edition). April 2005.

55