Logo Studenta

PRINCIPIOS BÁSICOS DE LA PROGRAMACIÓN EN C

¡Este material tiene más páginas!

Vista previa del material en texto

PRINCIPIOS BÁSICOS DE LA PROGRAMACIÓN EN C.
1.1.-Lenguajes de Programación.
Lenguaje de programación.- es un código formado por símbolos y palabras reservadas que siguen un orden conocido como sintaxis ,(que es la manera correcta de escribir dicho código, con reglas gramaticales), con el cual se instruye a una computadora para realizar tareas especificas.
Las computadoras realizan acciones que el usuario solicita, sin embargo el lenguaje que emplea el usuario no es el mismo que el de la computadora ya que esta trabaja por medio de combinaciones de 0 y 1, que se conoce como código de la máquina ó código binario, de tal manera que los lenguajes de programación nos sirven para enlazar el lenguaje del programador con el lenguaje de la máquina. Los lenguajes de programación se clasifican en: Lenguajes de alto nivel y lenguajes de bajo nivel.
1.1.1.-Lenguajes de bajo nivel.
En esta categoría están los conocidos como lenguaje máquina y lenguaje ensamblador, están relacionados directamente con el diseño y la estructura del hardware, dependen totalmente de la máquina, es decir que el programa que se realiza con este tipo de lenguajes no se pueden migrar o utilizar en otras maquinas. 
1.1.2.-Lenguajes de alto nivel.
Son lenguajes que están estructurados de manera tal que le facilitan al usuario la manipulación de datos, generalmente son empleados para la resolución de problemas matemáticos de alto grado de dificultad mediante EDD's (Estructuras Dinámicas de Datos), tienen la ventaja de ser independientes de la arquitectura de la máquina, con lo que un programa desarrollado en un tipo de máquina puede migrar otra sin problema alguno, por otro lado el no es necesario conocer la operación de la máquina, algunos lenguajes de alto nivel empleados en la ingeniería son: BASIC, FORTRAN, PASCLA, COBOL, C, TURBOC, GWBASIC, LOGO.
1.2.-Breve Historia del lenguaje c.
La historia de C parte de un lenguaje anterior, el lenguaje B, escrito por Ken Thompson en 1970 con el objetivo de recodificar el sistema operativo UNIX, que hasta el momento se había programado en ensamblador. La pega del ensamblador era que lo ligaba a una serie de máquinas concretas, por lo que conseguir un lenguaje abstraído de cada máquina conseguiría una portabilidad del sistema muchísimo mayor. A su vez B fue inspirado en el BCPL de Martin Richard, diseñado tres años antes.
En 1972 es Dennis Ritchie (de los Laboratorios Bell de AT&T) quien diseña finalmente C a partir del B de Thompson, aportando un diseño de tipos y estructuras de datos que consiguen una claridad y eficacia en el lenguaje muy superior. Es un lenguaje que permite realizar una programación estructurada economizando las expresiones, con abundancia de operadores y tipos de datos (aunque los básicos sean pocos), codificando en alto y bajo nivel simultáneamente, reemplazando ventajosamente la programación en ensamblador y permitiendo una utilización natural de las funciones primitivas del sistema. Además, no está orientado a ningún área en especial y sobre todo consigue un código objeto altamente optimizado que repercute en que los programas son muy rápidos.
Durante muchos años no existen reglas estándar para el lenguaje, pero en 1983 se decide formar un comité con el objetivo de crear el estándar ANSI (Instituto Nacional Americano de Estándares). El proceso dura seis años y a principios de los 90 el estándar es reconocido por la ISO (Organización Internacional de Estándares) y comienza a comercializarse con el nombre ANSI C.
/* "Hola mundo" escrito en C */  
#include <stdio.h>
 void main()
 {
 printf( "Hola mundo" );
 }
Paralelamente, en 1980 surge C++ de la mano de Bjarne Stroustrup (también de Laboratorios Bell de AT&T). Diseña este lenguaje con el objetivo de añadir a C nuevas características: clases y funciones virtuales (de SIMULA67), tipos genéricos y expresiones (de ADA), la posibilidad de declarar variables en cualquier punto del programa (de ALGOL68), y sobre todo, un auténtico motor de objetos con herencia múltiple que permite combinar la programación imperativa de C con la programación orientada a objetos. Estas nuevas características mantienen siempre la esencia del lenguaje C: otorgan el control absoluto de la aplicación al programador, consiguiendo una velocidad muy superior a la ofrecida por otros lenguajes.El siguiente hecho fundamental en la evolución de C++ es sin duda la incorporación de la librería STL años más tarde, obra de Alexander Stepanov y Adrew Koening. Esta librería de clases con contenedores y algoritmos genéricos proporciona a C++ una potencia única entre los lenguajes de alto nivel.
Debido al éxito del lenguaje, en 1990 se reúnen las organizaciones ANSI e ISO para definir un estándar que formalice el lenguaje. El proceso culmina en 1998 con la aprobación del ANSI C++.
/* "Hola mundo" escrito en C++ */  
#include <iostream>
 void main()
 {
 std::cout << "Hola mundo";
 }
La última variante que ha surgido de C es el moderno C#. En el año 2000, Microsoft presenta su plataforma .NET junto con un nuevo lenguaje, C# (diseñado por Anders Hejlsberg), que servirá de lenguaje principal de la plataforma. C# es un híbrido de C++ y Java que fusiona, principalmente, la capacidad de combinar operadores propia del primero (no incorpora la herencia múltiple) con la plena orientación a objetos del segundo. La orientación a objetos es tal que el propio programa está encapsulado en una clase.Actualmente C# se encuentra entre los 10 lenguajes más utilizados. A pesar de su corta historia, ha recibido la aprobación del estándar de dos organizaciones: en el 2001 se aprueba el ECMA y en el 2003 el ISO.
/* "Hola mundo" escrito en C# */  
class HolaMundo
 {
 static void Main()
 {
 System.Console.Write( "Hola mundo" );
 }
 }
