Está en la página 1de 38

Universidad Autónoma

del Estado de Hidalgo

Programación Estructurada en Entorno Unix

PROYECTO:
FORMULARIO DE CONSTANTES FÍSICAS
SERIE DE TAYLOR

Elaborado por:
Castro Morga Paola Alejandra
León García Azul Yared
Mejía Romero Adan
Portillo García Aylynn

Lic. Física y Tecnología Avanzada

Noviembre, 2022
Índice
1. FUNCIONES: FORMULARIO DE CONSTANTES FÍSICAS 3
1.1. Marco teórico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1.1. Planteamiento del problema . . . . . . . . . . . . . . . . . . . . . . 3
1.1.2. Ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2. Algoritmo en lenguaje natural . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3. Diagrama de flujo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.4. Pseudocódigo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.5. Prueba de escritorio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.5.1. Buscar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.5.2. Editar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.5.3. Agregar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.5.4. Eliminar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.6. Código . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.7. Captura de ejecución . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.7.1. Buscar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.7.2. Editar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
1.7.3. Agregar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
1.7.4. Eliminar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
1.7.5. Salir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

2. RECURSIVIDAD: SERIE DE TAYLOR 26


2.1. Marco teórico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.1.1. Planteamiento del problema . . . . . . . . . . . . . . . . . . . . . . 26
2.1.2. Ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.2. Algoritmo en lenguaje natural . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.3. Diagrama de flujo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.4. Pseudocódigo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.5. Prueba de escritorio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.5.1. Serie de Taylor de seno . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.5.2. Serie de Taylor de coseno . . . . . . . . . . . . . . . . . . . . . . . . 30
2.6. Código . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.7. Captura de ejecución . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.7.1. Serie de Taylor de seno . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.7.2. Serie de Taylor de coseno . . . . . . . . . . . . . . . . . . . . . . . . 35
2.7.3. Salir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

1
2.8. Bibliografía . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

2
1. FUNCIONES: FORMULARIO DE CONSTANTES
FÍSICAS
1.1. Marco teórico
1.1.1. Planteamiento del problema

Las constantes físicas son aquellos valores y magnitudes que permanecen invariables sin
importar el tipo de problema o tópico en el que se quieran utilizar, estas constantes tie-
nen unidades fijas y pueden ser obtenidas de forma experimental, a través de medidores,
sensores, o teóricamente, al deducir expresiones y ecuaciones para cierto sistema físico.
Dentro de cada área de conocimiento de la física es común ver constantes, desde las mas
elementales como la velocidad de la luz en el vacío, número de avogadro, constantes de per-
meabilidad y permitividad, masa del electrón, protón, electrón, hasta mas especializadas
como el magnetón nuclear, constantes de gravitación y radiación.
Los usuarios interesados en resolver problemas prácticos que involucren el uso y aplicación
de constantes físicas, deben tener acceso fácil a los valores y sobre todo, al reconocimiento
de las unidades de esta misma, pues es información que podría variar el resultado de la
problemática. Por ello se propone la creación de un programa que utilice como funciona-
miento base los archivos, los cuales permitirán que el usuario cree un macro-formulario de
constantes físicas. Este será capaz de editar las constantes base, eliminar las indeseadas y
añadir otras que no se encuentren en la lista base de constantes.

Figura 1: Tabla muestra con algunas constantes físicas, su símbolo, orden y unidades.

3
1.1.2. Ejemplo

El siguiente ejemplo muestra la utilidad de tener una lista de constantes físicas para la
resolución de un problema de aplicación. [1]
1.- Calcule la velocidad de propagación de la luz en el vidrio.
Solución. Del índice de refracción n = vc , donde c es la velocidad de la luz en el vacío y v
la velocidad de la luz en cierto medio, podemos consultar en una tabla de constantes que
c = 3 · 108 m/s y n = 1,33. Así, la velocidad de la luz en el vidrio es

c 3 · 108
v= = = 1,96 · 108 m/s (1)
n 1,33

2.- ¿Cuál es la energía de la luz cuya frecuencia es de 1,55 · 1010 s−1 ?


Solución. E = hv se utiliza para calcular la energía de la radiación electromagnética, y se
conoce como la relación Planck-Einstein. E es la energía de la radiación electromagnética,
h es la constante de Planck y v es la frecuencia de la radiación electromagnética. Entonces,
si h = 6,626 · 10−34 Js

E = hv = (6,626 · 10− 34Js)(1,55 · 1010 s−1 ) = 1,03 · 1023 J (2)

1.2. Algoritmo en lenguaje natural


Entrada: o, e de tipo entero, n de tipo carácter y v de tipo flotante.
Proceso: El usuario podrá elegir en un menú entre buscar, agregar, editar y eliminar
constantes físicas que podrá ocupar para algún problema que desee resolver.
Salida: Impresión de la tabla con los datos de los nombres, valores y orden modifi-
cados según lo que realizó el usuario.

4
1.3. Diagrama de flujo

Figura 2: Diagrama de flujo - Funciones

5
(a) Conector 1 (b) Conector 2

Figura 3: Diagramas de flujo - conectores

(a) Conector 3 (b) Conector 4

Figura 4: Diagramas de flujo - conectores

6
1.4. Pseudocódigo
1 Inicio
2 d e c l a r a r op=0, exp =0, como e n t e r o ,
3 n=0 como c a r a c t e r ,
4 v a l=0 como f l o t a n t e ,
5 i m p r i m i r menú ,
6 s i op=1 ( b u s c a r ) ,
7 a b r i r archivo ,
8 pedir n ,
9 b u s c a r n en a r c h i v o ,
10 c e r r a r archivo ,
11 si n existe
12 i m p r i m i r n , val , exp ( t a b l a ) ,
13 fin si
14 s i no
15 i m r p i m i r "n no s e e n c u e n t r a en e l a r c h i v o " ,
16 fin si
17 s i op=2( e d i t a r ) ,
18 i m p r i m i r n , val , exp ( t a b l a ) ,
19 pedir n ,
20 a b r i r archivo ,
21 editar n,
22 c e r r a r archivo ,
23 i m p r i m i r n , val , exp ( t a b l a a c t u a l i z a d a ) ,
24 fin si
25 s i op=3( a g r e g a r ) ,
26 a b r i r archivo ,
27 imprimir " I n g r e s e valor " ,
28 g u a r d a r en val ,
29 i m p r i m i r " I n g r e s e e l nombre" ,
30 g u a r d a r en n ,
31 i m p r i m i r " I n g r e s e e l orden " ,
32 g u a r d a r en exp ,
33 c e r r a r archivo ,
34 mprimir n , val , exp ( t a b l a a c t u a l i z a d a ) ,
35 fin si
36 s i op=4( e l i m i n a r ) ,
37 i m p r i m i r n , val , exp ( t a b l a ) ,
38 imprimir " I n g r e s e l a cte a e l i m i n a r "
39 abrir archivo
40 pedir n ,
41 eliminar n ,
42 r e c o r r e r datos ,

