Está en la página 1de 10

Constantes, Variables y Entrada/Salida

Estndar
Introduccin
Si se deseara imprimir los resultados de multiplicar un nmero fijo por otro que adopta valores entre 0 y 9 , la
forma normal de programar esto sera crear una CONSTANTE para el primer nmero y un par de VARIABLES
para el segundo nmero y para el resultado del producto. Quiz tambin se desee introducir mediante el
teclado los valores que puede tomar la variable y mostrar al usuario el resultado de la multiplicacin.
En este documento, se presentan los conceptos de constante, variable y el manejo bsico de la entrada/salida
de los programas. Tambin se incluyen un conjunto de actividades que deben realizarse para completar el
estudio del mdulo.

Variables
Definicin, Declaracin, Sintaxis e Inicializacin.
Una variable es un espacio de memoria, referenciado por un identificador, en el que el programador puede
almacenar datos de un determinado tipo que cambia durante la ejecucin de un programa.
Declarar una variable es indicar al compilador que debe reservar espacio para almacenar valores de un tipo
determinado, que sern referenciados por un identificador determinado. En C se deben declarar todas las
variables antes de usarlas, establecer el tipo que tienen y, en caso que sea necesario, darles un valor inicial.
La declaracin de una variable es una sentencia simple con la siguiente sintaxis:
tipoVariable nombreVariable;
De esta forma declaramos que la variable nombreVariable es de tipo tipoVariable.
Ejemplos:
int
int
int
int

contador;
contador = 2;
x,y,z;
x=0,y=1,z=23;

Nombres de Variables
A la hora de declarar una variable debemos elegir un nombre, y para ello es necesario tener en cuenta diversas
restricciones:

Los nombres de variables se componen de letras, dgitos y el caracter de subrayado _ (tambin llamado
underscore).
El primer caracter del nombre debe ser una letra o el carcter de subrayado.
1

Las letras maysculas y minsculas son distintas en C. As, mivariable es distinto de MIVARIABLE
Las palabras reservadas del lenguaje no se pueden usar como nombres de variable.
Aunque un nombre de variable puede tener la cantidad de caracteres que se desee, dependiendo del
compilador que se use, ste tomar como significativos slo los primeros n de ellos; siendo por lo
general n igual a 32
Asimismo, es necesario tomar en cuenta algunas buenas prcticas de programacin, como, elegir
nombres de variable que sean significativos y estn relacionados con el propsito de la misma.
Es una convencin entre los programadores de C escribir los nombres de las variables y las funciones
con minsculas, reservando las maysculas para las constantes.

Tipos de Variables
El tipo de una variable determina el dominio de valores que dicha variable debe tomar.
C ofrece una coleccin de tipos de datos bastante limitada, aunque no por ello poco funcional. Dicha coleccin
se compone de los siguientes tipos:

tipos enteros
tipos reales o de punto flotante

Tipos enteros
Este tipo de datos sirve para representar variables de tipo entero, es decir, que no llevan una parte fraccional.
Por regla general, este tipo int ocupa dos bytes y su alcance queda restringido al rango entre 32,768 y +32,767
(incluyendo 0 ).
En caso de necesitar un rango ms amplio, puede definirse la variable como "long int nombre_de_variable"
en forma ms abreviada "long nombre_de_variable". Declarada de esta manera, nombre_de_variable puede
alcanzar valores entre - 2.347.483.648 y +2.347.483.647.
A la inversa, si se quisiera un alcance menor al de int, podra definirse "short int " simplemente "short",
aunque por lo general, los compiladores modernos asignan a este tipo el mismo alcance que "int".
Debido a que la norma ANSI C no establece la cantidad de bytes que ocupa cada tipo de variable, sino tan slo
que un "long" no ocupe menos memoria que un "int" y este no ocupe menos que un "short", los alcances de
los mismos pueden variar de compilador en compilador.
Para variables de muy pequeo valor puede usarse el tipo "char" cuyo alcance est restringido a -128, +127 y
por lo general ocupa un nico byte.
Todos los tipos citados hasta ahora pueden alojar valores positivos negativos y, aunque es redundante, esto
puede explicitarse agregando el calificador "signed" delante; por ejemplo:

signed int
signed long
signed long int
signed short
signed short int
2

signed char

Si variable slo puede adoptar valores positivos (como por ejemplo la edad de una persona) se puede
aumentar el alcance de cualquiera de los tipos, restringindolos a que slo representen valores sin signo por
medio del calificador "unsigned".
Si se omite el calificador delante del tipo de la variable entera, ste se adopta por omisin (default) como
"signed".

TIPO
signed char
unsigned char
signed short
unsigned short
signed int
unsigned int
signed long
unsigned long

Tipos para nmero entero