En nuestro caso específico trabajaremos con DEV C++, lo que por razones obvias nos presentara algunas diferencias en la sintaxis de programación normalizada por ANSI, sin embargo la filosofía y los algoritmos que se emplearan no cambian el objetivo del curso.
1.3.-Procedimiento general para elaborar un programa.
Cuando realizamos una tarea cualquiera que esta sea estructuramos en forma consciente o inconsciente una serie de pasos que seguimos en forma sistemática, un ejemplo es al preparar los alimentos, al practicar algún deporte, o al buscar la resolución de un problema técnico o matemático, en el último caso requerimos emplear alguna herramienta como una calculadora o una computadora, si tomamos la segunda opción estaremos obligados a estructurar la solución del problema a través de un programa de computacional, que será desarrollado siguiendo la secuencia que a continuación enumeramos:
1.-Planteamiento del problema.
2.-Definición de un algoritmo.
3.-Codificación del algoritmo en un lenguaje de programación.
El planteamiento del problema.-consiste en establecer una problemática a resolver, definiendo todos los elementos que intervienen en el mismo. 
Algoritmo.-Consiste en determinar la secuencia los de pasos, procedimientos o acciones en forma ordenada que nos llevaran a la solución de un problema dado, el algoritmo deberá estar definido en forma lógica y respetando las condiciones del problema.
Diagrama de flujo.-Es la esquematización gráfica de un algoritmo, a través de una serie de símbolos estandarizados que tienen como característica principal la equivalencia con una sintaxis específica del lenguaje en el que se pretende analizar un proceso, es decir un diagrama de flujo puede corresponder a un proceso para resolver un problema matemático con la computadora, un proceso de producción o el análisis de tiempos y movimientos en una compañía, etc.
Como mencionamos anteriormente los diagramas de flujo cuentan con símbolos estandarizados con funciones definidas como podemos ver a continuación: 
Inicio
Ingreso de datos.
Proceso –suma, resta, división, etc
Decisión.
Selección múltiple.
Impresión.
1.4.-LAS BIBLIOTECAS.
Las bibliotecas son un conjunto de subprogramas que se enlazan e interactúan a lo largo de un programa,debido a que en la programación estas bibliotecas siempre se llaman al inicio se le da el nombre muy común de cabeceras, por ejemplo en lenguaje c tenemos la librería estándar (stdio.h), la de funciones matemáticas (math.h), la de consola de entradas salidas (conio.h) etc.
Ahora veamos el primer programa y analicémoslo por partes 
Ejemplo 1.1.-Primer programa imprimir un letrero.
#include<stdio.h> /* llamada de la librería estándar de entradas y salida */
#include<conio.h> /* llamada de la librería de consola de entradas y salidas */
int main( ) /* llamada de la función main, esta es de suma importancia ya 
 que es la que se encarga de hacer interactuar a las funciones de 
 las librerías dentro del programa, el primer */
{ /*Inicio del programa principal*/
printf (“BIENVENIDOS AL CECYT # 9 “); /*Función printf imprime el letrero 
 contenido entre las comillas, se inicia al 
 abrir el paréntesis y se concluye 
 cerrando con punto y coma */
getch(); /*mantiene la impresión hasta que el usuario presiona la tecla enter*/
return Ø; /*Regresa el valor de Ø a la función principal – por el momento nos 
 conformaremos con esto, ya que en el tema de funciones se 
 explicara el cómo y por qué*/
}
1.4.1.-El comando printf y el uso de saltos de renglón (\n) y tabulador (\t)
Note que a la derecha de cada instrucción hay un comentario que inicia con /* y concluye con */, estos comentarios no afectan en ningún sentido el programa, y este los reconoce como comentarios para que el usuario sepa que acción se lleva a cabo en cada parte del programa.
El comando getch(); están contenidos en la librería conio.h y las funciones printf que se aplica en este programa y scanf que veremos más adelante están contenidos en la librería stdio.h.
Por otro lado la función printf además de imprimir letreros los puede desplazar dependiendo de la instrucción que se entre ellas tenemos
\n imprime el letrero saltando una línea
\t imprime el letrero tabulando
\v imprime el letrero saltando líneas verticalmente
\h imprime el letrero saltando líneas horizontalmente.
Ejemplo 1.2.-Aplicación de saltos de página y tabuladores.
 #include<stdio.h>
#include<conio.h>
int main( )
{
printf(“\n INSTITUTO POLITECNICO NACIONAL\n\n\t\t CECYT #9JUAN DE DIOS BATIZ \n\n\t\t PROGRAMACION EN LENGUAJE C “);
getch();
return Ø; /* En los temas que se verán se empleara el símbolo Ø para evitar 
 confusiones entre la letra o y el número cero (Ø)*/
}
1.4.2.-Uso de variables, constantes y comando scanf.
Primero que nada definamos que son las constantes y las variables.
Constantes.-Son datos que no cambian su valor durante la ejecución de un problema.
Las constantes se dividen en enteras, reales y de tipo carácter, las cuales se tienen una aplicación específica y su uso depende de las características del problema a resolver y de la estructura establecida por el programador.
Variables.-Son objetos que cambian su valor durante el proceso .
1.4.2.1.-LOS IDENTIFICADORES.
Al usar variables y constantes en un proceso, es necesario que estas sean diferenciadas, para tal fin se emplean nombres conocidos como identificadores, los cuales pueden ser las letras del abecedario (minúsculas o mayúsculas), combinaciones de estas ó combinaciones de letras y números, pero siempre tomando en cuenta que se deben nombrar iniciando con una letra, sin embargo en lenguaje c, así como en otros lenguajes de programación, existe un conjunto de palabras que tienen funciones específicas, y forman parte de la estructura del mismo, por lo tanto no se pueden emplear como identificadores, estas palabras reciben el nombre de palabras reservadas.
A continuación se muestra una tabla donde aparecen estas, es importante memorizarlas, ya que si por error son empleadas como identificadores nuestro programa presentara errores de sintaxis, con lo que será imposible compilar y ejecutar el programa (correrlo) aunque la estructura del mismo sea la adecuada.
TABLA 1.1.- PALABRAS RESERVADAS.
	Auto
	Extern
	Sizeof
	Doublé
	Return
	Volatile
	Continue
	Int
	Break
	Flota
	Static
	Else
	Short
	While
	Default
	Long
	Case
	For
	Struct
	Enum
	signed
	Void
	Do
	register
	Char
	Goto
	Switch
	Const
	If
	Typedef
	Unión
	Unsigned
1.4.2.2.-Tipos fundamentales DE DATOS.
Un dato es información que se suministra por medio del teclado a la computadora, misma que almacena y procesa en forma legible, los datos pueden ser de tipo numérico o alfanumérico.
Los tipos fundamentales de datos numéricos se clasifican en enteros y reales. Los primeros se utilizan para representar subconjuntos de los números naturales (N) y enteros (Z). Los segundos se emplean para representar un subconjunto de los números racionales (Q).
a.-Enteros
Para declarar variables de alguno de los tipos enteros empleamos las palabras reservadas char, int, long y enum.
char. Define un número entero de 8 bits. Su rango es [-128,127]. También se emplea para representar el conjunto de caracteres ASCII.
int. Define un número entero de 16 ó 32 bits (dependiendo del procesador). Su tamaño suele coincidir con el del bus de datos del procesador.
long. Define un número entero de 32 ó 64 bits.
short. Define un numero entero de tamaño menor o igual que int
Se debe cumplir que tamaño (short) <= tamaño(int) <= tamaño(long)
Estos cuatro tipos pueden ir precedidos del modificador unsigned para indicar que el tipo solo representa números positivos o el cero.
La forma de declarar constantes y variables dentro de un programa es a través de dichos identificadores como se muestra a continuación.
Constantes:
const int A=5; ó #define A 5;
int a; ó int a,b,c;
int hora ;
char carácter ;
unsigned short mes ;
b.-Reales
Para declarar variables de alguno de los tipos reales emplearemos las palabras reservadas float y double.
Float. Define un número en coma flotante de precisión simple. El tamaño de este tipo suele ser 4 bytes (32 bits).
Double. Define un número en coma flotante de precisión doble. El tamaño de este tipo suele ser de 8 bytes(64 bits). El tipo double puede ir precedido del modificador long, lo que indica que su tamaño pasa a ser de 10 bytes.
float temperatura = 36.5 ;
double distancia = 128e64 ;
const float pi=3.1416; ó #define pi 3.1416;
Variables:
float a; ó float a,b,c;
Como ya se vio anteriormente int indica que es una variable o constante de tipo entero y float indica que son de tipo real.
1.4.2.3.-OPERACIONES BÁSICA.
Ahora veamos que con las variables y las constantes podemos realizar operaciones básicas para dar solución a problemas bien definidos.
Los operadores que se emplean en lenguaje c son:
TABLA 1.2.-Operadores aritmeticos
	Operador.
	Función
	+
	Suma.
	-
	Resta.
	*
	Multiplicación.
	/
	División.
	%
	Modulo (residuo)
1.4.2.4.-La función scanf.
Dentro de la librería estándar de entradas y salidas (stdio.h) existe una función denominada scanf, la cual sirve para que el programa lea los datos que le introduce el programador, esta función tiene una sintaxis muy similar a la de la función printf, con la diferencia que aquí empleamos el signo & (Amperstand), cuya función es la de asignar el valor que se ingresa por medio del teclado a la variable que se indica, ahora para concretar lo visto hasta ahora realicemos un ejemplo en cual obtendremos la suma de dos números enteros para que con su análisis sea más clara la explicación:
Ejemplo 1.3.-Desarrolla el diagrama de flujo y el código para un programa que calcule la suma de dos números enteros.
diagrama de flujo
fin
inicio
CÓDIGO
#include <stdio.h>
#include <conio.h>
int main ()
{
clrscr();int sum,a,b;
printf(“\n\tIngrese el primer número=”);
scanf(“%d”,a”);
printf(“\n\tIngrese el segundo número=”);
scanf(“%d”,b);
sum=a+b;
printf(“\n\n\n\t\t\tLa suma de los números es =%d”,sum);
getch();
return Ø;
}
Al capturar este programa notarás que en la función scanf y printf aparece el símbolo %d, esta es la instrucción que le indica al programa el tipo de dato que se emplea que en este caso es entero, así mismo la sintaxis se diferencia únicamente en que la función scanf utiliza el símbolo & para asignarle a “a” y a “b” los valores que se ingresaron por medio del teclado para realizar la operación.
Como una prueba compila y corre el programa, posteriormente, asígnale a la variable “a” el valor de 4.5 y a la variable b 3.4, veras que el resultado presentado en la pantalla es 7, cuando debería ser 7.9, la razón es simple declaramos una variable de tipo entera, por lo que la máquina solo sumara la parte entera omitiendo los valores que aparecen a la derecha del punto decimal.
Ejemplo 1.4.-Desarrolla el diagrama de flujo y el código para un programa que calcule la suma de dos números reales.
DIAGRAMA DE FLUJO
fin
sum
sum← a+b
a,b
inicio
CÓDIGO
#include <stdio.h>
#include <conio.h>
int main ()
{
float sum,a,b;
printf(“\n\tIngrese el primer número=”);
scanf(“%f”,a”);
printf(“\n\tIngrese el segundo número=”);
scanf(“%f”,b);
sum=a+b;
printf(“\n\n\n\t\t\tLa suma de los números es =%f”);
getch();
return Ø;
}
Como podemos notar el diagrama de flujo y el programa son casi iguales con la diferencia que ahora se han empleados datos reales por lo que al declarar las variables se emplea float en lugar de int, y en la función scanf y printf se cambia %d por %f, si ingresamos los números del ejemplo anterior a=4.5 y b=3.4, ahora nos dará como resultado el 7.9.
De lo anterior vemos que es necesario saber primero el tipo de dato (entero, real, tipo carácter) y segundo la magnitud del resultado que esperamos, ya que dependiendo de esta se definirá si se declara la variable de una u otra forma.
A continuación se muestra la magnitud de los datos dependiendo su tipo y el formato para sus variables.
TABLA 1.3.-TIPO DE DATOS Y ALCANCE.
	
TIPO DATO
	ESPACIO MEMORIA
	RANGO
	unsigned char
	8 bits
	Ø a 255
	Char
	8 bits
	-128 a 127
	short int
	16 bits
	-32,768 a 32,767
	unsigned int
	32 bits
	Ø a 4,294,967,295
	Int
	32 bits
	-2,147,483,648 a 2,147,483,647
	unsigned long
	32 bits
	Ø a 4,294,967,295
	Enum
	16 bits
	-2,147,483,648 a 2,147,483,647
	Long
	32 bits
	-2,147,483,648 a 2,147,483,647
	Float
	32 bits
	3.4 x 1 Ø -38 a 3.4 x 10+38(6 dec)
	Doublé
	64 bits
	1.7 x1Ø-3Ø8 a 1.7x1Ø+3Ø8(15 dec)
	long doublé
	80 bits
	3.4 x 1Ø -4932 a 1.1 x 1Ø+4932
	Void
	sin valor
	
TABLA 1.4.-FORMATOS UTILIZADOS SEGÚN EL TIPO DE DATO.
	FORMATO
	FUNCIÓN
	%u
	Escribe enteros sin signo de 2 Bytes (unsigned)
	%d %i
	Escribe enteros de 2 Bytes (int)
	%ld
	Escribe enteros de largo alcance
	%f
	Escribe reales de 4 Bytes (float)
	%lf
	Escribe reales de doble precisión 8 Bytes (doublé float)
	%e
	Escribe en forma exponencial
	%g
	Escribe en %f ó %e en función del tamaño del número.
	%c
	Escribe caracteres de 1 Byte (char)
	%s
	Escribe una cadena de caracteres
	%5d
	Escribe enteros de 5 dígitos
	%5.3f
	Escribe un número real con 5 dígitos y 3 serán decimales.
Con lo que conocemos hasta aquí podemos resolver algunos ejercicios simples donde utilizamos únicamente número enteros o reales , y dado que conocemos las operaciones básicas de la matemáticas veremos algunos ejercicios prácticos.
Ejemplo 1.5.-Elabora un diagrama de flujo y su respectivo código para un programa que dados los dos catetos calcule el cuadrado de la hipotenusa.
Solución: Para resolver este problema recordemos que el cuadrado de la hipotenusa esta dado por H2=CO2 + CA2, pero como aún no hemos trabajado mas que elementos básicos lo resolveremos utilizando H = (CO*CO) + (CA*CA), veamos primero como se estructura el diagrama de flujo.
DIAGRAMA DE FLUJO.
fin
H
H←(CO*CO) +(CA*CA) 
CO,CA
inicio
CÓDIGO
#include <stdio.h>
#include <conio.h>
Int main()
{
floatco,ca,h;
printf(“\n\tEl programa calcula el cuadrado de la hipotenusa de un triangulo rectangulo”);
printf(“\n\tIngrese el valor del cateto opuesto”);
scanf(“%f”,&co);
printf(“\n\tIngrese el valor del cateto adyacente”);
scanf(“%f”,&ca);
h=(co*co)+(ca*ca);
printf(“\n\tEl cuadrado de la hipotenusa del triangulo rectángulo es: \t %f”,h);
getch();
return Ø;
}
Ejemplo 1.6.-Elabora un diagrama de flujo y su respectivo código para un programa que dados los valores del voltaje de una fuente, la corriente de un diodo y su voltaje de alimentación determine la resistencia de carga mínima a conectarse en este para evitar que se dañe.
Solución.-Partamos del conocimiento de la formula para el cálculo de la resistencia de carga en un diodo dada como:
Donde:
vf.-Voltaje de la fuente.
vd.-Voltaje del diodo.
Id.-Corriente del diodo.
RL.-Resistencia mínima de carga.
Todos estos parámetros tienen valores reales, por lo tanto se declararán como variables de tipo real.
DIAGRAMA DE FLUJO
fin
 RL
RL← (Vf-Vd)/Id
)
Vf,Vf,Ida
inicio
	
CÓDIGO
#include<stdio.h>
#include<conio.h>
float RL,vf,vd,Id;
int main()
{
printf("\n\n\t\tDame el voltaje total");
scanf("%f",&vf);
printf("\n\n\t\tDame el voltaje del diodo");
scanf("%f",&vd);
printf("\n\n\t\tDame la corriente del diodo");
scanf("%f",&Id);
 RL=(vf-vd)/Id;
printf("\n\n\t\tEl valor de la resistencia mínima es:\t %2f",RL);
getch();
return Ø;
}
Ejemplo 1.7.-Elabora un diagrama de flujo y código para un programa que al recibir como datos los valores del voltaje con que se alimenta la base de un transistor, la corriente que circula por su colector y el factor beta determine la resistencia de carga mínima a conectarse en la base de este para evitar que se dañe.
Solución: 
Sabemos que el factor beta esta dada por la siguiente expresión:
β=Ic/Ib, por lo tanto Ib =Ic/β.
Aplicando la ley de ohm vemos que Vb=(Ib*Rb) + 0.7.
Así que Rb = (Vb-0.7) / IbFloyd,1999 que es el parámetro que deseamos calcular.
Notemos que necesitamos conocer 3 variables (Vb,Ic, β) y calcularemos solo una(Rb).
DIAGRAMA DE FLUJO
 fin
Rb
Ib←Ic/β
Rb← (Vb-0.7)/Ib
)
Vb,Ic, β beta
,Ida
inicio
CÓDIGO.
#include<stdio.h>
#include<conio.h>
float Ic,Vb,,Rb,beta,Ib;
int main()
{
printf("\n\n\t\t Dame el valor de corriente en colector:");
scanf("%f",&Ic);
printf("\n\n\t\t Dame el valor del voltaje de base:");
scanf("%f",&Vb);
printf("\n\n\t\t Dame el valor del factor beta:");
scanf("%f",&beta);
Ib=Ic/beta;
Rb=(Vb-0.7)/Ib;
printf("\n\n\t\t La resistencia de base para un transistor es:\t %2f",Rb);
getch();
return Ø;
}
Ejemplo 1.8.-Elabora un diagrama de flujo y su respectivo código para un programa que dado el radio de una circunferencia determine su perímetro y su área.
Solución:
Conocemos la formula para calcular el área y el perímetro de una circunferencia.
Area=π x r2 o Area= π x rxr 
Perímetro=π x d o Perímetro=π x 2xr;
Ahora bien sabemos que π= 3.1416 y al emplear la segunda formula para el área y el perímetro nuestro diagrama de flujo quedaría como sigue:
DIAGRAMA DE FLUJO.
inicio
 fin
 Peri, area 
