Sie sind auf Seite 1von 28

Programación II

Matemáticas Aplicadas y
Computación
Andrés Hernández Balderas

2018
1. Tipos de datos derivados
• Los tipos de datos simples:

Andrés Hernández Balderas - 2018 2


1.1 Estructuras (struct)

Alumno

Andrés Hernández Balderas - 2018 3


1.1 Estructuras (struct)

Datos independientes entre sí Datos agrupados (estructura)

A
l
u
m
n
o

Andrés Hernández Balderas - 2018 4


1.1.1 Definición
struct NombreEstructura
{
tipo variable1;
tipo variable2;
….
tipo variableN;
};

struct NombreEstructura NombreVariable;

//Se pueden declarar muchas variables del mismo tipo


Andrés Hernández Balderas - 2018 5
1.1.1 Definición
struct NombreEstructura
{
tipo variable1;
tipo variable2;
….
tipo variableN;
} NombreVariable;

//Se declara la estructura y se define la variable al mismo tiempo.

Andrés Hernández Balderas - 2018 6


1.1.1 Definición
struct
{
tipo variable1;
tipo variable2;
….
tipo variableN;
} NombreVariable;

//No se pueden declarar más variables del mismo tipo.

Andrés Hernández Balderas - 2018 7


1.1.1 Definición (Ejemplo)

struct Alumno
{
char NumeroCuenta[10];
char Nombre[30];
char ApPaterno[30];
char ApMaterno[30];
int Edad;
float Promedio;
};

struct Alumno AlumnoFESA;


Andrés Hernández Balderas - 2018 8
1.1.2 Inicialización de estructuras

struct NombreEstructura
{
tipo variable1;
tipo variable2;
….
tipo variableN;
} NombreVariable = {valor1,valor2,…,valorN};

Andrés Hernández Balderas - 2018 9


1.1.2 Inicialización de estructuras
(Ejemplo)
struct Alumno
{
char NumeroCuenta[10];
char Nombre[30];
char ApPaterno[30];
char ApMaterno[30];
int Edad;
float Promedio;
} AlumnoFESA = {“657895432”, “Juan”,
“Pérez”, ”Pérez”, 23, 8.25};

Andrés Hernández Balderas - 2018 10


1.1.3 Acceso a campos
struct NombreEstructura
{
tipo variable1;
tipo variable2;
….
tipo variableN;
} NombreVariable;
...
NombreVariable. variable1 = valor1;
NombreVariable. variable2 = valor2;
...
NombreVariable. variableN = valorN;

Andrés Hernández Balderas - 2018 11


1.1.3 Acceso a campos (Ejemplo)
struct Alumno
{ char NumeroCuenta[10];
char Nombre[30];
char ApPaterno[30];
char ApMaterno[30];
int Edad;
float Promedio;
} AlumnoFESA;
strcpy( AlumnoFESA.NumeroCuenta,”654356787”);
AlumnoFESA. Edad = 23;
AlumnoFESA. Promedio = 8.75;
Andrés Hernández Balderas - 2018 12
1.1.4 Funciones y estructuras
• Parámetros
struct NombreEstructura
{
tipo variable1;
tipo variable2;
….
tipo variableN;
};

tipo NombreFuncion(struct NombreEstructura NombreVariable, …)


{

}

Andrés Hernández Balderas - 2018 13


1.1.4 Funciones y estructuras
• Parámetros (Ejemplo)
struct Empleado
{
char nombre[60];
float sueldo;
};

float Impuesto(struct Empleado Trabajador)


{
return Trabajador.sueldo*0.12;
}

Andrés Hernández Balderas - 2018 14


1.1.4 Funciones y estructuras
• Retorno
struct NombreEstructura
{
tipo variable1;
tipo variable2;
….
tipo variableN;
};

struct NombreEstructura NombreFuncion(…)


{
struct NombreEstructura NombreVariable

return NombreVariable;
}
Andrés Hernández Balderas - 2018 15
1.1.4 Funciones y estructuras
• Retorno (Ejemplo)
struct Empleado
{
char nombre[60];
float sueldo;
};

