DEFINICIÓN DE VARIABLES en C++

| 2013-04-18 | No hay comentarios »

Veamos a continuación el archivo 17VARDEF.CPP


#include <iostream.h>

int indice;

main()

{

int elemento;

int &otro_elemento = elemento; // Un sinónimo para elemento

&nbsp;

elemento = indice + 14;      //índice ha sido inicializado a cero y elemento toma su valor modificado

cout << "El elemento tiene el valor " << elemento << "\n";

elemento = 17;

cout << "El otro elemento tiene el valor " << otro_elemento << "\n";

&nbsp;

int mas_elementos = 13;        //Esta no es una inicialización automática

&nbsp;

cout << "Otro elemento tiene el valor " << mas_elementos << "\n";

cout << "El contador vale " << contador << "\n";   for (int contador = 3;contador < 8;contador++) {

char contador2 = contador + 65;

cout << "Contador2 tiene el valor " << contador2 << "\n";

}

static unsigned estatico;      //inicialización automática a cero

&nbsp;

cout << "Estático vale " << estatico << "\n";

}

Las variables son automáticamente inicializadas a cero cuando se declaran.  Los variables  “indice”, en la línea 3, y “estático”, en la línea 25 son, por lo tanto, automáticamente inicializadas a cero.  Por supuesto, todavía se pueden inicializar con algún otro valor si se desea. Las variables globales, como “indice”, se llaman a veces externas.

La variable “elemento” en la línea 7, no contiene un valor válido. En la línea 10, se le asigna un valor utilizando a “indice” (que vale cero) y se muestra por pantalla.

VARIABLE DE REFERENCIA

En la línea 8 se define a la variable “otro_elemento” como una variable de referencia, utilizando el símbolo & (amperson).

La variable de referencia llega a ser un sinónimo para  la variable “elemento”. Cambiando el valor de “elemento” cambiará el valor de “otro_elemento” porque ambas son como una misma variable.

El sinónimo puede usarse para acceder al valor del variable con cualquier propósito. Se debe indicar que una variable de referencia debe ser inicializada para hacer referencia a alguna otra variable, de no ser así el compilador responderá con un error. Después de la inicialización, la variable no puede cambiarse para hacer referencia a una variable diferente.

La variable de referencia no debería usarse muy frecuentemente, ya que puede conducir a  confusiones en el programa, pero puede utilizarse cuando el código es claro y fácil de comprender.

DECLARACIONES EJECUTABLES

En la línea 15 hay una declaración extraña, pero legal en C++. Es legal poner una declaración ejecutable en cualquier lugar del programa, incluso en una definición de variable.

En este caso, definimos la variable “mas_elementos” y la inicializamos con el valor 13.

Es muy importante que el variable se declare cerca de su punto de uso.  Esto hace más fácil de ver qué variable se usa para una determinada orden.  Aunque tiene un alcance mucho más restringido.

Definición y declaración

Las palabras de definición y declaración se refieren a dos cosas diferentes en C++.

Una declaración provee información al compilador sobre las características de un elemento tal como un dato o una función, pero no define realmente ningún código para ser usado en la ejecución del programa. Es posible hacer tantas declaraciones como se desee sobre un mismo elemento.

Una definición, por otra parte, realmente define algo que existirá en el programa ejecutable, o algunas variables útiles, o algún código ejecutable, y se requiere tener una y sólo una definición de cada elemento en el programa.

En suma, una declaración introduce un nombre en el programa y una definición introduce algunos códigos.

Cuando definimos las variables, declaramos sus nombres para el uso del compilador, y definimos una ubicación de memoria para almacenar sus valores. Por lo tanto, cuando definimos una variable, la declaramos y la definimos a la vez. (definir=ubicación de memoria para sus valores)(declarar= sus nombres para uso del compilador)

Las variables En EL BUCLE for

Revisemos cuidadosamente el bucle definido en la línea 19.

Como puede verse, el índice se define en mismo bucle (“contador”). El alcance de este índice de bucle va desde su declaración hasta el fin del programa.

A partir de allí, la variable está disponible, puede usarse para otro índice de bucle o para cualquier otro propósito.

La variable nombrada “contador2” se declara e inicializa en cada paso por el bucle, porque se declara dentro del bloque controlado por el for. Por lo tanto se declara e inicializa cinco veces. Tiene alcance únicamente dentro del bucle.

