Vous êtes sur la page 1sur 19

TIPOS DE DATOS I

CURSO: ESTRUCTURAS DE DATOS Profesor: JUAN JOS GONZLEZ FANDEZ jjegonzalezf@gmail.com

OBJETIVOS

Manejo correcto y apropiado de punteros y reserva de memoria dinmica Reconocer el tipo de dato void y void * en C como una herramienta de potencial importancia

Diferenciar entre arreglos y estructuras


Utilizar correctamente las estructuras, punteros a

estructuras, arreglos de estructuras, etc.

DATO

Informacin en bruto, sin ningn significado Dado un enunciado, evento o accin, los datos

Permiten representar sus actores o participantes Analizndolos, se podr obtener resultados deseados

Analicemos el siguiente hecho:

El estudiante de nombre Pedro Velez de 22 aos, tiene un promedio de 6.5


Nombre: Pedro Velez Edad: 22 Promedio: 6.5 -> Conjunto de Caracteres -> entero -> real

Podemos tomar los siguientes datos


INFORMACIN

Es el resultado deseado luego de procesar los datos Los datos, al ser procesados, se convierten en informacin til o resultados.

Empleado Juan, Perez

Horas 160

Datos de salida(se muestran en el monitor)


Juan, Perez
Pedro, Rodriguez Luis, Pozo

Pedro, Rodriguez
Luis, Pozo Valor por hora = $2

155
120

$320
$310 $240

Datos de entrada(ingresados x teclado)

Procesamiento: Calcular salarios

Cmo representar los datos?

Los seres humanos:


Usamos lenguaje natural o smbolos Ejemplo:

Para representar nmeros, usamos el sistema decimal Para representar palabras, usamos el abecedario

La computadora:

Usa conjuntos de 1s y 0s El dato mas pequeo en el computador es

Un 1 o un 0 -> bit

El conjunto de 8 bits -> 1 byte

TIPOS DE DATOS

Los datos se clasifican en TIPOS Son los diferentes dominios existentes. Ejemplo:

Edad, Ao de Nacimiento, Numero de multas

Tienen dominio numrico

Nombre, Direccin, Num. Cedula,

Caen en el dominio de la informacin tipo texto

Y las operaciones permitidas para dicho dominio


Un conjunto de valores y operaciones definidas solo para esos valores

RECORDAR

Un tipo de dato es el conjunto de valores

Al que puede pertenecer una constante Que puede asumir una variable o expresin Que puede ser generado por una funcin Se puede deducir su tipo de dato Ya sea de su forma o de su declaracin Sin necesidad que se ejecute ningn proceso Necesitan participantes (argumentos) de determinado tipo Producen resultados de otro o el mismo tipo

De una constante, variable o expresin


Las operaciones entre datos


TIPOS DE DATOS BASICOS

Los podemos distinguir fcilmente, estn en el diario vivir:

El Sr. Vera de 63 aos tiene cedula No. 13765571, y paga $120 de impuestos

Son tipos de datos simples

Que permiten representar informacin numrica, caracteres, etc.


CONJUNTO DE VALORES Negativos y positivos sin decimal Negativos y positivos, con decimal Verdadero o Falso(1 o 0) Letras, nmeros, especiales, juntos forman una cadena OPERACIONES Sumar, restar, dividir, multiplicar, residuo Sumar, restar, dividir, multiplicar And, Or, Not Sumar carcter + entero restar, multiplicar por entero

NOMBRE Enteros Reales Lgicos Caracteres

Y EN LA COMPUTADORA?
1000 1001 1002 Cada byte es un casillero y tiene una direccin en memoria 1003 Los datos (nmeros y letras) se almacena en estos

Solo vienen integrados los tipos de datos bsicos En la computadora

casilleros Cuantas casilleros ocupa un dato?


Depende de su tipo y del hardware de la computadora Un entero puede ocupar casillas de hasta 4 bytes Un doble siempre ocupara mas, por su mayor precisin

PERO, un carcter SIEMPRE ocupara casillas de 1 byte

ALMACENANDO DATOS
TIPO DE DATO #bytes Representacin interna En ANSI C

ENTEROS

2 4 8 8 16 1

Positivos: conjunto de bits 38 -> 00100110 Negativos:Complemento a Dos -38 -> 11011001 Mantisa x base(exponente) 387.53 -> 38753 x 10-2 00000000100101110110000111111110 ASCII 11000000 -> A

