Caracteres. Clase 6 (12 de abril, 2011)

Anuncio
El mundo de los caracteres
Clase 6
Introducción a la Computación
Patricia Borensztejn
Entrada de Datos por teclado
• ¿Qué ocurre cuando apretamos una tecla?
• El teclado es un periférico que se comunica con el procesador
Entrada por teclado
El teclado de la computadora consta de una
matriz de contactos, que al presionar una tecla,
cierran el circuito de la tecla. Un
microcontrolador situado en el teclado detecta
la presión de la tecla, y genera un código.
Entrada por teclado
Al soltarse la tecla, se genera otro código. De
esta manera el chip localizado en la placa del
teclado puede saber cuándo fue presionada y
cuándo fue soltada, y actuar en consecuencia.
Los códigos generados son llamados Códigos de
barrido (Scan code, en inglés).
Entrada por teclado
Una vez detectada la presión de la tecla, los
códigos de barrido son generados, y enviados de
forma serial a través del cable y con el conector
del teclado, llegan a la placa madre de la PC, a
uno de sus chips que es el controlador del
teclado.
Entrada por teclado
Este chip compara el código de barrido con el
correspondiente a la Tabla de caracteres. Genera
una interrupción por hardware, y envía los datos
en forma paralela a través del bus al procesador.
Entrada por teclado
La CPU, al ser interrumpida, ejecuta una rutina
(función) que se llama «driver» o manejador del
teclado. Esta rutina forma parte del SO.
La rutina lee el dato que llega por el bus de datos
y lo pone en una cola en memoria, a disposición
del programa o aplicación que está esperando el
dato.
Códigos ASCII
• La función del controlador del teclado es traducir el
«scan code» que le envía el teclado a un código ASCII.
• ASCII: American Standard Code for Information
Interchange.
– Es una correspondencia entre un carácter y su
representación en 7 bits.
– También hay correspondencia para los caracteres no
imprimibles, como new line, tab, etc.
– Los caracteres imprimibles tienen códigos que van desde
el :
• 33 al 126: letras, dígitos, signos de puntuación y otros signos.
Tipo Char
• Es una variante de los enteros: almacena
enteros con signo en Ca2 en un byte.
• Es frecuente usar variables de tipo char para
almacenar caracteres (de ahí su nombre)
codificados en ASCII . Si una variable a es de
tipo char, la asignación a=’0’ es absolutamente
equivalente a la asignación a=48, pues el valor
ASCII del dígito 0 es 48.
Entrada de datos por teclado
• Siempre que entramos datos por teclado, lo
hacemos carácter a carácter.
• Por ejemplo:
Ingresa el n·mero a factorizar 600851475143
• Deja el número a disposición de la aplicación en
el buffer del teclado como una sucesión de doce
bytes. Es función del printf convertirlo a long long
int, es decir a 8 bytes.
Problema: Char 1 (Problema 5)
• Vamos a hacer un programa que lea un número por
teclado carácter a carácter y lo convierta en número en
Ca2 de 8 bits (short int) (pueden ser positivos o
negativos)
• El número que leemos no debe ser mayor que el rango
de representación de los enteros de 8 bits.
• Los caracteres ASCII de los números : 0 al 9 son 48 a 57.
Tienen que buscar el correspondiente al signo «-»
• Para leer carácter utilizamos la función scanf.
• La salida del programa deberá ser printf del entero
resultado. Si es igual a lo que entramos, el programa
funcionó bien.
Para los que quieran: Getchar()
• Para leer solamente un carácter se puede
utilizar también getchar.
c = getchar()
• El que quiera, puede utilizar un array de
caracteres, pero entonces debe leer un entero
de 32 bits! (luego explicaremos arrays)
char c[10];
Getchar en Python?
>>> import msvcrt
>>> ch=msvcrt.getch()
>>> print ch
a
Descargar