BYTES
VALOR MINIMO
1
-128
1
0
2
-32.768
2
0
2
-32.768
2
0
4
-2.147.483.648
4
0

VALOR MAXIMO
127
255
+32.767
+65.535
+32.767
+65.535
+2.147.483.647
+4.294.967.295

Tipos reales o de punto flotante


Este tipo de datos sirve para representar nmeros reales, es decir, aquellos que tienen una parte entera y una
parte fraccionaria. A nivel interno, en la computadora dichos nmeros son representados en un formato de
punto flotante.
Las variables de punto flotante son SIEMPRE con signo, y en el caso que el exponente sea positivo puede
obviarse el signo del mismo.
De acuerdo a su alcance, hay tres tipos de variables de punto flotante.

TIPO
Float
Doubl
long double

Tipos de variables de punto flotante.


BYTES
VALOR MINIMO
4
3.4E-38
8
1.7E-308
10
3.4E-4932

VALOR MAXIMO
3.4E+38
1.7E+308
3.4E+4932

El tipo Caracter
El lenguaje C guarda los caracteres como nmeros de 8 bits de acuerdo a la norma ASCII extendida, que asigna
a cada caracter un nmero comprendido entre 0 y 255 ( un byte de 8 bits), debido a ello, este tipo de variables
puede definirse como entero o caracter. En el primer caso se tendra lo siguiente:
char c ;
Sin embargo, tambin funciona de manera correcta definirla como
int c ;
3

Esta ltima opcin desperdicia un poco ms de memoria que la anterior, pero en algunos casos particulares
presenta ciertas ventajas.
Las variables del tipo caracter tambin pueden ser inicializadas en su definicin, por ejemplo es vlido escribir:
char c = 97 ;
para que c contenga el valor ASCII de la letra "a", sin embargo esto resulta algo engorroso , ya que obliga a
recordar dichos cdigos . Existe una manera ms directa de asignar un caracter a una variable y consiste en
delimitar los caracteres con comillas simples, el compilador entender que debe suplantarlo con su
correspondiente cdigo nmero; as, la siguiente inicializacin es idntica a la anterior :
char c = 'a' ;
Los caracteres no imprimibles (como Enter) no son fciles de asignar a una variable ya que el editor los toma
como un comando y no como un carcter, por lo que se utilizan las secuencias de escape convencionales, que
han sido descritas en la prctica anterior. Asimismo, es importante recordar que cualquier caracter del cdigo
ASCII puede ser desplegado expresando su valor en octal o hexadecimal (\xHH).

Calificadores
Los calificadores son atributos que indican al compilador una caracterstica de la variable declarada. Entre ellos
estn:
short y long
Normalmente el rango de representacin ofrecido por un tipo es suficientemente grande para cubrir las
necesidades. Sin embargo en C es posible sugerir al compilador que utilice ms memoria a la hora de
almacenar la variable de ese tipo. Esto se hace con el calificador long.
long int numero_entero_grande;
long double numero_real_grande;
El calificador short acta de forma contraria a long. Si una variable no va a usar todo el rango ofrecido por el
tipo int se puede calificar como short int ahorrando memoria.
short int numero_pequeo;
signed y unsigned
Estos calificadores se usan en los tipos char e int para indicar al compilador que la variable declarada tomar
valores negativos y positivos (signed) o slo positivos (unsigned).
unsigned int entero_positivo;
static(local)
Una variable local declarada con el modificador static, solamente ser accesible desde esa funcin y conservar
su valor a travs de sucesivas llamadas.

static(global)
Las variables globales son por defecto accesibles desde cualquier fuente del programa, de igual modo, las
funciones definidas en un cdigo fuente son utilizables desde cualquier otro, para impedir esta situacin, se
utiliza el modificador static, lo que impedir que sea visible desde otro cdigo fuente.
register
Con este modificador se indica al compilador que la variable debe ser almacenada en un registro de la CPU (no
en memoria).
register int i;
volatile
Este modificador se usa con variables que puedan ser modificadas desde el exterior del programa por procesos
externos. Obliga al compilador a leer de memoria el valor de la variable siempre que vaya a ser usada aunque
ya tenga dicho valor en algn registro de una lectura anterior. Se usa con variables en las que no se sabe con
certeza cundo se va a modificar su contenido.
volatile int i;

Conversin de tipos
Cuando dos o ms tipos de variables distintas se encuentran DENTRO de una misma operacin o expresin
matemtica, ocurre una conversin automtica del tipo de las variables. En todo momento de realizarse una
operacin se aplica la siguiente secuencia de reglas de conversin (previamente a la realizacin de dicha
operacin):

Las variables del tipo char short se convierten en int