7
43 cerrar archivo
44 i m p r i m i r n , val , exp ( t a b l a a c t u a l i z a d a ) ,
45 fin si
46 s i no
47 i m p r i m i r " Opci ón no vá l i d a " ,
48 fin si
49 Fin

1.5. Prueba de escritorio


Todas las constantes se encuentran en base 10.

1.5.1. Buscar

En este caso pedimos el nombre de la constante y si existe la muestra, sino existe muestra
las constantes almacenadas.

Entrada Salida
Nombre Existe Nombre Valor Exponente
Planck Si
Constante de 6,63 −34
Planck
Constante de 4π −7
Permeabilidad

Faraday No
Constante de 6,63 −34
Planck
Constante de 4π −7
Permeabilidad

Tabla 1: Prueba de escritorio para buscar.

1.5.2. Editar

Para esta prueba, primero se muestra la lista de las constantes registradas y después da
la opción de editar:
1. Nombre.
2. Valor.

8
Para este ejemplo utilizaremos la constante de Boltzmann.

Entrada Salida
Buscar Editar
Nombre Valor Nombre Valor Exponente
Boltzman Si No
Constante de 1,38 −23
Boltzmann

Tabla 2: Prueba de escritorio para editar.

1.5.3. Agregar

Entrada Salida
Nombre Valor Exponente Nombre Valor Exponente
Permeabilidad 4π −7
Constante de 4π −7
Permeabilidad
Constante de 1,38 −23
Boltzmann
Constante de 6,63 −34
Planck

Tabla 3: Prueba de escritorio para agregar.

1.5.4. Eliminar

En este caso se muestra la lista de las constantes registradas y después se da la opción de


eliminar la constante por el número de registro

Entrada Salida
Nombre Existe Registro Eliminar Nombre Valor Exponente
Permeabilidad Si 1 Si
Constante de 1,38 −23
Boltzmann
Constante de 6,63 −34
Planck

Tabla 4: Prueba de escritorio para eliminar.