peri←2*rad*pi
area←rad*rad*pi
Rb← (Vb-0.7)/Ib
)
rad
beta
,Ida
CÓDIGO
#include <stdio.h>
#include <conio.h>
#define pi 3.1416;
Int main()
{
float rad,peri,area;
printf(“\n\tEl programa calcula el perímetro y el área de una circunferencia”);
printf(“\n\tIngrese el valor del radio de la circunferencia”);
scanf(“%f”,rad);
peri=(2*rad)*pi;
area=(rad*rad)*pi;
printf(“\n\tEl perímetro de la circunferencia es: \t %f”, peri);
printf(“\n\tEl area de la circunferencia es: \t %f”, area);
getch();
return Ø;
}
1.4.3.-LA LIBRERÍA MATEMÁTICA
Habrás advertido que en los ejercicios anteriores no empleamos símbolos ortográficos, y en este último caso la variable π se escribió como pi,la razón es que al programar en lenguaje c los símbolos - letras griegas, símbolos ortográficos, etc- no son reconocidos, generandoen algunos casos símbolos desconocidos, en otros errores de operación.
El último ejercicio parece ser el más sencillo, se eligió debido a que si observas se ha incorporado el uso de una constante que en este caso es pi, como el valor de pi es conocido, el problema se resuelve de manera relativamente fácil, sin embargo en algunos casos como las funciones trigonométricas se presenta el problema de contener gran cantidad de valores, por lo tanto no es una buena práctica intentar declararlos todos como constantes, en cambio podemos emplear la librería matemática que cuenta con funciones ya definidas y que nos sintetiza la resolución de los problemas, las funciones contenidas en esta librería se muestran a continuación:
TABLA 1.5.-Funciones de la librería math.h
	Función
	Explicación
	Función
	Explicación
	exp(x)
	Función exponencial ex. Eleva e(2.718281) a la potencia de x.
	sin(x)
	Obtiene el seno de x.
	cos(x)
	Obtiene el coseno de x.
	asin(x)
	Obtiene el arco seno de x.
	acos(x)
	Obtiene el arco coseno de x.
	tan(x)
	Obtiene la tangente de x.
	atan(x)
	Obtiene el arco tangente de x.
	sqrt(x)
	Obtiene la raíz cuadrada de x, x≥0.
	pow(x,y)
	Potencia xy, x>0, y≥0.
	fabs(x)
	Devuelve el valor absoluto de x.
	fmod(x1,x2)
	Obtiene el resto de x1 entre x2, con el mismo signo de x1.
	log(x)
	Devuelve el logaritmo natural de x, in(x), x>0.