A la variable “contador2” se le asigna un valor numérico en la línea 21, pero cuando se imprime, aparece como caracter. Esto es porque C++ tiene cuidado en usar el tipo correcto (contador2 fue declarado como char).

Finalmente, la variable estática llamada “estático” se declara y se inicializa automáticamente a cero en la línea 25.  Su alcance va desde el punto de su declaración hasta el  fin del bloque en que se declara, línea 28.

Salida Con formato FORMATO.CPP

//Salida con Formato

/*

Todas estas Funciones se encuentran en la Biblioteca «iomanip.h»

dec                                 conversión a decimal

hex                                 conversión a hexadecimal

oct                                  conversión a octal

setprecision(int i)     establece el número de dígitos significativos para un

valor. La precisión por defecto es seis. Si el valor es

real. La precisión se refiere al número de decimales.

setfill(int car)           establece el carácter de relleno para las cadenas de caracteres. Por defecto es el espacio en blanco.

setw(int n)              establece el ancho mínimo del buffer, en caracteres, del

                            stream. Este valor por defecto es cero y significa que

                  sólo se insertarán (<<) los caracteres necesarios para

                  representar el valor. Si el ancho no es cero, se rellena

                   hasta n con el caracter de relleno.

ws                         extrae un espacio en blanco del principio del stream.

endl                       inserta un caracter ‘\n’ y vacía el buffer del stream.

ends                      inserta un caracter ‘\0’ para finalizar una cadena.

flush                      vacía el buffer del stream.

setiosflags(long fs)establece una lista de formato, combinados con el opera-

dor OR (|). Ver la función ios::flags.

resetiosflags(long fs)         suprime una lista de flags de formato.

Los streams predefinidos proveen varias funciones miembro para el manejo de los datos. Algunas de estas funciones son las siguientes:

ios::flags(long flags) establece los flags de formato. El parámetro flags representa una lista de alguno de los siguientes valores combinados con el operador OR (|).

ios::left                      justificación a la izquierda.

ios::right                    justificación a la derecha.

ios::scientific               notación científica.

ios::fixed                    coma flotante en formato fijo.

ios::good()                       devuelve un valor distinto de cero si todos los bits de error, incluido el de fin de fichero, están desactivados

ios::eof()                         devuelve un valor distinto de cero si se encuentra el  fin de fichero (eof).

ios::bad()                         devuelve un valor distinto de cero si ocurre un error irrecuperable.

ios::fail()                         devuelve un valor distinto de cero si ocurre cualquier error excepto eof.

ios::clear(int st=0)             si st es cero, desactiva todos los indicadores de error.

cout.flush()                      vacía el buffer en el de salida.

cin.get(char &c)                 extrae un carácter de la entrada estándar.

 

cin.getline(char *pc, int n, char d=’\n’)

extrae caracteres del stream hasta que dé una de las siguientes condiciones: se encontró el delimitador d, se

han extraído n-1 caracteres, se encontró el final del fichero.

 

cin.ignore()                       extraer y descartar los caracteres hasta EOF inclusive.

*/

//Ejemplo


#include <iomanip.h>

#include <iostream.h>

#include <conio.h>

void main()

{

float coef[]={5198,3.21,46.32,506.5,2002.38};

char *prov[]={"Córdoba","Misiones","Salta","Chaco","Corrientes"};

//Salida de los resultados alineados en columnas

cout<<setiosflags(ios::fixed);                                         //Formato Fijo

for(int i=0;i<sizeof(coef)/sizeof(float);i++) //Divide cant. coef/Tam. Tip

cout << setiosflags (ios::left)                 //Justificación a la izquierda

<< setw(15)                                      //Ancho para las cadenas caract

<< setfill('.')                                     //Carácter de relleno

<< prov[i]                                                  //Escribe la provincia

<< resetiosflags(ios::left)                    //Suprime justificación

<< setw(10)                                               //Ancho para las cantidades

<< setprecision(2)                              //Precisión de 2 decimales

<< coef[i] << endl;                            //escribe cantidad y '\n'

getch();

}

Acerca del autor: Rodrigo Paszniuk

Ingeniero Informático, amante de la tecnología, la música, el ciclismo y aprender cosas nuevas.

Posts Relacionados

  • Manual intermedio de C++
  • ENTRADAS/SALIDAS STANDARD en C++
  • Manual básico de C++
  • ESTRUCTURAS Y UNIONES en C++



SEGUÍNOS EN FACEBOOK


GITHUB