9
1.6. Código
1 #include <s t d i o . h>
2 #include < s t d l i b . h>
3 #include <c t y p e . h>
4 #include <s t r i n g . h>
5
6 int a g r e g a r ( ) ;
7 int b u s c a r ( ) ;
8 int m o s t r a r ( ) ;
9 int e l i m i n a r ( ) ;
10 int e d i t a r ( ) ;
11
12 #define MAX 100
13
14 int main ( ) {
15 int o p c i o n ;
16 p r i n t f ( " \ t \ t \ t ∗FORMULARIO DE CONSTANTES FÍ SICAS∗\n\n" ) ;
17 p r i n t f ( "\ t \ t \ t MENÚ\n\n" ) ;
18 p r i n t f ( " \ t S e l e c c i o n e l a o p c i ón que d e s e e s e j e c u t a r \n\n" ) ;
19 p r i n t f ( " \ t \ t \ t ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗\ n" ) ;
20 p r i n t f ( "\ t \ t \ t ∗ ∗\n" ) ;
21 p r i n t f ( " \ t \ t \ t ∗ Buscar . . . . . . . . . . . . . . 1 ∗\n" ) ;
22 p r i n t f ( "\ t \ t \ t ∗ Editar . . . . . . . . . . . . . . 2 ∗\n" ) ;
23 p r i n t f ( " \ t \ t \ t ∗ Agregar . . . . . . . . . . . . . 3 ∗\n" ) ;
24 p r i n t f ( "\ t \ t \ t ∗ Eliminar . . . . . . . . . . . . 4 ∗\n" ) ;
25 p r i n t f ( "\ t \ t \ t ∗ S a l i r . . . . . . . . . . . . . . . 5 ∗\n" ) ;
26 p r i n t f ( "\ t \ t \ t ∗ ∗\n" ) ;
27 p r i n t f ( " \ t \ t \ t ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗\ n\n" ) ;
28 p r i n t f ( " \ tOpci ón s e l e c c i o n a d a : " ) ;
29 s c a n f ( "%d" ,& o p c i o n ) ;
30 switch ( o p c i o n ) {
31 case 1 :
32 buscar () ;
33 break ;
34 case 2 :
35 editar () ;
36 break ;
37 case 3 :
38 agregar () ;
39 break ;
40 case 4 :
41 eliminar () ;
42 break ;

10
43 case 5 :
44 printf (" Saliendo . . . ") ;
45 return 0 ;
46 default :
47 p r i n t f ( " Esta no e s una o p c i ón d e l menú , por f a v o r i n t a n t a nuevamente . \
n\n" ) ;
48 return main ( ) ;
49 break ;
50 }
51 }
52
53 int a g r e g a r ( ) {
54 FILE ∗ f p ;
55 char a r c h i v o [ ] = " f o r m u l a r i o . t x t " ;
56 int tpos , pos ;
57 float valor ;
58 char nombre [MAX] , exp [MAX] , e b u f f e r [MAX] ;
59
60 // Abre e l a r c h i v o y comprueba que s e pueda a b r i r
61 i f ( ( f p=f o p e n ( a r c h i v o , " a+" ) )==NULL) {
62 p r i n t f ( "ERROR: No s e puede a b r i r e l a r c h i v o \n" ) ;
63 return 1 ;
64 }
65
66 // Se va a l f i n a l d e l a r c h i v o
67 f s e e k ( fp , 0 L ,SEEK_END) ;
68 // S i e l f i n a l d e l a r c h i v o e s 0 , e s t a v a c i o , a s i g n a 1 a l a p o s i c i o n
69 i f ( f t e l l ( f p )==0){
70 pos =1;
71 }
72 else {
73 // s i no , r e g r e s a a l p r i n c i p i o y b u s c a l a p o s i c i o n
74 f s e e k ( fp , 0 L ,SEEK_SET) ;
75 while ( ! f e o f ( f p ) ) {
76 f s c a n f ( fp , "%d %s %f %s \n" ,& tpos , nombre ,& v a l o r , e b u f f e r ) ;
77 // a s i g n a l a p o s i c i o n
78 pos=t p o s +1;
79 }
80 }
81
82 // apunta dor a l f i n a l d e l a r c h i v o
83 f s e e k ( fp , 0 L ,SEEK_END) ;
84
85 // i n t r o d u c i m o s l o s d a t o s

11
86 p r i n t f ( "Nombre : " ) ;
87 s c a n f ( " %s " ,&nombre ) ;
88
89 p r i n t f ( " Valor : " ) ;
90 s c a n f ( "%f " ,& v a l o r ) ;
91
92 p r i n t f ( " Exponente : " ) ;
93 s c a n f ( "%s " ,& exp ) ;
94 const char∗ cexp=(char ∗ ) exp ;
95
96 // C o n v i e r t e l o s e x p o n e n t e s
97 i f ( strcmp ( cexp , " 1 " )==0){ s t r c p y ( exp , " " ) ; }
98 i f ( strcmp ( cexp , " 2 " )==0){ s t r c p y ( exp , " " ) ; }
99 i f ( strcmp ( cexp , " 3 " )==0){ s t r c p y ( exp , " " ) ; }
100 i f ( strcmp ( cexp , " 4 " )==0){ s t r c p y ( exp , " ") ;}
101 i f ( strcmp ( cexp , " 5 " )==0){ s t r c p y ( exp , " ") ;}
102 i f ( strcmp ( cexp , " 6 " )==0){ s t r c p y ( exp , " ") ;}
103 i f ( strcmp ( cexp , " 7 " )==0){ s t r c p y ( exp , " ") ;}
104 i f ( strcmp ( cexp , " 8 " )==0){ s t r c p y ( exp , " ") ;}
105 i f ( strcmp ( cexp , " 9 " )==0){ s t r c p y ( exp , " ") ;}
106 i f ( strcmp ( cexp , " 10 " )==0){ s t r c p y ( exp , " ") ;}
107 i f ( strcmp ( cexp , " 11 " )==0){ s t r c p y ( exp , " ") ;}
108 i f ( strcmp ( cexp , " 12 " )==0){ s t r c p y ( exp , " ") ;}
109 i f ( strcmp ( cexp , " 13 " )==0){ s t r c p y ( exp , " ") ;}
110 i f ( strcmp ( cexp , " 14 " )==0){ s t r c p y ( exp , " ") ;}
111 i f ( strcmp ( cexp , " 15 " )==0){ s t r c p y ( exp , " ") ;}
112 i f ( strcmp ( cexp , " 16 " )==0){ s t r c p y ( exp , " ") ;}
113 i f ( strcmp ( cexp , " 17 " )==0){ s t r c p y ( exp , " ") ;}
114 i f ( strcmp ( cexp , " 18 " )==0){ s t r c p y ( exp , " ") ;}
115 i f ( strcmp ( cexp , " 19 " )==0){ s t r c p y ( exp , " ") ;}
116 i f ( strcmp ( cexp , " 20 " )==0){ s t r c p y ( exp , " ") ;}
117 i f ( strcmp ( cexp , " 21 " )==0){ s t r c p y ( exp , " ") ;}
118 i f ( strcmp ( cexp , " 22 " )==0){ s t r c p y ( exp , " ") ;}
119 i f ( strcmp ( cexp , " 23 " )==0){ s t r c p y ( exp , " ") ;}
120 i f ( strcmp ( cexp , " 24 " )==0){ s t r c p y ( exp , " ") ;}
121 i f ( strcmp ( cexp , " 25 " )==0){ s t r c p y ( exp , " ") ;}
122 i f ( strcmp ( cexp , " 26 " )==0){ s t r c p y ( exp , " ") ;}
123 i f ( strcmp ( cexp , " 27 " )==0){ s t r c p y ( exp , " ") ;}
124 i f ( strcmp ( cexp , " 28 " )==0){ s t r c p y ( exp , " ") ;}
125 i f ( strcmp ( cexp , " 29 " )==0){ s t r c p y ( exp , " ") ;}
126 i f ( strcmp ( cexp , " 30 " )==0){ s t r c p y ( exp , " ") ;}
127 i f ( strcmp ( cexp , " 31 " )==0){ s t r c p y ( exp , " ") ;}
128 i f ( strcmp ( cexp , " 32 " )==0){ s t r c p y ( exp , " ") ;}
129 i f ( strcmp ( cexp , " 33 " )==0){ s t r c p y ( exp , " ") ;}

12
130 i f ( strcmp ( cexp , " 34 " )==0){ s t r c p y ( exp , " ") ;}
131 i f ( strcmp ( cexp , " 35 " )==0){ s t r c p y ( exp , " ") ;}
132 i f ( strcmp ( cexp , " 36 " )==0){ s t r c p y ( exp , " ") ;}
133 i f ( strcmp ( cexp , " 37 " )==0){ s t r c p y ( exp , " ") ;}
134 i f ( strcmp ( cexp , " 38 " )==0){ s t r c p y ( exp , " ") ;}
135 i f ( strcmp ( cexp , " 39 " )==0){ s t r c p y ( exp , " ") ;}
136 i f ( strcmp ( cexp , " 40 " )==0){ s t r c p y ( exp , " ") ;}
137 i f ( strcmp ( cexp , "−1" )==0){ s t r c p y ( exp , " ") ;}
138 i f ( strcmp ( cexp , "−2" )==0){ s t r c p y ( exp , " ") ;}
139 i f ( strcmp ( cexp , "−3" )==0){ s t r c p y ( exp , " ") ;}
140 i f ( strcmp ( cexp , "−4" )==0){ s t r c p y ( exp , " ") ;}
141 i f ( strcmp ( cexp , "−5" )==0){ s t r c p y ( exp , " ") ;}
142 i f ( strcmp ( cexp , "−6" )==0){ s t r c p y ( exp , " ") ;}
143 i f ( strcmp ( cexp , "−7" )==0){ s t r c p y ( exp , " ") ;}
144 i f ( strcmp ( cexp , "−8" )==0){ s t r c p y ( exp , " ") ;}
145 i f ( strcmp ( cexp , "−9" )==0){ s t r c p y ( exp , " ") ;}
146 i f ( strcmp ( cexp , "−10" )==0){ s t r c p y ( exp , " ") ;}
147 i f ( strcmp ( cexp , "−11" )==0){ s t r c p y ( exp , " ") ;}
148 i f ( strcmp ( cexp , "−12" )==0){ s t r c p y ( exp , " ") ;}
149 i f ( strcmp ( cexp , "−13" )==0){ s t r c p y ( exp , " ") ;}
150 i f ( strcmp ( cexp , "−14" )==0){ s t r c p y ( exp , " ") ;}
151 i f ( strcmp ( cexp , "−15" )==0){ s t r c p y ( exp , " ") ;}
152 i f ( strcmp ( cexp , "−16" )==0){ s t r c p y ( exp , " ") ;}
153 i f ( strcmp ( cexp , "−17" )==0){ s t r c p y ( exp , " ") ;}
154 i f ( strcmp ( cexp , "−18" )==0){ s t r c p y ( exp , " ") ;}
155 i f ( strcmp ( cexp , "−19" )==0){ s t r c p y ( exp , " ") ;}
156 i f ( strcmp ( cexp , "−20" )==0){ s t r c p y ( exp , " ") ;}
157
158 const char∗ e=" x10 " ;
159
160 // j u n t a l a s cadenas x10 y e l e x p o n e n t e
161 s t r c a t ( s t r c p y ( e b u f f e r , e ) , cexp ) ;
162
163 // imprime en e l a r c h i v o
164 f p r i n t f ( fp , "%d %s %f %s \n" , pos , nombre , v a l o r , e b u f f e r ) ;
165
166 f c l o s e ( fp ) ;
167 mostrar ( ) ;
168 }
169
170 int b u s c a r ( ) {
171 FILE ∗ f p ;
172 char a r c h i v o [ ] = " f o r m u l a r i o . t x t " ;
173 int tpos , pos , o p c i o n ;

13
174 float valor ;
175 char tnombre [MAX] , nombre [MAX] , exp [MAX] , e b u f f e r [MAX] ;
176
177 // Abre e l a r c h i v o y comprueba que s e pueda a b r i r
178 i f ( ( f p=f o p e n ( a r c h i v o , " a+" ) )==NULL) {
179 p r i n t f ( "ERROR: No s e puede a b r i r e l a r c h i v o \n" ) ;
180 return 1 ;
181 }
182
183 p r i n t f ( " \ nBuscador \n" ) ;
184 p r i n t f ( " 1 . Buscar por nombre\n" ) ;
185 p r i n t f ( " 2 . Buscar por p o s i c i o n \n" ) ;
186 printf (" Opcion ") ;
187 s c a n f ( "%d" ,& o p c i o n ) ;
188
189 i f ( o p c i o n ==1){
190 p r i n t f ( " Constante de : " ) ;
191 s c a n f ( "%s " ,&nombre ) ;
192 p r i n t f ( " \n\tRESULTADOS\n\n" ) ;
193 // Apuntador a l p r i n c i p i o d e l a r c h i v o
194 f s e e k ( fp , 0 L ,SEEK_SET) ;
195 // l e e l o s d a t o s h a s t a e l f i n a l d e l a r c h i v o
196 while ( ! f e o f ( f p ) ) {
197 f s c a n f ( fp , "%d %s %f %s \n" ,& tpos , tnombre ,& v a l o r , e b u f f e r ) ;
198 // s o l o imprime l o s d a t o s con e l mismo nombre
199 i f ( strcmp ( nombre , tnombre )==0) {
200 p r i n t f ( "%d Constante de %s %f %s \n" , tpos , tnombre , v a l o r , e b u f f e r ) ;
201 }
202 }
203 }
204 i f ( o p c i o n ==2){
205 printf (" Posicion : ") ;
206 s c a n f ( "%d" ,& pos ) ;
207 p r i n t f ( " \n\tRESULTADOS\n\n" ) ;
208 // apunta dor a l p r i n c i p i o
209 f s e e k ( fp , 0 L ,SEEK_SET) ;
210
211 while ( ! f e o f ( f p ) ) {
212 f s c a n f ( fp , "%d %s %f %s \n" ,& tpos , tnombre ,& v a l o r , e b u f f e r ) ;
213 // s o l o muestra l o s d a t o s con l a misma p o s i c i o n
214 i f ( t p o s==pos ) {
215 p r i n t f ( "%d Constante de %s %f %s \n" , tpos , tnombre , v a l o r , e b u f f e r ) ;
216 }
217 }

14
218 }
219 f c l o s e ( fp ) ;
220 mostrar ( ) ;
221 }
222
223
224
225 int m o s t r a r ( ) {
226 FILE ∗ f p ;
227 char a r c h i v o [ ] = " f o r m u l a r i o . t x t " ;
228 int tpos , pos , o p c i o n ;
229 float valor ;
230 char tnombre [MAX] , nombre [MAX] , exp [MAX] , e b u f f e r [MAX] ;
231
232 // Abre e l a r c h i v o y comprueba que s e pueda a b r i r
233 i f ( ( f p=f o p e n ( a r c h i v o , " a+" ) )==NULL) {
234 p r i n t f ( "ERROR: No s e puede a b r i r e l a r c h i v o \n" ) ;
235 return 1 ;
236 }
237
238 p r i n t f ( " \ t \nRESULTADOS\n\n" ) ;
239 f s e e k ( fp , 0 L ,SEEK_SET) ;
240 // b u s c a e imprime t o d o
241 while ( ! f e o f ( f p ) ) {
242 f s c a n f ( fp , "%d %s %f %s \n" ,& tpos , tnombre ,& v a l o r , e b u f f e r ) ;
243 p r i n t f ( "%d Constante de %s %.2 f %s \n" , tpos , tnombre , v a l o r , e b u f f e r ) ;
244 }
245 f c l o s e ( fp ) ;
246 }
247
248 int e l i m i n a r ( ) {
249 FILE ∗ fp , ∗ temp ;
250 char a r c h i v o [ ] = " f o r m u l a r i o . t x t " ;
251 char a r c h i v o t [ ] = "temp . t x t " ;
252 int tpos , pos , opcion , a =0;
253 float valor ;
254 char tnombre [MAX] , nombre [MAX] , exp [MAX] , e b u f f e r [MAX] ;
255
256 // Abre e l a r c h i v o y comprueba que s e pueda a b r i r
257 i f ( ( f p=f o p e n ( a r c h i v o , " r+" ) )==NULL) {
258 p r i n t f ( "ERROR: No s e puede a b r i r e l a r c h i v o \n" ) ;
259 return 1 ;
260 }
261

15
262 // a b r e un a r c h i v o t e m p o r a l donde vamos a p a s a r l o s d a t o s
263 i f ( ( temp=f o p e n ( a r c h i v o t , "w+" ) )==NULL) {
264 p r i n t f ( "ERROR: No s e puede a b r i r e l a r c h i v o \n" ) ;
265 return 1 ;
266 }
267
268 p r i n t f ( "CONSTANTES\n\n" ) ;
269 // mueve e l apu ntador f p a l p r i n c i p i o
270 f s e e k ( fp , 0 L ,SEEK_SET) ;
271
272 // Escanea l a s c o n s t a n t e s h a s t a que e n c u e n t r e e l f i n a l d e l a r c h i v o
273 while ( ! f e o f ( f p ) ) {
274 f s c a n f ( fp , "%d %s %f %s \n" ,& tpos , tnombre ,& v a l o r , e b u f f e r ) ;
275 p r i n t f ( "%d Constante de %s %.2 f %s \n" , tpos , tnombre , v a l o r , e b u f f e r ) ;
276 }
277
278 // E l e j i m o s l a p s o c i o n a e l i m i n a r
279 p r i n t f ( " E l i j a l a c o n s t a n t e a e l i m i n a r \n" ) ;
280 p r i n t f ( "Numero : " ) ;
281 s c a n f ( "%d" ,& pos ) ;
282
283 // apunta dor a l i n i c i o d e l a r c h i v o
284 f s e e k ( fp , 0 L ,SEEK_SET) ;
285
286 // Lee l o s d a t o s h a s t a que e n c u e n t r e e l f i n a l
287 while ( ! f e o f ( f p ) ) {
288 f s c a n f ( fp , "%d %s %f %s \n" ,& tpos , tnombre ,& v a l o r , e b u f f e r ) ;
289 //Cuando e n c u e n t r a l a p o s i c i o n , aumenta "a" que e s l a que r e s t a l a
p o s i c i o n para c u b r i r l a e l i m i n a d a
290 i f ( pos==t p o s ) { a =1;}
291 i f ( pos != t p o s ) {
292 // imprime en e l a r c h i v o t e m p o r a l
293 f p r i n t f ( temp , "%d %s %f %s \n" , tpos−a , tnombre , v a l o r , e b u f f e r ) ;
294 }
295 }
296 // c i e r r a e l a r c h i v o de l e c t u r a
297 f c l o s e ( fp ) ;
298
299 // a b r e uno de e s c r i t u r a
300 i f ( ( f p=f o p e n ( a r c h i v o , "w+" ) )==NULL) {
301 p r i n t f ( "ERROR: No s e puede a b r i r e l a r c h i v o \n" ) ;
302 return 1 ;
303 }
304

16
305 f s e e k ( temp , 0 L ,SEEK_SET) ;
306 // e s c r i b i m o s l o d e l a r c h i v o t e m p o r a l en f o r m u l a r i o
307 while ( ! f e o f ( temp ) ) {
308 f s c a n f ( temp , "%d %s %f %s \n" ,& tpos , tnombre ,& v a l o r , e b u f f e r ) ;
309 f p r i n t f ( fp , "%d %s %f %s \n" , tpos , tnombre , v a l o r , e b u f f e r ) ;
310 }
311
312 // cerramos ambos
313 f c l o s e ( temp ) ;
314 f c l o s e ( fp ) ;
315 m o s t r a r ( ) ;
316 }
317
318 int e d i t a r ( ) {
319 FILE ∗ fp , ∗ temp ;
320 char a r c h i v o [ ] = " f o r m u l a r i o . t x t " ;
321 char a r c h i v o t [ ] = "temp . t x t " ;
322 int tpos , pos , opcion , a =0;
323 float valor , tvalor ;
324 char tnombre [MAX] , nombre [MAX] , exp [MAX] , t e b u f f e r [MAX] , e b u f f e r [MAX] ;
325
326 // Abre e l a r c h i v o y comprueba que s e pueda a b r i r
327 i f ( ( f p=f o p e n ( a r c h i v o , " r+" ) )==NULL) {
328 p r i n t f ( "ERROR: No s e puede a b r i r e l a r c h i v o \n" ) ;
329 return 1 ;
330 }
331
332 // a b r e un a r c h i v o t e m p o r a l donde vamos a p a s a r l o s d a t o s
333 i f ( ( temp=f o p e n ( a r c h i v o t , "w+" ) )==NULL) {
334 p r i n t f ( "ERROR: No s e puede a b r i r e l a r c h i v o \n" ) ;
335 return 1 ;
336 }
337
338 p r i n t f ( "CONSTANTES\n\n" ) ;
339 // mueve e l apu ntador a l p r i n c i p i o
340 f s e e k ( fp , 0 L ,SEEK_SET) ;
341
342 // Escanea l a s c o n s t a n t e s h a s t a que e n c u e n t r e e l f i n a l d e l a r c h i v o
343 while ( ! f e o f ( f p ) ) {
344 f s c a n f ( fp , "%d %s %f %s \n" ,& tpos , tnombre ,& t v a l o r , t e b u f f e r ) ;
345 p r i n t f ( "%d Constante de %s %.2 f %s \n" , tpos , tnombre , t v a l o r , t e b u f f e r ) ;
346 }
347
348 // E l e j i m o s l a p s o c i o n a e d i t a r

17
349 p r i n t f ( " E l i j a l a c o n s t a n t e a e d i t a r \n" ) ;
350 p r i n t f ( "Numero : " ) ;
351 s c a n f ( "%d" ,& pos ) ;
352
353 p r i n t f ( " ¿Que q u i e r e s e d i t a r ?\n" ) ;
354 p r i n t f ( " 1 . Nombre\n" ) ;
355 p r i n t f ( " 2 . Valor \n" ) ;
356 printf (" Opcion " ) ;
357 s c a n f ( "%d" ,& o p c i o n ) ;
358
359 i f ( o p c i o n ==1) {
360 p r i n t f ( "Nuevo nombre : " ) ;
361 s c a n f ( "%s " ,&nombre ) ;
362 }
363
364 i f ( o p c i o n ==2) {
365 p r i n t f ( " Valor : " ) ;
366 s c a n f ( "%f " ,& v a l o r ) ;
367
368 p r i n t f ( " Exponente : " ) ;
369 s c a n f ( "%s " ,& exp ) ;
370 const char∗ cexp=(char ∗ ) exp ;
371
372 // C o n v i e r t e l o s e x p o n e n t e s
373 i f ( strcmp ( cexp , " 1 " )==0){ s t r c p y ( exp , "^1" ) ; }
374 i f ( strcmp ( cexp , " 2 " )==0){ s t r c p y ( exp , "^2" ) ; }
375 i f ( strcmp ( cexp , " 3 " )==0){ s t r c p y ( exp , "^3" ) ; }
376 i f ( strcmp ( cexp , " 4 " )==0){ s t r c p y ( exp , " ") ;}
377 i f ( strcmp ( cexp , " 5 " )==0){ s t r c p y ( exp , " ") ;}
378 i f ( strcmp ( cexp , " 6 " )==0){ s t r c p y ( exp , " ") ;}
379 i f ( strcmp ( cexp , " 7 " )==0){ s t r c p y ( exp , " ") ;}
380 i f ( strcmp ( cexp , " 8 " )==0){ s t r c p y ( exp , " ") ;}
381 i f ( strcmp ( cexp , " 9 " )==0){ s t r c p y ( exp , " ") ;}
382 i f ( strcmp ( cexp , " 10 " )==0){ s t r c p y ( exp , " ") ;}
383 i f ( strcmp ( cexp , " 11 " )==0){ s t r c p y ( exp , " ") ;}
384 i f ( strcmp ( cexp , " 12 " )==0){ s t r c p y ( exp , " ") ;}
385 i f ( strcmp ( cexp , " 13 " )==0){ s t r c p y ( exp , " ") ;}
386 i f ( strcmp ( cexp , " 14 " )==0){ s t r c p y ( exp , " ") ;}
387 i f ( strcmp ( cexp , " 15 " )==0){ s t r c p y ( exp , " ") ;}
388 i f ( strcmp ( cexp , " 16 " )==0){ s t r c p y ( exp , " ") ;}
389 i f ( strcmp ( cexp , " 17 " )==0){ s t r c p y ( exp , " ") ;}
390 i f ( strcmp ( cexp , " 18 " )==0){ s t r c p y ( exp , " ") ;}
391 i f ( strcmp ( cexp , " 19 " )==0){ s t r c p y ( exp , " ") ;}
392 i f ( strcmp ( cexp , " 20 " )==0){ s t r c p y ( exp , " ") ;}

18
393 i f ( strcmp ( cexp , " 21 " )==0){ s t r c p y ( exp , " ") ;}
394 i f ( strcmp ( cexp , " 22 " )==0){ s t r c p y ( exp , " ") ;}
395 i f ( strcmp ( cexp , " 23 " )==0){ s t r c p y ( exp , " ") ;}
396 i f ( strcmp ( cexp , " 24 " )==0){ s t r c p y ( exp , " ") ;}
397 i f ( strcmp ( cexp , " 25 " )==0){ s t r c p y ( exp , " ") ;}
398 i f ( strcmp ( cexp , " 26 " )==0){ s t r c p y ( exp , " ") ;}
399 i f ( strcmp ( cexp , " 27 " )==0){ s t r c p y ( exp , " ") ;}
400 i f ( strcmp ( cexp , " 28 " )==0){ s t r c p y ( exp , " ") ;}
401 i f ( strcmp ( cexp , " 29 " )==0){ s t r c p y ( exp , " ") ;}
402 i f ( strcmp ( cexp , " 30 " )==0){ s t r c p y ( exp , " ") ;}
403 i f ( strcmp ( cexp , " 31 " )==0){ s t r c p y ( exp , " ") ;}
404 i f ( strcmp ( cexp , " 32 " )==0){ s t r c p y ( exp , " ") ;}
405 i f ( strcmp ( cexp , " 33 " )==0){ s t r c p y ( exp , " ") ;}
406 i f ( strcmp ( cexp , " 34 " )==0){ s t r c p y ( exp , " ") ;}
407 i f ( strcmp ( cexp , " 35 " )==0){ s t r c p y ( exp , " ") ;}
408 i f ( strcmp ( cexp , " 36 " )==0){ s t r c p y ( exp , " ") ;}
409 i f ( strcmp ( cexp , " 37 " )==0){ s t r c p y ( exp , " ") ;}
410 i f ( strcmp ( cexp , " 38 " )==0){ s t r c p y ( exp , " ") ;}
411 i f ( strcmp ( cexp , " 39 " )==0){ s t r c p y ( exp , " ") ;}
412 i f ( strcmp ( cexp , " 40 " )==0){ s t r c p y ( exp , " ") ;}
413 i f ( strcmp ( cexp , "−1" )==0){ s t r c p y ( exp , " ") ;}
414 i f ( strcmp ( cexp , "−2" )==0){ s t r c p y ( exp , " ") ;}
415 i f ( strcmp ( cexp , "−3" )==0){ s t r c p y ( exp , " ") ;}
416 i f ( strcmp ( cexp , "−4" )==0){ s t r c p y ( exp , " ") ;}
417 i f ( strcmp ( cexp , "−5" )==0){ s t r c p y ( exp , " ") ;}
418 i f ( strcmp ( cexp , "−6" )==0){ s t r c p y ( exp , " ") ;}
419 i f ( strcmp ( cexp , "−7" )==0){ s t r c p y ( exp , " ") ;}
420 i f ( strcmp ( cexp , "−8" )==0){ s t r c p y ( exp , " ") ;}
421 i f ( strcmp ( cexp , "−9" )==0){ s t r c p y ( exp , " ") ;}
422 i f ( strcmp ( cexp , "−10" )==0){ s t r c p y ( exp , " ") ;}
423 i f ( strcmp ( cexp , "−11" )==0){ s t r c p y ( exp , " ") ;}
424 i f ( strcmp ( cexp , "−12" )==0){ s t r c p y ( exp , " ") ;}
425 i f ( strcmp ( cexp , "−13" )==0){ s t r c p y ( exp , " ") ;}
426 i f ( strcmp ( cexp , "−14" )==0){ s t r c p y ( exp , " ") ;}
427 i f ( strcmp ( cexp , "−15" )==0){ s t r c p y ( exp , " ") ;}
428 i f ( strcmp ( cexp , "−16" )==0){ s t r c p y ( exp , " ") ;}
429 i f ( strcmp ( cexp , "−17" )==0){ s t r c p y ( exp , " ") ;}
430 i f ( strcmp ( cexp , "−18" )==0){ s t r c p y ( exp , " ") ;}
431 i f ( strcmp ( cexp , "−19" )==0){ s t r c p y ( exp , " ") ;}
432 i f ( strcmp ( cexp , "−20" )==0){ s t r c p y ( exp , " ") ;}
433
434 const char∗ e=" x10 " ;
435
436 // j u n t a l a s cadenas x10 y e l e x p o n e n t e

19
437 s t r c a t ( s t r c p y ( e b u f f e r , e ) , cexp ) ;
438 }
439
440 // apunta dor a l i n i c i o
441 f s e e k ( fp , 0 L ,SEEK_SET) ;
442
443 // Lee l o s d a t o s h a s t a que e n c u e n t r e e l f i n a l
444 while ( ! f e o f ( f p ) ) {
445 f s c a n f ( fp , "%d %s %f %s \n" ,& tpos , tnombre ,& t v a l o r , t e b u f f e r ) ;
446 i f ( pos != t p o s ) {
447 // imprime en e l a r c h i v o t e m p o r a l s i n cambiar nada
448 f p r i n t f ( temp , "%d %s %f %s \n" , tpos−a , tnombre , t v a l o r , t e b u f f e r ) ;
449 }
450 else {
451 i f ( o p c i o n ==1){
452 // s i e n c u e n t r a l a p o s o c i o n y e l e j i s t e e l nombre copiamos t o d o i g u a l
menos e l nombre
453 f p r i n t f ( temp , "%d %s %f %s \n" , tpos−a , nombre , t v a l o r , t e b u f f e r ) ;
454 }
455 i f ( o p c i o n ==2){
456 // c o p i a t o d o i g u a l menos e l v a l o r
457 f p r i n t f ( temp , "%d %s %f %s \n" , tpos−a , tnombre , v a l o r , e b u f f e r ) ;
458 }
459 }
460 }
461 // c i e r r a e l a r c h i v o de l e c t u r a
462 f c l o s e ( fp ) ;
463
464 // a b r e uno de e s c r i t u r a
465 i f ( ( f p=f o p e n ( a r c h i v o , "w+" ) )==NULL) {
466 p r i n t f ( "ERROR: No s e puede a b r i r e l a r c h i v o \n" ) ;
467 return 1 ;
468 }
469
470 f s e e k ( temp , 0 L ,SEEK_SET) ;
471 // e s c r i b i m o s l o d e l a r c h i v o t e m p o r a l en f o r m u l a r i o
472 while ( ! f e o f ( temp ) ) {
473 f s c a n f ( temp , "%d %s %f %s \n" ,& tpos , tnombre ,& v a l o r , e b u f f e r ) ;
474 f p r i n t f ( fp , "%d %s %f %s \n" , tpos , tnombre , v a l o r , e b u f f e r ) ;
475 }
476
477 // cerramos ambos
478 f c l o s e ( temp ) ;
479 f c l o s e ( fp ) ;

20
480 mostrar ( ) ;
481 }

1.7. Captura de ejecución


1.7.1. Buscar

Figura 5: Ejecución de la opción 1.Buscar.

21
1.7.2. Editar

Figura 6: Ejecución de la opción 2.Editar.

22
1.7.3. Agregar

Figura 7: Ejecución de la opción 3.Agregar.

23
1.7.4. Eliminar

Figura 8: Ejecución de la opción 4.Eliminar.

24
1.7.5. Salir

Figura 9: Ejecución de la opción 5.Salir.

La estructura principal del proyecto se basó en lo revisado en clases, especialmente en la


unidad 6: Unidad 6. Apuntadores y archivos, [4]

25
2. RECURSIVIDAD: SERIE DE TAYLOR
2.1. Marco teórico
2.1.1. Planteamiento del problema

La serie de Taylor es una herramienta matemática que tiende a manifestarse y ser útil
cuando nuestro problema involucra conocer el valor de una función alrededor de un pun-
to específico. Usar la serie de Taylor resulta práctico cuando se desea resolver problemas
de índole físico, tales como aproximaciones en el oscilador armónico, densidad de cuerpo
negro, cálculo de propiedades ópticas, etcétera; en electrónica analógica al obtener aproxi-
maciones a pequeña señal en ciertos circuitos; en cálculo para eliminar indeterminaciones
en límites, así como en desigualdades, estimación de integrales y sus residuos, determina-
ción de convergencia, e incluso en el ámbito de finanzas y economía, donde el precio es
expresado como una función no lineal.
La serie de Taylor lleva este nombre en honor al matemático ingles Brook Taylor (1685-
1731) y la serie de Maclaurin se llama así para recordar al matemático escocés Colin
Maclaurin (1698-1746) a pesar del hecho de que la serie de Maclaurin es realmente un caso
especial de la serie de Taylor. [2]
Sea f (x) una función cuyas derivadas son continuas y están definidas en el intervalo de
expansión alrededor de un punto cualquiera x0 , entonces la función tiene una expansión
como serie de Taylor:


