Biblioteca estándar de funciones

Anuncio
Algoritmos y Lenguaje de Programación,
Sección 1
Biblioteca estándar
Biblioteca estándar de
funciones
Mario Medina C.
[email protected]
Aritmética entera
int abs(int valor);
long int labs(long int valor);
div_t div(int numer, int denom);
ldiv_t ldiv(long int numer, long int
denom);
struct div_t {
int quot;
int rem;
}
)ldiv_t es igual, pero con long int
Conversión de ristras
• Declaraciones en <stdlib.h>
• Funciones convierten ristras de caracteres en
valores numéricos enteros
• Funciones para base 10
int atoi(char const *s);
long int atol(char const *s);
)Ignora sufijos no numéricos
)atoi(123abc) entrega 123
©Mario Medina C.
• Expande las capacidades del lenguaje C
)Muchas funciones cubiertas en clases anteriores
)Aún quedan muchas por conocer
• Funciones enteras (<stdlib.h>)
• Funciones de punto flotante (<math.h>)
• Funciones de temporización (<time.h>)
• Funciones de terminación (<stdlib.h>)
Números aleatorios
int rand(void);
)rand genera un número aleatorio entre 0 y
RAND_MAX, el cual es al menos 32767
void srand(unsigned int seed);
)Secuencia de números aleatorios depende de la
semilla inicial
)srand() permite cambiar la semilla inicial
)Usar la hora actual como semilla hace “mas
aleatoria” la secuencia
srand((time(NULL));
Conversión de ristras
• Funciones para una base dada
long int strtol(char const *s, char
**resto, int base)
unsigned long int strtoul(char const
*s, char **resto, int base)
)resto es puntero al próximo caracter a convertir
` resto puede ser NULL
)Base puede estar entre 2 y 36
` Dígitos 0-9, A-Z
1
Algoritmos y Lenguaje de Programación,
Sección 1
Funciones de punto flotante
• Declaraciones en <math.h>
• Funciones trigonométricas
• Funciones hiperbólicas
• Funciones logarítmicas y exponenciales
• Funciones de potencia
• Funciones techo, piso, valor absoluto, modulo
• Funciones de conversión de ristras
Funciones hiperbólicas
double sinh(double angulo);
double cosh(double angulo);
double tanh(double angulo);
)Funciones hiperbólicas y trigonométricas
requieren el ángulo expresado en radianes
Funciones de potencias
double pow(double x, double y);
double sqrt(double x);
)Función pow(x, y) retorna x elevado a y
)Función sqrt() retorna la raíz cuadrada de x
)Para obtener raíz cúbica, usar pow(x, 1/3.0);
©Mario Medina C.
Funciones trigonométricas
double sin(double angulo);
double cos(double angulo);
double tan(double angulo);
double asin(double valor);
double acos(double valor);
double atan(double valor);
double atan2(double x, double y);
)Función atan2(x, y) retorna el arco tangente
de la expresión x/y
Funciones logarítmicas y
exponenciales
double exp(double x);
double log(double x);
double log10(double x);
)Función exp() retorna e elevado a x
)Función log() retorna el logaritmo en base e
)Función log10() retorna logaritmo en base 10
Funciones techo y piso
double floor(double x);
double ceil(double x);
double fabs(double x);
double fmod(double x, double y);
)floor(x) retorna mayor entero inferior a x
)ceil(x) retorna menor entero superior a x
)fabs(x) retorna valor absoluto de x
)fmod(x, y) retorna módulo para punto flotante
2
Algoritmos y Lenguaje de Programación,
Sección 1
Conversión de ristras
• Funciones convierten ristras de caracteres en
valores numéricos de punto flotante
)Declaraciones en <math.h>
double atof(char const *s);
double strtod(char const *s, char
**resto);
)resto es puntero al próximo caracter a convertir
` resto puede ser NULL
Funciones de temporización
• Fecha y hora actual
time_t time(time_t *resultado);
)Retorna (usualmente) el número de segundos
transcurridos desde el 1ro. de enero de 1970
` resultado recibe el mismo valor
` time_t normalmente es un entero de 32 bits
double difftime(time_t t1, time_t
t2);
)Calcula diferencia entre dos time_t
Estructura tm
int
int
int
int
int
int
int
int
int
tm_sec;
tm_min;
tm_hour;
tm_mday;
tm_mon;
tm_year;
tm_wday;
tm_yday;
tm_isdst;
©Mario Medina C.
Funciones de temporización
• Declaraciones en <time.h>
• Tiempo de CPU transcurrido desde el
comienzo de la ejecución
clock_t clock(void);
)Retorna número de ticks
)Dividir por constante CLOCKS_PER_SEC
)Si hay un error en la medición, función retorna -1
Funciones de temporización
• Fecha y hora actual
char *ctime(time_t const *t);
)Recibe un puntero a un entero time_t y retorna
un puntero a una ristra de la forma
Sun Jul 4 04:02:48 1976
• Otras funciones usan struct tm
struct tm *gmtime(time_t const *t);
struct tm *localtime(time_t const
*t);
Funciones de temporización
/*
/*
/*
/*
/*
/*
/*
/*
/*
Segundos */
Minutos */
Hora */
Día */
Mes */
Año */
Día de la semana */
Día del año */
Horario de verano? */
3
Algoritmos y Lenguaje de Programación,
Sección 1
Funciones de terminación
• Terminación normal
void exit(int status);
)Posibles valores son EXIT_FAILURE y
EXIT_SUCCESS
• Terminación anormal
void abort(void);
• Funciones de terminación
void atexit(void(func)(void));
)Función func() será ejecutada al terminar
normalmente el programa
©Mario Medina C.
4
Descargar