Escolar Documentos
Profissional Documentos
Cultura Documentos
PROGRAMACION APLICADA I
INTEGRANTES
ACEVEDO, LAUREN
8-845-560
MARTINEZ, MAURICIO
8-841-472
PAU, RICARDO
RODRIGUEZ, DAN
8-845-1130
VIVAR, LUIS E.
8-857-210
GRUPO: 1-IL-122
20 DE ABRIL DE 2011
ndice
Introduccin y objetivos 3
La biblioteca estndar del C..
La librera Stdio.h 8
La librera Conio.h. 14
La librera Ctype.h. 16
La librera Stdlib.h 21
La librera String.h.
26
La librera Time.h..
30
La librera Math.h.
41
Programa Ejemplo . 43
Conclusiones 46
Bibliografa y Web-grafa..
47
2011
2011
Introduccin
En el mundo actual, las tecnologas avanzan de forma impresionante a
cada segundo, y nosotros somos los que vamos a seguir con este avance.
Empezando el curso de nuestras vidas y fundando las bases de nuestra
informacin en el tema de la programacin as como la lgica que utilizaremos
en trabajos futuros tendemos el gusto de presentarles la presente investigacin
sobre La Biblioteca Estndar del C, la cual pasaremos a definir posteriormente.
Este proyecto no solo presenta aspectos del tema sino que tambin, profundiza
en sus subdivisiones y mtodos que estn poseen, dando as explicaciones,
trucos y ejemplos de los mtodos propuestos.
Objetivos
Entre los objetivos tenemos:
2011
La Biblioteca Estndar de C
La biblioteca estndar de C es una recopilacin de ficheros cabecera y
bibliotecas con rutinas, estandarizadas por un comit de la Organizacin
Internacional para la Estandarizacin (ISO), que implementan operaciones
comunes, tales como las de entrada y salida o el manejo de cadenas. A
diferencia de otros lenguajes como COBOL, FORTRAN, o PL/I, C no incluye
palabras clave para estas tareas, por lo que prcticamente todo programa
implementado en C se basa en la biblioteca estndar para funcionar.
Diseo
El nombre y las caractersticas de cada funcin, el prototipo, as como la
definicin de algunos tipos de datos y macros, se encuentran en un fichero
denominado archivo de cabecera (con extensin ".h"), pero la implementacin
real de las funciones estn separadas en un archivo de la biblioteca. La
denominacin y el mbito de las cabeceras se han convertido en comunes,
pero la organizacin de las bibliotecas sigue siendo diversa, ya que stas
suelen distribuirse con cada compilador. Dado que los compiladores de C, a
menudo, ofrecen funcionalidades adicionales que no estn especificados en
el ANSI C, la biblioteca de un compilador no siempre es compatible con el
estndar ni con las bibliotecas de otros compiladores.
Calidad del diseo
Est demostrado que la mayor parte de la biblioteca estndar de C ha sido bien
diseada, aunque, se ha comprobado que algunas partes tambin son fuente
de errores; funciones para entrada de cadenas como gets() o scanf(),
producen desbordamientos de buffer, y muchas guas de programacin
recomiendan evitar su uso. La funcin strtok() presenta otra singularidad, est
diseada para ser utilizada como un analizador lxico rudimentario, pero
resulta difcil de utilizar adems de ser muy frgil.
El estndar ANSI
La biblioteca estndar de ANSI C consta de 24 ficheros cabecera que pueden
ser incluidos en un proyecto de programacin con una simple directiva. Cada
cabecera contiene la declaracin de una o ms funciones, tipos de
datos y macros.
En comparacin con otros lenguajes de programacin (como por ejemplo Java)
la biblioteca estndar es muy pequea, est proporciona un conjunto bsico de
funciones matemticas, de tratamiento de cadenas, conversiones de tipo y
2011
2011
<ctype.h>
<errno.h>
<fenv.h>
<float.h>
<inttypes.h>
<iso646.h>
<limits.h>
<locale.h>
<math.h>
<setjmp.h>
<signal.h>
<stdarg.h>
2011
<stdint.h>
<stddef.h>
<stdio.h>
<stdlib.h>
<string.h>
<tgmath.h>
<time.h>
<wchar.h>
<wctype.h>
2011
La librera stdio.h
La biblioteca <stdio.h>, cuyas siglas significan standard input-output header
(cabecera standar de entrada y salida), es la biblioteca estndar del lenguaje
de programacin C, el archivo de cabecera que contiene las definiciones
de macros, las constantes, las declaraciones de funciones y la definicin
de tipos usados por varias operaciones estndar de entrada y salida. Por
motivos de compatibilidad, el lenguaje de programacin C++ (derivado de C)
tambin tiene su propia implementacin de estas funciones, que son
declaradas con el archivo de cabecera cstdio.
Las funciones declaradas en stdio.h son sumamente populares. Los
programadores tienen que incluir el archivo de cabecera stdio.h dentro del
cdigo fuente para poder utilizar las funciones que estn declaradas. Aparte de
las funciones tambin encontramos variables y tipos de dato propios de la
biblioteca que se pasaran a definir a continuacin:
Funciones en la <stdio.h>
Las funciones declaradas en stdio.h pueden clasificarse en dos categoras:
funciones de manipulacin de ficheros y funciones de manipulacin de
entradas y salidas.
Las funciones de manipulacin de puntero que encontramos en la stdio.h
son:
Nombre
fclose
Descripcin
cierra un fichero a travs de su puntero
fopen,
freopen,
fdopen
remove
elimina un fichero
rename
2011
rewind
tmpfile
fclose
fgetc
formato
fread
fsetpos
getchar
putc
rename
setvbuf
tmpnam
vsprintf
feof
fgetpos
fprintf
freopen
ftell
gets
putchar
rewind
sprintf
ungetc
ferror
fgets
fputc
fscanf
fwrite
perror
puts
scanf
sscanf
vfprintf
2011
Descripcin
EOF
BUFSIZ
_IOFBF
_IOLBF
_IONBF
10
2011
L_tmpnam
NULL
SEEK_CUR
SEEK_END
SEEK_SET
TMP_MAX
Descripcin
stdin
stdout
stderr
11
2011
Tipos de datos
Los tipos de datos definidos en el fichero de cabecera stdio.h son:
indicador de error
Ejemplos
Ejemplo No.1:
#include <stdio.h>
main()
{
int a, b;
printf( "Introduzca el primer nmero: " );
scanf( "%d", &a );
printf( "Introduzca el segundo numero: " );
scanf( "%d", &b );
printf( "Los valores son: %d, %d ", a, b );
}
Introduzca el primer nmero: 76
Introduzca el segundo numero: 45
Los valores son: 76, 45
12
2011
Ejemplo No. 2:
#include <stdio.h>
main()
{
char a, b, c;
printf( "Introduzca primer caracter: " );
scanf( "%c", &a );
printf( "Introduzca segundo caracter: " );
fflush( stdin );
scanf( "%c", &b );
printf( "Introduzca tercer caracter: " );
fflush( stdin );
scanf( "%c", &c );
printf( "Los valores son: %c, %c, %c ", a, b, c );
}
La primera vez que se ejecuta scanf, el buffer del teclado est vaco, por tanto, no es
preciso utilizar fflush, pero s, en los dos casos posteriores. Obsrvese que,
a fflush hay que indicarle el buffer a limpiar, Standar Input (stdin) en este caso.
13
2011
La librera Conio.h
Contiene los prototipos de las funciones, macros, y constantes para preparar y
manipular la consola en modo texto en el entorno de MS-DOS.
Funciones ms importantes de la <conio.h>
gotoxy (columna, fila)
Sita el cursor en la columna y fila especificada. Por ejemplo, esta instruccin:
gotoxy (5, 2);
sita el cursor en la fila 2, columna 5 de la pantalla. La siguiente instruccin
de escritura en consola comenzar a escribir a partir de esas coordenadas.
cprintf() y cscanf()
Son las equivalentes a printf() y scanf(). Su sintaxis es la misma, y es
recomendable usarlas en lugar de las funciones estndar para evitar
funcionamientos extraos.
textcolor(color)
Cambia el color del texto. Los colores predefinidos son: BLACK, BLUE, RED,
GREEN, CYAN, MAGENTA, BROWN, DARKGRAY. Adems, existen las
variedades claras de estos colores: LIGHTBLUE, LIGHTRED, LIGHTGREEN,
etc.
As, si ejecutamos:
textcolor (LIGHTRED);
el texto que se escriba a continuacin aparecer el color rojo intenso.
textbackground (color)
Establece el color del fondo del texto. Los colores predefinidos son los mismos
que para textcolor(). As, este cdigo:
textbackground (BLUE);
hace que el texto que se escriba a continuacin aparezca con el fondo en
color azul oscuro.
cgets
Esta funcin leer una cadena de caracteres desde la consola, guardando la
cadena (y su longitud) en el lugar apuntado por *cadena. La funcin cgets leer
caracteres hasta que encuentre una combinacin de retorno de lnea y nueva
lnea (CR/LF), o hasta que el nmero mximo de caracteres permitidos hayan
14
2011
15
2011
La librera Ctype.h
Este archivo de cabecera analiza el tipo de carcter dependiendo de la funcin
mandada a llamar. El carcter puede ser mandado a la funcin como un
nmero entero o como un carcter (variable o encerrado entre apstrofos). Si la
funcin determina que no es ese tipo de carcter regresa el valor de 0 (que
para c es un valor de falso y otro valor si lo es (para C es un valor de
verdadero). Existen tambin un par de funciones que permiten convertir un
carcter de minscula a mayscula y viceversa,
Funciones dentro de <Ctype.h>
Isalnum: determina si el character c es una letra del alfabeto (de la a a
la z sin distinguir entre maysculas y minsculas) o un digito. Si no es
letra o digito regresa un valor cero, de lo contrario regresa un valor
distinto de cero.
o Formato: Int isalnum (int c)
Programa
void main (void)
{ char letra;
letra=getche();
if (isalnum(letra))
printf("\n%c es una
letra o nmero", letra);
else
printf("\n%c no es
una letra ni nmero", letra);
}
Salida
Si letra='r'
"r es una letra o nmero"
Si letra='7'
"7 es una letra o nmero"
Si letra='$'
"$ no es una letra ni nmero"
16
2011
Salida
Si letra='4'
"4 es un nmero"
Si letra='$'
"$ no es un nmero"
17
Salida
Si letra='+'
"+ es un ASCII bsico"
Si letra=''
" no es un ASCII bsico"
2011
Salida
Si letra='\t'
"0x09 es un caracter blanco"
Si letra='$'
"$ no es un caracter blanco"
Salida
Si letra='r'
"r es una letra minscula"
Si letra='R'
"R no es una letra minscula"
Si letra='&'
"& no es una letra minscula"
18
2011
Ejemplo:
Programa
void main (void)
{ char letra;
letra=getche();
if (isupper(letra))
printf("\n%c es una
letra mayscula", letra);
else
printf("\n%c no es
una letra mayscula", letra);
}
Salida
Si letra='R'
"R es una letra mayscula"
Si letra='r'
"r no es una letra mayscula"
Si letra='&'
"& no es una letra mayscula"
Salida
Si letra='r'
"r sin convertir"
"r convertido a ASCII"
Si letra=''
" sin convertir"
"# convertido a ASCII"
19
Salida
Si letra='A'
"A sin convertir"
"a en minscula"
Si letra='5'
"5 sin convertir"
"5 en minscula"
2011
20
Salida
Si letra='a'
"a sin convertir"
"A en mayscula"
Si letra='5'
"5 sin convertir"
"5 en mayscula"
2011
La librera Stdlib.h
stdlib.h , cuyas siglas se definien como: std-lib: standar library o
estndar, es el archivo de cabecera de la biblioteca estndar de
general del lenguaje de programacin C. Contiene los prototipos de
de C para gestin de memoria dinmica, control de procesos y
compatible con C++ donde se conoce como cstdlib.
biblioteca
propsito
funciones
otras. Es
Descripcin
Conversin de tipos
atol (C Standard
Library) (ascii to long)
srand
21
2011
free
abort
atexit
exit
getenv
system
bsearch
qsort
ordena un vector
(informtica) usando Quicksort
Matemticas
abs, labs
valor absoluto
div, ldiv
22
2011
23
2011
24
2011
25
2011
La librera String.h
string.h es un archivo de la Biblioteca estndar del lenguaje de programacin
C que contiene la definicin de macros, constantes, funciones y tipos de
utilidad para trabajar con cadenas de caracteres y algunas operaciones de
manipulacin de memoria (el nombre string puede ser algo inapropiado).
Las funciones declaradas en string.h se han hecho muy populares, por lo que
estn garantizadas para cualquier plataforma que soporte C. Sin embargo,
existen algunos problemas de seguridad con estas funciones, como
el desbordamiento de buffer (buffer overflow), que hacen que algunos
programadores prefieran opciones ms seguras frente a la portabilidad que
estas funciones ofrecen. Adems, las funciones para cadenas de caracteres
slo trabajan con conjuntos de caracteres ASCII o extensiones ASCII
compatibles.
Funciones dentro de <string.h>
Dentro de las funciones que nos ofrece la biblioteca encontramos las
siguientes:
Nombres
memcpy
Descripcin
copia n bytes entre dos reas de memoria que no deben
solaparse
memcmp
memset
strcat
strncat
26
2011
strchr
strrchr
strcmp
strncmp
strcoll
strcpy
strncpy
strerror
strlen
strspn
strcspn
strpbrk
strstr
strtok
strxfrm
strrev
27
2011
Entre todas estas funciones que nos ofrece la string.h podemos considerar las
siguientes como las de uso frecuente, en cuanto a esta biblioteca se refiere:
Nombre
Formato
Descripcin
Valor retornado
El
strcpy
()
devuelve s1, sin
valor de retorno se
reserva
para
indicar un error.
strlen( )
La funcin strlen ()
devuelve la
longitud de s, sin
valor de retorno se
reserva para
indicar un error.
strncmp( )
Si es correcto,
strncmp ()
devuelve un
nmero entero
mayor, igual o
inferior a 0, si la
matriz
posiblemente
terminada en nulo
apuntado por s1
es mayor, igual o
inferior a la matriz
posiblemente
terminada en nulo
apuntada por s2 ,
respectivamente.
strcpy( )
28
strncpy( )
29
El strncpy () copia no
ms de n bytes (bytes
que siguen un byte
nulo no se copian) de
la cadena apuntada
por s2 a la cadena
apuntada por s1. Si la
# include <string.h> copia se realiza entre
los objetos que se
char * strncpy (char superponen,
el
* s1, const char *
comportamiento
es
s2, size_t n);
indefinido.
Si el array apuntado
por s2 es una cadena
que es menor que n
bytes, bytes nulos se
aaden a la copia en el
array apuntado por s1,
hasta que n bytes en
todos se escriben.
2011
El strncpy ()
devuelve s1, sin
valor de retorno se
reserva para
indicar un error.
2011
La librera Time.h
La biblioteca time.h es un archivo de cabecera de la biblioteca
estndar del lenguaje de programacin C que contiene funciones para
manipular y formatear la fecha y hora del sistema.
Funcin
asctime()
Uso
Obtener una cadena alfanumrica del tipo Mon Nov 21 11:31:54
1993\n\0 a partir de una estructura tm
clock()
Obtener el tiempo transcurrido desde el comienzo de la
ejecucin del programa
ctime()
Obtener una cadena alfanumrica del tipo sealado
para asctime a partir de un timestamp.
difftime()
Obtener el tiempo en segundos entre dos timestamp.
gmtime()
Obtener una fecha GMT en formato tm a partir de un
timestamp con la hora local.
localtime() Obtener una fecha en formato tm a partir de un timestamp.
mktime()
Obtener un timestamp numrico a partir de una fecha tm.
strftime()
Obtener una representacin alfanumrica a partir de una
fecha tm (acepta un formateo similar a printf)
time()
Obtener un timestamp con la fecha y hora del Sistema.
Adems de las funciones anteriores, la STL define tres tipos
simples: size_t; clock_t, time_t y una estructura tm. En realidad se trata de
typedefs dependientes de la implementacin.
typedef long time_t;
size_t
clock_t
time_t
tm
30
2011
Asctime( )
La funcin se presenta en dos versiones: asctime para caracteres normales
y _wasctime para caracteres anchos, que responden a los siguientes
prototipos:
#include <time.h>
char* asctime(const struct tm* tmPtr);
wchar_t* _wasctime(const struct tm* tmPtr);
Descripcin:
Ambas funciones aceptan un puntero a una estructura tipo tm , y devuelven un
puntero a una cadena de caracteres con informacin alfanumrica sobre la
fecha contenida en la estructura. La cadena es de ancho fijo (26 caracteres),
mantiene siempre el mismo formato, y es reescrita cada vez que se invoca la
funcin:
Mon Nov 21 11:31:54 1993\n\0
El reloj utilizado es de 24 horas, y cualquiera que sea el tipo de caracteres
utilizados (anchos o estrechos), termina en los caracteres NL (New Line) y NUL
(nulo).
Ejemplo:
#include <iostream>
using namespace std;
#include <ctime>
int main() {
31
// ==================
2011
struct tm myt;
myt.tm_sec = 1; myt.tm_min = 30; myt.tm_hour = 9;
myt.tm_mday = 22; myt.tm_mon = 11; myt.tm_year = 56;
myt.tm_wday = 4; myt.tm_yday = 0; myt.tm_isdst = 0;
char* cTim = asctime(&myt));
cout << "Fecha resultante: " << cTim;
return 0;
}
Salida:
Fecha resultante: Thu Dec 22 09:30:01 1956
Clock( )
Prototipo:
#include <time.h>
clock_t clock(void);
Descripcin:
Esta funcin devuelve un valor de tipo clock_t que representa el tiempo desde
el comienzo del programa hasta el momento de invocacin de la funcin.
Mediante invocaciones sucesivas puede ser utilizada para obtener el tiempo
entre dos puntos del programa. En caso de error, si el tiempo de proceso no
est disponible o no es representable, la funcin devuelve -1.
El valor devuelto representa el nmero de "tics" del RTC desde el inicio del
programa. Es posible calcular este valor en segundos dividindolo por una
constante denominadaCLK_TCK en unos sistemas y CLOCKS_PER_SEC en
otros. Definida en <ctime>.
En el fichero <time.h> del compilador Borland C++ 5.5 encontramos las
definiciones siguientes:
#define CLOCKS_PER_SEC 1000.0
#define CLK_TCK 1000.0
Ejemplo:
32
2011
cout << "Desde el inicio: " << clock()/CLK_TCK << " segundos\n";
Ctime( )
Esta funcin se presenta en dos versiones: ctime para caracteres normales
y _wctime para caracteres anchos. Prototipos:
#include <ctime>
char* ctime(const time_t* sTptr);
wchar_t* _wctime(const time_t* sTptr);
Descripcin:
Ambas funciones aceptan un puntero a un valor time_t que supuestamente
contiene un timestamp expresado en segundos despus del inicio de la poca
UNIX (1 de Enero de 1970 00:00:00 GMT). Por ejemplo un valor devuelto por la
funcin time. Ambas funciones devuelven un puntero a una cadena de 26
caracteres que contiene la fecha y hora con un formato alfanumrico en el que
todos los campos tienen siempre el mismo ancho, y que es reescrita cada vez
que se invoca a la funcin (el reloj utilizado es de 24 horas):
Mon Nov 21 11:31:54 1993\n\0
Si la fecha corresponde a un momento anterior a Enero de 1970 se obtiene una
cadena nula.
Ejemplo:
#include <iostream>
using namespace std;
#include <ctime>
int main() { // =================
time_t tSec = 31536000;
time_t* tPtr = &tSec;
char* sTptr = ctime(tPtr);
cout << "Fecha: " << sTptr ;
return 0;
}
Salida:
33
2011
34
2011
35
2011
36
2011
return 0;
}
Salida:
hh:mm:ss 11:13:23
dd-mm-aaaa: 22-5-2003
Dia de semana: Jueves
Dia del ao: 141
Horario de verano: Si
Mktime ( )
Prototipo:
#include <time.h>
time_t mktime(struct tm* tmPtr);
Descripcin:
La funcin mktime realiza justamente la operacin inversa que la
anterir localtime. Acepta un puntero a una estructura tm con informacin sobre
una fecha y devuelve un valor tipo time_t con el tiempo en segundos desde el
inicio de la poca UNIX.
Strftime( )
Esta funcin se presenta en dos versiones: strftime para caracteres normales
y wcsftime para caracteres anchos.
Prototipo:
#include <time.h>
size_t strftime(char* str, size_t maxsize,
const char* fmt, const struct tm* mPt);
size_t wcsftime(wchar_t* str, size_t maxsize,
const wchar_t* fmt, const struct tm* mPt);
Descripcin:
37
2011
38
2011
return 0;
}
Salida:
hh:mm:ss 20:14:13
dd-mm-aaaa: 24-5-2003
Son 14 minutos pasados de las 08 horas (WET) Saturday, May 24 2003
Time( )
Esta funcin devuelve la hora actual del sistema en segundos desde el inicio de
la poca UNIX (1 de Enero de 1970 00:00:00 GMT).
Prototipo:
#include <ctime>
time_t time(time_t* tPtr);
Descripcin:
La funcin acepta un puntero a time_t y devuelve un valor time_t que es el
tiempo en segundos transcurrido desde el inicio de la poca UNIX. En realidad
puede realizar dos funciones: si se pasa un valor no nulo, el valor
correspondiente se almacena en el sitio sealado por el puntero. Si este valor
es nulo entonces el valor no se almacena en ningn sitio. En cualquier caso
siempre devuelve un valor con el instante actual en segundos desde las 0
horas del 1 de Enero de 1970.
Ejemplo:
#include <iostream>
using namespace std;
#include <ctime>
int main() { // =================
time_t t1 = 0;
time_t* pt1 = &t1;
39
time(pt1);
cout << "Desde la epoca UNIX " << *pt1 << " segundos\n";
time_t t2 = time(NULL);
cout << "Desde la epoca UNIX " << t2 << " segundos\n";
return 0;
}
Salida:
Desde la epoca UNIX 1053550492 segundos
Desde la epoca UNIX 1053550492 segundo
40
2011
2011
La librera Math.h
Math.h es un archivo de cabecera de la biblioteca estndar del lenguaje de
programacin C diseado para operaciones matemticas bsicas. Muchas de
sus funciones incluyen el uso de nmeros en coma flotante. C++ tambin
implementa estas funciones por razones de compatibilidad y las declara en la
cabecera cmath.
Funciones dentro de <math.h>
Nombre
Acos
Asin
Atan
Atan2
Descripcin
Calcula el valor principal del arco
coseno de x. Puede producirse un
error de dominio para los argumentos
que no estn en el intervalo [-1, +1]
Calcula el valor principal del arco
seno de x. Puede producirse un error
de dominio para los argumentos que
no estn en el intervalo [-1, +1].
Calcula el valor principal del arco
tangente de x.
Calcula el valor principal del arco
tangente de y/x, usando los signos de
ambos argumentos para determinar el
cuadrante del valor de retorno. Puede
producirse un error de dominio si
ambos argumentos son cero.
Ceil
Cos
Exp
Fabs
Floor
Fmod
Log
41
2011
Pow
Sin
Sqrt
Tan
Abs
42
2011
Programa Ejemplo
El siguiente programa fue un programa hecho por el grupo en el cual se
muestran muchas de las funciones explicadas anteriormente que encontramos
en la Biblioteca Estndar del C.
Programa Fuente:
#include<conio.h>
#include<stdio.h>
#include<math.h>
#include<ctype.h>
#include <time.h>
#define pi 3.1416
main()
{ float r,a,v;
int opcion,x=0;
char resp='s',n[15];
clock_t comienzo;
do
{comienzo=clock();
printf("Introduzca su nombre ");
scanf("%[^\n]",&n);
printf("\nIntroduzca el radio de su esfera: ");
scanf("%f",&r);
printf("1) Area\n2) Volumen\n");
printf("Digite la opcion de la operacion a realizar ");
scanf("%i",&opcion);
switch(opcion)
{ case 1: a=4*pi*r*r;
printf("\n");
43
2011
puts(n);
printf("\nEl area de la esfera es de: %.2f",a);
break;
case 2: v=(4/3)*pi*(pow(r,3));
printf("\n");
puts(n);
printf("\nEl volumen de la esfera es de: %.3f",v);
break;
default:printf("\nIntrodujo un valor no valido para la opcin de la operacin");
}
printf("\nDesea hacer la operacin otra vez s/n: ");
fflush(stdin);
scanf("%c",&resp);
if(isupper(resp))
resp='s';
fflush(stdin);
}
while(resp=='s');
printf("\nEl proceso tuvo un tiempo de duracin de: %.1f segundos",(clock()comienzo)/(double)CLOCKS_PER_SEC);
getch();
return 0;
}
44
Capturas de pantalla:
45
2011
2011
Conclusiones
46
2011
47