Tipos de Datos
Programación Técnica
1
UVM
1.1 Objetivos
El estudiante reconocerá los tipos
definidos de datos e identificará qué es
la abstracción de datos.
Programación Técnica
3
UVM
1.2 Temas a Cubrir
Tipos de datos y tamaños
Constantes
Declaraciones
Arreglos
Estructuras
Apuntadores
Programación Técnica
4
UVM
1.3 Tipos de datos y tamaños
char
int
float
double
Calificadores:
short
long
Programación Técnica
5
UVM
1.4 Constantes
1234 (int)
123456789L (long)
1234U (unsigned int)
1234UL (unsigned long)
F (float)
Programación Técnica
6
UVM
1.4.1 Constantes Simbólicas
#define nombre texto_dereemplazo
#include <stdio.h>
#define LOWER 0 /* lower limit of table */
#define UPPER 300 /* upper limit */
#define STEP 20 /* step size */
/* print Fahrenheit-Celsius table */
main()
{
int fahr;
for (fahr = LOWER; fahr <= UPPER; fahr = fahr + STEP)
printf("%3d %6.1f\n", fahr, (5.0/9.0)*(fahr32));
}
Programación Técnica
7
UVM
1.5 Declaraciones
int lower, upper, spep;
char c;
char line[100];
int i=0;
int limit=MAXLINE+1;
float eps=1.0e-5;
Programación Técnica
8
UVM
Ejercicio:
Escriba un programa en C que
despliegue el tamaño en bytes de los
siguientes tipos de datos
Programación Técnica
9
UVM
1.6 Arreglos
Conjunto ordenado que contiene un
número fijo de elementos (su
dimensión) de cualquier tipo válido
definido con la condición de que todos
deben ser del mismo tipo.
Programación Técnica
10
UVM
#include <stdio.h>
float data[5]; /* data to average and total */
float total; /* the total of the data items */
float average; /* average of the items */
int main()
{
data[0] = 34.0;
data[1] = 27.0;
data[2] = 45.0;
data[3] = 82.0;
data[4] = 22.0;
total = data[0] + data[1] + data[2] + data[3] + data[4];
average = total / 5.0;
printf("Total %f Average %f\n", total, average);
return (0);
}
Programación Técnica
11
UVM
1.6.1 Arreglos Multidimensionales
static char daytab[2][13] = {
{0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},
{0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}
};
daytab es un arreglo de 2 dimensiones. En C, un arreglo de 2
dimensiones es en realidad un arreglo de 1 dimensión, donde
cada uno de sus elementos es un arreglo. Por lo tanto los
subíndices se escribe;
daytab[i][j] /* [row][col] */
En vez de
daytab[i,j] /* EQUIVOCADO */
Programación Técnica
12
UVM
static char daytab[2][13] = {
{0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},
{0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}
};
int day_of_year(int year, int month, int day)
{
int i, leap;
leap = year%4 == 0 && year%100 != 0 || year%400 == 0;
for (i = 1; i < month; i++)
day += daytab[leap][i];
return day;
}
Programación Técnica
13
UVM
1.7 Estructuras
Una estructura es una colección de una
o más variables, posiblemente de tipos
diferentes, agrupadas bajo un mismo
nombre para un manejo más
conveniente
Programación Técnica
14
UVM
struct point {
int x;
int y;
};
struct point pt;
Programación Técnica
15
UVM
structure-name.member
printf("%d,%d", pt.x, pt.y);
struct rect {
struct point pt1;
struct point pt2;
};
struct rect screen;
screen.pt1.x
Programación Técnica
16
UVM
Ejemplo:
struct Inventario
{
char Descripcion[15];
char PartNo[6];
int Cantidad;
float Costo;
float Precio;
};
Programación Técnica
17
UVM
struct Coleccion
{
char titulo [25];
char artista [20];
int numCanciones;
Float precio;
char FechaDeCompra[9];
}
struct Colección cd1={"Yesterday","The
Beatles",12,11.95,"08/13/93"};
Programación Técnica
18
UVM
1.7 Apuntadores
Un apuntador es una variable que
contiene la dirección de una variable
p = &c;
Se le asigna a c la dirección de la
variable c.
“p apunta a c”
Programación Técnica
19
UVM
int x = 1, y = 2, z[10];
int *ip; /* ip es un apuntador a int */
ip = &x; /* ip apunta a x */
y = *ip; /* y es 1 */
*ip = 0; /* x es 0 */
ip = &z[0]; /* ip apunta a z[0] */
Programación Técnica
20
UVM
Si ip apunta al entero x, entonces *ip puede aparecer en cuanquier
contexto donde x pueda, por lo tanto:
*ip = *ip + 10;
incrementa *ip en 10
y = *ip + 1;
toma a lo que ip apunta, le suma 1 y le asigna el resultado a y
*ip += 1;
Incrementa a lo que ip apunta al igual que:
++*ip;
y
(*ip)++;
Programación Técnica
21
UVM
1.7.1 Apuntadores y argumentos
de funciones
void swap(int x, int y)
{
int temp;
temp = x;
x = y;
y = temp;
}
Programación Técnica
22
UVM
void swap(int *px, int *py)
{
int temp;
temp = *px;
*px = *py;
*py = temp;
}
Programación Técnica
23
UVM
Ejercicio:
Escriba una función incrementa que
reciba una variable entera (paso de
parámetros por referencia) y la
incremente en 1. Pruébela en un
programa que mande llamar a
incrementa 10 veces y despliegue el
resultado.
Programación Técnica
24
UVM
#include <stdio.h>
void incrementa(int *count_ptr)
{
(*count_ptr)++;
}
int main()
{
int count = 0;
while (count < 10)
incrementa(&count);
return (0);
}
Programación Técnica
25
UVM
1.7.2 Apuntadores y arreglos
int a[10];
Programación Técnica
26
UVM
int *pa;
pa = &a[0];
pa apunta al elemento 0 de a; esto es,
pa contiene la dirección de a[0].
Programación Técnica
27
UVM
x = *pa;
Copia el contenido de a[0] a x.
Si pa apunta a un elemento particular de un
arreglo, por definición pa+1 apunta al siguiente
elemento, pa+i apunta i elementos después de
pa, y pa-i apunta i elementos antes. Por lo
tanto, si pa apunta a a[0],
*(pa+1) se refiere al contenido de a[1],
pa+i es la dirección de a[i], y *(pa+i) es el
contenido de a[i].
Programación Técnica
28
UVM
Tarea # 1 (entrega 24 Feb 2009)
Hacer un programa en C que solicite la
información de varios libros (título,
autor, ISBN), lo guarde en un arreglo de
estructuras y al final despliegue la
información de los libros capturados.
Programación Técnica
29
UVM
Descargar

1.3 Tipos de datos y tamaños