Programación Técnica1UVM Tipos de Datos. Programación Técnica2UVM.

28
Programación Técnica 1 UVM Tipos de Datos

Transcript of Programación Técnica1UVM Tipos de Datos. Programación Técnica2UVM.

Page 1: Programación Técnica1UVM Tipos de Datos. Programación Técnica2UVM.

Programación Técnica 1 UVM

Tipos de Datos

Page 2: Programación Técnica1UVM Tipos de Datos. Programación Técnica2UVM.

Programación Técnica 3 UVM

1.1 Objetivos

El estudiante reconocerá los tipos definidos de datos e identificará qué es la abstracción de datos.

Page 3: Programación Técnica1UVM Tipos de Datos. Programación Técnica2UVM.

Programación Técnica 4 UVM

1.2 Temas a Cubrir

Tipos de datos y tamañosConstantesDeclaracionesArreglosEstructurasApuntadores

Page 4: Programación Técnica1UVM Tipos de Datos. Programación Técnica2UVM.

Programación Técnica 5 UVM

1.3 Tipos de datos y tamaños

charintfloatdouble

Calificadores:shortlong

Page 5: Programación Técnica1UVM Tipos de Datos. Programación Técnica2UVM.

Programación Técnica 6 UVM

1.4 Constantes

1234 (int)123456789L (long)1234U (unsigned int)1234UL (unsigned long)F (float)

Page 6: Programación Técnica1UVM Tipos de Datos. Programación Técnica2UVM.

Programación Técnica 7 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)*(fahr-32));

}

Page 7: Programación Técnica1UVM Tipos de Datos. Programación Técnica2UVM.

Programación Técnica 8 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;

Page 8: Programación Técnica1UVM Tipos de Datos. Programación Técnica2UVM.

Programación Técnica 9 UVM

Ejercicio:Escriba un programa en C que despliegue el tamaño en bytes de los siguientes tipos de datos

Page 9: Programación Técnica1UVM Tipos de Datos. Programación Técnica2UVM.

Programación Técnica 10 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.

Page 10: Programación Técnica1UVM Tipos de Datos. Programación Técnica2UVM.

Programación Técnica 11 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);}

Page 11: Programación Técnica1UVM Tipos de Datos. Programación Técnica2UVM.

Programación Técnica 12 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 */

Page 12: Programación Técnica1UVM Tipos de Datos. Programación Técnica2UVM.

Programación Técnica 13 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;

}

Page 13: Programación Técnica1UVM Tipos de Datos. Programación Técnica2UVM.

Programación Técnica 14 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

Page 14: Programación Técnica1UVM Tipos de Datos. Programación Técnica2UVM.

Programación Técnica 15 UVM

struct point {

int x;

int y;

};

struct point pt;

Page 15: Programación Técnica1UVM Tipos de Datos. Programación Técnica2UVM.

Programación Técnica 16 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

Page 16: Programación Técnica1UVM Tipos de Datos. Programación Técnica2UVM.

Programación Técnica 17 UVM

Ejemplo:struct Inventario {char Descripcion[15];char PartNo[6];int Cantidad;float Costo;float Precio;

};

Page 17: Programación Técnica1UVM Tipos de Datos. Programación Técnica2UVM.

Programación Técnica 18 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"};

Page 18: Programación Técnica1UVM Tipos de Datos. Programación Técnica2UVM.

Programación Técnica 19 UVM

1.7 Apuntadores

Un apuntador es una variable que contiene la dirección de una variablep = &c; Se le asigna a c la dirección de la variable c. “p apunta a c”

Page 19: Programación Técnica1UVM Tipos de Datos. Programación Técnica2UVM.

Programación Técnica 20 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] */

Page 20: Programación Técnica1UVM Tipos de Datos. Programación Técnica2UVM.

Programación Técnica 21 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)++;

Page 21: Programación Técnica1UVM Tipos de Datos. Programación Técnica2UVM.

Programación Técnica 22 UVM

1.7.1 Apuntadores y argumentos de funciones

void swap(int x, int y)

{

int temp;

temp = x;

x = y;

y = temp;

}

Page 22: Programación Técnica1UVM Tipos de Datos. Programación Técnica2UVM.

Programación Técnica 23 UVM

void swap(int *px, int *py)

{

int temp;

temp = *px;

*px = *py;

*py = temp;

}

Page 23: Programación Técnica1UVM Tipos de Datos. Programación Técnica2UVM.

Programación Técnica 24 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.

Page 24: Programación Técnica1UVM Tipos de Datos. Programación Técnica2UVM.

Programación Técnica 25 UVM

#include <stdio.h>void incrementa(int *count_ptr){

(*count_ptr)++;}int main(){

int count = 0; while (count < 10)

incrementa(&count);return (0);

}

Page 25: Programación Técnica1UVM Tipos de Datos. Programación Técnica2UVM.

Programación Técnica 26 UVM

1.7.2 Apuntadores y arreglos

int a[10];

Page 26: Programación Técnica1UVM Tipos de Datos. Programación Técnica2UVM.

Programación Técnica 27 UVM

int *pa;

pa = &a[0]; pa apunta al elemento 0 de a; esto es, pa contiene la dirección de a[0].

Page 27: Programación Técnica1UVM Tipos de Datos. Programación Técnica2UVM.

Programación Técnica 28 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].

Page 28: Programación Técnica1UVM Tipos de Datos. Programación Técnica2UVM.

Programación Técnica 29 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.