SlideShare uma empresa Scribd logo
1 de 24
http://www.eps.uam.es/~phaya
PROG-I
2009-10
MACROS Y TIPOS DE
DATOS AVANZADOS
Tema 4 – 4.1 y 4.2
1 2 3 4 5
1 - X
2 -
3 - - X X
4 X - -
5 X -
6 - X
7 - - -
PROG-I /24PROG-I
Objetivos
Semana 6
4.1 Definir macros y tipos de datos en C, y hacer uso de arrays y
estructuras
Curso 2009-10Tema 4 - Macros y tipos de datos 2
Macros
Curso 2009-10Tema 4 - Macros y tipos de datos 3
PROG-I /24PROG-I
Preprocesador
 ABC, Capítulo 8, 8.1-8.4, 8.8, 8.9
 #include
 #define
 #define SEGUNDOS 60
 #define SEGUNDOS_DIA (60*60*24)
 #define POS(c) ((c)-'a')
 #define SQR(X) ((x)*(x))
 Compilacion condicional
 #ifndef CTE
#define CTE
…
#endif
 Macros predefinidas
 __DATE__, __FILE__, __LINE__, __STDC__, __TIME__
Arrays
PROG-I /24PROG-I
Problema
 Realizar un programa lance un dado de seis caras n
veces y devuelva cuantas veces se obtiene cada cara.
for (i=1; i < n; i++)
{
tirada = (rand() % 6) + 1;
if (tirada == 1)
cara1++;
else if (tirada == 2)
cara2++;
else if (tirada == 3)
cara3++;
else if (tirada == 4)
cara4++;
else if (tirada == 5)
cara5++;
else if (tirada == 6)
cara6++;
}
for (i=1; i < n; i++)
{
tirada = (rand() % 6) + 1;
switch (tirada)
{
case 1: cara1++;
break;
case 2: cara2++;
break;
case 3: cara3++;
break;
case 4: cara4++;
break;
case 5: cara5++;
break;
case 6: cara6++;
break;
}
} Curso 2009-10 6Tema 4 - Macros y tipos de datos
PROG-I /24PROG-I
Arrays
 Estructura de datos estática que permite agrupar una colección
ordenada de valores que comparten un mismo tipo.
nombre
v1
v2
v3
v4
v5
v6
v7
v8
v9
14
Ejemplo:
caras: array de 1 a 6 posiciones de números
enteros caras
nombre[0]
nombre[1]
nombre[2]
nombre[3]
nombre[4]
nombre[5]
nombre[6]
nombre[7]
nombre[8]
10
8
9
10
11
caras[0]
caras[1]
caras[2]
caras[3]
caras[4]
cara
s
nombre del array [5]
subíndice
contenido
Curso 2009-10 7Tema 4 - Macros y tipos de datos
PROG-I /24PROG-I
Arrays en C
 <tipo> <nombre>[TAMANO];
donde <TAMANO> debe ser un entero positivo.
 int caras [6]; /* 6 elementos */
 float notas [MAXALUMNOS]; /* MAXALUMNOS elementos*/
 int cuenta['z'-'a' + 1]; /* 26 elementos */
 El máximo número de elemento que se puede almacenar es fijo.
 Los índices tiene rango desde 0..TAMANO-1
 int caras[6] /* espacio para caras[0], cara[1] …cara[5] */
 Inicialización
 float coef[4] = {0.1, 0.2, 0.5, 0.7};
/* coef[0] = 0.1 coef[1] = 0.2 coef[2] = 0.5 coef[3] = 0.7 */
 float coef[] = {0.1, 0.2, 0.5, 0.7};
/* coef[0] = 0.1 coef[1] = 0.2 coef[2] = 0.5 coef[3] = 0.7 */
 float coef[4] = {0.1};
/* coef[0] = 0.1 coef[1] = 0 coef[2] = 0 coef[3] = 0 */
 Uso typedef
 #define N 4
typedef float vector[N];
vector coef;
Curso 2009-10 8Tema 4 - Macros y tipos de datos
PROG-I /24PROG-I
Arrays
Curso 2009-10Tema 4 - Macros y tipos de datos 9
ee
lanzadado.c
main
int caras[6] = {14, 10, 8, 9, 10, 11};
carascaras
14 10 8 9 10 11
PROG-I /24PROG-I
Acceder a los valores
 Los valores de un array se acceden mediante el nombre y la
posición (o índice) que se quiere acceder: nombre[índice].
 Acceso directo (o aleatorio)
 Ej:
 x[1] = 2;
 x[i] = 3;
 x[i-3] = y[j];
 x[2] = x[5];
 x[i] = rand();
 x[y[i] – 2] = 5;
 w[OCT] = TEMP_MAX;
 y[i] := z['b'-'a'];
 z[pos('k')]++;
 x[i++] = y[j++];
 x[++i] = 20;
 El índice nunca deberá ser mayor que el límite superior ni menor
