Entendido.

Este sitio utiliza cookies para analizar la navegación.Si continúa navegando se entiende que acepta su uso. Ver más detalles.

Logo

Aprende Web C++

Aprende a programar en C++ con Aprende-Web

Nociones Básicas

programación en C++ desde cero.


Buscar en Aprende Web

Traducir página

Visita nuestro blog:

bolg.aprende-web.net

y entérate de las novedades o deja un comentario.

Dudas y sugerencias:

aprendeweb@aprende-web.net



Sobre ésta página

Ültima modificación: 13-07-2018.

Visitas este mes: 1

Visitas el mes pasado:

logo
WEB-GRAFÍA

Mi agradecimiento a los siguientes sitios en los que me he basado para la elaboración de los manuales.:

cplusplus.com
Sitio oficial de C++: Informacion, Referencias, Tutorial, Foro. (En inglés)
Minidosis.org
Curso de C++ con videos y lecturas.
conclase.net
Curso de C++
programar ya
Curso de C++ desde cero
cprogramming.com
C++ Tutorial (inglés).
Entorno de desarrollo integrado
fergarciac.wordpress.com
Compiladores, intérpretes y Máquinas virtuales.
latecladeescape.com
el hacker.net
Programación
Desarrollo web
Manual de iniciación a la programación.

En los distintos manuales incluimosm más webgrafía especifica de cada sección.


Donativos

Si este sitio te parece interesante puedes contribuir con una pequeña aportación.





4. Estructuras de Control

4.8. Estructuras anidadas

Concepto

Logo C++ Basico

Podemos incluir unas estructuras de control dentro de otras, de manera que se crean estructuras más complejas, veamos los casos que se pueden dar:

Aunque básicamente estos son los casos que podemos tener, las estrucutras pueden ser más complejas ya que podemos anidar las estructuras unas dentro de otras todas las veces que queramos llegando a los niveles de profundidad que sean necesarios.

Condicional dentro de condicional

Cada condicional es una bifurcación que hace que el programa vaya por un sitio o por otro, de esta manera podemos hacer que dependiendo de lo que se elija, el programa vaya hacia un sitio o hacia otro. Veamos un pequeño ejemplo:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
#include<iostream>
using namespace std;

int main() {
   cout << "Contesta si (s) o no (n)." << endl;
   char c;
   cout << "Has nacido en primavera o en verano? " ;cin >> c;
   if (c=='s' or c=='S') {
        cout << "has nacido en primavera? "; cin >> c;
        if (c=='s' or c=='S') {
            cout << "Puedes ser Aries, Tauro o Geminis." << endl;
        }
        else {
            cout << "Puedes ser Cancer, Leo o Virgo." << endl;
        }
   }
   else {
       cout << "has nacido en otonyo? "; cin >> c;
       if (c=='s' or c=='S') {
            cout << "Puedes ser Libra, Escorpo o Sagitario." << endl;
        }
        else {
            cout << "Puedes ser Capricornio, Acuario o Piscis." << endl;
        }
   }
}
anidados1

En este ejemplo la segunda pregunta que se le hace al usuario está condicionada por lo que responde en la primera. Podríamos hacer una tercera pregunta o una cuarta condicionadas cada una de ellas por lo que hayan respondido en la anterior, de manera que hacemos un sistema complejo de ramificaciones.


Condicional dentro de un bucle

Al poner una escructura condicional dentro de un bucle, se puede hacer que en ciertas repeticiones del bucle el programa haga cosas diferentes de el resto de repeticiones. En el siguiente ejemplo el programa escribe un abecedario en el que alternamos dos letras escritas en minusculas con la siguiente en mayúsculas.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
#include<iostream>
using namespace std;

int main() {
   char c;
   for (int i=97;i<=122;i++) {
       if (i%3==0) {
           c=char(i-32);
           cout << c << ", ";
       }
       else {
           c=char(i);
           cout << c << ", ";
       }
   }
   cout << endl;
}
anidados1

El resultado tras compilar y ejecutar el archivo es el que vemos aquí a la derecha. Se escribe el abecedario, pero una de cada tres letras está en mayúsculas.

Vemos que hemos utilizado un condicional "if", dentro del bucle. Recordemos que en el código ASCII, el abecedario en minúsculas va desde los números 97 (a) al 122 (z), es por eso que empleamos estos números en la inicialización y condición del bucle.

En código ASCII el abecedario en mayúsculas empieza en el número 65 (A), es por eso que en el condicional 1f restamos 32 (97-65=32), para buscar la letra mayúscula. Observa cómo hemos usado la operación módulo para que una de cada tres letras sea mayuscula.


Bucle dentro de condicional

Alm incluir un bucle dentro de una condicional, el bucle sólo se ejecutará cuando se cumplan determinadas condiciones que marca la condicional. Veamos un ejemplo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
#include<iostream>
using namespace std;

int main() {
   char c;
   cout << "Pulsa S para mayusculas o N para minusculas : ";
   cin >> c;
   if (c=='s' or c=='S') {
       for (int i=65; i<=90; i++) {
           cout << char(i) << ", ";
       }
   }
   else if (c=='N' or c=='n') {
       for (int i=97; i<=122; i++) {
           cout << char(i) << ", ";
       }
   }
   else {
      cout << "No has escrito ni S ni N.";
   }
   cout << endl;
}
anidados3

Al compilar y ejecutar este archivo, éste pide al usuario que escriba "S" o "N", dependiendo de lo que haga escribirá un hbucle u otro, y además si en lugar de estas letras, escribe otra le avisa de que no es correcto y no ejecuta ningún bucle.

Por lo tanto la ejecución del bucle depende del resultado de la condicional.


Un bucle dentro de otro bucle

Al hacer un bucle dentro de otro creamos una escructura de tabla, con sus filas y columnas. En este caso el bucle de fuera hace las veces de filas de la tabla, mientras que el bucle de dentro marca el número de columnas y va rellenando las celdas de la tabla.

En el siguiente ejemplo escribiremos los números del 1 al 100 en 10 filas de 10 números en cada una, como si fuera una tabla.

1 2 3 4 5 6 7 8 9 10 11 12 13
#include<iostream>
using namespace std;

int main() {
    int n=1;
    for (int i=0; i<10; i++){
        for (int j=0; j<10; j++){
            cout << n << " , ";
            n++;
        }
        cout << endl << endl;
    }
}
anidados4

Tras compilar y ejecutr el archivo obrenemos el resultado, en el cual tenemos diez filas, y en cada una de ellas 10 números.

Cada una de las filas se corresponde con una repetición del bucle principal. Cada una de estas repeticiones consiste en recorrer el bucle secundario que escribe 10 números, al salir de este bucle hacemos el salto de línea, de manera que la siguiente repetición vuelve a escribir 10 números en la siguiente fila.

De esta manera se crea una estructura de tabla, en este caso de 10 filas por 10 columnas.

Se pueden anidar estructuras tanto condicionales comom de bucle unas dentro de otras en varios niveles, de manera que se creen estructuras más complejas quem puedan solucionar porblemas de programación más complicados.






En el siguiente tema trataremos otro tipo de esctructuras:

Funciones



Manual Básico de C++

Anterior siguiente ... Siguiente siguiente


imprimir esta página

Página creada por ANYELGUTI.

Sugerencias: aprendeweb@aprende-web.net. Envia un manda un correo

Visita nuestro blog par saber en qué estamos trabajando: Aprende Web Blog

Más sobre anyelguti en http://anyelguti.16mb.com