Logo Studenta

programacion c ejercicios resueltos-37

¡Estudia con miles de materiales!

Vista previa del material en texto

En C++, la forma más simple de valor entero es una secuencia de uno o más dígitos:
 22 16 1 498 0 4600
No se permiten comas.
En la mayor parte de los casos, un signo menos que precede a un valor entero lo hace negati-
vo:
 –378 –912
La excepción es cuando se añade de modo explícito la palabra reservada unsigned al nombre de tipo 
de datos:
 unsigned int
Se supone que un valor entero unsigned es sólo positivo o cero. Los tipos unsigned se emplean 
sobre todo en situaciones especializadas. En este libro rara vez se usa unsigned.
Los tipos de datos char, short, int y long tienen como fi n representar tamaños distintos de 
enteros, de menor (pocos bits) a más grande (más bits). Los tamaños dependen de la máquina (es 
decir, pueden variar de una máquina a otra). Para una determinada máquina, se podrían ilustrar los 
tamaños de la siguiente forma:
Celda de memoria char 
Celda de memoria short 
Celda de memoria int 
Celda de memoria long 
En otra máquina, el tamaño de un tipo int debe ser el mismo que el tamaño de uno long. En ge-
neral, mientras más bits haya en la celda de memoria, más grande es el entero que se puede al-
macenar.
Aunque en el capítulo 2 se usó el tipo char para guardar datos de caracteres como 'A', hay 
razones de por qué C++ clasifi ca char como un tipo integral. En el capítulo 10 se examinan las ra-
zones.
int es por mucho el tipo de dato más común para manejar datos enteros. En el programa del año 
bisiesto del capítulo 1, el identifi cador, year, es del tipo de datos int. Casi siempre se usa int para 
manejar valores enteros, pero algunas veces es necesario usar long si el programa requiere valores 
más grandes que el valor int máximo. (En algunas computadoras personales, el intervalo de valores 
int va de –32768 hasta +32767. Más comúnmente, int varía de -2147483648 a +2147483647.) Si 
su programa intenta calcular un valor más grande que el valor máximo de su máquina, el resultado 
es integer overfl ow (desbordamiento). Algunas máquinas dan un mensaje de error cuando hay des-
bordamiento, pero otras no. En capítulos posteriores se habla más de desbordamiento.
Una precaución acerca de valores enteros en C++: una constante literal que comienza con un cero 
se considera como un número octal (base 8) en lugar de un número decimal (base 10). Si escribe
015
el compilador C++ toma esto para promediar el número decimal 13. Si no está familiarizado con el 
sistema de números octales, no se preocupe de por qué un 15 octal es lo mismo que un 13 decimal. 
Lo importante a recordar es no iniciar una constante entera decimal con un cero (a menos que sólo 
quiera el número 0, que es el mismo en la base octal y decimal). En el capítulo 10 se analizan con 
más detalle los distintos tipos integrales.
 3.2 Tipos de datos numéricos | 81
DALE003.indd 81DALE003.indd 81 4/12/06 18:56:054/12/06 18:56:05
 www.FreeLibros.me
82 | Capítulo 3: Tipos numéricos, expresiones y salida
Tipos de punto fl otante
Los tipos de punto fl otante (o tipos fl otantes), la segunda categoría principal de tipos simples en C++, 
se emplean para representar números reales. Los números de punto fl otante tienen una parte entera 
y una parte fraccionaria, con un punto decimal entre ellas. Puede faltar la parte entera o la fraccio-
naria, pero no ambas. Aquí se dan algunos ejemplos:
 18.0 127.54 0.57 4. 193145.8523 .8
Si 0.57 empieza con cero no es un número octal. Es sólo con valores enteros que un cero principal 
indica un número octal.
Así como los tipos integrales en C++ vienen en tamaños distintos (char, short, int y long), 
también los tipos de punto fl otante. En orden creciente de tamaño, los tipos de punto fl otante son 
fl oat, double (que signifi ca doble precisión) y long double. De nuevo, los tamaños exactos depen-
den de la máquina. Cada tamaño más grande da potencialmente un intervalo más amplio de valores 
y más precisión (la cantidad de dígitos signifi cativos en el número), pero a expensas de más espacio 
para contener el número.
Los valores de punto fl otante también pueden tener un exponente, como en la notación científi -
ca. (En notación científi ca, un número se escribe como un valor multiplicado por 10 elevado a algu-
na potencia.) En lugar de escribir 3.504 � 1012, en C++ se escribe 3.504E12. La E signifi ca exponen-
te de base 10. El número que precede a la letra E puede no incluir un punto decimal. A continuación 
se dan algunos ejemplos de números de punto fl otante en notación científi ca.
 1.74536E–12 3.652442E4 7E20
