Tipos De Datos

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    Favorites, Groups & Events

    Tipos De Datos - Presentation Transcript

    1. TIPOS DE DATOS ESTRUCTURAS DE DATOS www.espol.edu.ec www.fiec.espol.edu.ec
    2. OBJETIVOS
      • Manejo correcto y apropiado de punteros y reserva de memoria dinámica
      • 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.
    3. DATO
      • Información en bruto, sin ningún significado
      • Dado un enunciado, evento o acción, los datos
        • Permiten representar sus actores o participantes
        • Analizándolos, se podrá obtener resultados deseados
      • Analicemos el siguiente hecho:
        • El estudiante de nombre Pedro Velez de 22 años, tiene un promedio de 7.5
      • Podemos tomar los siguientes datos
        • Nombre: Pedro Velez -> Conjunto de Caracteres
        • Edad: 22 -> entero
        • Promedio: 7.5 -> real
    4. INFORMACIÓN
      • Es el resultado deseado luego de procesar los datos
      • Los datos, al ser procesados, se convierten en información útil o resultados.
      Procesamiento: Calcular salarios Juan, Perez $320 Pedro, Rodriguez $310 Luis, Pozo $240 Datos de salida(se muestran en el monitor) Datos de entrada(ingresados x teclado) Juan, Perez Pedro, Rodriguez Luis, Pozo 160 155 120 Empleado Horas Valor por hora = $2
    5. ¿Cómo representar los datos?
      • Los seres humanos:
        • Usamos lenguaje natural o símbolos
        • Ejemplo:
          • Para representar números, usamos el sistema decimal
          • Para representar palabras, usamos el abecedario
      • La computadora:
        • Usa conjuntos de 1s y 0s
        • El dato mas pequeño en el computador es
          • Un 1 o un 0 -> bit
        • El conjunto de 8 bits -> 1 byte
    6. TIPOS DE DATOS
      • Los datos se clasifican en TIPOS
      • Son los diferentes dominios existentes. Ejemplo:
        • Edad, Año de Nacimiento, Numero de multas
          • Tienen dominio numérico
        • Nombre, Dirección, Num. Cedula,
          • Caen en el dominio de la información tipo texto
      • Y las operaciones permitidas para dicho dominio
      Un conjunto de valores y operaciones definidas solo para esos valores
    7. RECORDAR
      • Un tipo de dato es el conjunto de valores
        • Al que puede pertenecer una constante
        • Que puede asumir una variable o expresión
        • Que puede ser generado por una función
      • De una constante, variable o expresión
        • Se puede deducir su tipo de dato
        • Ya sea de su forma o de su declaración
        • Sin necesidad que se ejecute ningún proceso
      • Las operaciones entre datos
        • Necesitan participantes (argumentos) de determinado tipo
        • Producen resultados de otro o el mismo tipo
    8. TIPOS DE DATOS BASICOS
      • Los podemos distinguir fácilmente, están en el diario vivir:
        • El Sr. Vera de 63 años tiene cedula No. 0908815533 , y paga $120 de impuestos
      • Son tipos de datos simples
        • Que permiten representar información numérica, caracteres, etc.
      NOMBRE CONJUNTO DE VALORES OPERACIONES Enteros Negativos y positivos sin decimal Sumar, restar, dividir, multiplicar, residuo Reales Negativos y positivos, con decimal Sumar, restar, dividir, multiplicar Lógicos Verdadero o Falso(1 o 0) And, Or, Not Caracteres Letras, números, especiales, juntos forman una cadena Sumar carácter + entero restar, multiplicar por entero
    9. Y EN LA COMPUTADORA?
      • Solo vienen integrados los tipos de datos básicos
      • En la computadora
        • Cada byte es un casillero y tiene una dirección en memoria
      • Los datos (números y letras) se almacena en estos 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 precisión
      • PERO, un carácter SIEMPRE ocupara casillas de 1 byte
      1000 1001 1002 1003
    10. ALMACENANDO DATOS TIPO DE DATO #bytes Representación interna En ANSI C ENTEROS 2 4 8 Positivos: conjunto de bits 38 -> 00100110 Negativos:Complemento a Dos -38 -> 11011001 int long REALES 8 16 Mantisa x base (exponente) 387.53 -> 38753 x 10 -2 00000000100101110110000111111110 float double CARACTERES 1 ASCII 11000000 -> ‘A’ char
    11. DECLARACION DE VARIABLES
      • Una declaración de variables en C incluye
        • Tipo de dato y
        • Nombre de variable(identificador)
        • Ejemplo:
          • int a, b;
          • float c;
      • ¿Para que se declaran variables?
        • 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
      Al declarar una variable se le asigna espacio en memoria y una dirección para dicho espacio int a; 4 bytes, dir: 100 1 byte, dir: 104 char c; 100 101 102 103 104
    12. DIRECCIONES DE MEMORIA &a es 1000
      • Las variables
        • Tienen direcciones de memoria
      • Si deseamos conocer dicha dirección
        • En lenguaje C
        • Se usa el operador & de dirección
      • Ejemplo:
          • int a;
          • a = 3;
          • printf(“Valor:%d Dir: %d”, a, &a );
      • Un puntero
        • Es una variable que puede almacenar dirección de memoria
      1000 1001 1002 1003
    13. DECLARACION DE PUNTEROS
      • 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;
      • Un identificador que siempre va antecedido del operador *
      pt almacena la dirección de x, se dice que pt apunta a x x pt int *p; 1000 1001 1002 1003 1004 1005 1000
            • int *pt, x;
            • x = 3;
            • pt = &x;
      3
    14. CONSULTANDO CONTENIDO
      • Si un puntero apunta a una variable
        • A través del puntero se puede llegar a conocer todo sobre la variable
        • Ejemplo:
        • c = ‘A’
        • printf(“%c”, *pc1);
        • *pc1 = ‘N’
        • printf(“%c”,c);
      Es equivalente a : printf(“%c”, c); Es equivalente a : c = ‘N’ Imprime ‘N’ pues c ya cambio
        • char c, *pc1, *pc2;
        • pc1 = &c;
      • Si quiero conocer la dirección, 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 operador *, sobre dicho puntero
      Ejercicio
    15. EJERCICIO EN CLASE *p1 = *p2; int x,y; int *p1,*p2; x = -42; y = 163; p1 = &x; p2 = &y; *p1 = 17; *p2 = x+5; 1000 1004 Es equivalente a escribir x = y; p1 = p2; Esto indica que p1 ahora apunta a la misma variable que p2 1004 p1 = NULL; p2 = NULL; Esto es equivalente a “encerar” el puntero, y decir que no apunta a ninguna variable -42 22 1000 1004 17 22 0 0 163 1004 1000 1004 1008 1012 x y p1 p2
    16. PASO DE PARAMETROS
      • Las funciones son porciones de código
        • Ejecutan una tarea especifica
        • Usualmente toman datos de entrada->parámetros
        • Y retornan un valor
      • Los parámetros se pueden enviar de dos formas:
        • Por valor
        • Por referencia
    17. PASO POR VALOR
      • La función no recibe la variable enviada
        • Recibe una copia
        • Similar a cuando va al hacer algún tramite y le piden al cédula
          • No entrega la cédula verdadera
          • Entrega una copia
          • La verdadera estará segura, aunque quemen y destruyan la copia
      • Ejemplo:
      x = 5 printf(“%d ”,x); funct(x); printf(“%d ”,x); void funct(int y){ y = y+1; printf(“%d ”,y); } Se imprime 5, el valor de x no cambia aunque la función haya intentado modificarla
    18. PASO POR REFERENCIA
      • Aquí si la función recibe exactamente la variable enviada
        • No hay copias
        • Si algo se le hace al parámetro, se le esta haciendo a la variable
        • Para esto, se usan punteros
        • La función trabaja con un puntero a la variable enviada
          • Sabe todo sobre esa variable y se pude acceder a través de *
      • Ejemplo:
      x = 5 printf(“%d ”,x); funct(&x); printf(“%d ”,x); void funct(int *py){ *py = *py+1; printf(“%d ”,*py); } Se imprime 6, el valor de x cambió dentro de la función Ejercicio
    19. TIPOS DE DATOS COMPUESTOS
      • En ocasiones se necesitan tipos de datos mas complejos, y estructurados
        • Variables que almacenen mas de un valor
        • Variables que representen información de la vida real
        • Estarán formados a partir de tipos de datos simples
      • En C, tenemos:
      TIPO FORMATO DECLARACION Bytes ARREGLOS int arrEj[10]; 10*2 = 20 ESTRUCTURAS
      • typedef struct TReg{
        • int ID;
        • char Texto[100];
      • }Reg;
      2 + 100 = 102 UNIONES
      • typedef union TUn{
        • int ID;
        • char Texto[100];
      • }Un;
      100
    20. ARREGLOS
      • Conjunto de elementos
        • Finito, Ordenado y Homogéneo,
          • Todos sus elementos son del mismo tipo
      • Un arreglo estático se declara
          • int A[100];
        • El tipo de los elementos, el identificador y
        • El numero de elementos (dimensión)
      • Cada elemento del arreglo tiene un índice
        • En C, siempre el índice mas pequeño es el 0: limite inferior
        • El limite superior, es 1 menos que la dimensión
          • Si el arreglo tiene 100 elementos, el índice mas alto es el 99
      • Y si un entero ocupa 4 bytes, el arreglo ocupa 400 bytes seguidos
      ... A 0 1 2 3 4 99
    21. OPERACIONES
      • No basta con la declaración, para ser tratado como un tipo de dato
      • Faltan las operaciones para actuar sobre él
        • Consulta de un elemento
        • //Consulto el contenido de los elementos 4 y 5 de A
        • printf(“%d %d”,A[4], A[5]);
        • Modificación de un elemento
        • A[3] = 2; //Almaceno un valor en el elemento 3 de A
        • for(i = 0; i < 100; i++)
          • A[i] = 0;
      Tipo de dato: Conjunto de valores y operaciones definidas solo para esos valores
    22. REPRESENTACION INTERNA
      • Cuantos bytes ocupa un tipo de dato o variable?
        • En C lo indica el operador sizeof
        • Ejemplo:
          • int a;
          • printf(“%d %d”, sizeof(int), sizeof(a));
      • El computador internamente
        • No almacena la dirección de todos los elementos del arreglo
        • Solo almacena la dirección del primer elemento
        • El resto lo calcula así:
      &Lista[i] -> &Lista[0] + (i*sizeof(Lista[0])) 1000 1008 1016 1024 1032 Lista[0] Lista[1] Lista[2] Lista[3] Lista[4]
    23. RESERVA DE MEMORIA DINAMICA
      • La declaración de una variable
        • Siempre reserva memoria
        • Aunque la variable no se use, ya se reservo memoria para ella: ESTATICA
      • Si deseamos reservar memoria, pero no en la declaración
        • Si no, a voluntad dentro del programa
        • La reserva seria dinámica
      • En C se usan
        • Punteros y
        • Las funciones de librería
      #include <stdlib.h> void *malloc(size_t size); int *a; //No se reserva nada .. /*Cuando se desee, se reserva*/ a = malloc(sizeof(int)); //La variable normalmente *a = 3; a no apunta a otra variable, tiene memoria propia, solo para el
    24. ARREGLOS DINAMICOS
      • En ocasiones deseamos usar arreglos
        • Donde no hayamos “predefinido” cuantos elementos max. tendremos
        • Queremos usar arreglos dinámicos
      • Se declara el arreglo “potencial”:
        • int *arreglo;
      • Dentro del programa, se pide memoria cuando se necesite:
        • arreglo = malloc(sizeof(int)*20);
      Para indicar el nuevo tamaño se puede usar una constante o una variable,o cualquier expresión main(){ int *arreglo, n; printf(“Ingrese el tamaño del arreglo:”); n = GetInteger(); arreglo = malloc(sizeof(int)*n); printf(“Ahora tiene %d elementos para trabajar ”,n); ... }
    25. Y LIBERA..
      • Al pedir memoria dinámicamente
      • Se debe liberar dentro del programa
      • En C se libera usando la función free
      int *a; a = malloc...; … free(a); Cuando se libera para una variable Ejercicio
    26. ARITMETICA DE PUNTEROS
      • Los operadores + y –
        • Se pueden usar con punteros
        • Pero el significado de la operación cambia un poco
      • Si un entero ocupa 4 bytes, tomemos este ejemplo
          • int x;
          • int *p;
          • p = &x;
      • Si la dirección de x es un valor 100 y decimos
          • p = p+2;
      • Que dirección almacena pi?
      102 108 104 La suma indica que p se mueva 2 “enteros” mas adelante Cada entero equivale a 4 bytes 100 + 2*4 = 108
    27. EJERCICIO EN CLASE main(){ double Lista[3]; double *p,*p1,*p2; int k; Lista[0] = 1; Lista[1] = 1.1; Lista[2] = 1.2; p = Lista; p = p + 2; printf(“%d”, *p); p = p - 1; printf(“%d”, *p); p1 = Lista+2; p2 = &Lista[0]; k = p1-p2; printf(“%d”, k); } p se mueve 2 desfases p retrocede un desfase Da el total de desfases entre p1 y p2 1 1.1 1.2 Ejercicio 1000 1008 1016 Lista[0] Lista[1] Lista[2] p p2 p1
    28. PASO DE ARREGLOS A FUNCIONES
      • Al pasar un arreglo a una función debe tomarse en cuenta
        • ¿Necesitare también el tamaño del arreglo?
        • Si es así, también debe incluirse como parámetro
      • En prototipos y cabecera
          • float CalcPromedio(float A[], int size);
          • float funct(float B[]);
      • En el cuerpo de la función
          • float CalcPromedio(float A[], int size){
            • … ..
            • A[i] = 3;
          • }
      • Siempre recuerde que
        • El paso de arreglos, es un paso por referencia
      Ejercicio
    29. ARREGLOS BIDIMENSIONALES
      • La programación ofrece innumerables opciones
      • Un elemento de un arreglo, puede ser otro arreglo
        • int A[3][3];
        • A[3] es un arreglo de tres elementos
        • Cada elemento es otro arreglo de 3 elementos enteros
      int A[3][3]; Ejercicio A[0] A[1] A[2] A[0][0] A[1][0] A[2][0] A[0]1] A[1][1] A[2][1] A[0][2] A[1][2] A[2][2]
    30. ESTRUCTURAS o REGISTROS
      • Es un grupo de “componentes”. Cada componente
        • Tiene su propio identificador, y
        • Se conoce como “elemento” o “campo” de la estructura
      • Ejemplo:
      • Es la declaración del nuevo “tipo de dato”: NombreCompleto
      • Con este tipo de dato, podremos crear “variables”:
      • NombreCompleto snombre, enombre;
      typedef struct TNombreCompleto { char Primero[10]; char Inicial; char Ultimo[10]; } NombreCompleto ;
    31. USANDO ESTRUCTURAS
      • snombre es una variable de tipo NombreCompleto
        • Tiene la misma forma que la del nuevo tipo de dato
        • Cada miembro/campo ocupa memoria
        • Para acceder a un campo, se indica,
          • La variable seguida de un punto y del nombre del campo. Ejemplo
          • snombre.Inicial = ‘L’;
      snombre Los registros de tipo NombreCompleto, tendrán la misma “estructura” Cada dato tiene diferente tamaño y espacio en memoria Cada dato representa una información diferente Ejercicio primero inicial ultimo
    32. AMBITO DE VARIABLES
      • Los parámetros y variables, dentro de una función,
        • Son variables con ámbito local
        • Solo son validas en ese ambiente,
      • Las variables también pueden tener un ámbito “global”
        • Empiezan a existir desde su declaración, y
        • Son liberadas con el alcance de un archivo: variables externas
      • Para darle privacidad a una variable
        • Para que no pueda ser vista por otros archivos,
        • Se la declara static, con ámbito global para archivo únicamente

    + HannitahHannitah, 11 months ago

    custom

    3166 views, 0 favs, 0 embeds more stats

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 3166
      • 3166 on SlideShare
      • 0 from embeds
    • Comments 0
    • Favorites 0
    • Downloads 42
    Most viewed embeds

    more

    All embeds

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories