Programación Básica Arreglos y Estructuras de Datos

Anuncio
Programación Básica
Arreglos y Estructuras de Datos (1)
Arturo Vega González
a.vega@ugto.mx
Division de Ciencias e Ingenierı́as
Universidad de Guanajuato
Campus León
Sesión 6
Universidad de Guanajuato, DCI, Campus León
1 / 17
Programcaión Básica
Arreglos y Estructuras de Datos
Contenido
1
Arreglos
2
Estructuras de Datos
Universidad de Guanajuato, DCI, Campus León
2 / 17
Programcaión Básica
Arreglos y Estructuras de Datos
Arreglos
Arreglos
Los arreglos son un conjunto de datos del mismo tipo que tienen
un ı́ndice para distinguirlos
La notación 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ón
3 / 17
Programcaión Básica
Arreglos y Estructuras de Datos
Arreglos
Declaración 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ón
4 / 17
Programcaión Básica
Arreglos y Estructuras de Datos
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 <3; ++t )
f o r ( i =0; i <4; ++i )
num [ t ] [ i ]=( t ∗4)+ i ∗ 1 ;
f o r ( t =0; t <3; ++t )
{
f o r ( i =0; i <4; ++i )
p r i n t f ( ”num[%d ] [ % d ] = %d ” , t , i , num [ t ] [ i ] ) ;
p r i n t f ( ” \n” ) ;
}
}
Universidad de Guanajuato, DCI, Campus León
5 / 17
Programcaión Básica
Arreglos y Estructuras de Datos
Arreglos
Cadenas de caracteres
Cadena o string se utiliza para manipular sı́mbolos o caracteres
alfanuméricos
Una Cadena es básicamente un arreglo de caracteres o del tipo
char
La terminación de la cadena se debe especificar con un caracter
nulo ’\0’
Por lo que hay que considerar un espacio mas!
Universidad de Guanajuato, DCI, Campus León
6 / 17
Programcaión Básica
Arreglos y Estructuras de Datos
Arreglos
Cadenas
#i n c l u d e < s t d i o . h>
i n t main ( v o i d ) {
char cadena [5]= ” hol a ” ;
c h a r c a d e n a 2 [ 5 ] = { ’ h ’ , ’ o ’ , ’ l ’ , ’ a ’ , ’ \0 ’ } ;
c h a r nombre [ 1 5 ] , a p e l l i d o s [ 3 0 ] ;
p r i n t f ( ” I n t r o d u c e t u nombre : ” ) ;
s c a n f ( ”%s ” , nombre ) ;
p r i n t f (” Introduce tus a p e l l i d o s : ” ) ;
s c a n f ( ”%s ” , a p e l l i d o s ) ;
p r i n t f ( ”Tu Nombre e s %s %s \n” , nombre , a p e l l i d o s ) ;
}
Universidad de Guanajuato, DCI, Campus León
7 / 17
Programcaión Básica
Arreglos y Estructuras de Datos
Arreglos
Operaciones con Cadenas
Las cadenas no se manipulan igual que los enteros o flotantes
#i n c l u d e < s t d i o . h>
i n t main ( v o i d ) {
c h a r nombre [ 1 5 ] ,
a p e l l i d o s [ 3 0 ] , nombrecompleto [ 5 0 ] ;
nombre = ”Ana M a rı́ a ” ;
\∗
I n c o r r e c t o ∗\
a p e l l i d o s = ” gómez gómez ” ;
\∗
I n c o r r e c t o ∗\
n o m b r e c o m p l e t o = nombre + a p e l l i d o s ;
\∗
I n c o r r e c t o ∗\
}
Universidad de Guanajuato, DCI, Campus León
8 / 17
Programcaión Básica
Arreglos y Estructuras de Datos
Arreglos
Ejercicio
Escribir un programa que calcule el promedio de un conjunto de
números dados por el usuario. El programa debe pedir al usuario un
numero entre 1 y 20 (tamaño del arreglo a promediar)
Universidad de Guanajuato, DCI, Campus León
9 / 17
Programcaión Básica
Arreglos y Estructuras de Datos
Estructuras de Datos
Introducción a Estructura de Datos
Conjunto de N elementos que están agrupados por medio de un
único nombre.
Pueden ser de distinto tipo
Es un tipo definido dentro del programa
Los elementos o miembros de la estructura pueden a su vez ser
otra estructura
double
int
o_
cha
Universidad de Guanajuato, DCI, Campus León
float
r
otr
o
tip
...
10 / 17
Programcaión Básica
Arreglos y Estructuras de Datos
Estructuras de Datos
Estructuras de Datos
Definición y declaración(1)
s t r u c t Nombre
{
t i p o 1 Campo1 ;
t i p o 2 Campo2 ;
...
t i p o N CampoN ;
} Alumno ;
Alumno es una variable del tipo Nombre
Universidad de Guanajuato, DCI, Campus León
11 / 17
Programcaión Básica
Arreglos y Estructuras de Datos
Estructuras de Datos
Estructuras de Datos
Definición (2)
s t r u c t Nombre
{
t i p o 1 Campo1 ;
t i p o 2 Campo2 ;
...
t i p o N CampoN ;
};
Declaración
s t r u c t Nombre Var1 ;
Universidad de Guanajuato, DCI, Campus León
12 / 17
Programcaión Básica
Arreglos y Estructuras de Datos
Estructuras de Datos
Estructuras de Datos
Acceso a los elementos de una estructura de datos.
Se realiza indicando nombre de la variable tipo estructura y el
elemento individual separados por un punto “.”
VariableEstructura.ElementoEstructura
Cuando se utilizan apuntadores (pointer), el separador es:
“− >”
VariableEstructura->ElementoEstructura
El procesamiento de una estructura solo se puede hacer
elemento por elemento.
Universidad de Guanajuato, DCI, Campus León
13 / 17
Programcaión Básica
Arreglos y Estructuras de Datos
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 = { 9 , ” Marzo ” , 2 0 1 2 } ,
V a r F e c ha ;
...
V a r F e c ha = Hoy ;
Hoy . Dia = 9 ;
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ón
14 / 17
||
Programcaión Básica
Arreglos y Estructuras de Datos
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ón
15 / 17
Programcaión Básica
Arreglos y Estructuras de Datos
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ón
16 / 17
Programcaión Básica
Arreglos y Estructuras de Datos
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ón
17 / 17
Programcaión Básica
Arreglos y Estructuras de Datos
Descargar