X f n (x0 )
f (x) = (x − x0 )n (3)
n=o
n!

f (x0 ) f ′′ (x0 ) f ′′′ (x0 )
f (x) = f (x0 ) + (x − x0 ) + (x − x0 )2 + (x − x0 )3 + ... (4)
1! 2! 3!
A la serie alrededor de x0 = 0 se le denomina también serie de Maclaurin.
Como estudiantes de física, constantemente la Serie de Taylor de una función trigonomé-
trica resulta de utilidad para el cálculo de aproximaciones cerca del origen o a ángulos
pequeños, de esta forma, y siguiendo las ecuaciones (3) y (4), podemos definir las series
de Mclaurin de las siguientes funciones:


x3 x5 x7 X x2n+1
sen(x) = x − + − ± ... = f (x) = (−1)n (5)
3! 5! 7! n=o
2n + 1!

26

x2 x 4 x6 X x2n
cos(x) = 1 − + − ± ... = f (x) = (−1)n (6)
2! 4! 6! n=o
2n!

En problemas específicos es común que el usuario requiera conocer la aproximación de


series trigonométricas comunes como seno y coseno. Además, como se observa, las series
de Taylor se encuentran definidas por una serie de potencias y factoriales, siguiendo un
patrón o sumatoria mostrada en las ecuaciones (5) y (6), de forma que si el usuario requiere
utilizar esta herramienta, este podrá fácilmente calcularla a través de un programa que
emplee como principal instrumento la recursividad para hallar la expansión de las funciones
previamente mostradas.

