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