que el límite inferior.
#define TEMP_MAX 25.5
#define TAM_ALFA 'z'-'a'+1
#define pos(c) ((c)-'a')
enum {ENE, FEB, MAR, MAY, JUN, JUL,
AGO, SEP, OCT, NOV, DIC};
int main()
{
int x[100] , y[100];
float w[12];
int z[TAM_ALFA];
Curso 2009-10 10Tema 4 - Macros y tipos de datos
PROG-I /24PROG-I
Ejemplos básicos
 Rellenar los valores de un array a un valor
constante.for (i = 0; i < N; i++)
v[i] = CONSTANTE;
float v[N];
int i;
 Rellenar los valores de un array leyéndolos
for (i = 0; i < N; i++)
scanf("%f", &v[i]);
 Imprimir el contenido
for (i = 1; i < N; i++)
printf("%2.1f ", v[i]);
Curso 2009-10 11Tema 4 - Macros y tipos de datos
 Copiar un array a otro:
for (i = 0; i < N; i++)
a[i] = b[i];
PROG-I /24PROG-I
Arrays bidimensionales
 Array unidimensionales: vector
 Array de dos dimensiones: tabla
Columnas
Filas
0 1
0
1
2
3
#define NFILAS 4
#define NCOLUMNAS 2
int matriz[NFILAS][NCOLUMNAS];
 En general: arrays multidimensionales
 int matriz[100][100][100];
Curso 2009-10 12Tema 4 - Macros y tipos de datos
PROG-I /24PROG-I
Asignación bidimensional
Columnas
Filas
0 1
0
1
2
3
(0,0) (0,1)
(1,0) (1,1)
(2,0) (2,1)
(3,0) (3,1)
Columnas
Filas
0 1
0
1
2
3
12 3
4 23
100 10
2 3
Ej1:
#define NFILAS 4
#define NCOLUMNAS 2
int main(void)
{
int matriz[NFILAS][NCOLUMNAS]
matriz [0][0]= 12;
matriz [0][1]= 3;
matriz [1][0]= 4;
matriz [1][1]= 23;
matriz [2][0]= 100;
matriz [2][1]= 10;
matriz [3][0]= 2;
matriz [3][1]= 3;
Curso 2009-10 13Tema 4 - Macros y tipos de datos
PROG-I /24PROG-I
Ejemplos básicos
 Rellenar los valores de un array a un valor
constante.for (i = 0; i < NFILAS; i++)
for (j = 0; j < NCOLUMNAS; j++)
matriz[i][j] = CONSTANTE;
int matriz[NFILAS][NCOLUMNAS];
int i, j;
 Imprimir el contenido
 Rellenar los valores de un array leyéndolos
for (i = 0; i < NFILAS; i++)
for (j = 0; j < NCOLUMNAS; j++)
scanf("%f", &matriz[i][j]);
for (i = 0; i < NFILAS; i++){
for (j = 0; j < NCOLUMNAS; j++)
prinf("%2.1f ",matriz[i][j]);
printf("n");
}
Curso 2009-10 14Tema 4 - Macros y tipos de datos
PROG-I /24PROG-I
 Tipo especial de array que cumple dos propiedades
 tipo char
 incluye delimitador de fin de cadena => '0' (carácter nulo)
 char nombre[6] = "Holan";
 char nombre[] = "Holan"; /* sizeof(nombre) = 6 */
H o l a n 0nombre
0 1 2 3 4 5
Cadenas de caracteres
 char nombre[TAM_MAX+1];
 scanf("%s", nombre);
 Longitud efectiva vs. tamaño del array
 Funciones con cadenas
 <string.h>
 strlen, strcpy, strncpy, strcmp, strncmp, strchr
 véase ABC Apéndice A, pag. 671-675
Curso 2009-10 15Tema 4 - Macros y tipos de datos
Registros
PROG-I /24PROG-I
Registros
 Permite agrupar valores con tipos heterogéneos.
 Los valores de un registro se acceden por nombre, en
vez de por índice.
struct registro {
tipo1 campo1;
tipo2 campo2;
…
tipoN campoN;
} variable;
struct registro {
tipo1 campo1;
tipo2 campo2;
…
tipoN campoN;
};
typedef struct registro {
tipo1 campo1;
tipo2 campo2;
…
tipoN campoN;
} TipoDato;
struct {
tipo1 campo1;
tipo2 campo2;
…
tipoN campoN;
} variable;
Curso 2009-10 17Tema 4 - Macros y tipos de datos
PROG-I /24PROG-I
Ejemplos
#define MAX 255
struct Direccion {
enum {AVENIDA,CALLE, PLAZA, TRAVESIA} via ;
char nombre[MAX+1];
int numero;
};
struct Fecha {
int dia, mes, anio;
};
struct Persona {
char nombre[MAX+1];
enum {M, F} sexo;
struct Fecha fnac;
struct Direccion domicilio;
};
Curso 2009-10 18Tema 4 - Macros y tipos de datos
PROG-I /24PROG-I
Ejemplos
Curso 2009-10Tema 4 - Macros y tipos de datos 19
int main(void)
{
struct direccion a;
struct fecha f;
struct persona p;
…
typedef enum {AVENIDA, CALLE, PLAZA, TRAVESIA} Via;
…
typedef struct direccion {
Via via;
char nombre[MAX_TAM+1];
unsigned short numero;
}Direccion;
…
int main(void)
{
Direccion a;
Fecha f;
Persona p;
…
PROG-I /24PROG-I
Operaciones con registros (I)
 Acceso a un campo:
 Asignar valor a un campo
individual
strcpy(p.nombre,"Pablo");
p.sexo = M;
p.fnac.dia = 23;

Tomar valores
strcpy(s, p.nombre)
sexo = p.sexo;
d = p.fnac.dia;

Asignación
r = p;
typedef struct persona
char nombre[MAX_TAM+1];
Sexo sexo;
Fecha fnac;
Direccion domicilio;
} Persona;
int main(void)
{
Persona p = {"Pedro",F,
{30,01,1978}, {CALLE, "Gran
Via", 18 }}
Persona r;
char nombre[MAX_TAM+1] s;
Sexo sexo;
int d;
Curso 2009-10 20Tema 4 - Macros y tipos de datos
PROG-I /24PROG-I
Operaciones con registros (II)
 Inicialización de estructuras:
Persona p = {"Pedro",F, {30,01,1978}, {CALLE, "Gran Via", 18 }}
 Lectura: Cada campo de manera individual
scanf("%s", &p.nombre);
scanf("%d%d%d", &p.fnac.dia, &p.fnac.mes, &p.fnac.ano);
 Escritura: Cada campo de manera individual
printf("%s", p.nombre);
printf("%s", sAc(p.sexo));
printf("%d/%d/%d", p.fnac.dia, p.fnac.mes, p.fnac.ano);
nombre sexo fnac domicilio
dia mes anio via nombre
numero
Curso 2009-10 21Tema 4 - Macros y tipos de datos
PROG-I /24PROG-I
Uniones
 Uniones: Registros
variables
 Como una estructura pero
todos comparten los
campos comparten en el
mismo espacio de memoria
union Longitud {
float metros;
double centrimetros;
long pulgadas;
};
 Las uniones no se pueden
inicializar en la declaración
uniones.c
ee
main
ll
Longitud l
Curso 2009-10 22Tema 4 - Macros y tipos de datos
PROG-I /24PROG-I
Uniones y Estructuras
typedef struct {
char nombre[MAX+1];
Sexo sexo;
Fecha fnac;
Direccion domicilio;
Nacionalidad nac;
union {
unsigned dni;
char
pasaporte[MAX+1];
} u;
} Persona;
 Una estructura puede tener
anidadas una o más
uniones.
 Una unión puede tener una
o más estructuras.
struct mamifero {
int npatas;
};
struct ave {
int nhuevos;
};
struct pez {
enum {SALADA, DULCE} agua;
};
union Vertebrado {
unsigned peso;
struct mamifero m;
struct ave a;
struct pez p;
};
Curso 2009-10 23Tema 4 - Macros y tipos de datos
PROG-I /24PROG-I
Arrays de registros
#include <string.h>
enum {NALUMNOS = 100, MAX=255};
typedef struct {
char nombre[MAX+1];
char apellidos[MAX+1];
float nota;
} Alumno;
int main(void) {
Alumno clase[NALUMNOS];
Alumno clase2[] = {{"Pablo", "Haya Coll", 9.9},
{"Pablo", "Varona", 9.9}};
strcpy(clase[0].nombre, "Pablo");
strcpy(clase[0].apellidos, "Haya Coll");
clase[0].nota = 9.9;
return 0;
}
Curso 2009-10 24Tema 4 - Macros y tipos de datos

Mais conteúdo relacionado

Mais procurados

Ejemplos Para Dev C++
Ejemplos Para Dev C++Ejemplos Para Dev C++
Ejemplos Para Dev C++
cemayoral
 
ED 01 tipos_datos_ejercicios
ED 01 tipos_datos_ejerciciosED 01 tipos_datos_ejercicios
ED 01 tipos_datos_ejercicios
A J
 
Código fuente en c
Código fuente en cCódigo fuente en c
Código fuente en c
Pedro Julian
 

Mais procurados (20)

Clase3_Python-CTIC
Clase3_Python-CTICClase3_Python-CTIC
Clase3_Python-CTIC
 
Programación 1: arreglos en C
Programación 1: arreglos en CProgramación 1: arreglos en C
Programación 1: arreglos en C
 
Clase2_Python-CTIC
Clase2_Python-CTICClase2_Python-CTIC
Clase2_Python-CTIC
 
Tipos de datos
Tipos de datosTipos de datos
Tipos de datos
 
Ejemplos Para Dev C++
Ejemplos Para Dev C++Ejemplos Para Dev C++
Ejemplos Para Dev C++
 
ED 01 tipos_datos_ejercicios
ED 01 tipos_datos_ejerciciosED 01 tipos_datos_ejercicios
ED 01 tipos_datos_ejercicios
 
Arreglos multidimensionales y de apuntadores
Arreglos multidimensionales y de apuntadoresArreglos multidimensionales y de apuntadores
Arreglos multidimensionales y de apuntadores
 
Estructuras punteros
Estructuras punterosEstructuras punteros
Estructuras punteros
 
Ejercicios de programación.
Ejercicios de programación.Ejercicios de programación.
Ejercicios de programación.
 
Programación 1: tipos básicos de datos en C
Programación 1: tipos básicos de datos en CProgramación 1: tipos básicos de datos en C
Programación 1: tipos básicos de datos en C
 
Script de Punteros a Funciones
Script de Punteros a FuncionesScript de Punteros a Funciones
Script de Punteros a Funciones
 
Punteros a Funciones en C
Punteros a Funciones en CPunteros a Funciones en C
Punteros a Funciones en C
 
AsignacióN DináMica
AsignacióN DináMicaAsignacióN DináMica
AsignacióN DináMica
 
Bucles anidados 2012
Bucles anidados 2012Bucles anidados 2012
Bucles anidados 2012
 
Creacion de proyecto_en_netbeans
Creacion de proyecto_en_netbeansCreacion de proyecto_en_netbeans
Creacion de proyecto_en_netbeans
 
4 memoria dinamica
4 memoria dinamica4 memoria dinamica
4 memoria dinamica
 
Código fuente en c
Código fuente en cCódigo fuente en c
Código fuente en c
 
Clase1_Python-CTIC
Clase1_Python-CTICClase1_Python-CTIC
Clase1_Python-CTIC
 
Python workshop
Python workshopPython workshop
Python workshop
 
Luis Gamboa
Luis  GamboaLuis  Gamboa
Luis Gamboa
 

Destaque

19257010052355706554687048494556 macros excel-vi
19257010052355706554687048494556 macros excel-vi19257010052355706554687048494556 macros excel-vi
19257010052355706554687048494556 macros excel-vi
gerardochoque
 
Curso cei 324 uso de macros en excel para informes sap
Curso cei 324   uso de macros en excel para informes sapCurso cei 324   uso de macros en excel para informes sap
Curso cei 324 uso de macros en excel para informes sap
Procasecapacita
 
Presentación inicial curso Introducción a las Macros en Excel
Presentación inicial curso Introducción a las Macros en ExcelPresentación inicial curso Introducción a las Macros en Excel
Presentación inicial curso Introducción a las Macros en Excel
Ricardo Peláez Negro
 

Destaque (20)

Exposicion Macros
Exposicion MacrosExposicion Macros
Exposicion Macros
 
19257010052355706554687048494556 macros excel-vi
19257010052355706554687048494556 macros excel-vi19257010052355706554687048494556 macros excel-vi
19257010052355706554687048494556 macros excel-vi
 
Curso cei 324 uso de macros en excel para informes sap
Curso cei 324   uso de macros en excel para informes sapCurso cei 324   uso de macros en excel para informes sap
Curso cei 324 uso de macros en excel para informes sap
 
Macros en Excel
Macros en ExcelMacros en Excel
Macros en Excel
 
Iniciacion macros
Iniciacion macrosIniciacion macros
Iniciacion macros
 
Macros de excel
Macros de excelMacros de excel
Macros de excel
 
07 funciones
07 funciones07 funciones
07 funciones
 
Presentación inicial curso Introducción a las Macros en Excel
Presentación inicial curso Introducción a las Macros en ExcelPresentación inicial curso Introducción a las Macros en Excel
Presentación inicial curso Introducción a las Macros en Excel
 
Creando macros en Excel 2010 para programdores
Creando macros en Excel 2010 para programdoresCreando macros en Excel 2010 para programdores
Creando macros en Excel 2010 para programdores
 
Funciones y macros con excel
Funciones y macros con excelFunciones y macros con excel
Funciones y macros con excel
 
Macros excel
Macros excelMacros excel
Macros excel
 
Taller 1 macros excel renee gonzalez martinez
Taller 1 macros excel renee gonzalez martinezTaller 1 macros excel renee gonzalez martinez
Taller 1 macros excel renee gonzalez martinez
 
Ejercicio20
Ejercicio20Ejercicio20
Ejercicio20
 
Creacion de macros
Creacion de macrosCreacion de macros
Creacion de macros
 
Crear macros
Crear macrosCrear macros
Crear macros
 
Macros en Excel Parte V
Macros en Excel Parte VMacros en Excel Parte V
Macros en Excel Parte V
 
Introducción a macros
Introducción a macrosIntroducción a macros
Introducción a macros
 
Macros Basicos
Macros BasicosMacros Basicos
Macros Basicos
 
macros en excel
macros en excel macros en excel
macros en excel
 
Macros en Excel PT. 2
Macros en Excel PT. 2Macros en Excel PT. 2
Macros en Excel PT. 2
 

Semelhante a Tema 4 - Tipos datos avanzados (I)

Informe tecnico victor_uex
Informe tecnico victor_uexInforme tecnico victor_uex
Informe tecnico victor_uex
victoruex
 
Pres arreglosmat animacion
Pres arreglosmat animacionPres arreglosmat animacion
Pres arreglosmat animacion
JLAntonio
 
GuíA De PráCtica 2
GuíA De PráCtica 2GuíA De PráCtica 2
GuíA De PráCtica 2
louis
 
UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)
UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)
UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)
Videoconferencias UTPL
 
3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (2)
3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (2)3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (2)
3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (2)
luis freddy
 
3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (5)
3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (5)3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (5)
3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (5)
luis freddy
 

Semelhante a Tema 4 - Tipos datos avanzados (I) (20)

MODELO PASO DE MENSAJES
MODELO PASO DE MENSAJESMODELO PASO DE MENSAJES
MODELO PASO DE MENSAJES
 
Informe tecnico victor_uex
Informe tecnico victor_uexInforme tecnico victor_uex
Informe tecnico victor_uex
 
Arreglos java
Arreglos javaArreglos java
Arreglos java
 
Pres arreglosmat animacion
Pres arreglosmat animacionPres arreglosmat animacion
Pres arreglosmat animacion
 
06 - Arrays y matrices en lenguaje C
06 - Arrays y matrices en lenguaje C06 - Arrays y matrices en lenguaje C
06 - Arrays y matrices en lenguaje C
 
GuíA De PráCtica 2
GuíA De PráCtica 2GuíA De PráCtica 2
GuíA De PráCtica 2
 
Arreglos
ArreglosArreglos
Arreglos
 
UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)
UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)
UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)
 
