Dispositivo apuntador
Un dispositivo apuntador es un componente hardware (más concretamente un dispositivo de interfaz humana) que permite al usuario introducir datos de espacio a una computadora. Los sistemas CAD y los equipos dotados de Interfaz gráfica de usuario (GUI) permiten al usuario controlar y proporcionar datos al ordenador usado movimientos físicos del dispositivo (apuntar, clic, arrastrar), principalmente moviendo un ratón de mano sobre la superficie real de una mesa y activando los interruptores en éste. Los movimientos del periférico son reflejados en la pantalla como movimientos del puntero o cursor, y otros cambios visuales.
La conexión del dispositivo puede ser por cable, inalámbrica (radio, bluetooth, infrarrojos...), de contacto (pantallas táctiles), entre otros.
El dispositivo apuntador más habitual es el ratón, pero se utilizan también trackball, touchpad, trackpoint, lápiz óptico, joystick, varios tipos de tableta digitalizadora, punteros de cabeza, dispositivos de seguimiento ocular, guante de datos (dataglove), traje de datos (un mono dotado de sensores), videocámaras (quizá la más conocida sea la Eye Toy de Sony), varios tipos de punteros bucales (usados principalmente por personas afectadas por tetraplejía) que convierten acciones del usuario en acciones del sistema informático.
Un puntero puede referirse también a un tipo especial de lápiz que se utiliza para señalar cosas en una superficie amplia, como mapas o pantallas de proyección. Inicialmente solían ser lápices telescópicos que se recogían cuando no se usaban (quedando y pareciendo un bolígrafo normal que incluso escribe), pero están siendo sustituidos por punteros lumínicos, particularmente láser. Varios tipos de trackballs especialmente diseñados para presentaciones suelen incorporar uno de estos en uno de sus extremos.
[1]== Dispositivos apuntadores 3D ==
PhaseSpace produce un dispositivo 3D consistente en múltiples detectores lineales que triangulan el origen de una fuente de luz. Esto proporciona una resolución espacial de 3.600 x 3.600 a 480 fotogramas por segundo. Modulando la fuente de luz, pueden emplearse múltiples fuentes que pueden ser seguidas individualmente. Puede ser usado en Realidad virtual, realidad aumentada, entrenamiento, etc. con ventaja sobre los tradicionales joysticks.
Apuntador Es una variable que contiene una dirección de memoria, la cual corresponderá a un dato o a una variable que contiene el dato. Los apuntadores también deben de seguir las mismas reglas que se aplican a las demás variables, deben tener nombre únicos y deben de declararse antes de usarse. Cada variable que se utiliza en una aplicación ocupa una o varias posiciones de memoria. Estas posiciones de memoria se accesan por medio de una dirección. En la figura el texto Hello está guardado en memoria, comenzando en la dirección 1000. Cada carácter ocupa un espacio de dirección único en memoria. Los apuntadores proporcionan un método para conservar y llegar a estas direcciones en memoria. Los apuntadores facilitan el manejo de datos, debido a que conservan la dirección de otra variable o ubicación de datos. 1.1-¿Por qué son Importantes los Apuntadores? Los apuntadores dan flexibilidad a los programas en C++ y permiten que estos crezcan dinámicamente. Utilizando un apuntador hacia un bloque de memoria que se asigna al momento de ejecución, un programa puede ser más flexible que uno que asigna toda su memoria de una sola vez. También, un apuntador es más fácil de guardar que una estructura grande o un objeto de una clase. Debido a que un apuntador sólo guarda una dirección, puede fácilmente pasarse a una función. Uno de las desventajas que pueden presentar los apuntadores es que un apuntador sin control o no inicializado puede provocar fallas en el sistema, además de que su uso incorrecto puede generar fallas muy complejas de hallar. 1.2 Operadores de Indirección y Dirección. Hay 2 operadores que se usan cuando trabajan con direcciones en un programa C; el Operador de Indirección ( * ) y el de Dirección (&). Estos operadores son diferentes de los tratados anteriormente. El Operador de Dirección ( &) regresa la dirección de una variable. Este operador está asociado con la variable a su derecha: &h; Esta línea regresa la dirección de la variable h. El Operador de Indirección ( * ) trabaja a la inversa del operador de Dirección. También esta asociado con la variable a su derecha, toma la dirección y regresa el dato que contiene esa dirección. Por ejemplo, la siguiente línea determina la dirección de la variable h y luego usa el operador de Indirección para accesar la variable y darle un valor de 42:
- (&h)=42;
La declaración de un puntero de manera general es: tipo *nombre de apuntador; Tipo : Especifica el tipo de objeto apuntado y puede ser cualquier tipo. Nombre de apuntador: Es el identificador del apuntador. El espacio de memoria requerido para un apuntador, es el número de bytes necesarios para especificar una dirección de memoria, debiendo apuntar siempre al tipo de dato correcto. Considere el siguiente programa y observe a las variables de dirección e Indirección trabajar: 1.3-La Aritmética de Apuntadores. Solamente se pueden realizar operaciones de incremento y decremento, y estos es desacuerdo a la longitud de su tipo de base. Por ejemplo supóngase que una máquina particular utiliza direccionamiento de byte, un entero requiere 4 bytes y el valor de la variable pi (declarada asi: int *pi) es 100, es decir, se apunta al entero *pi en la localidad 100. Entonces el valor de pi-1 es 96, el de pi+1 es 104 y el de pi+2 es 108. El valor de *(pi-1) es el de los contenidos de los 4 bytes 96,97,98, y 99 , el de *(pi+1) es el del contenido de los byte 104, 105,106 y 107, y el de *(pi+2) es el entero que está en los bytes 108,109,110 y 111. De manera parecida, si el valor de la variable PC (declarada asi: char *PC; ) es igual a 100, y un carácter tiene un byte de longitud, pc-1 refiere a la localidad 99, pc+1 a la 101 y pc+2 a la 102. 1.4 Apuntadores a Funciones. Un área en la cual desempeñan un papel prominente los apuntadores es el lenguaje C es la transmisión de parámetros a funciones. Por lo común, los parámetros se transmiten por valor a una función en C, es decir, se copian los valores transmitidos en los parámetros de la función llamada en el momento en que se invoca. Si cambia el valor de un parámetro dentro de la función, no cambia su valor en el programa que la llama. Por ejemplo considérese el siguiente fragmento y función de programa (el número de línea es solo una guía en el ejemplo): La línea 2 imprime el número 5 y después llama a funct. El valor de "x", que es 5, se copia en "y" y comienza la ejecución de funct. Después, la línea 9 imprime el número 6 y regresa funct. Sin embargo, cuando la línea 8 incrementa el valor de "y", el valor de "x" permanece invariable. Así, la línea 4 imprime el número 5, "x" y "y" refieren a 2 variables diferentes. Si deseamos usar funct para modificar el valor de "x", debemos de transmitir la dirección de "x" de la siguiente manera: La línea 2 imprime nuevamente el número 5, y la línea 3 llama a funct. Ahora, sin embargo, el valor transferido no es el valor entero de "x" sino el valor apuntador "&x". Este es la dirección de "x". El parámetro de funct no es más y de tipo int, sino py de tipo int * . (Es conveniente nombrar a las variables apuntadores comenzando con la letra p para recordar tanto que se trata de un apuntador) la línea 8 ahora aumenta al entero en la localidad py; py, sin embargo, no cambia y conserva su valor inicial "&x". Así, py apunta al entero "x" de tal manera que cuando *py, aumenta x. La línea 9 imprime 6 y cuando regresa funct, la línea 4 imprime también 6. Los apuntadores son el mecanismo usado en el lenguaje C para permitir a una función llamada modificar las variables de la función que llama.
Arreglos en C.
2.-Arreglos. Es una serie de datos del mismo tipo, también conocidos como vectores o rangos. Una arreglo está constituido por varias posiciones de memoria de igual tamaño consecutivas que tienen el mismo tipo de variable y se accesan usando el mismo nombre seguido de un subíndice entre corchetes. La cantidad total de espacio que se usa por un arreglo depende de 2 cosas: El número de elementos en el arreglo y El tamaño del arreglo. 2.1- ¿Por qué Usar los Arreglos? Porque son uno de los factores esenciales de los programas de computadora. Permiten que se haga referencia a entradas individuales en una tabla de elementos de datos usando el mismo código y variando el índice del elemento. 2.3- La Declaración de un Arreglo es igual a como se haría con una variable, a excepción de que también se especifica la cantidad de elementos en el arreglo encerrado entre corchetes de la siguiente manera: tipo nombre_del_arreglo[tamaño]; Cuando se declara un arreglo, sus valores se pueden inicializar de la siguiente manera: Int lista[9]= {0, 4, 78, 5, 32, 9, 77, 1, 23} No trate de engañar al Compilador inicializando mas valores en el arreglo de los que puede, ya que este no lo obedecerá, sin embargo, si inicializa solo una parte del arreglo, las restantes posiciones se inicializan con 0´s. Si desea imprimir un valor de un arreglo, la línea luce así: printf ("%d", lista[1]); Una Característica importante de los arreglos en C es que no se pueden modificar los limites superior e inferior (y por tanto el rango) durante el programa. El límite inferior se fija siempre en 0 y el superior lo fija el programador, es decir: Se han visto hasta ahora, arreglos llamados Unidimensionales, pero existen también los llamados Bidimensionales, y se declaran así: tipo nombre_arreglo_bi[tamaño][tamaño]; Estos también son comúnmente conocidas como Matrices, El tamaño en la declaración de la matriz estipula Renglón-Columna y se representarían así: Estos también se pueden inicializar: Int lista_nueva[2][2]={{14, 34},{23, 67}}; y se acceden de la misma manera que un unidimensional. Ejemplo printf ("%d", lista_nueva[1][0]); Y de esta forma se pueden construir arreglos Multidimensionales p/e: int grande[3][4][7]; ó incluso int mas_grande [5][7][8][2][3][2]; pero se debe de tener cuidado al manejar estos arreglos porque son complejos de manipular a la larga. A pesar de ser Bidimensionales, en la memoria siguen siendo representados como espacios secuenciales lineales. 2.4 Arreglos y Apuntadores. Las versiones con apuntadores en los arreglos son mas rápidas que la indexación común. La declaración int a[10]; int *pa; Por lo que pa=&a[0] y así establecemos que *pa=a[0] y *(pa+1)=a[1] y así sucesivamente. De esta manera se pude manejar más eficientemente los valores y direcciones de un arreglo Bi o Unidimensional.
Presentación Tutorial Menú principal Introducción a CElementos de CApuntadores y Arreglos Estructuras y Uniones Archivos y Gráficos Programación O O 1Programación O 2Programación O O 3GlosarioBuscar Algo en Especial Bibliografía del Tutorial Créditos del Tutorial