2.1.2. Ejemplo

El siguiente ejemplo muestra la utilidad de las series de Taylor de las funciones seno y
coseno en la obtención de series para otras funciones.
1. Calcule los primeros tres términos no cero de la serie de Maclaurin para tan(x), [3].
Solución. Usando las expresiones (5) y (6),

3 5 7
sen(x) x − x3! + x5! − x7! ± ...
tan(x) = = 2 4 6 (7)
cos(x) 1 − x2! + x4! − x6! ± ...
Usamos un procedimiento como el de la división larga:

Por consiguiente, la serie de Taylor para la tangente es

1 2
tan(x) = x + x3 + x5 + ... (8)
3 15

27
2.2. Algoritmo en lenguaje natural
Entrada: o de tipo entero que permita elegir una opción
Proceso: Si la opción es 1 se calcula la serie de T del seno. Si es 2 se calcula la serie
de T del coseno
Salida: Resultado de la serie elegida.

2.3. Diagrama de flujo

Figura 10: Diagrama de flujo - Recursividad

28
2.4. Pseudocódigo
1 Inicio
2 d e c l a r a r r e s =0 como f l o t a n t e ,
3 op=0, n=0, x=0 como e n t e r o s ,
4 i m p r i m i r menú ,
5 p e d i r op ,
6 s i op=1,
7 i m p r i m i r " s e r i e de t a y l o r de Sen " ,
8 pedir n , x ,
9 i m p r i m i r r e s ( s e r i e de t a y l o r h a s t a e l n−t é rmino
10 e v a l u a d o en x )
11 fin si
12 s i op=2
13 i m p r i m i r " s e r i e de t a y l o r de Cos"
14 pedir n , x ,
15 i m p r i m i r r e s ( s e r i e de t a y l o r h a s t a e l n−t é rmino
16 e v a l u a d o en x )
17 fin si
18 s i no
19 i m r p r i m i r " Opcion i n c o r e c t a " ,
20 fin si
21 Fin

