1 / 56

Datos estructurados

Datos estructurados. Programación en C para electrónicos. Índice. Punteros. Vectores. ( Arrays ) Matrices. Vectores multidimensionales. Cadenas de caracteres. Estructuras y Uniones. Tipos enumerados . Defini ción de nuevos tipos. Punteros. Programación en C para electrónica.

page
Download Presentation

Datos estructurados

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Datos estructurados Programación en C para electrónicos

  2. Índice • Punteros. • Vectores. (Arrays) • Matrices. • Vectores multidimensionales. • Cadenas de caracteres. • Estructuras y Uniones. • Tipos enumerados. • Definición de nuevos tipos. Datos estructurados - David Carmona 2010

  3. Punteros Programación en C para electrónica Datos estructurados - David Carmona 2010

  4. Punteros • Un puntero es una variable que puede almacenar una dirección de memoria. • Normalmente los punteros contienen la dirección de memoria de otra variable. • Los punteros apuntan a una variable cuando contienen la dirección de memoria de dicha variable. Datos estructurados - David Carmona 2010

  5. Operadores • En la declaración y uso de los punteros se utilizan los operadores * y & (unarios) . • & (dirección): • Permite obtener la dirección de memoria de una variable. • * (indirección): • Permite obtener el contenido de una dirección de memoria. • También se utiliza para la declaración de punteros. Datos estructurados - David Carmona 2010

  6. Declaración de punteros • Sintaxis: Tipo_dato* Nombre_Puntero • Un puntero debe estar asociado a un tipo de dato concreto. • No pueden asignarse a un puntero direcciones de datos de distinto tipo. • Cuando asignamos un tipo a un puntero indicamos la cantidad de memoria que ocupa el dato a partir de la dirección de memoria. Datos estructurados - David Carmona 2010

  7. Tipos de punteros • Los punteros se pueden declarar de cualquier tipo de dato de C. • int, char, float…. • El tipo de dato utilizado en la declaración de un puntero debe ser del mismo tipo que las variables a las puede apuntar. • El tipo de datos void, define un puntero genérico cuyo tipo es el del tipo de la variable a la que apunta. Datos estructurados - David Carmona 2010

  8. Puntero void El puntero ip, primero apunta a una variable entera y después a una de tipo char. Datos estructurados - David Carmona 2010

  9. Asignación de direcciones • El operador & permite obtener la dirección que ocupa una variable en memoria. • Los tipos del puntero y la variable deben ser el mismo (excepto void). • Ejemplo: Datos estructurados - David Carmona 2010

  10. Indirección • Indirección es la forma de hacer referencia al valor de una variable a través de un puntero que apunta a dicha variable. • Para acceder al valor contenido en la dirección de memoria apuntada por un puntero se utiliza el operador *. • Ejemplo: *puntero=172; //asigna el valor 172 a la p. mem. apuntada Datos estructurados - David Carmona 2010

  11. Ejemplo: Datos estructurados - David Carmona 2010

  12. Operaciones con punteros • Asignación entre punteros: • Podemos asignar un puntero a otro siempre que sean del mismo tipo. • Después de la asignación ambos punteros contienen la misma dirección por lo tanto apuntan a la misma variable. Datos estructurados - David Carmona 2010

  13. Operaciones con punteros • Aritmética de punteros: • Sumar un valor a un puntero implica el incremento de la posición de memoria a la que apunta. • El incremento en la dirección se hace en múltiplos del tamaño del tipo de dato. • Si a un puntero de tipo float (4 bytes) contiene la dirección 1007, y se le suma 1 (puntero++) la dirección apuntada pasará a ser 1011 Datos estructurados - David Carmona 2010

  14. Ejemplo: Datos estructurados - David Carmona 2010

  15. Vectores Programación en C para electrónica Datos estructurados - David Carmona 2010

  16. Vectores • Un vector o array, es un grupo de datos del mismo tipo que ocupan posiciones de memoria contiguas. • Los datos de un vector se encuentran agrupados bajo un mismo identificador (nombre). • Para acceder a cada elemento del vector se utilizan subíndices. (nº de elemento del vector) Datos estructurados - David Carmona 2010

  17. Declaración de vectores. • Sintaxis: Tipo_datoNombre_vector [tamaño] • Donde: • Tipo_dato es el tipo de dato de todos los elementos del vector. • Nombre_vector es el identificador. • tamaño es el número de elementos del vector. Datos estructurados - David Carmona 2010

  18. Declaración de vectores. • Ejemplo: float temperaturas [100]; //vector para almacenar 100 temperaturas • Inicialización: • Los vectores se pueden inicializar en la declaración encerrando la lista de valores entre llaves y separando cada elemento por comas. Datos estructurados - David Carmona 2010

  19. Acceso a los elementos • Para acceder a un elemento del vector, se utiliza su nombre y un índice. • Valor o expresión entera. • El primer elemento del vector tiene índice 0 y el último; tamaño-1. • El índice debe estar siempre entre estos dos valores. Datos estructurados - David Carmona 2010

  20. Acceso a los elementos • Ejemplos: int contador[10]; … contador[0]=10; contador[i+1]=127; int b=contador[9]; contador[x]=7; Datos estructurados - David Carmona 2010

  21. Matrices • Una matriz es un vector de dos dimensiones. • Los conceptos de acceso, consulta e inicialización de elementos es similar a los de los vectores. • Sintaxis de la declaración: Tipo_datoNombre_vector [tamaño_x] [tamaño_y] • tamaño_x y tamaño_y representan el numero de filas y columnas de la matriz respectivamente. Datos estructurados - David Carmona 2010

  22. Almacenamiento • Los elementos de una matriz se almacenen en memoria por filas. • A continuación del último elemento de una fila se almacena el primer elemento de la fila siguiente. Datos estructurados - David Carmona 2010

  23. Asignación y consulta • Para acceder a un elemento se utiliza el nombre de la matriz y dos índices (uno por dimensión) entre corchetes. • El valor del índice de cada dimensión oscila entre el 0 y el tamaño de la dimensión menos 1. • Ejemplo: float temperaturas [10][10]; //matriz para almacenar 100 temperaturas temperatura [0][1]=27,6; Datos estructurados - David Carmona 2010

  24. Inicialización • Sin agrupar filas: • Agrupando filas: Datos estructurados - David Carmona 2010

  25. Vectores multidimensionales Datos estructurados - David Carmona 2010

  26. Punteros y vectores • En C el nombre de un vector se trata como un puntero que contiene la dirección del primer elemento del vector. • El nombre del vector es una constante de tipo puntero que no puede ser modificada. • Se permite el uso de punteros que contengan direcciones de elementos del vector para acceder a ellos utilizando la aritmética de punteros. Datos estructurados - David Carmona 2010

  27. Ejemplo Datos estructurados - David Carmona 2010

  28. Punteros y vectores • En un puntero que apunta a los elementos de una tabla, pueden usarse los corchetes para indexar dichos elementos, como en un vector: • Este tipo de indexaciones solo es válido si el puntero apunta al vector. • No se comprueba si el puntero apunta al vector o fuera de el. Datos estructurados - David Carmona 2010

  29. Cadenas de caracteres Programación en C para electrónica Datos estructurados - David Carmona 2010

  30. Cadenas de caracteres • Una cadena de caracteres es un vector de tipo char. • Se les conoce como string. • Las cadenas de caracteres son tratadas de forma especial. • En C existe un archivo de cabecera (string.h) con funciones especializadas en el manejo de cadenas de caracteres. Datos estructurados - David Carmona 2010

  31. Cadenas de caracteres • Para que un vector sea considerado como cadena de caracteres debe finalizar con el carácter nulo (ASCII 0). • El contenido a partir del carácter nulo se ignora. • Para declarar una cadena de caracteres de tamaño N hay que reservar memoria N+1 caracteres. Datos estructurados - David Carmona 2010

  32. Declaración e inicialización • En la declaración se puede inicializar la cadena como hasta ahora: • En el caso de las cadenas, la forma equivalente es: • El compilador inserta caracteres nulos (\0) después del último carácter de la asignación. Datos estructurados - David Carmona 2010

  33. Declaración e inicialización • Sintaxis general: charNombre_Cadena [ tamaño ] = “Cadena”; • Ejemplo: char ciudad [30] = “Valencia”; • Se puede obviar el tamaño de la cadena en la declaración • El compilador reservará el espacio justo para albergar la cadena. char ciudad [] = “Valencia”; Datos estructurados - David Carmona 2010

  34. Cadena vacía (“”) • Una cadena vacía es aquella que consta únicamente del carácter nulo (\0) • Los caracteres siguientes al carácter nulo son ignorados. • Para vaciar una cadena basta con asignar el carácter nulo al primer carácter de la cadena. Datos estructurados - David Carmona 2010

  35. Manejo de cadenas • La librería string.h incorpora funciones para el manejo de cadenas de caracteres: Datos estructurados - David Carmona 2010

  36. E/S de cadenas • Las funciones printf y scanf disponen de un formato especial para cadenas de caracteres (%s) • Este formato permite capturar del teclado cadenas que no contengan espacios, tabuladores o saltos de línea. Datos estructurados - David Carmona 2010

  37. E/S de cadenas • Además, la librería stdio.h dispone de otras funciones para tratamiento de cadenas en la entrada y salida: • Estas funciones permiten la entrada de cadenas que contengan espacios, tabuladores… Datos estructurados - David Carmona 2010

  38. Estructuras y uniones Programación en C para electrónica Datos estructurados - David Carmona 2010

  39. Estructura • Una estructura es un conjunto de datos de distintos tipos que ocupan posiciones de memoria contiguas. • Los elementos (campos) de una estructura pueden ser de cualquier tipo de los vistos hasta ahora. • Los elementos de una estructura se referencian a través del nombre de la misma. Datos estructurados - David Carmona 2010

  40. Definición • La definición de una estructura requiere especificar el nombre y tipo de todos los campos de la estructura. • Para la definición de la estructura se utiliza la palabra reservada struct. • Una vez definida la estructura, se pueden crear tantos datos de la estructura como se quieran. • El nombre de la estructura se utiliza como un tipo de dato más a la hora de declarar variables de ese tipo. Datos estructurados - David Carmona 2010

  41. Sintaxis Datos estructurados - David Carmona 2010

  42. Declaración de variables • Se utiliza la palabra reservada struct y el nombre de la estructura. • También se pueden declarar variables de la estructura creada en la definición de la misma. Datos estructurados - David Carmona 2010

  43. Ejemplos Datos estructurados - David Carmona 2010

  44. Acceso a los campos • Para acceder a un campo de una estrutura se utiliza el operador . (punto) • La forma general de acceso a campos es : Variable.nombre_campo • Ejemplo: Nuevo_cliente.dni=12345678; Datos estructurados - David Carmona 2010

  45. Inicialización • Se puede asignar valor a todos los campos de la variable en el momento de declararla. • Se encierran entre llaves los valores y se separan con comas (,) en el mismo orden de la definición. • Ejemplo: Datos estructurados - David Carmona 2010

  46. Copia y comparación • No se pueden comparar mediante los operadores relacionales variables del mismo tipo de estructura. • Se deben comparar los campos individualmente. • Se pueden copiar todos los campos de una variable a otra mediante la asignación simple: structcliente cliente1,Nuevo_cliente; … Nuevo_cliente = cliente1; Datos estructurados - David Carmona 2010

  47. Uniones • Pueden contener varios campos de distinto tipo. • Todos los campos de la unión comparten espacio de memoria. • Una variable de este tipo solo puede almacenar el valor de uno de los campos. • La unión ocupa el mismo espacio de memoria que el campo de mayor tamaño. Datos estructurados - David Carmona 2010

  48. Definición • La definición y declaración de variables de una unión es análoga al de las estructuras. • Se utiliza la palabra reservada union. Datos estructurados - David Carmona 2010

  49. Tipos enumerados Programación en C para electrónica Datos estructurados - David Carmona 2010

  50. Tipos enumerados • Es un conjunto ordenado de constantes enteras a las que se le asigna un nombre. • Los nombres representan todos los valores que puede tomar la variable. • El compilador les asigna un valor entero según el orden de las constantes y empezando por 0. Datos estructurados - David Carmona 2010

More Related