Cpp
CppCpp
Cpp
 
Cpp
CppCpp
Cpp
 
Laboratorio1 entrada-salida de datos / Lenguance C
Laboratorio1   entrada-salida de datos / Lenguance CLaboratorio1   entrada-salida de datos / Lenguance C
Laboratorio1 entrada-salida de datos / Lenguance C
 
Universidad técnica de ambato
Universidad técnica de ambatoUniversidad técnica de ambato
Universidad técnica de ambato
 
Práctica 12
Práctica 12Práctica 12
Práctica 12
 
Transparencias8
Transparencias8Transparencias8
Transparencias8
 
Guia 12 js
Guia 12 jsGuia 12 js
Guia 12 js
 
Tema 5 - Estructuras de datos.pdf
Tema 5 - Estructuras de datos.pdfTema 5 - Estructuras de datos.pdf
Tema 5 - Estructuras de datos.pdf
 
3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (2)
3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (2)3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (2)
3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (2)
 
3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (5)
3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (5)3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (5)
3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (5)
 
Arreglos
ArreglosArreglos
Arreglos
 
Arrays unidimensionales
Arrays unidimensionalesArrays unidimensionales
Arrays unidimensionales
 

Mais de Pablo Haya (7)

2017 12-15-iv jornadas innovación psicología
2017 12-15-iv jornadas innovación psicología2017 12-15-iv jornadas innovación psicología
2017 12-15-iv jornadas innovación psicología
 