int long

REALES

float double char

CARACTERES

DECLARACION DE VARIABLES una variable se Al declarar


le asigna espacio en memoria y una direccin para dicho espacio

Una declaracin de variables en C incluye


Tipo de dato y Nombre de variable(identificador) Ejemplo:


int a, b; float c;

int a; char c;

Para que se declaran variables?

100 101 102 103 104

4 bytes, dir: 100 1 byte, dir: 104

Especifica cuanta memoria debe reservarse y Como se van a interpretar dichos datos
f = a + b Es una suma de enteros, que al final se convierte a real

DIRECCIONES DE MEMORIA
Las variables

Tienen direcciones de memoria En lenguaje C Se usa el operador & de direccin


int a; a = 3; printf(Valor:%d Dir: %d, a, &a);

Si deseamos conocer dicha direccin



1000 1001 1002 1003

Ejemplo:

&a es 1000

Un puntero

Es una variable que puede almacenar direccin de memoria

DECLARACION DE PUNTEROS
int *p;

Un tipo de dato

El puntero solo podr almacenar direcciones de memoria de variables del tipo especificado Se pueden definir punteros de cualquier tipo:
float *pf; char *pc;
1000 1001 1002 1003 1004 1005

1000 pt

Un identificador que siempre va antecedido del operador * int *pt, x; pt almacena la


x = 3; pt = &x;

direccin de x, se dice que pt apunta a x

CONSULTANDO CONTENIDO

Si un puntero apunta a una variable


A travs del puntero se puede llegar a conocer todo sobre la variable Ejemplo:
char c, *pc1, *pc2; pc1 = &c;

Si quiero conocer la direccin, uso directamente el puntero


printf(%d, pc1); //Imprimo la dir. Almacenada por pc1 pc2 = pc1; //pc2 almacena la misma dir. que pc1

Si quiero conocer el contenido al que apunta un puntero, uso el Es equivalente a : operador *, sobre dicho puntero printf(%c, c);
c = A printf(%c, *pc1); *pc1 = N printf(%c,c);
Es equivalente a : c = N Imprime N pues c ya cambio

Ejercicio

EJERCICIO EN CLASE
int x,y; int *p1,*p2; x = -42; y = 163; p1 = &x; p2 = &y; *p1 = 17; *p2 = x+5; *p1 = *p2; p1 = p2; p1 = NULL; p2 = NULL;
Es equivalente a escribir x = y; Esto indica que p1 ahora apunta a la misma variable que p2

1000
1004 1008 1012

-42 17 22 163 22 1004 1000 0 1004 1000 1004 0 1004

y p1
p2

Esto es equivalente a limpiar el puntero, y decir que no apunta a ninguna variable

PASO DE PARAMETROS

Las funciones son porciones de cdigo


Ejecutan una tarea especifica


Usualmente toman datos de entrada->parmetros Y retornan un valor

Los parmetros se pueden enviar de dos formas:


Por valor Por referencia

PASO POR VALOR

La funcin no recibe la variable enviada


Recibe una copia Similar a cuando va al hacer algn tramite y le piden al cdula

No entrega la cdula verdadera Entrega una copia La verdadera estar segura, aunque quemen y destruyan la copia
x = 5; printf(%d\n,x); funct(x); printf(%d\n,x);
Se imprime 5, el valor de x no cambia aunque la funcin haya intentado modificarla

Ejemplo:

void funct(int y){ y = y+1; printf(%d\n,y); }

PASO POR REFERENCIA

Aqu si la funcin recibe exactamente la variable enviada


No hay copias Si algo se le hace al parmetro, se le esta haciendo a la variable Para esto, se usan punteros La funcin trabaja con un puntero a la variable enviada

Sabe todo sobre esa variable y se pude acceder a travs de *


x = 5; printf(%d\n,x); funct(&x); printf(%d\n,x); void funct(int *py){ *py = *py+1; printf(%d\n,*py); }
Se imprime 6, el valor de x cambi dentro de la funcin

Ejemplo:

Ejercicio

Fin clase 1

Preguntas? Dudas? Reclamos? Observaciones? Comentarios? Sugerencias? SE ACAB SU TIEMPO!

Vous aimerez peut-être aussi