Ejercicio 1.9.-Ahora resolvamos el último ejercicio empleando la biblioteca math.h.
Solución: Comenzaremos por recordar las formulas aplicadas en el problema anterior.
Area=π x r2 o Area= π x rxr 
Perímetro=π x d o Perímetro=π x 2xr;
Ahora a diferencia del primer ejercicio vamos a emplear las formulas de la izquierda, es decir aquellas donde aparece la constante π, con lo que tendremos el siguiente diagrama de flujo.
DIAGRAMA DE FLUJO.
 fin
 peri, area 
sum
peri←2*rad*M_PI
area←rad**2*M_PI
sum← a+b
)
sum← a+b
rad
a,b
,Idaa,b
inicio
Inicio
Ingreso de datos.
Proceso –suma, resta, división, etc
Decisión.
Selección múltiple.
Impresión.
CÓDIGO
#include <stdio.h>
#include <conio.h>
#include <math.h>
Int main()
{
float rad,peri,area;
printf(“\n\tEl programa calcula el perímetro y el área de una circunferencia”);
printf(“\n\tIngrese el valor del radio de la circunferencia”);
scanf(“%f”,&rad);
peri=M_PI*2*rad;
area=M_PI*pow(rad,2);
printf(“\n\tEl perímetro de la circunferencia es: \t %f”, peri);
printf(“\n\tEl area de la circunferencia es: \t %f”, area);
getch();
return Ø;
}
Notarás que en este caso el valor de la constante pi no se declara y que se emplea el comando M_PI, además el radio al cuadrado (rad*rad) se substituye por pow(rad,2), que si observas la tabla 1.5 son funciones contenidas en la biblioteca math.h.
Ejercicio1.10.-Se desea generar un programa que al recibir como datos dos vectores A y B en su forma polar determine la suma de estos.
A partir del presente ejercicio consideraremos que conoces el procedimiento para resolver los problemas, por lo que solamente se dará el diagrama de flujo, así como la codificación del mismo.
DIAGRAMA DE FLUJO.
 fin
 r, tetr