29
2.5. Prueba de escritorio
2.5.1. Serie de Taylor de seno

La serie de Taylor para el seno es:

x3 x5 x7
sin x = x − + − ± ...
3! 5! 7!
Para esta prueba el n-ésimo término y se calcula la serie alrededor de 0.

n=6

Entrada Salida
n Ángulo Resultado

6 0 0,00
22,5◦ 0,38

45 0,70
67,5◦ 0,92
90◦ 1,00

112,5 0,92

Tabla 5: Prueba de escritorio para la serie de seno.

2.5.2. Serie de Taylor de coseno

La serie de Taylor para el coseno es:

x2 x 4 x6
cos x = 1 − + − ± ...
2! 4! 6!
Para esta prueba el n-ésimo término y se calcula la serie alrededor de 0.

n=6

30
Entrada Salida
n Ángulo Resultado
6 0◦ 1,00

22,5 0,92
45◦ 0,70

67,5 0,38
90◦ 0,00

112,5 −0,38

Tabla 6: Prueba de escritorio para la serie de coseno.

2.6. Código
1 #include <math . h>
2 #include <s t d i o . h>
3 #include < s t d l i b . h>
4 #define PI 3 . 1 4 1 5 9
5
6
7 int s e n o ( void ) ;
8 long f a c t ( long ) ;
9 int c o s e n o ( void ) ;
10
11 int main ( ) {
12 int op = 0 ;
13 p r i n t f ( "\ t \ t \ t ∗SERIES DE TAYLOR∗\n\n" ) ;
14 p r i n t f ( "\ t \ t \ t MENÚ\n\n" ) ;
15 p r i n t f ( " \ t S e l e c c i o n e l a f u n c i ón para v e r su s e r i e de Taylor \n\n" ) ;
16 p r i n t f ( " \ t \ t \ t ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗\ n" ) ;
17 p r i n t f ( "\ t \ t \ t ∗ ∗\n" ) ;
18 p r i n t f ( " \ t \ t \ t ∗ Seno . . . . . . . . . . . . . . 1 ∗\n" ) ;
19 p r i n t f ( " \ t \ t \ t ∗ Coseno . . . . . . . . . . . . 2 ∗\n" ) ;
20 p r i n t f ( "\ t \ t \ t ∗ S a l i r . . . . . . . . . . . . . 3 ∗\n" ) ;
21 p r i n t f ( "\ t \ t \ t ∗ ∗\n" ) ;
22 p r i n t f ( " \ t \ t \ t ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗\ n\n" ) ;
23 p r i n t f ( " \ tOpci ón s e l e c c i o n a d a : " ) ;
24 s c a n f ( "%d" , &op ) ;
25 switch ( op ) {
26 case 1 :
27 seno ( ) ;
28 break ;
29 case 2 :

31
30 coseno ( ) ;
31 break ;
32 case 3 :
33 printf (" Saliendo . . . ") ;
34 return 0 ;
35 default :
36 p r i n t f ( " Esta no e s una o p c i ón d e l menú , i n t e n t a l o nuevamente . \ n\n" ) ;
37 return main ( ) ;
38 break ;
39 }
40 }
41
42 int s e n o ( void ) { // S e r i e impar
43 int t = 0 , i = 0 , j = 0 ;
44 f l o a t s e n =0,x=0;
45 p r i n t f ( " \ t \ t \ t \ t SENO\n\n" ) ;
46 p r i n t f ( " s e n ( x ) = x − x / 3 ! + x / 5 ! − x / 7 ! . . . \ n" ) ;
47 p r i n t f ( " \ t I n g r e s a h a s t a que t é rmino q u i e r e s l a s e r i e : " ) ;
48 s c a n f ( "%d" , &t ) ;
49 p r i n t f ( "x \ t \ t s e n x\n" ) ;
50 f o r ( i = 0 ; i <= 8 ; i ++) {
51 x=( i ∗ PI ) / 8 ;
52 f o r ( j =0; j<=t ; j ++) { // C a l c u l a l a s e r i e
53 s e n=s e n +(pow( −1 , j ) ∗pow ( x , ( 2 ∗ j ) +1) ) / ( f a c t ( 2 ∗ j +1) ) ;
54 } // Imprime l a s e r i e
55 p r i n t f ( "%d∗ /8\ t %l f \n" , i , s e n ) ;
56 s e n =0;
57 }
58 p r i n t f ( " \ n I n g r e s e un a n g u l o : " ) ;
59 s c a n f ( "%f " ,&x ) ;
60 f o r ( j =0; j<= t ; j ++) { // C a l c u l a l a s e r i e
61 s e n=s e n +(pow( −1 , j ) ∗pow ( x , 2 ∗ j +1) ) / ( f a c t ( 2 ∗ j +1) ) ;
62 }
63 p r i n t f ( " Valor de tu a n g u l o con s e r i e s de Taylor : %f " , s e n ) ;
64 }
65
66 long f a c t ( long t ) { // R e c u r s i v i d a d
67 i f ( t <= 1 ) {
68 return 1 ;
69 } else {
70 return ( t ∗ f a c t ( t − 1 ) ) ;
71 }
72 }
73

