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

Post on 23-Jan-2016

237 views 0 download

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

Programación Técnica 1 UVM

Tipos de Datos

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.

Programación Técnica 4 UVM

1.2 Temas a Cubrir

Tipos de datos y tamañosConstantesDeclaracionesArreglosEstructurasApuntadores

Programación Técnica 5 UVM

1.3 Tipos de datos y tamaños

charintfloatdouble

Calificadores:shortlong

Programación Técnica 6 UVM

1.4 Constantes

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

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));

}

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;

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

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.

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);}

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 */

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;

}

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

Programación Técnica 15 UVM

struct point {

int x;

int y;

};

struct point pt;

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

Programación Técnica 17 UVM

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

};

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"};

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”

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] */

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)++;

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;

}

Programación Técnica 23 UVM

void swap(int *px, int *py)

{

int temp;

temp = *px;

*px = *py;

*py = temp;

}

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.

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);

}

Programación Técnica 26 UVM

1.7.2 Apuntadores y arreglos

int a[10];

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].

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].

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.