Programación Técnica1UVM Tipos de Datos. Programación Técnica2UVM.
-
Upload
cristobal-paz-nunez -
Category
Documents
-
view
243 -
download
0
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.