La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Programación en C para electrónicos

Presentaciones similares


Presentación del tema: "Programación en C para electrónicos"— Transcripción de la presentación:

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

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

3 Objetivos Datos estructurados - David Carmona 2010

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

5 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

6 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

7 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

8 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

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

10 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

11 //asigna el valor 172 a la p. mem. apuntada
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

12 Ejemplo: Datos estructurados - David Carmona 2010

13 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

14 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

15 Ejemplo: Dirección valor 1000 short a 1001 1002 short b 1003 1004
short c 1005 1006 short d 1007 1008 float r 1009 1010 1011 Datos estructurados - David Carmona 2010

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

17 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

18 Declaración de vectores.
Sintaxis: Tipo_dato Nombre_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

19 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

20 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

21 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

22 Limitaciones del vector
No se pueden comparar vectores. No se puede copiar un vector completo a otro con una asignación. Se puede hacer elemento a elemento. Datos estructurados - David Carmona 2010

23 Tipo_dato Nombre_vector [tamaño_x] [tamaño_y]
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_dato Nombre_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

24 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

25 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

26 Inicialización Sin agrupar filas: Agrupando filas:
Datos estructurados - David Carmona 2010

27 Vectores multidimensionales
Datos estructurados - David Carmona 2010

28 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

29 Ejemplo Datos estructurados - David Carmona 2010

30 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

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

32 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

33 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

34 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

35 Declaración e inicialización
Sintaxis general: char Nombre_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

36 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

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

38 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

39 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

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

41 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

42 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

43 Sintaxis Datos estructurados - David Carmona 2010

44 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

45 Ejemplos Datos estructurados - David Carmona 2010

46 Variable.nombre_campo
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 = ; Datos estructurados - David Carmona 2010

47 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

48 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: struct cliente cliente1,Nuevo_cliente; Nuevo_cliente = cliente1; Datos estructurados - David Carmona 2010

49 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

50 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

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

52 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

53 Definición Se utiliza la palabra reservada enum, seguida del nombre de la enumeración y de la lista de nombres de las constantes. Ejemplo: enum Nombre_Enum { Const1, Const2, ConstN}; Datos estructurados - David Carmona 2010

54 Declaración de variables
La declaración de variables enumeradas puede hacerse en la definición: O posteriormente utilizando la siguiente sintaxis: enum dia_semana { Lunes, Martes, Miercoles, Jueves, Viernes, Sabado,Domingo} dia; enum dia_semana dia; Datos estructurados - David Carmona 2010

55 Cambio de valores Por defecto, a los nombres se les asigna un valor entero, por orden de aparición en la definición y empezando desde 0. Se puede cambiar el valor por defecto mediante asignaciones en la definición. Datos estructurados - David Carmona 2010

56 Definición de nuevos tipos.
Programación en C para electrónica Datos estructurados - David Carmona 2010

57 typedef tipo_datos Nombre_nuevo_tipo;
El lenguaje C permite definir nuevos tipos de datos basados en los tipos vistos hasta ahora. Para definir los nuevos tipos se utiliza la palabra reservada typedef, con la siguiente sintaxis: Una vez definido el nuevo tipo, el nombre se puede utilizar como tipo de datos en la declaración de variables. typedef tipo_datos Nombre_nuevo_tipo; Datos estructurados - David Carmona 2010

58 Ejemplos: Datos estructurados - David Carmona 2010


Descargar ppt "Programación en C para electrónicos"

Presentaciones similares


Anuncios Google