32
74 int c o s e n o ( void ) { // S e r i e par
75 int t = 0 , i = 0 , j ;
76 f l o a t c o s =0,x ;
77 p r i n t f ( " \ t \ t \ t \ t COSENO\n\n" ) ;
78 p r i n t f ( " c o s ( x )= 1 − x / 2 ! + x / 4 ! − x / 6 ! . . . \ n" ) ;
79 p r i n t f ( " \ t I n g r e s a h a s t a que t é rmino q u i e r e s l a s e r i e : " ) ;
80 s c a n f ( "%d" , &t ) ;
81 p r i n t f ( "x \ t \ t c o s x\n" ) ;
82 f o r ( i = 0 ; i <= 8 ; i ++) {
83 x=( i ∗ PI ) / 8 ;
84 f o r ( j =0; j<= t ; j ++) { // C a l c u l a l a s e r i e
85 c o s=c o s +(pow( −1 , j ) ∗pow ( x , 2 ∗ j ) ) / ( f a c t ( 2 ∗ j ) ) ;
86 } // Imprime l a s e r i e
87 p r i n t f ( "%d∗ /8\ t %l f \n" , i , c o s ) ;
88 c o s =0;
89 }
90 p r i n t f ( " \ n I n g r e s e un a n g u l o : " ) ;
91 s c a n f ( "%f " ,&x ) ;
92 f o r ( j =0; j<= t ; j ++) { // C a l c u l a l a s e r i e
93 c o s=c o s +(pow( −1 , j ) ∗pow ( x , 2 ∗ j ) ) / ( f a c t ( 2 ∗ j ) ) ;
94 }
95 p r i n t f ( " Valor de tu a n g u l o con s e r i e s de Taylor : %f " , c o s ) ;
96 }

33
2.7. Captura de ejecución
2.7.1. Serie de Taylor de seno

Figura 11: Ejecución de la opción 1.Serie de Taylor de seno.

34
2.7.2. Serie de Taylor de coseno

Figura 12: Ejecución de la opción 2. Serie de Taylor de coseno.

35
2.7.3. Salir

Figura 13: Ejecución de la opción 3.Salir.

La estructura esencial del proyecto se basó en lo revisado en clases, especialmente en la


unidad 5: Unidad 5. Funciones, [5].

36
2.8. Bibliografía
[1] H. Galbarro. “Constantes Físicas”. ingemecánica. https://ingemecanica.com/tutoriales/
constantes_fisicas.html#:~:text=Se%20entiende%20por%20constante%20fÃŋsica,Sistema%
20Internacional%20de%20Unidades%20(S.I.)(accedidoel11denoviembrede2022).
[2] G. Westreicherz.“Serie de Taylor | Economipedia”. Economipedia. https://economipedia.
com/definiciones/serie-de-taylor.html (accedido el 10 de noviembre de 2022).
[3] J. Stewart, Cálculo de una variable : trascendentes tempranas., 7a ed. Mexico: Cengage
Learning, 2012.
[4] K. I. López De La Cruz, “Apuntadores y archivos”, octubre de 2021, Unidad 6. Accedido
el 15 de noviembre de 2022. [En línea]. Disponible: https://drive.google.com/drive/
folders/1aG17y_uDbtYoEVIbXMTdoyNv3BAnapFf
[5] K. I. López De La Cruz, “Funciones”, octubre de 2021, Unidad 6. Accedido el 15 de
noviembre de 2022. [En línea]. Disponible: https://drive.google.com/drive/folders/
1aG17y_uDbtYoEVIbXMTdoyNv3BAnapFf

37

También podría gustarte