Las variables del tipo float se convierten en double
Si alguno de los operandos es de mayor precisin que los dems, stos se convierten al tipo de aquel y
el resultado es del mismo tipo.
Si no se aplica la regla anterior y un operando es del tipo unsigned el otro se convierte en unsigned y el
resultado es de este tipo.

En lo general, estas reglas no presentan problemas ya que nicamente dicen que previamente a realizar alguna
operacin las variables son promovidas a su instancia superior. Esto no implica que se haya cambiado la
cantidad de memoria que las aloja en forma permanente
El caso de la conversin de asignaciones es un poco diferente.
Si se definen los trminos de una asignacin como,"lvalue" a la variable a la izquierda del signo igual y "rvalue"
a la expresin a la derecha del mismo, es decir:
"lvalue" = "rvalue"
Posteriormente al clculo del resultado de "rvalue" (de acuerdo con las reglas antes descriptas), el tipo de este
se iguala al del "lvalue". El resultado no se ver afectado si el tipo de "lvalue" es igual superior al del "rvalue",
en caso contrario se efectuar un truncamiento redondeo, segn sea el caso.

Por ejemplo, el pasaje de float a int provoca el truncamiento de la parte fraccionaria, en cambio de double a
float se hace por redondeo.
Las conversiones automticas pueden ser controladas a gusto por el programador, imponiendo el tipo de
variable al resultado de una operacin. Suponiendo:
double d , e , f = 2.33 ;
int i = 6 ;
e = f * i ;
d = (int) ( f * i ) ;
En la primer sentencia se calcula el valor del producto (f * i) , que segn lo visto anteriormente dar un double
de valor 13.98 , el que se ha asignado a e. Si en la variable d se deseara reservar slo el valor entero de dicha
operacin bastar con anteponer, encerrado entre parntesis, el tipo deseado. As en d se almacenar el
nmero 13.00.
Tambin es factible aplicar la fijacin de tipo a una variable, por ejemplo obtendremos el mismo resultado, si
hacemos:
d = (int) f * i ;
En este caso, se ha convertido a f en un entero (truncando sus decimales )

Tamao de las variables


En muchos programas es necesario conocer el tamao (cantidad de bytes) que ocupa una variable, por ejemplo
en el caso de querer reservar memoria para un conjunto de ellas. Este tamao es dependiente del compilador
que se use, lo que producir un problema serio si luego se quiere compilar el programa con un compilador
distinto del original.
Para salvar este problema y mantener la portabilidad, es conveniente que cada vez que haya que referirse al
TAMAO en bytes de las variables, se lo haga mediante un operador llamado "sizeof" que calcula sus
requerimientos de almacenaje
Est tambin permitido el uso de sizeof con un tipo de variable, es decir:
sizeof(int)
sizeof(char)
sizeof(long double) , etc.

Definicin de nuevos tipos


A veces resulta conveniente crear otros tipos de variables, redefinir con otro nombre las existentes, esto se
puede realizar mediante la palabra clave "typedef", por ejemplo:
typedef unsigned long double enorme;
A partir de este momento, las definiciones siguientes tienen idntico significado:
unsigned long double nombre_de_variable;
enorme nombre_de_variable ;
6

Constantes
Las constantes son valores fijos que no pueden ser modificados por el programa. Pueden ser de cualquier tipo
de datos bsico.
Dichas constantes son guardadas en memoria de la manera que al compilador le resulta ms eficiente y son
afectadas por las reglas de reconversin automtica, por lo que los resultados en ocasiones pueden ser
desconcertantes.
A fin de tener control sobre el tipo de las constantes, se aplican las siguientes reglas:

Una variable expresada como entera (sin parte decimal) es tomada como tal salvo que se la siga de las
letras F L (maysculas minsculas) ejemplos :
o 1 : tomada como ENTERA
o 1F : tomada como FLOAT
o 1L : tomada como LONG DOUBLE
Una variable con parte decimal es tomada siempre como DOUBLE, salvo que se la siga de la letra F L
o 1.0 : tomada como DOUBLE
o 1.0F : tomada como FLOAT
o 1.0L : tomada como LONG FLOAT
Si en cualquiera de los casos anteriores se agrega la letra U u la constante queda calificada como
UNSIGNED (consiguiendo mayor alcance) :
o 1u : tomada como UNSIGNED INT
o 1.0UL : tomada como UNSIGNED LONG DOUBLE
Una variable numrica que comienza con "0" es tomado como OCTAL asi : 012 equivale a 10 unidades
decimales
Una variable numrica que comienza con "0x" "0X" es tomada como hexadecimal: 0x16 equivale a 22
unidades decimales y 0x1A a 26 unidades decimales.

