Pensar en C++ (Volumen 1) - Grupo ARCO
Pensar en C++ (Volumen 1) - Grupo ARCO
Pensar en C++ (Volumen 1) - Grupo ARCO
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
✐<br />
✐<br />
✐<br />
“Volum<strong>en</strong>1” — 2012/1/12 — 13:52 — page 72 — #110<br />
✐<br />
Capítulo 3. C <strong>en</strong> <strong>C++</strong><br />
q.<br />
3.2.7. switch<br />
Una s<strong>en</strong>t<strong>en</strong>cia switch selecciona un fragm<strong>en</strong>to de código <strong>en</strong>tre varios posibles<br />
<strong>en</strong> base al valor de una expresión <strong>en</strong>tera. Su estructura es:<br />
switch(selector) {<br />
case valor-<strong>en</strong>tero1 : s<strong>en</strong>t<strong>en</strong>cia; break;<br />
case valor-<strong>en</strong>tero2 : s<strong>en</strong>t<strong>en</strong>cia; break;<br />
case valor-<strong>en</strong>tero3 : s<strong>en</strong>t<strong>en</strong>cia; break;<br />
case valor-<strong>en</strong>tero4 : s<strong>en</strong>t<strong>en</strong>cia; break;<br />
case valor-<strong>en</strong>tero5 : s<strong>en</strong>t<strong>en</strong>cia; break;<br />
(...)<br />
default: s<strong>en</strong>t<strong>en</strong>cia;<br />
}<br />
selector es una expresión que produce un valor <strong>en</strong>tero. El switch compara<br />
el resultado de selector para cada valor <strong>en</strong>tero. Si <strong>en</strong>cu<strong>en</strong>tra una coincid<strong>en</strong>cia, se<br />
ejecutará la s<strong>en</strong>t<strong>en</strong>cia correspondi<strong>en</strong>te (sea simple o compuesta). Si no se <strong>en</strong>cu<strong>en</strong>tra<br />
ninguna coincid<strong>en</strong>cia se ejecutará la s<strong>en</strong>t<strong>en</strong>cia default.<br />
Se puede observar <strong>en</strong> la definición anterior que cada case acaba con un break,<br />
lo que causa que la ejecución salte hasta el final del cuerpo del switch (la llave final<br />
que cierra el switch). Esta es la forma conv<strong>en</strong>cional de construir una s<strong>en</strong>t<strong>en</strong>cia switch,<br />
pero la palabra break es opcional. Si no se indica, el case que se ha cumplido<br />
«cae» al sigui<strong>en</strong>te de la lista. Esto significa, que el código del sigui<strong>en</strong>te case, se<br />
ejecutara hasta que se <strong>en</strong>cu<strong>en</strong>tre un break. Aunque normalm<strong>en</strong>te no se desea este<br />
tipo de comportami<strong>en</strong>to, puede ser de ayuda para un programador experim<strong>en</strong>tado.<br />
La s<strong>en</strong>t<strong>en</strong>cia switch es una manera limpia de implem<strong>en</strong>tar una selección multimodo<br />
(por ejemplo, seleccionando de <strong>en</strong>tre un número de paths de ejecución), pero<br />
requiere un selector que pueda evaluarse como un <strong>en</strong>tero <strong>en</strong> el mom<strong>en</strong>to de la compilación.<br />
Si quisiera utilizar, por ejemplo, un objeto string como selector, no funcionará<br />
<strong>en</strong> una s<strong>en</strong>t<strong>en</strong>cia switch. Para un selector de tipo string, se debe utilizar<br />
una serie de s<strong>en</strong>t<strong>en</strong>cias if y comparar el string d<strong>en</strong>tro de la condición.<br />
El ejemplo del m<strong>en</strong>u demostrado anteriorm<strong>en</strong>te proporciona un ejemplo particularm<strong>en</strong>te<br />
interesante de un switch:<br />
//: C03:M<strong>en</strong>u2.cpp<br />
// A m<strong>en</strong>u using a switch statem<strong>en</strong>t<br />
#include <br />
using namespace std;<br />
int main() {<br />
bool quit = false; // Flag for quitting<br />
while(quit == false) {<br />
cout > response;<br />
switch(response) {<br />
case ’a’ : cout