La mayoría de los programas no requiere tipos double o long double. El tipo fl oat en general 
proporciona precisión sufi ciente e intervalo de valores para números de punto fl otante. La mayoría 
de las computadoras personales proporcionan valores fl oat con una precisión de seis o siete dígitos 
signifi cativos y un valor máximo de aproximadamente 3.4E+38. Se usan valores de punto fl otante 
para representar dinero y tasas de interés en el caso práctico al fi nal del capítulo.
En el capítulo 10 se habla más acerca de los números de punto fl otante. Pero hay algo más que 
debe saber acerca de ellos ahora. Las computadoras no pueden representar siempre números de pun-
to fl otante de modo exacto. En el capítulo 1 se aprendió que la computadora almacena los datos en 
forma binaria (base 2). Muchos valores de punto fl otante sólo pueden ser aproximados en el sistema 
de números binarios. No se sorprenda si su programa imprime el número 4.8 como 4.7999998. En la 
mayoría de los casos, se esperan ligeras inexactitudes en los dígitos fraccionarios más a la derecha y 
no son resultado de error del programador.
3.3 Declaraciones para tipos numéricos
Así como con los tipos char y string, se pueden declarar constantes y variables nombradas de tipo 
int y fl oat. Tales declaraciones usan la misma sintaxis que antes, excepto que las literales y los 
nombres de los tipos de datos son diferentes.
Declaraciones constantes nombradas
En el caso de declaraciones constantes nombradas, los valores literales en las declaraciones son nu-
méricos en lugar de ser caracteres en comillas simples o dobles. Por ejemplo, aquí están algunas de-
claraciones constantes que defi nen valores de tipo int y fl oat. Por comparación, se incluyen valores 
de las declaraciones char y string.
DALE003.indd 82DALE003.indd 82 4/12/06 18:56:064/12/06 18:56:06
 www.FreeLibros.me
 const fl oat PI = 3.14159;
const fl oat E = 2.71828;
const int MAX_SCORE = 100;
const int MIN_SCORE = –100;
const char LETTER = 'W';
const string NAME = "Elizabeth";
Aunque las literales de carácter y cadena se escriben entre comillas, no sucede lo mismo con los 
enteros literales y los números de punto fl otante, ya que no hay manera de confundirlos con identi-
fi cadores. ¿Por qué? Porque los identifi cadores deben empezar con una letra o guión bajo y los nú-
meros deben empezar con un dígito o signo.
 3.3 Declaraciones para tipos numéricos | 83
Consejo práctico de ingeniería de software
Uso de constantes nombradas en lugar de literales
Es una buena idea usar constantes nombradas en lugar de literales. Además de hacer su programa más le-
gible, las constantes nombradas pueden hacer que la modifi cación de su programa sea más fácil. Suponga 
que escribió un programa el año pasado que calcula impuestos. En varios lugares usó la literal 0.05, que 
fue la tasa de impuestos para las ventas en aquel entonces. Ahora la tasa ha subido a 0.06. Para cambiar su 
programa, debe localizar toda literal 0.05 y cambiarla a 0.06. Y si 0.05 se emplea por alguna otra razón para 
calcular deducciones, por ejemplo, necesita examinar cada lugar donde se usó, recordar para qué se em-
pleó y luego decidir si la cambia.
El proceso es mucho más simple si usa una constante nombrada. En lugar de usar una constante literal, 
suponga que ha declarado una constante nombrada, TAX_RATE, con un valor de 0.05. Para cambiar su 
programa, simplemente cambiaría la declaración, y fi jaríaTAX_RATE igual a 0.06. Esta modifi cación cambia 
todos los cálculos de tasa de impuestos sin afectar los otros lugares donde se usa 0.05.
C++ permite declarar constantes con diferentes nombres pero el mismo valor. Si un valor tiene signi-
fi cados distintos en diferentes partes de un programa, tiene sentido declarar y usar una constante con un 
nombre apropiado para cada signifi cado.
Las constantes nombradas también son confi ables; protegen de errores. Si escribe mal el nombre PI 
como PO, el compilador C++ le dice que el nombre PO no ha sido declarado. Por otro lado, aunque se re-
conozca que el número 3.14149 es una versión mal introducida de pi (3.1416), el número es perfectamente 
aceptable para el compilador. No advierte que algo está mal.
Declaraciones de variables
Las variables numéricas se declaran de la misma manera que las variables char y string, excepto 
que usan los nombres de tipos numéricos. Las siguientes son declaraciones válidas para variables:
 int studentCount; // Número de alumnos
int sumOfScores; // Suma de sus puntuaciones
fl oat average; // Promedio de las puntuaciones
char grade; // Califi cación del alumno
string stuName; // Nombre del alumno
DALE003.indd 83DALE003.indd 83 4/12/06 18:56:074/12/06 18:56:07
 www.FreeLibros.me

Continuar navegando