Introducción a la interacción en mesas multicontacto
Introducción a la interacción en mesas multicontactoIntroducción a la interacción en mesas multicontacto
Introducción a la interacción en mesas multicontacto
 
Interaccion natural
Interaccion naturalInteraccion natural
Interaccion natural
 
Experimentación en Interacción Persona-Ordenador
Experimentación en Interacción Persona-OrdenadorExperimentación en Interacción Persona-Ordenador
Experimentación en Interacción Persona-Ordenador
 
Diseño de la interacción
Diseño de la interacciónDiseño de la interacción
Diseño de la interacción
 
Tema 3 - Técnicas básicas de diseño de algoritmos
Tema 3 - Técnicas básicas de diseño de algoritmosTema 3 - Técnicas básicas de diseño de algoritmos
Tema 3 - Técnicas básicas de diseño de algoritmos
 
Tema 1 - Introducción
Tema 1  - IntroducciónTema 1  - Introducción
Tema 1 - Introducción
 

Último

5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL
5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL
5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL
MiNeyi1
 
6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf
6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf
6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf
MiNeyi1
 
Cuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdfCuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdf
NancyLoaa
 

Último (20)

ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
 
Unidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la InvestigaciónUnidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la Investigación
 
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
 
5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL
5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL
5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL
 
2024 KIT DE HABILIDADES SOCIOEMOCIONALES.pdf
2024 KIT DE HABILIDADES SOCIOEMOCIONALES.pdf2024 KIT DE HABILIDADES SOCIOEMOCIONALES.pdf
2024 KIT DE HABILIDADES SOCIOEMOCIONALES.pdf
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcción
 
origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literario
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
 
6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf
6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf
6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf
 
Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...
 
Sesión de clase: Fe contra todo pronóstico
Sesión de clase: Fe contra todo pronósticoSesión de clase: Fe contra todo pronóstico
Sesión de clase: Fe contra todo pronóstico
 
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLAACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
 
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).pptPINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
 
Cuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdfCuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdf
 
Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes d
 
PIAR v 015. 2024 Plan Individual de ajustes razonables
PIAR v 015. 2024 Plan Individual de ajustes razonablesPIAR v 015. 2024 Plan Individual de ajustes razonables
PIAR v 015. 2024 Plan Individual de ajustes razonables
 
Medición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptxMedición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptx
 
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñoproyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
 
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptxLA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
 

Tema 4 - Tipos datos avanzados (I)

  • 1. http://www.eps.uam.es/~phaya PROG-I 2009-10 MACROS Y TIPOS DE DATOS AVANZADOS Tema 4 – 4.1 y 4.2 1 2 3 4 5 1 - X 2 - 3 - - X X 4 X - - 5 X - 6 - X 7 - - -
  • 2. PROG-I /24PROG-I Objetivos Semana 6 4.1 Definir macros y tipos de datos en C, y hacer uso de arrays y estructuras Curso 2009-10Tema 4 - Macros y tipos de datos 2
  • 3. Macros Curso 2009-10Tema 4 - Macros y tipos de datos 3
  • 4. PROG-I /24PROG-I Preprocesador  ABC, Capítulo 8, 8.1-8.4, 8.8, 8.9  #include  #define  #define SEGUNDOS 60  #define SEGUNDOS_DIA (60*60*24)  #define POS(c) ((c)-'a')  #define SQR(X) ((x)*(x))  Compilacion condicional  #ifndef CTE #define CTE … #endif  Macros predefinidas  __DATE__, __FILE__, __LINE__, __STDC__, __TIME__
  • 6. PROG-I /24PROG-I Problema  Realizar un programa lance un dado de seis caras n veces y devuelva cuantas veces se obtiene cada cara. for (i=1; i < n; i++) { tirada = (rand() % 6) + 1; if (tirada == 1) cara1++; else if (tirada == 2) cara2++; else if (tirada == 3) cara3++; else if (tirada == 4) cara4++; else if (tirada == 5) cara5++; else if (tirada == 6) cara6++; } for (i=1; i < n; i++) { tirada = (rand() % 6) + 1; switch (tirada) { case 1: cara1++; break; case 2: cara2++; break; case 3: cara3++; break; case 4: cara4++; break; case 5: cara5++; break; case 6: cara6++; break; } } Curso 2009-10 6Tema 4 - Macros y tipos de datos
  • 7. PROG-I /24PROG-I Arrays  Estructura de datos estática que permite agrupar una colección ordenada de valores que comparten un mismo tipo. nombre v1 v2 v3 v4 v5 v6 v7 v8 v9 14 Ejemplo: caras: array de 1 a 6 posiciones de números enteros caras nombre[0] nombre[1] nombre[2] nombre[3] nombre[4] nombre[5] nombre[6] nombre[7] nombre[8] 10 8 9 10 11 caras[0] caras[1] caras[2] caras[3] caras[4] cara s nombre del array [5] subíndice contenido Curso 2009-10 7Tema 4 - Macros y tipos de datos
  • 8. PROG-I /24PROG-I Arrays en C  <tipo> <nombre>[TAMANO]; donde <TAMANO> debe ser un entero positivo.  int caras [6]; /* 6 elementos */  float notas [MAXALUMNOS]; /* MAXALUMNOS elementos*/  int cuenta['z'-'a' + 1]; /* 26 elementos */  El máximo número de elemento que se puede almacenar es fijo.  Los índices tiene rango desde 0..TAMANO-1  int caras[6] /* espacio para caras[0], cara[1] …cara[5] */  Inicialización  float coef[4] = {0.1, 0.2, 0.5, 0.7}; /* coef[0] = 0.1 coef[1] = 0.2 coef[2] = 0.5 coef[3] = 0.7 */  float coef[] = {0.1, 0.2, 0.5, 0.7}; /* coef[0] = 0.1 coef[1] = 0.2 coef[2] = 0.5 coef[3] = 0.7 */  float coef[4] = {0.1}; /* coef[0] = 0.1 coef[1] = 0 coef[2] = 0 coef[3] = 0 */  Uso typedef  #define N 4 typedef float vector[N]; vector coef; Curso 2009-10 8Tema 4 - Macros y tipos de datos
  • 9. PROG-I /24PROG-I Arrays Curso 2009-10Tema 4 - Macros y tipos de datos 9 ee lanzadado.c main int caras[6] = {14, 10, 8, 9, 10, 11}; carascaras 14 10 8 9 10 11
  • 10. PROG-I /24PROG-I Acceder a los valores  Los valores de un array se acceden mediante el nombre y la posición (o índice) que se quiere acceder: nombre[índice].  Acceso directo (o aleatorio)  Ej:  x[1] = 2;  x[i] = 3;  x[i-3] = y[j];  x[2] = x[5];  x[i] = rand();  x[y[i] – 2] = 5;  w[OCT] = TEMP_MAX;  y[i] := z['b'-'a'];  z[pos('k')]++;  x[i++] = y[j++];  x[++i] = 20;  El índice nunca deberá ser mayor que el límite superior ni menor que el límite inferior. #define TEMP_MAX 25.5 #define TAM_ALFA 'z'-'a'+1 #define pos(c) ((c)-'a') enum {ENE, FEB, MAR, MAY, JUN, JUL, AGO, SEP, OCT, NOV, DIC}; int main() { int x[100] , y[100]; float w[12]; int z[TAM_ALFA]; Curso 2009-10 10Tema 4 - Macros y tipos de datos
  • 11. PROG-I /24PROG-I Ejemplos básicos  Rellenar los valores de un array a un valor constante.for (i = 0; i < N; i++) v[i] = CONSTANTE; float v[N]; int i;  Rellenar los valores de un array leyéndolos for (i = 0; i < N; i++) scanf("%f", &v[i]);  Imprimir el contenido for (i = 1; i < N; i++) printf("%2.1f ", v[i]); Curso 2009-10 11Tema 4 - Macros y tipos de datos  Copiar un array a otro: for (i = 0; i < N; i++) a[i] = b[i];
  • 12. PROG-I /24PROG-I Arrays bidimensionales  Array unidimensionales: vector  Array de dos dimensiones: tabla Columnas Filas 0 1 0 1 2 3 #define NFILAS 4 #define NCOLUMNAS 2 int matriz[NFILAS][NCOLUMNAS];  En general: arrays multidimensionales  int matriz[100][100][100]; Curso 2009-10 12Tema 4 - Macros y tipos de datos
  • 13. PROG-I /24PROG-I Asignación bidimensional Columnas Filas 0 1 0 1 2 3 (0,0) (0,1) (1,0) (1,1) (2,0) (2,1) (3,0) (3,1) Columnas Filas 0 1 0 1 2 3 12 3 4 23 100 10 2 3 Ej1: #define NFILAS 4 #define NCOLUMNAS 2 int main(void) { int matriz[NFILAS][NCOLUMNAS] matriz [0][0]= 12; matriz [0][1]= 3; matriz [1][0]= 4; matriz [1][1]= 23; matriz [2][0]= 100; matriz [2][1]= 10; matriz [3][0]= 2; matriz [3][1]= 3; Curso 2009-10 13Tema 4 - Macros y tipos de datos
  • 14. PROG-I /24PROG-I Ejemplos básicos  Rellenar los valores de un array a un valor constante.for (i = 0; i < NFILAS; i++) for (j = 0; j < NCOLUMNAS; j++) matriz[i][j] = CONSTANTE; int matriz[NFILAS][NCOLUMNAS]; int i, j;  Imprimir el contenido  Rellenar los valores de un array leyéndolos for (i = 0; i < NFILAS; i++) for (j = 0; j < NCOLUMNAS; j++) scanf("%f", &matriz[i][j]); for (i = 0; i < NFILAS; i++){ for (j = 0; j < NCOLUMNAS; j++) prinf("%2.1f ",matriz[i][j]); printf("n"); } Curso 2009-10 14Tema 4 - Macros y tipos de datos
  • 15. PROG-I /24PROG-I  Tipo especial de array que cumple dos propiedades  tipo char  incluye delimitador de fin de cadena => '0' (carácter nulo)  char nombre[6] = "Holan";  char nombre[] = "Holan"; /* sizeof(nombre) = 6 */ H o l a n 0nombre 0 1 2 3 4 5 Cadenas de caracteres  char nombre[TAM_MAX+1];  scanf("%s", nombre);  Longitud efectiva vs. tamaño del array  Funciones con cadenas  <string.h>  strlen, strcpy, strncpy, strcmp, strncmp, strchr  véase ABC Apéndice A, pag. 671-675 Curso 2009-10 15Tema 4 - Macros y tipos de datos
  • 17. PROG-I /24PROG-I Registros  Permite agrupar valores con tipos heterogéneos.  Los valores de un registro se acceden por nombre, en vez de por índice. struct registro { tipo1 campo1; tipo2 campo2; … tipoN campoN; } variable; struct registro { tipo1 campo1; tipo2 campo2; … tipoN campoN; }; typedef struct registro { tipo1 campo1; tipo2 campo2; … tipoN campoN; } TipoDato; struct { tipo1 campo1; tipo2 campo2; … tipoN campoN; } variable; Curso 2009-10 17Tema 4 - Macros y tipos de datos
  • 18. PROG-I /24PROG-I Ejemplos #define MAX 255 struct Direccion { enum {AVENIDA,CALLE, PLAZA, TRAVESIA} via ; char nombre[MAX+1]; int numero; }; struct Fecha { int dia, mes, anio; }; struct Persona { char nombre[MAX+1]; enum {M, F} sexo; struct Fecha fnac; struct Direccion domicilio; }; Curso 2009-10 18Tema 4 - Macros y tipos de datos
  • 19. PROG-I /24PROG-I Ejemplos Curso 2009-10Tema 4 - Macros y tipos de datos 19 int main(void) { struct direccion a; struct fecha f; struct persona p; … typedef enum {AVENIDA, CALLE, PLAZA, TRAVESIA} Via; … typedef struct direccion { Via via; char nombre[MAX_TAM+1]; unsigned short numero; }Direccion; … int main(void) { Direccion a; Fecha f; Persona p; …
  • 20. PROG-I /24PROG-I Operaciones con registros (I)  Acceso a un campo:  Asignar valor a un campo individual strcpy(p.nombre,"Pablo"); p.sexo = M; p.fnac.dia = 23;  Tomar valores strcpy(s, p.nombre) sexo = p.sexo; d = p.fnac.dia;  Asignación r = p; typedef struct persona char nombre[MAX_TAM+1]; Sexo sexo; Fecha fnac; Direccion domicilio; } Persona; int main(void) { Persona p = {"Pedro",F, {30,01,1978}, {CALLE, "Gran Via", 18 }} Persona r; char nombre[MAX_TAM+1] s; Sexo sexo; int d; Curso 2009-10 20Tema 4 - Macros y tipos de datos
  • 21. PROG-I /24PROG-I Operaciones con registros (II)  Inicialización de estructuras: Persona p = {"Pedro",F, {30,01,1978}, {CALLE, "Gran Via", 18 }}  Lectura: Cada campo de manera individual scanf("%s", &p.nombre); scanf("%d%d%d", &p.fnac.dia, &p.fnac.mes, &p.fnac.ano);  Escritura: Cada campo de manera individual printf("%s", p.nombre); printf("%s", sAc(p.sexo)); printf("%d/%d/%d", p.fnac.dia, p.fnac.mes, p.fnac.ano); nombre sexo fnac domicilio dia mes anio via nombre numero Curso 2009-10 21Tema 4 - Macros y tipos de datos
  • 22. PROG-I /24PROG-I Uniones  Uniones: Registros variables  Como una estructura pero todos comparten los campos comparten en el mismo espacio de memoria union Longitud { float metros; double centrimetros; long pulgadas; };  Las uniones no se pueden inicializar en la declaración uniones.c ee main ll Longitud l Curso 2009-10 22Tema 4 - Macros y tipos de datos
  • 23. PROG-I /24PROG-I Uniones y Estructuras typedef struct { char nombre[MAX+1]; Sexo sexo; Fecha fnac; Direccion domicilio; Nacionalidad nac; union { unsigned dni; char pasaporte[MAX+1]; } u; } Persona;  Una estructura puede tener anidadas una o más uniones.  Una unión puede tener una o más estructuras. struct mamifero { int npatas; }; struct ave { int nhuevos; }; struct pez { enum {SALADA, DULCE} agua; }; union Vertebrado { unsigned peso; struct mamifero m; struct ave a; struct pez p; }; Curso 2009-10 23Tema 4 - Macros y tipos de datos
  • 24. PROG-I /24PROG-I Arrays de registros #include <string.h> enum {NALUMNOS = 100, MAX=255}; typedef struct { char nombre[MAX+1]; char apellidos[MAX+1]; float nota; } Alumno; int main(void) { Alumno clase[NALUMNOS]; Alumno clase2[] = {{"Pablo", "Haya Coll", 9.9}, {"Pablo", "Varona", 9.9}}; strcpy(clase[0].nombre, "Pablo"); strcpy(clase[0].apellidos, "Haya Coll"); clase[0].nota = 9.9; return 0; } Curso 2009-10 24Tema 4 - Macros y tipos de datos

Notas do Editor

  1. NO DEJAR ESPACIOS EN LA DEFINICION define PONES PARÉNTESIS EN EL PARAMETRO Y EN LA EXPRESION NO PONER PUNTO Y COMA
  2. En la copia (suponiendo que * el tamaño de b es mayor ó igual que el de a * el tipo de los elementos de ambos arrays son compatibles)