struct Empleado Lectura( )


{
struct Empleado Trabajador;
gets(Trabajador.nombre);
scanf(“%f”, &Trabajador.sueldo);
return Trabajador;
} Andrés Hernández Balderas - 2018 16
1.1.5 Arreglos de tipo struct
struct NombreEstructura
{
tipo variable1;
tipo variable2;
….
tipo variableN;
};

struct NombreEstructura NombreVariable[Cantidad];


...
NombreVariable[indice].variableN=valor;

Andrés Hernández Balderas - 2018 17


1.1.5 Arreglos de tipo struct(Ejemplo)
struct Alumno
{
char NumeroCuenta[10];
char Nombre[30];
float Promedio;
};

struct Alumno AlumnosProgramacion[3];

for(i=0;i<Cantidad;i++)
{
printf("\nAlumno %d --------------------------------\n", i);
printf("Numero de cuenta: ");
gets(AlumnosProgramacion[i].NumeroCuenta);
printf("Nombre: ");
gets(AlumnosProgramacion[i].Nombre);
printf("Promedio: ");
scanf("%f", &AlumnosProgramacion[i].Promedio);
} Andrés Hernández Balderas - 2018 18
1.2 Typedef
Con typedef es posible poner alias a un tipo de
datos, ya sea simple o derivado

• Simple
typedef tipo alias
• Ejemplo
typedef float NumeroReal;
NumeroReal promedio;

Andrés Hernández Balderas - 2018 19


1.2 Typedef
• Derivado
typedef struct
{
tipo variable1;
tipo variable2;
….
tipo variableN;
} AliasEstructura;

AliasEstructura Variable;

Andrés Hernández Balderas - 2018 20


1.2 Typedef
• Ejemplo

typedef struct
{
char NumeroCuenta[10];
char Nombre[30];
float Promedio;
} Alumno;

Alumno AlumnoProgramacion;

Andrés Hernández Balderas - 2018 21


1.3 Union
• Una union es muy similar a una estructura,
tienen la misma forma pero la diferencia está en
el uso de memoria.
• En una estructura, cada elemento tiene una
asignación de memoria diferente (la memoria se
suma).
• En una union, todos los elementos usan la misma
memoria, la comparten (la cantidad de memoria
es igual a la del elemento más grande)
Andrés Hernández Balderas - 2018 22
1.3 Union
• Estructura
Alumno

9 + 30 + 4 = 43 bytes
Cada elemento es independiente porque están ubicados en asignaciones de
memoria diferentes
Andrés Hernández Balderas - 2018 23
1.3 Union
• union
Alumno

Max(9, 30, 4) = 30 bytes


El cambio de un elemento afecta a los demás ya que comparten la misma
memoria Andrés Hernández Balderas - 2018 24
1.3 Union

union Alumno
{
char NumeroCuenta[10];
char Nombre[30];
float Promedio;
};

union Alumno AlumnoProgramacion;

Andrés Hernández Balderas - 2018 25


1.4 Enumeración
• Una enumeración es una estructura.
• Una lista de elementos es asociada con una lista
de constantes numéricas enteras.
• Su principal uso es para dar un orden a
características cualitativas (días de la semana,
meses del año, categorías, etc.) o simplemente
para dar nombres a constantes.
• Por default inicia en 0 pero se puede establecer
un valor inicial para cada elemento.
Andrés Hernández Balderas - 2018 26
1.4 Enumeración

enum NombreEnumeración
{
categoría1 [ = valor1],
categoría2 [ = valor2],
...
categoríaN [ = valorN],
};

enum NombreEnumeración Variable;

Andrés Hernández Balderas - 2018 27


1.4 Enumeración
enum Dias
{
Domingo = 1, //Se cambia el default 0
Lunes, Martes,
Miercoles, Jueves,
Viernes, Sabado
};

enum Dias dia;

for (dia = Domingo; dia <= Sabado; dia++)


{
printf("%d \n", dia);
}

printf("Día miércoles: %d", Miercoles);


Andrés Hernández Balderas - 2018 28

Das könnte Ihnen auch gefallen