Historia del Código ASCII: El código ASCII (siglas en ingles para American Standard Code for Information Interchange, es decir Código Americano (estadounidense) Estándar para el intercambio de Información) (se pronuncia Aski). Fue creado en 1963 por el Comité Estadounidense de Estándares o "ASA", este organismo cambio su nombre en 1969 por "Instituto Estadounidense de Estándares Nacionales" o "ANSI" como se lo conoce desde entonces. Este código nació a partir de reordenar y expandir el conjunto de símbolos y caracteres ya utilizados por ese entonces en telegrafía por la compañía Bell. En un primer momento solo incluía las letras mayúsculas, pero en 1967 se agregaron las letras minúsculas y algunos caracteres de control, formando así lo que se conoce como US-ASCII, es decir los códigos del 0 al 127. Así con este conjunto de solo 128 caracteres fue publicado en 1967 como estándar, conteniendo todos lo necesario para escribir en idioma ingles. En 1986, se modifico el estándar para agregar nuevos caracteres latinos, necesarios para la escrituras de textos en otros idiomas, como por ejemplo el español, así fue como se agregaron los caracteres que van del ASCII 128 al 255. Casi todos los sistemas informáticos de la actualidad utilizan el código ASCII para representar caracteres y textos (7510). Como utilizar el código ASCII: Sin saberlo lo utilizas todo el tiempo, cada vez que utilizas algún sistema informático, 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, carácter o símbolo "Ñ" : ( letra EÑE mayúscula - letra N con tilde - ENIE ) 1) Presiona la tecla "Alt" en tu tu teclado, y no la sueltes. sueltes. 2) Sin dejar de presionar "Alt", presiona en el teclado numérico el número "165", que es el numero de la letra o símbolo "Ñ" en el código ASCII. 3) Ya está listo (7510) .
Relación
código ascci y variable char
Es el tipo básico alfanumérico, es decir que puede contener un carácter, un dígito numérico o un signo de puntuación. Desde el punto de vista del ordenador, todos esos valores son caracteres. En C++ este tipo siempre contiene un único carácter del código ASCII. El tamaño de memoria es de 1 byte u octeto. Hay que notar que en C un carácter es tratado en todo como un número, de hecho, habrás observado que puede ser declarado con y sin signo. Si no se especifica el modificador de signo, se asume que es co n signo. Nota: sé que esto sorprende, inquieta y despista a mucho s lectores, así que probablemente necesite alguna explicación más detallada. De modo que he añadido un pequeño apéndice que explica cómo es posible que un número y una letra se puedan representar con el mismo tipo: Apéndice A.
Este tipo de variables es apto para almacenar números pequeños, como los dedos que tiene una persona, o letras, como la inicial de mi nombre de pila. El tipo char es, además, el único que tiene un tamaño conocido y constante. Para el resto de los tipos fundamentales que veremos, el tamaño depende de la implementación 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 máximo y mínimo. Así, el tipo char con el modificador signed, puede tomar valores numéricos entre -128 y 127. Con el modifiador unsigned, el rango está entre 0 y 255. El hecho de que se trate de un tipo numérico entero nos permite usar variables de char para trabajar con valores pequeños, siempre que lo consideremos necesario. El motivo por el que este tipo también puede contener un caracter es porque existe una correspondencia entre números y caracteres. Esa correspondencia recibe el nombre de código ASCII. Según este código, por ejemplo, al número 65 le corresponde el carácter 'A' o al número 49 el '1'. El código ASCII primitivo usaba sólo 7 bits, es decir, podía codificar 128 caracteres. Esto era más que suficiente para sus inventores, que no usaban acentos, eñes, cedillas, etc. El octavo bit se usaba como bit de paridad en transmisiones de datos, para la detección de errores. Después, para internacionalizar el código, se usó el octavo bit en una tabla ASCII extendida, que puede codificar 256 caracteres. Pero como esto también 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 tamaño, después de long int. Como en los otros casos, su tamaño no está definido, pero sí sabemos que será mayor o igual que el de long int. Tipo float
"float" o coma flotante: [,[,]...];
Las variables de este tipo almacenan números en formato de coma flotante, esto es, contienen un valor de mantisa y otro de exponente, que, para entendernos, codifican números con decimales. Aunque el formato en que se almacenan estos números en un o rdenador es binario, podemos ver cómo es posible almacenar números muy grandes o muy pequeños mediante dos enteros relativamente pequeños, 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. e
Los números se interpretan como m x 10 . Este formato nos permite almacenar números entre -0. 99 x 109 y 0.99 x 109. Es decir, entre -990000000 y 99000000. -9
-9
Y también números tan pequeños como 0.01 x 10 ó -0.01 x 10 . Es decir, como 0,00000000001 ó -0,00000000001. Esto sólo con tres dígitos decimales, más los signos. Pero en un ordenador se usa aritmética binaria. Por ejemplo, para un tipo float típico 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 más detalles se puede consultar el siguiente enlace: representación de los números en punto flotante. Estas variables son aptas para variables de t ipo real, como por ejemplo el cambio entre euros y dólares. O para números muy grandes, como la producción mundial de trigo, contada en granos.
Pero el fuerte de estos números no es la precisión, sino el orden de magnitud, es decir lo grande o pequeño que es el número 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 sería de esperar. Los formatos en coma flotante sacrifican precisión en favor de tamaño. Sin embargo el ejemplo si funcionaría con números más pequeños. Esto hace que las variables de tipo float no sean muy adecuadas para todos los casos, como veremos más 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 precisión 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 sólo pueden tomar dos valores true (verdadero) o false (falso). Sirven para evaluar expresiones lógicas. Este t ipo de variables se puede usar para almacenar respuestas, por ejemplo: ¿Posees carné de conducir?. O para almacenar informaciones que sólo pueden tomar dos valores, por ejemplo: qué mano usas para escribir. En estos casos debemos acuñar una reg la, en este ejemplo, po dría ser diestro>true, zurdo->false. bool
respuesta; bool continuar;
Nota: En algunos compiladores de C++ antiguos no existe el tipo bool. Lo lógico sería no usar esos compiladores, y conseguir uno más 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 precisión:
[long] dou ble [,[,]...];
Las variables de este tipo almacenan números en formato de coma flotante, mantisa y exponente, al igual que float, pero usan una precisión mayor, a costa de usar más memoria, claro. Son aptos para variables de tipo real. Usaremos estas variables cuando trabajemos con números grandes, pero también necesitemos gran precisión. El mayor espacio para
almacenar el número se usa tanto para ampliar el rango de la mantisa como el del exponente, de modo que no sólo se gana en precisión, sino también en tamaño. Al igual que pasaba con los números enteros, no existe un tamaño predefinido para cada tipo en coma flotante. Lo que sí sabemos es que el tamaño 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 ningún ejemplo en el que sea útil usar uno de estos tipos. Bueno, también 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 economía de recursos, tanto en cuanto al uso de memoria como al uso de procesador. Si tu problema no requiere la precisión 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 número en formato de long double se requiere el triple de memoria y el triple o más tiempo de procesador que para manejar un float. Como programadores estamos en la obligación 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 características, 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 números enteros dentro de los límites de cada uno de sus tamaños. A su vez, esos tamaños dependen de la plataforma, del compilador, y del número de bits que use por palabra de memoria: 8, 16, 32... No hay reglas fijas para saber el tamaño, y por lo tanto, el mayor número que podemos almacenar en cada tipo entero: short int, int o long int; depende en gran medida del compilador y del sistema operativo. Sólo podemos estar seguros de que el tamaño 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 cómo 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 sólo en e l tamaño del valor máximo que pueden contener, y en el tamaño que ocupan en memoria, claro.
Este tipo de variables es útil para almacenar números relativamente grandes, pero sin decimales, por ejemplo el dinero que tienes en el banco, (salvo que seas Bill Gates), o el número de lentejas que hay e n un kilo de lentejas.