#include <iostream>
using namespace std;
#define Done 1
// version 0.0.2 By CompSystems
int funcion1( int );
int funcion2( int );
int funcion3( int );
int main( int argc, char** argv ){
int maxIter = 9;
int incr = 2;
cout << "\n\n\n" << "-------- uso de RETURN como: ir al (goto) fin del bloque de funcion"<< "\n";
cout << funcion1(0) << ", ";
cout << funcion1(1) << ", ";
cout << funcion1(2) << ", ";
cout << funcion1(3) << ", ";
cout << funcion1(4) << ", ";
cout << "\n\n" << "-------- ejemplo igual al anterior pero usando goto" << "\n";
cout << funcion2(0) << ", ";
cout << funcion2(1) << ", ";
cout << funcion2(2) << ", ";
cout << funcion2(3) << ", ";
cout << funcion2(4) << ", ";
cout << "\n\n" << "-------- ejemplo igual al anterior pero sin usar return intermedios ni GOTO" << "\n";
cout << funcion3(0) << ", ";
cout << funcion3(1) << ", ";
cout << funcion3(2) << ", ";
cout << funcion3(3) << ", ";
cout << funcion3(4) << ", ";
cout << "\n\n";
cout << "\n==== " << "Uso de BREAK en Sentencias de iteracion" << " ===";
cout << "\n\n" << "-------- ciclo for normal de 0 a 9 en pasos de 2"<< "\n";
for( int i = 0; i <= maxIter; i = i + incr ) {
cout << i << ", ";
}//endFor0
// imprime 0, 2, 4, 6, 8,
cout << "\n\n" << "-------- uso de break como: ir al (goto) fin del ciclo for siguiente";
cout << "\n" << "se finaliza las iteraciones para valores igual a 6 o superior" << "\n";
for( int i = 0; i <= maxIter; i = i + incr ) {
if( i == 6 ) {
break; // == goTo endFor1 // se finaliza las iteraciones para valores igual a 6 o superior
}
else{
cout << i;
}
cout << ", ";
}//endFor1
// imprime 0, 2, 4,
cout << "\n\n" << "-------- ejemplo igual al anterior pero sin usar BREAK, Ni Goto, Ni Return, Ni Continue";
cout << "\n\n" << "-------- uso de desborde de contador como: un (goto) fin del ciclo for";
cout << "\n" << "se finaliza las iteraciones para valores igual a 6 o superior" << "\n";
for( int i = 0; i <= maxIter; i = i + incr ) {
if( i == 6 ) {
i = maxIter+1; // === goTo endFor2 // se finaliza las iteraciones para valores igual a 6 o superior
}
else{
cout << i << ", "; // se debe recodificar para que no quede nada por fuera del bloque else
}
}//endFor2
// imprime 0, 2, 4,
/////////////////////////////////////////////////
cout << "\n\n" << "-------- ejemplo igual al anterior pero ahora con while";
cout << "\n\n" << "-------- uso de break como: ir al (goto) fin del ciclo while";
cout << "\n" << "se finaliza las iteraciones para valores igual a 6 o superior" << "\n";
int i = 0;
while( i <= maxIter ) {
if( i == 6 ) {
break; // == goTo endWhile1 // se finaliza la iteracion para valores igual a 6 o superior
}
else{
cout << i;
}
cout << ", ";
i = i + incr;
} //endWhile1
// imprime 0, 2, 4,
cout << "\n\n" << "-------- ejemplo igual al anterior pero sin usar BREAK, Ni Goto, Ni Return, Ni Continue";
cout << "\n\n" << "-------- uso de desborde de contador como: un (goto) fin del ciclo while";
cout << "\n" << "se finaliza las iteraciones para valores igual a 6 o superior" << "\n";
i = 0;
while( i <= maxIter ) {
if( i == 6 ) {
i = maxIter + 1; // == goTo endWhile2 // se finaliza la iteracion para valores igual a 6 o superior
}
else{
cout << i << ", "; // se debe recodificar esta parte
}
i = i + incr;
} //endWhile2
// imprime 0, 2, 4,
/////////////////////////////////////////////////
cout << "\n\n\n=== " << "Uso de CONTINUE en Sentencias de iteracion" << " ===";
cout << "\n\n" << "-------- ciclo for normal de 0 a 9 en pasos de 1" << "\n";
incr=1;
for( int i = 0; i <= maxIter; i = i + incr ) {
cout << i << ", ";
}//endFor0
// imprime 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
cout << "\n\n" << "-------- uso de continue como: saltar (skip) iteracion actual del ciclo for";
cout << "\n" << "se salta la iteracion solo cuando el contador es igual a 2" << "\n";
for( int i = 0; i <= maxIter; i = i + incr ) {
if( i == 2 ) {
continue; // == skip iteracion actual, goto especial a endFor1
}
else{
cout << i;
}
cout << ", ";
}//endFor1
// imprime 0, 1, 3, 4, 5, 6, 7, 8, 9, // note que 2 no aparece, OK
cout << "\n\n" << "ejemplo igual al anterior pero sin usar BREAK, Ni Goto, Ni Return, Ni Continue"<< "\n";
for( int i = 0; i <= maxIter; i = i + incr ) {
if( i == 2 ) {
i = i+incr; // => RETO: Tratando de hacer lo mismo que en código anterior pero sin CONTINUE, es posible??
}
else{
cout << i << ", ";
}
}//endFor2
// imprime 0, 1, 4, 5, 6, 7, 8, 9, // note que 2 y 3 no aparecen, solo debe faltar el 2
return Done; // Goto endFunction1
}//endMain
/////////////////////////////////////////////////
int funcion1( int test ){
if( test == 0 ){
return 10; // Goto endFunction1
}
else{
if( test == 1 ){
return 20; // Goto endFunction1
}
else{
if( test == 2 ){
return 30; // Goto endFunction1
}
}
}
return 40; // Goto endFunction1
}//endFunction1
/////////////////////////////////////////////////
int funcion2( int test ){
if( test == 0 ){
goto option1;
}
else{
if( test == 1 ){
goto option2;
}
else{
if( test == 2 ){
goto option3;
}
else goto option4;
}
}
option1: return 10; // then goto endFunction2
option2: return 20; // then goto endFunction2
option3: return 30; // then goto endFunction2
option4: return 40; // then goto endFunction2
}//endFunction2
/////////////////////////////////////////////////
int funcion3( int test ){
int outSelect;
if( test == 0 ){
outSelect = 10;
}
else{
if( test == 1 ){
outSelect = 20;
}
else{
if( test == 2 ){
outSelect = 30;
}
else outSelect = 40;
}
}
return outSelect; // goto endFunction3
}//endFunction3