historia del código ascii

Upload: julio-blanco

Post on 14-Jul-2015

4.457 views

Category:

Documents


0 download

TRANSCRIPT

Historia del Cdigo ASCII: El cdigo ASCII (siglas en ingles para American Standard Code for Information Interchange, es decir Cdigo Americano (estadounidense) Estndar para el intercambio de Informacin) (se pronuncia Aski). Fue creado en 1963 por el Comit Estadounidense de Estndares o "ASA", este organismo cambio su nombre en 1969 por "Instituto Estadounidense de Estndares Nacionales" o "ANSI" como se lo conoce desde entonces. Este cdigo naci a partir de reordenar y expandir el conjunto de smbolos y caracteres ya utilizados por ese entonces en telegrafa por la compaa Bell. En un primer momento solo inclua las letras maysculas, pero en 1967 se agregaron las letras minsculas y algunos caracteres de control, formando as lo que se conoce como US-ASCII, es decir los cdigos del 0 al 127. As con este conjunto de solo 128 caracteres fue publicado en 1967 como estndar, conteniendo todos lo necesario para escribir en idioma ingles. En 1986, se modifico el estndar para agregar nuevos caracteres latinos, necesarios para la escrituras de textos en otros idiomas, como por ejemplo el espaol, as fue como se agregaron los caracteres que van del ASCII 128 al 255. Casi todos los sistemas informticos de la actualidad utilizan el cdigo ASCII para representar caracteres y textos (7510). Como utilizar el cdigo ASCII: Sin saberlo lo utilizas todo el tiempo, cada vez que utilizas algn sistema informtico, pero si lo que necesitas es obtener algunos de los caracteres no incluidos en un teclado debes hacer lo siguiente, por ejemplo: Para obtener la letra, carcter o smbolo "" : ( letra EE mayscula - letra N con tilde - ENIE ) 1) Presiona la tecla "Alt" en tu teclado, y no la sueltes. 2) Sin dejar de presionar "Alt", presiona en el teclado numrico el nmero "165", que es el numero de la letra o smbolo "" en el cdigo ASCII. 3) Ya est listo (7510) .

Relacin cdigo ascci y variable char Es el tipo bsico alfanumrico, es decir que puede contener un carcter, un dgito numrico o un signo de puntuacin. Desde el punto de vista del ordenador, todos esos valores son caracteres. En C++ este tipo siempre contiene un nico carcter del cdigo ASCII. El tamao de memoria es de 1 byte u octeto. Hay que notar que en C un carcter es tratado en todo como un nmero, de hecho, habrs observado que puede ser declarado con y sin signo. Si no se especifica el modificador de signo, se asume que es con signo. Nota: s que esto sorprende, inquieta y despista a muchos lectores, as que probablemente necesite alguna explicacin ms detallada. De modo que he aadido un pequeo apndice que explica cmo es posible que un nmero y una letra se puedan representar con el mismo tipo: Apndice A. Este tipo de variables es apto para almacenar nmeros pequeos, como los dedos que tiene una persona, o letras, como la inicial de mi nombre de pila. El tipo char es, adems, el nico que tiene un tamao conocido y constante. Para el resto de los tipos fundamentales que veremos, el tamao depende de la implementacin del compilador, que a su vez suele depender de la arquitectura del procesador o del sistema operativo. Sin embargo el tipo char siempre ocupa un byte, y por lo tanto, podemos acotar sus valores mximo y mnimo. As, el tipo char con el modificador signed, puede tomar valores numricos entre -128 y 127. Con el modifiador unsigned, el rango est entre 0 y 255. El hecho de que se trate de un tipo numrico entero nos permite usar variables de char para trabajar con valores pequeos, siempre que lo consideremos necesario. El motivo por el que este tipo tambin puede contener un caracter es porque existe una correspondencia entre nmeros y caracteres. Esa correspondencia recibe el nombre de cdigo ASCII. Segn este cdigo, por ejemplo, al nmero 65 le corresponde el carcter 'A' o al nmero 49 el '1'. El cdigo ASCII primitivo usaba slo 7 bits, es decir, poda codificar 128 caracteres. Esto era ms que suficiente para sus inventores, que no usaban acentos, ees, cedillas, etc. El octavo bit se usaba como bit de paridad en transmisiones de datos, para la deteccin de errores. Despus, para internacionalizar el cdigo, se us el octavo bit en una tabla ASCII extendida, que puede codificar 256 caracteres. Pero como esto tambin es insuficiente, se han creado otras codificaciones de caracteres multibyte, aunque esto queda fuera de las posibilidades de char.

Tipo "long long":[signed|unsigned] long long [int] [,[,]...];

Este tipo no pertenece al estandar ANSI, sin embargo, est disponible en compiladores GNU, como el que se usa en Linux o el que usa el propio Dev-C++ (y otros entornos de desarrollo para Windows). Este tipo ocupa el siguiente puesto en cuanto a tamao, despus de long int. Como en los otros casos, su tamao no est definido, pero s sabemos que ser mayor o igual que el de long int.

Tipo "float" o coma flotante:float [,[,]...];