xa=ra*cos(teta);
ya=ra*sin(teta);
xb=rb*cos(tetb);
yb=rb*sin(tetb);
x=xb-xa;
y=yb-ya;
r=sqr(pow(x,2)+pow(y,2));
tetr=atan(y/x);
ra,rb,teta,tetb
beta
,Ida
inicio
CÓDIGO.
#include <stdio.h>
#include <conio.h>
#include <math.h>
int main()
{
float ra,rb,teta,tetb,xa,ya,xb,yb,x,y,r,tetr;
printf(“\n\tEl programa calcula la suma de dos vectores A y B”);
printf(“\n\tIngrese el valor delamagnitud del vector A”);
scanf(“%f”,&ra);
printf(“\n\tIngrese el valor del angulo del vector A”);
scanf(“%f”,&teta);
printf(“\n\tIngrese el valor de la magnitud del vector B”);
scanf(“%f”,&rb);
printf(“\n\tIngrese el valor del angulo del vector b”);
scanf(“%f”,&tetb);
xa=ra*cos(teta);
ya=ra*sin(teta);
xb=rb*cos(tetb);
yb=rb*sin(tetb);
x=xb-xa;
y=yb-ya;
r=sqr(pow(x,2)+pow(y,2));
tetr=atan(y/x);
printf(“\n\tLa magnitud del vector es:\t %f”,r);
printf(“\n\tEl angulo del vector en pi radianes es:\t %f”,tetr);
getch();
return Ø;
}
Como puedes ver hasta aquí podemos resolver diferentes tipos de problemas matemáticos simples con la ayuda de la programación en “c”, sin embargo esto solo es el principio, ya que en ejercicios subsecuentes estos nos servirán solo como apoyo en la aplicación de estructuras especificas.
EJERCICIOS DE REFORZAMIENTO.
I.-Elabore los programas que muestren en la pantalla los siguientes letreros:
a)
 INSTITUTO POLITECNICO NACIONAL
 CECYT #9 JUAN DE DIOS BATIZ
 PROGRAMACION EN LENGUAJE C
ALUMNO: (aquí debe escribir el nombre del alumno)
GRUPO: NUMERO DE BOLETA:
PROFESOR:
b)
 X
 XXX
 XXXXX
XXXXXXX
2.-Elabore los diagramas de flujo y códigos para los siguientes problemas.
a) Restar, multiplicar y dividir dos números enteros.
b) Restar, multiplicar y dividir dos números reales.
c) Obtenga el perímetro y la área de un rectángulo.
d) Calcular obtener el perímetro y la área de un cuadrado.
e) Determina el perímetro y la área de un triangulo rectángulo.
f) Dado el radio del embolo de un cilindro y la presión aplicada a este. Determine la fuerza con que sale el vástago.
g) Conversión de pulgadas a centímetros.
h) Conversión de metros a pies.
i) Dados el voltaje, la potencia real y el factor de potencia de un sistema trifásico. Obtener las potencias aparentes, reactivas y el ángulo de desplazamiento entre fases.
j) Dado el ángulo de elevación que tiene una persona que se encuentra en una embarcación, y conocida la altura de un faro. Calcular la distancia a la cual se encuentra el barco de la playa.

Continuar navegando