Programaci´on B´asica Arreglos y Estructuras de Datos (2) Arturo Vega Gonz´alez
[email protected] Division de Ciencias e Ingenier´ıas Universidad de Guanajuato Campus Le´ on Sesi´ on 7
Universidad de Guanajuato, DCI, Campus Le´ on
1 / 29
Programcai´ on B´ asica Arreglos y Estructuras de Datos (2)
Contenido
1
Librer´ıas o Biblioteca de Funciones
2
Arreglos M´as sobre cadenas Areglos en Fortran
3
Estructuras de Datos
Universidad de Guanajuato, DCI, Campus Le´ on
2 / 29
Programcai´ on B´ asica Arreglos y Estructuras de Datos (2)
Librer´ıas o Biblioteca de Funciones
Librer´ıas o Biblioteca de funciones Inclusi´on de librer´ıas o biblioteca de funciones (Archivos de cabecera) mediante: #i n c l u d e
Entonces: #i n c l u d e #i n c l u d e #i n c l u d e #i n c l u d e
< s t d i o . h> ” O t r a s F u n c i o n e s . h” ” b i b l i o t e c a . h”
Universidad de Guanajuato, DCI, Campus Le´ on
3 / 29
Programcai´ on B´ asica Arreglos y Estructuras de Datos (2)
Librer´ıas o Biblioteca de Funciones
Librer´ıas o Biblioteca de funciones Algunas Librer´ıas comunes: stdio.h stdlib.h
math.h string.h time.h
Provee las funciones b´ asicas de entrada/salida del lenguaje C. Contiene funciones u ´tiles para operaciones como conversi´ on de tipos, generaci´ on de n´ umeros pseudo- aleatorios, gesti´ on de memoria din´ amica, control de procesos, funciones de entorno, funciones de ordenaci´ on y b´ usqueda Contiene las funciones matem´ aticas m´ as comunes Contiene funciones para la manipulaci´ on de cadenas de caracteres Contiene funciones para la manipulaci´ on de fecha y hora
Universidad de Guanajuato, DCI, Campus Le´ on
4 / 29
Programcai´ on B´ asica Arreglos y Estructuras de Datos (2)
Librer´ıas o Biblioteca de Funciones
Librer´ıa stdio.h Otras funciones que incluye stdio.h son: getchar(void) putchar(char ch) getc(FILE *archivo) putc(char ch, FILE *Archivo) fopen(...) fclose(...) fprintf(...) fscanf(...)
Lee un caracter de la entrada est´ andar Escribe un caracter a la salida es´ andar Lee un caracter de un archivo Escribe un caracter a un archivo Abre un archivo Cierra un archivo Imprime a un archivo Lee de un archivo
y varias m´as...
Universidad de Guanajuato, DCI, Campus Le´ on
5 / 29
Programcai´ on B´ asica Arreglos y Estructuras de Datos (2)
Librer´ıas o Biblioteca de Funciones
Librer´ıa math.h Algunas funciones que incluye math.h son: double double double double double double double double double
pow(double x, double y) sqrt(double x) sin(double x) sinh(double x) tan(double x) tanh(double x) ceil(double x) cos(double x) exp(double x)
double fabs(double x) double floor(double x)
Devuelve el valor de x elevado a y. Devuelve la ra´ız cuadrada no negativa de x. Devuelve el seno de x, donde x est´ a dado en radianes. Regresa el seno hiperb´ olico de x. Devuelve la tangente de x Devuelve la tangente hiperb´ olica de x. Redondea x hacia arriba al entero m´ as cercano. Devuelve el coseno de x Devuelve el valor de e (la base de los logaritmos naturales) elevado a la potencia x Devuelve el valor absoluto del n´ umero en punto flotante x. Redondea x hacia abajo al entero m´ as cercano.
y varias m´as...
Universidad de Guanajuato, DCI, Campus Le´ on
6 / 29
Programcai´ on B´ asica Arreglos y Estructuras de Datos (2)
Librer´ıas o Biblioteca de Funciones
Librer´ıa stdlib.h Algunas funciones que incluye stdlib.h son: rand(void) srand(unsigned int seed) abs(int x) long int labs(long int x) div t div(int numer, int denom)
double atof(const char *cadena) int atoi(const char *cadena) double strtod(const char *cadena, char **finap) double strtol(const char *cadena, char *finap, int base)
Devuelve un entero aleatorio Establece la semilla para el generador de n´ umeros aleatorios Regresa el valor absoluto de x Regresa el valor absoluto de x Calcula el valor numer entre denom y devuelve el cociente y el resto en una estructura llamada div t que contiene dos miembros llamados quot y rem. Convierte una cadena a un valor flotante. Convierte una cadena a un valor entero. Convierte una cadena a un valor de punto flotante. Convierte una cadena a un entero largo de acuerdo a una base dada, la cual deber´ a estar entre 2 y 36 inclusive.
y varias m´as... Universidad de Guanajuato, DCI, Campus Le´ on
7 / 29
Programcai´ on B´ asica Arreglos y Estructuras de Datos (2)
Arreglos
Arreglos Los arreglos son un conjunto de datos del mismo tipo que tienen un ´ındice para distinguirlos La notaci´on xi es equivalente en C a: x[i]. donde i es el ´ındice de la variable x El conjunto de datos se almacena en espacios de memoria contigua. Los indices en C comienzan en cero (0) Los indices en Fortran generalmente comienzan en uno (1), pero se puede especificar el rango de los indices. Los arreglos pueden ser n-dimensionales.
Universidad de Guanajuato, DCI, Campus Le´ on
8 / 29
Programcai´ on B´ asica Arreglos y Estructuras de Datos (2)
Arreglos
Declaraci´ on de arreglos C f l o a t A[20] ; f l o a t B[ 5 ] = {0.0 , 2.0 , 1.5 , 1.0 , 0.5} int a [10] = { 2 };
Fortran real , dimension (3) : : x real , dimension (4 ,5) : : z r e a l , d i m e n s i o n ( 0 : 8 ) , A1 r e a l , d i m e n s i o n ( 2 : 5 ) , A2 real
: : xx ( 3 ) , z z ( 4 , 5 )
Universidad de Guanajuato, DCI, Campus Le´ on
9 / 29
Programcai´ on B´ asica Arreglos y Estructuras de Datos (2)
Arreglos
Arreglos #i n c l u d e < s t d i o . h> i n t main ( v o i d ) { i n t t , i , num [ 3 ] [ 4 ] ; f o r ( t =0; t ” VariableEstructura->ElementoEstructura El procesamiento de una estructura solo se puede hacer elemento por elemento.
Universidad de Guanajuato, DCI, Campus Le´ on
23 / 29
Programcai´ on B´ asica Arreglos y Estructuras de Datos (2)
Estructuras de Datos
Ejemplo de Estructura de Datos s t r u c t Fecha { i n t Dia ; c h a r Mes [ 1 0 ] ; i n t Anio ; }; ... s t r u c t Fecha Hoy = { 2 1 , ” Marzo ” , 2 0 1 2 } , V a r F e c ha ; ... V a r F e c ha = Hoy ; Hoy . Dia = 2 1 ; Hoy . A n i o = 2 0 1 2 ; p r i n t f ( “ E l mes e s : %s \n” , Hoy . Mes ) ; ( Fecha . A n i o % 4 == 0 ) && ( Fecha . A n i o % 100 != 0 ) ) ( Fecha . A n i o % 400 == 0 ) Universidad de Guanajuato, DCI, Campus Le´ on
24 / 29
||
Programcai´ on B´ asica Arreglos y Estructuras de Datos (2)
Estructuras de Datos
Estructura de Datos Ejemplo #i n c l u d e < s t d i o . h> i n t main ( v o i d ) { struct { i n t i d ; // i d e n t i f i c a d o r d e l alumno c h a r nom [ 2 0 ] ; // nombre float calificacion ; } alumno ; p r i n t f ( ” E s c r i b e e l i d e n t i f i c a d o r y e l nombre d e l alumno \n” ) ; s c a n f ( ”%d %s ” , &alumno . i d , alumno . nom ) ; alumno . c a l i f i c a c i o n = 8 0 . 0 ; i f ( alumno . i d > 1 0 0 ) p r i n t f ( ” E l alumno e s %s \n” , alumno . nom ) ; return (0); } Universidad de Guanajuato, DCI, Campus Le´ on
25 / 29
Programcai´ on B´ asica Arreglos y Estructuras de Datos (2)
Estructuras de Datos
Arreglos de Estructura de Datos struct trabajador { c h a r nombre [ 2 0 ] ; char a p e l l i d o s [ 4 0 ] ; i n t edad ; }; s t r u c t t r a b a j a d o r Academicos [ 2 0 ] ; struct trabajador Administrativos [20];
Universidad de Guanajuato, DCI, Campus Le´ on
26 / 29
Programcai´ on B´ asica Arreglos y Estructuras de Datos (2)
Estructuras de Datos
Estructuras de datos Ejercicio: Escriba un programa en C que utilice una estructura (struct), para definir un punto en el plano cartesiano (X,Y) (tipo float) Pida al usuario dos puntos Calcule y despliegue la distancia de un punto a otro p d(P1 , P2 ) = (x2 − x1 )2 + (y2 − y1 )2
Universidad de Guanajuato, DCI, Campus Le´ on
27 / 29
Programcai´ on B´ asica Arreglos y Estructuras de Datos (2)
Estructuras de Datos
Soluci´ on (1) #i n c l u d e < s t d i o . h> #i n c l u d e i n t main ( v o i d ) { s t r u c t Punto { double x ; double y ; }; s t r u c t Punto A , B ; double D i s t a n c i a ; p r i n t f ( ” Teclea l o s v a l o r e s d e l punto A ( x , y ) s c a n f ( ”% l f % l f ” , &A . x , &A . y ) ; p r i n t f ( ” Teclea l o s v a l o r e s d e l punto B ( x , y ) s c a n f ( ”% l f % l f ” , &B . x , &B . y ) ;
Universidad de Guanajuato, DCI, Campus Le´ on
28 / 29
\n” ) ; \n” ) ;
Programcai´ on B´ asica Arreglos y Estructuras de Datos (2)
Estructuras de Datos
Soluci´ on (2) // c a l c u l a m o s l a d i s t a n c i a e n t r e ambos p u n t o s . D i s t a n c i a = s q r t ( pow ( ( B . x−A . x ) , 2 ) + pow ( ( B . y−A . y ) , 2 ) ) ; p r i n t f ( ” La d i s t a n c i a e s : % l f \n” , D i s t a n c i a ) ; return (0); }
Para crear el ejecutable incluir la libreria math.h en el enlazador (caso particular de fedora) g c c d i s t a n c i a . c −lm −o d i s t a n c i a . o u t
Universidad de Guanajuato, DCI, Campus Le´ on
29 / 29
Programcai´ on B´ asica Arreglos y Estructuras de Datos (2)