Professional Documents
Culture Documents
Bloque 1 Parte 2
Curso 2015/2016
SEMESTRE DE OTOO
Contenidos
Tipos de datos compuestos Array:
De una dimensin.
De varias dimensiones.
Estructuras de datos.
El tipo Puntero.
Array. Conceptos
Es una coleccin de elementos (variables) todas ellos del mismo tipo (de
Declaracin
natural.
Ejemplo
serie [0] = 7;
Ejemplo
Serie
100
Direccin 0
de memoria
100
104
108
112
116
serie
Direccin M
de memoria
Dimensin de un array
Cuidado con exceder la dimensin declarada de un array
El ndice no puede ser negativo
Ejemplo
Problema:
Acceso a memoria
fuera de los lmites
del array
serie [5] = 2;
11
Array en C: Asignacin
No existe una accin de asignacin que permita asignar valores a todos los
serie [3]= 6 + 5;
2
Ejemplo
3 serie [1] = serie [2] + serie [3];
3
11
16
11
Array constante
Definicin de un array constante (despus de ser inicializado no se puede
100
104
108
112
116
120
121
122
123
124
serie
vocales
Direccin M
de memoria
Error comn
#include <stdio.h>
int main (void) {
const int porcentaje [4]= { 7, 9, 12, 16 };
int iva [4];
int i;
#include <stdio.h>
int main (void) {
const int porcentaje [4]= { 7, 9, 12, 16 };
int iva [4];
iva = porcentaje;
}
return 0;
No se puede asignar
a un array una
nueva direccin a la
que apuntar!!!
direccionArray2
Serie
100
100
Ejemplo
int direccionArray2[] = serie;
Direccin 0
de memoria
100
104
108
112
116
serie
Direccin M
de memoria
#include <stdio.h>
int main (void) {
const int N = 4;
const int porcentaje [N] = { 7, 9, 12, 16 };
int iva [N] = { 7, 9, 12, 16 };
int i;
int iguales ;
i= 0;
do {
iguales = ( iva[i] == porcentaje[i] );
i++;
} while (iguales && i < N)
#include <stdio.h>
int main (void) {
const int N = 4;
const int porcentaje [N] = { 7, 9, 12, 16 };
int iva [N] = { 7, 9, 12, 16 };
int i;
i= 0;
while ( (i< 4) && (iva[i] == porcentaje[i]) {
i++;
}
Tamao de la 1 dimensin
Tamao de la N dimensin
2 Dimensin
2 Dimensin
tc[][0] tc[][1] tc[][2] tc[][3] tc[][4]
1 Dimensin
1 Dimensin
tc[0]
tc[1]
ti[2]
ti
tc
El tipo puntero en C
Las variables de tipo puntero almacenan direcciones de memoria.
Ejemplos:
/ * ENTOR NO */
int *pEntero;
double * pReal;
char * pCaracter;
indeterminado.
Cuando se desea que un puntero no referencie a ninguna variable pero
tenga un valor conocido, se le asigna constante NULL (un 0).
Significado
Ejemplo
&
&numero
*mipuntero
Interpretacin:
Direccin
Nombre
Contenido
........
.........
.........
100
num
104
otroNum
108
pEntero
112
pOtroEntero
.........
.......
........
Direccin
Nombre
Contenido
........
.........
.........
100
num
?2
104
otroNum
?3
108
pEntero
?0
112
pOtroEntero
100
?
.........
.......
........
num = 2;
otroNum = 3;
pEntero = NULL;
pOtroEntero = #
otroNum = (*pOtroEntero) + 5;
pEntero = pOtroEntero;
Direccin
Nombre
Contenido
........
.........
.........
100
num
?2
104
otroNum
3
?7
108
pEntero
?
NULL
100
112
pOtroEntero
100
?
.........
.......
........
num = 2;
otroNum = 3;
pEntero = NULL;
pOtroEntero = #
otroNum = (*pPtroEntero);
pEntero = pOtroEntero;
num = (*pOtroEntero) * (*pEntero);
otroNum = # ?
Direccin
Nombre
Contenido
........
.........
.........
100
num
?
2
4
104
otroNum
3
7
?
108
pEntero
?
NULL
100
112
pOtroEntero
100
?
.........
.......
........
Estructuras. Concepto
Es una coleccin de elementos (variables) que pueden ser de distinto tipo
por lo tanto ser posible definir variables de tipo estructura bajo esa
plantilla. Cada una de estas variables estar compuesta a su vez por las
variables que se definieron en la plantilla de la estructura.
Estructuras. Concepto
Ejemplo de objetos compuestos basado en tipos simples.
Complejos
Coordenadas
Factor
real
imaginaria
abscisa
ordenada
anio
coeficiente
Entero: Factor.anio
Real: Factor.coeficiente, Complejos.real,
Complejos.imaginaria, Coordenadas.abscisa,
Coordenadas.ordenadas,
Declaracin de estructuras
Complejos
real
imaginaria
Coordenadas
abscisa
ordenada
Factor
anio
coeficiente
struct Complejos
{
double real;
double imaginaria;
};
struct Coordenadas
{
double abscisa;
double ordenada;
};
struct Factor
{
int anio;
double coeficiente;
};
<nombre_objeto> . <nombre_campo>
complejoA.real = 13.5;
complejoA.imaginaria = 4.85;
A todos los efectos, el atributo de un objeto compuesto o estructura es
A tener en cuenta
Las variables de tipo estructura, a diferencia de los arrays, no almacenan
plantilla.
Se pueden asignar directamente.
NO se pueden comparar directamente (no est definido el operador
de igualdad ( == ) para estructuras)
Programacin I
Bloque 1 Parte 2
Curso 2015/2016
SEMESTRE DE OTOO