Attention! Your ePaper is waiting for publication!
By publishing your document, the content will be optimally indexed by Google via AI and sorted into the right category for over 500 million ePaper readers on YUMPU.
This will ensure high visibility and many readers!
Capítulo 3. C <strong>en</strong> <strong>C++</strong><br />
un ámbito. Hace el código más fácil de <strong>en</strong>t<strong>en</strong>der porque es una variable definida<br />
<strong>en</strong> el contexto de su utilización. Esto es especialm<strong>en</strong>te importante cuando se está<br />
defini<strong>en</strong>do e inicializando una variable al mismo tiempo - se puede ver el significado<br />
del valor de inicialización por el modo <strong>en</strong> el que se usa la variable.<br />
También se pued<strong>en</strong> definir variables d<strong>en</strong>tro de expresiones de control tales como<br />
los bucles for y while, d<strong>en</strong>tro de las s<strong>en</strong>t<strong>en</strong>cias de condiciones if, y d<strong>en</strong>tro de<br />
la s<strong>en</strong>t<strong>en</strong>cia de selección switch. A continuación hay un ejemplo que muestra la<br />
definición de variables al-vuelo:<br />
//: C03:OnTheFly.cpp<br />
// On-the-fly variable definitions<br />
#include <br />
using namespace std;<br />
int main() {<br />
//..<br />
{ // Begin a new scope<br />
int q = 0; // C requires definitions here<br />
//..<br />
// Define at point of use:<br />
for(int i = 0; i < 100; i++) {<br />
q++; // q comes from a larger scope<br />
// Definition at the <strong>en</strong>d of the scope:<br />
int p = 12;<br />
}<br />
int p = 1; // A differ<strong>en</strong>t p<br />
✐ ✐ ✐ “Volum<strong>en</strong>1” — 2012/1/12 — 13:52 — page 88 — #126 ✐ Capítulo 3. C <strong>en</strong> <strong>C++</strong> un ámbito. Hace el código más fácil de <strong>en</strong>t<strong>en</strong>der porque es una variable definida <strong>en</strong> el contexto de su utilización. Esto es especialm<strong>en</strong>te importante cuando se está defini<strong>en</strong>do e inicializando una variable al mismo tiempo - se puede ver el significado del valor de inicialización por el modo <strong>en</strong> el que se usa la variable. También se pued<strong>en</strong> definir variables d<strong>en</strong>tro de expresiones de control tales como los bucles for y while, d<strong>en</strong>tro de las s<strong>en</strong>t<strong>en</strong>cias de condiciones if, y d<strong>en</strong>tro de la s<strong>en</strong>t<strong>en</strong>cia de selección switch. A continuación hay un ejemplo que muestra la definición de variables al-vuelo: //: C03:OnTheFly.cpp // On-the-fly variable definitions #include using namespace std; int main() { //.. { // Begin a new scope int q = 0; // C requires definitions here //.. // Define at point of use: for(int i = 0; i < 100; i++) { q++; // q comes from a larger scope // Definition at the <strong>en</strong>d of the scope: int p = 12; } int p = 1; // A differ<strong>en</strong>t p } // End scope containing q & outer p cout
✐ ✐ ✐ “Volum<strong>en</strong>1” — 2012/1/12 — 13:52 — page 89 — #127 ✐ 3.6. Especificar la ubicación del espacio de almac<strong>en</strong>ami<strong>en</strong>to s<strong>en</strong>t<strong>en</strong>cias while, if y switch, este tipo de definiciones es m<strong>en</strong>os común que las de expresiones for, quizás debido a que la sintaxis es más restrictiva. Por ejemplo, no se puede t<strong>en</strong>er ningún paréntesis. Es decir, que no se puede indicar: while((char c = cin.get()) != ’q’) Añadir los paréntesis extra parecería una acción inoc<strong>en</strong>te y útil, y debido a que no se pued<strong>en</strong> utilizar, los resultados no son los esperados. El problema ocurre porque != ti<strong>en</strong>e ord<strong>en</strong> de preced<strong>en</strong>cia mayor que =, de modo que el char c acaba cont<strong>en</strong>i<strong>en</strong>do un bool convertido a char. Cuando se muestra, <strong>en</strong> muchos terminales se vería el carácter de la cara sonri<strong>en</strong>te. En g<strong>en</strong>eral, se puede considerar la posibilidad de definir variables d<strong>en</strong>tro de las s<strong>en</strong>t<strong>en</strong>cias while, if y switch por completitud, pero el único lugar donde se debería utilizar este tipo de definición de variables es <strong>en</strong> el bucle for (dónde usted las utilizará más a m<strong>en</strong>udo). 3.6. Especificar la ubicación del espacio de almac<strong>en</strong>ami<strong>en</strong>to Al crear una variable, hay varias alternativas para especificar la vida de dicha variable, la forma <strong>en</strong> que se decide la ubicación para esa variable y cómo la tratará el compilador. 3.6.1. Variables globales Las variables globales se defin<strong>en</strong> fuera de todos los cuerpos de las funciones y están disponibles para todo el programa (incluso el código de otros ficheros). Las variables globales no están afectadas por ámbitos y están siempre disponibles (es decir, la vida de una variable global dura hasta la finalización del programa). Si la exist<strong>en</strong>cia de una variable global <strong>en</strong> un fichero se declara usando la palabra reservada extern <strong>en</strong> otro fichero, la información está disponible para su utilización <strong>en</strong> el segundo fichero. A continuación, un ejemplo del uso de variables globales: //: C03:Global.cpp //{L} Global2 // Demonstration of global variables #include using namespace std; int globe; void func(); int main() { globe = 12; cout