Las variables de este tipo almacenan nmeros en formato de coma flotante, esto es, contienen un valor de mantisa y otro de exponente, que, para entendernos, codifican nmeros con decimales. Aunque el formato en que se almacenan estos nmeros en un ordenador es binario, podemos ver cmo es posible almacenar nmeros muy grandes o muy pequeos mediante dos enteros relativamente pequeos, usando potencias en base 10. Por ejemplo, tenemos para la mantisa un valor entero, m, entre -0.99 y 0.99, y para el exponente un valor, e entre 9 y 9. Los nmeros se interpretan como m x 10e. Este formato nos permite almacenar nmeros entre -0.99 x 109 y 0.99 x 109. Es decir, entre -990000000 y 99000000. Y tambin nmeros tan pequeos como 0.01 x 10-9 -0.01 x 10-9. Es decir, como 0,00000000001 -0,00000000001. Esto slo con tres dgitos decimales, ms los signos. Pero en un ordenador se usa aritmtica binaria. Por ejemplo, para un tipo float tpico de 32 bits, se usa un bit de signo para la mantisa y otro para el exponente, siete bits para el exponente y 23 para la mantisa. Para ms detalles se puede consultar el siguiente enlace: representacin de los nmeros en punto flotante. Estas variables son aptas para variables de tipo real, como por ejemplo el cambio entre euros y dlares. O para nmeros muy grandes, como la produccin mundial de trigo, contada en granos.

Pero el fuerte de estos nmeros no es la precisin, sino el orden de magnitud, es decir lo grande o pequeo que es el nmero que codifica. Por ejemplo, la siguiente cadena de operaciones no dar el resultado correcto:float a = 12335545621232154; a = a + 1; a = a - 12335545621232154;

Finalmente, "a" valdr 0 y no 1, como sera de esperar. Los formatos en coma flotante sacrifican precisin en favor de tamao. Sin embargo el ejemplo si funcionara con nmeros ms pequeos. Esto hace que las variables de tipo float no sean muy adecuadas para todos los casos, como veremos ms adelante. Puede que te preguntes (alguien me lo ha preguntado), qu utilidad tiene algo tan impreciso. La respuesta es: aquella que t, como programador, le encuentres. Te aseguro que float se usa muy a menudo. Por ejemplo, para trabajar con temperaturas, la precisin es suficiente para el margen de temperaturas que normalmente manejamos y para almacenar al menos tres decimales. Pero hay millones de otras situaciones en que resultan muy tiles.

Tipo "bool" o Booleano:bool [,[,]...];

Las variables de este tipo slo pueden tomar dos valores true (verdadero) o false (falso). Sirven para evaluar expresiones lgicas. Este tipo de variables se puede usar para almacenar respuestas, por ejemplo: Posees carn de conducir?. O para almacenar informaciones que slo pueden tomar dos valores, por ejemplo: qu mano usas para escribir. En estos casos debemos acuar una regla, en este ejemplo, podra ser diestro>true, zurdo->false.bool respuesta; bool continuar;

Nota: En algunos compiladores de C++ antiguos no existe el tipo bool. Lo lgico sera no usar esos compiladores, y conseguir uno ms actual. Pero si esto no es posible, se puede simular este tipo a partir de un enumerado.enum bool {false=0, true};

Tipo "double" o coma flotante de doble precisin:[long] double [,[,]...];

Las variables de este tipo almacenan nmeros en formato de coma flotante, mantisa y exponente, al igual que float, pero usan una precisin mayor, a costa de usar ms memoria, claro. Son aptos para variables de tipo real. Usaremos estas variables cuando trabajemos con nmeros grandes, pero tambin necesitemos gran precisin. El mayor espacio para

almacenar el nmero se usa tanto para ampliar el rango de la mantisa como el del exponente, de modo que no slo se gana en precisin, sino tambin en tamao. Al igual que pasaba con los nmeros enteros, no existe un tamao predefinido para cada tipo en coma flotante. Lo que s sabemos es que el tamao de double es mayor o igual que el de float y el de long double mayor o igual que el de double. Lo siento, pero no se me ocurre ahora ningn ejemplo en el que sea til usar uno de estos tipos. Bueno, tambin me han preguntado por qu no usar siempre double o long double y olvidarnos de float. La respuesta es que C++ siempre ha estado orientado a la economa de recursos, tanto en cuanto al uso de memoria como al uso de procesador. Si tu problema no requiere la precisin de un double o long double, por qu derrochar recursos? Por ejemplo, en el compilador Dev-C++ float requiere 4 bytes, double 8 y long double 12, por lo tanto, para manejar un nmero en formato de long double se requiere el triple de memoria y el triple o ms tiempo de procesador que para manejar un float. Como programadores estamos en la obligacin de no desperdiciar nuestros recursos, y mucho menos los recursos de nuestros clientes, para los que crearemos nuestros programas. C++ nos dan un gran control sobre estas caractersticas, es nuestra responsabilidad aprender a usarlo como es debido.

Tipo "int" o entero:[signed|unsigned] [short|long] int [,[,]...]; [signed|unsigned] long [int] [,[,]...]; [signed|unsigned] short [int] [,[,]...];

Las variables enteras almacenan nmeros enteros dentro de los lmites de cada uno de sus tamaos. A su vez, esos tamaos dependen de la plataforma, del compilador, y del nmero de bits que use por palabra de memoria: 8, 16, 32... No hay reglas fijas para saber el tamao, y por lo tanto, el mayor nmero que podemos almacenar en cada tipo entero: short int, int o long int; depende en gran medida del compilador y del sistema operativo. Slo podemos estar seguros de que el tamao de un short int es menor o igual que el de un int, y ste a su vez es menor o igual que el de un long int. Veremos cmo averiguar estos valores cuando estudiemos los operadores. A cierto nivel, podemos considerar los tipos char, short int, int y long int como tipos enteros diferentes. Pero esa diferencia consiste slo en el tamao del valor mximo que pueden contener, y en el tamao que ocupan en memoria, claro.

Este tipo de variables es til para almacenar nmeros relativamente grandes, pero sin decimales, por ejemplo el dinero que tienes en el banco, (salvo que seas Bill Gates), o el nmero de lentejas que hay en un kilo de lentejas.