Por lo general es una mala prctica de programacin colocar en un programa constantes en forma literal (sobre
todo si se usan varias veces) ya que el texto se hace difcil de comprender y an ms de corregir, si se debe
cambiar el valor de dichas constantes. Para aumentar la legibilidad del programa y facilitar su correccin, se
puede asignar un smbolo a cada constante, y reemplazarla a lo largo del programa por el mismo.
El compilador, en el momento de crear el ejecutable, reemplazar el smbolo por el valor asignado.

Declaracin de constantes
Existen diversas formas de declarar una constante en C, la ms comn consiste en utilizar la palabra reservada
const de la siguiente manera:
const int dummy = 321;
321 */

/* declara que dummy vale y valdr siempre

Constantes numricas
Aparte de constantes enteras tipo 1234 y en punto flotante de la forma 10.4, a veces resulta ms cmodo
poder introducir la constante en base 8 (octal) o 16 (hexadecimal) que en base 10. Dado que es corriente usar

estos sistemas de numeracin, C permite especificar constantes enteras en hexadecimal u octal. Una constante
hexadecimal empieza por 0x seguido del nmero esa base. Igulmente una constante octal comienza por 0:
const int hex = 0x80A; /* 2058 en decimal */
const int oct = 012; /* 10 en decimal */
Constantes de caracteres
Las cadenas de caracteres se representan encerrando la cadena entre comillas dobles ("hola Mundo" sera un
ejemplo). Hay ciertos caracteres que no se puede (o no es cmodo) introducir de esta forma, como son los
caracteres de control: tabulador, retorno de carro, etctera. Para introducirlos hay que usar las secuencias de
escape que ya se han definido previamente.
Constantes enumeradas
Las constantes enumeradas permiten definir una lista de constantes representadas por identificadores. Estas
constantes son realmente, enteras. Si no se especifica una correspondencia entre nombre y nmero el
compilador se encarga de asignarles nmeros consecutivos (empezando por 0). Se pueden usar como los
enteros que son, pero la idea es hacer el cdigo ms legible.
Para definirlas se usa la palabra reservada enum de la siguiente manera:
enum color{rojo, amarillo, morado};
enum bool{false=0, true=1};
Constantes simblicas
Con el preprocesador, tambin se pueden definir constantes, en este caso son realmente alias. Al compilar se
sustituye tal cual un valor por otro y no se reserva memoria para el valor.
Para dar un smbolo a una constante bastar, en cualquier lugar del programa (previo a su uso) poner la
directiva: #define, por ejemplo:
#define VALOR_CONSTANTE 3421
#define MAX_ALUMNOS 30
#define LONGITUD 10

Lectura y Despliegue de variables en pantalla


Existen en C diversas funciones que leer y escriben datos de pantalla. Por lo pronto se revisarn nicamente:
printf y scanf

printf
int printf(const char *formato[,argumento,...]);
Escribe en la salida estndar texto formateado, segn las especificaciones de ``formato'' y la lista de
argumentos. Devuelve el nmero de caracteres escritos o un valor negativo en caso de error. El encabezado de
esta funcin se encuentra en el archivo stdio.h

Codigo

Formato

%c

Carcter

%d, %i

Entero Decimal con signo

%u

Entero decimal sin signo

%e

Real (double o float), en notacion cientifica. Se puede indicar el nmero de enteros y


decimales.

%f

Punto flotante se agrega precisin indicando el nmero de lugares enteros y decimales.

%s

Cadena de caracteres

%o

Octal sin signo

%x

Hexadecimal sin signo

Ejemplo:
printf(El valor de x es %d\n,x)

scanf
int scanf(const char *formato {,direccion,...]);
Lee texto por la entrada estndar y lo almacena segn las especificaciones de ``formato''. Devuelve el nmero
de valores asignados o EOF si se produce error o se alcanza fin de archivo sin producirse lectura. El encabezado
de esta funcin se encuentra en el archivo stdio.h

Cdigo

Formato

%c

Caracter

%d

Entero Decimal

%x

Hexadecimal

%i

Entero Decimal

%f

Numero Real

%o

Octal

%p

Apuntador

%s

Cadena

Ejemplo:
scanf('%d %f %c %s, &i, &fp, &c, s);

Actividades
1. Elaborar un cuadro sinptico o mapa mental en su cuaderno con los contenidos de este documento
9

2. Declarar nombres para las variables que representarn lo siguiente


a. el nmero de grados centgrados en una caldera
b. la edad de una persona
c. el nmero de integrantes de un grupo
3. Asignar a las variables declaradas un valor inicial.
4. Declarar constantes que representen
a. la aceleracin de la gravedad
b. el nmero PI
c. los das de la semana (usando enum)
5. Averiguar cul es la diferencia entre una constante que es declarada con #define y otra que es
declarada mediante const.

10

También podría gustarte