Вы находитесь на странице: 1из 11

La Estructura Repetitiva

En C, nosotros disponemos de tres estructuras que nos permiten la definicin de ciclos condicionales:

El ciclo: while

El ciclo: do - while

El ciclo: for

Tericamente, dichas estructuras son intercambiables, es decir, es posible programar cualquier ciclo con
cualquiera de las estructuras anteriores indistintamente.

El ciclo while

El enunciado while, ejecuta un bloque de enunciados en tanto una condicin especfica sea cierta.

while ( <expresin> )
<bloque de instrucciones>

Mientras que <expresin> tenga un valor diferente de cero, el <bloque de instrucciones>

Si <expresin> evala a cero, la ejecucin del programa contina con el bloque de instruccio
ciclo while.

El <bloque de instrucciones> es ejecutado cero o ms veces.

La parte <expresin> puede ser:

Una variable de tipo numrico

Una expresin cuyo resultado sea numrico

La parte <bloque de instrucciones> puede ser:

Un bloque de instrucciones encerrado entre corchetes

Una sola instruccin terminada por punto y coma.

Ejemplos:
int i;
/* Despliega nmeros de 0 a 9 */
i = 0;
while (i<10)
printf("%d \n", i++);

/* Despliega nmeros de 1 a 10 */
i = 0;
while (i<10)
printf("%d \n", i++);

En ocasiones queremos solamente esperar cierto acontecimiento, sin tener la necesidad de manejar datos den
ese caso, la parte de <bloque de instrucciones>puede ser nulo (notacin: ; o {} ). Por ejemplo, la lnea sig
espacios entrados por el teclado y puede ser utilizado para leer el primer caracter significativo:

while (getch()==' ')


;

Una forma ptima de recibir caracteres de la lnea de comando utilizando el enunciado while , sera la siguien

#include <stio.h>
int main(void)
{
char c;
while ((c=getchar()) != EOF)
putchar(c);
}

Este programa obtiene un caracter, lo asigna a la variable c y revisa si sta fue un EOF (enter). Si no, el enun
ejecutado y el enunciado while se repite. Cuando el EOF es tecleado, el enunciado while y la funcin main te

El ciclo do - while

La estructura do - while es similar a la estructura while, con la siguiente diferencia:

while evala la condicin antes de ejecutar el bloque de instrucciones

do - while evala la condicin despus de haber ejecutado el bloque de instrucciones. As, e


es ejecutado por lo menos una vez.

do
<bloque de instrucciones>
while ( <expresin> );

El bloque <bloque de instrucciones> es ejecutado al menos una vez y tambin es ejecutado mientras que
igual a un valor diferente de cero.

En la prctica, la estructura do - while no es ms frecuentemente usada que el ciclo while, sin embargo, en
constituye una solucin ms elegante. Una aplicacin tpica del ciclo do - while es la captura de datos que d
condicin:

Ejemplo:

float n;
do{
printf("Teclea un nmero entre 1 y 10:");
scanf("%f", &n);
}while((n<1) || (n>10));

El enunciado for

El enunciado for es una construccin de un programa de C que ejecuta un bloque de uno o ms enunciados u
de veces.

for( <expr1> ; <expr2> ; <expr3> )


<bloque de instrucciones>

<expr1> es evaluada una vez antes de entrar al ciclo. Es utilizada para inicializar los datos de

<expr2> es evaluada antes de cada ciclo. Es utilizada para decidir si el ciclo contina o termin

<expr3> es evaluada al final de cada ciclo. Es utilizada para asignar el nuevo valor a los datos

Ejemplo:

int i;
for (i=1 ; i<=10 ; i++)
printf("El cuadrado de %d est %d \n", i, i*i);

Anidacin de ciclos

El trmino ciclo anidado se refiere a un ciclo que se encuentra dentro de otro ciclo. C no pone limitacin sobre
excepcin de que cada ciclo interno debe estar encerrado completamente en el ciclo externo. Tenemos entonc
anidados, por cada vez que se ejecuta el ciclo externo, se ejecuta completamente el ciclo interno, por lo tanto
veces que se ejecuta el ciclo es de n x m (suponiendo que m es el contador del ciclo externo y n es el contado

for(x=0; x<10, x++)


for(y=5; y>0; y--)
printf("X");

Eleccin de la estructura repetitiva

Aqu hemos visto tres formas diferentes de programar ciclos (while, do - while, for). Utilizando la estructu
idea del programa que queremos realizar, debemos respetar siempre las siguientes reglas:

Si el bloque de instrucciones no debe ejecutarse si la condicin es falsa, entonces se debe

Si el bloque de instrucciones debe ser ejecutado por lo menos una vez, entonces se debe

Si el nmero de ejecuciones del bloque de instrucciones depende de una o de ms variabl


al final de cada repeticin, entonces se debe utilizarfor.

Si el bloque de instrucciones debe ser ejecutado mientras que una condicin exterior es v
se estn danto datos desde el teclado) entonces se deber utilizar while.

La eleccin entre for y while no es ms que una cuestin de preferencia o habilidad:

for nos da la ventaja de reunir las instrucciones que influyen en el nmero de veces que se r
encabezado de la estructura.

while tiene la ventaja de que corresponde exactamente a las estructuras de otros lenguajes
(while , mientras que).

for tiene la desventaja de favorecer a la programacin de estructuras sobrecargadas y difcile

while tiene la desventaja de llevar, a veces, a estructuras largas, en las que se debe buscar p
instrucciones que influyen en la condicin de repeticin.

Si necesitamos crear una estructura repetitiva en la que sabemos cul es la condicin de s


cunto tiempo va a pasar para que esa condicin se d, utilizaremos el while ; en cambio
una estructura repetitiva en la que sabemos cul es la condicin para terminar el ciclo y adem
veces van a pasar para que se d esa condicin, utilizaremos el for.

Las estructuras de control determinan la secuencia en la que se ejecutarn las


instrucciones de un programa.
Las estructuras de control se dividen en tres categoras en funcin del flujo de
ejecucin:
Estructura secuencial.
Estructura alternativa o condicional.
Estructura iterativa o repetitiva.
1. ESTRUCTURA SECUENCIAL
La estructura secuencial est formada por una secuencia de instrucciones que se
ejecutan en orden una a continuacin de la otra.
Cada una de las instrucciones estn separadas por el carcter punto y coma (;). No
obstante, en algunos casos nos interesar agrupar en un bloque una serie de
instrucciones, como veremos al explicar las estructuras de seleccin y de iteracin. El
bloque de sentencias se define por el carcter llave de apertura ({) para marcar el
inicio del mismo, y el carcter llave de cierre (}) para marcar el final.
Ejemplo:
{
instruccin 1;
instruccin 2;
instruccin 3;
.....
instruccin N;
}
Sin embargo, en caso de que el bloque de sentencias este constituido por una nica
sentencia no es obligatorio el uso de las llaves de apertura y cierre ({ }).
2. ESTRUCTURA CONDICIONAL, SELECTIVA O ALTERNATIVA.
Las estructuras condicionales controlan si una sentencia o bloque de sentencias se
ejecutan, en funcin del cumplimiento o no de una condicin o expresin lgica.
C++ tiene dos estructuras de control para la seleccin, if y switch.
2. 1 Instruccin IF
Esta instruccin hace que se ejecuten unas sentencias u otras dependiendo del valor
que toma una condicin.
La instruccin if puede ser simple o doble:
Alternativa simple:
if (condicion)
instruccin1;

if (condicion)
{
instruccin 1;
instruccin 2;
instruccin 3;
}
Alternativa doble.
if (condicion)
instruccin1;
else
instruccin2;

if (condicion)
{
Instruccin 1;
instruccin 2;
}
else
{
instruccin 3;
instruccin 4;
}
Ejemplo de estructura condicional en C++. Programa que lee un nmero entero por
teclado y muestra si es par o impar.
#include <iostream>
using namespace std;
int main(void)
{
int num;
cout <<"Introduzca numero:";
cin >> num;
if ((num%2)==0)
cout << "PAR" << endl;
else
cout << "IMPAR" << endl;
system("pause");
}
Las instrucciones if-else se pueden anidar obtenindose una estructura condicional
mltiple:
if(condicion1)
instruccin1;
else if(condicion2)
instruccin2;
else if(condicion3)
instruccin3;
else if(condicion4)
instruccion4;
else
instruccin5;

instruccin 6;
instruccin 7;
......

En este caso se evala la condicion1; si es cierta, se ejecuta la instruccin1 y se


contina por la instruccin 6 despus del bloque de if-else anidados. Si la condicin1 es
falsa, se evala la condicion2, y as sucesivamente.
En caso de no ser cierta ninguna de las condiciones, la sentencia que se ejecuta es la
del ltimo else, es decir, la instruccin 5.
Ejemplo de estructura condicional mltiple en C++. Programa que lee un nmero
entero que corresponde a una hora y muestra un mensaje segn la hora que se haya
ledo.
#include <iostream>
using namespace std;
int main(void)
{
int hora;
cout << "\nIntroduzca una hora (entre 0 y 24): ";
cin >> hora;
if ((hora >= 0) and (hora < 12))
cout << "\nBuenos dias\n";
else if ((hora >= 12) and (hora < 18))
cout << "\nBuenas tardes\n";
else if ((hora >= 18) and (hora < 24))
cout << "\nBuenas noches\n";
else
cout << "\nHora no vlida\n";
system("pause");
}
Otro ejemplo de estructura condicional mltiple en C++. Programa que lee la
calificacin numrica obtenida por un alumno en un examen y muestra la nota
equivalente en texto.
#include <iostream>
using namespace std;
int main(void)
{
unsigned int nota;
cout << "Introduzca una calificacion numerica entre 0 y 10:";
cin >> nota;
cout << "La calificacion del alumno es" << endl;
if (nota == 10)
{
cout << "Matricula de Honor" << endl;
}
else if (nota >= 9)
{
cout << "Sobresaliente" << endl;
}
else if (nota >= 7)
{
cout << "Notable" << endl;
}
else if (nota >= 5)
{
cout << "Aprobado" << endl;
}
else
{
cout << "Suspenso" << endl;
}
system("pause");
}
2.2 Instruccin switch
La sentencia switch selecciona una de entre mltiples alternativas.
La forma general de esta expresin es la siguiente:
switch (expresin)
{
case constante1:
instrucciones;
break;
case constante 2:
instrucciones;
break;

default:
instrucciones;
}
En una instruccin switch, expresin debe ser una expresin con un valor entero, y
constante1, constante2, ..., deben ser constantes enteras, constantes de tipo carcter
o una expresin constante de valor entero. Expresin tambin puede ser de tipo char,
ya que los caracteres individuales tienen valores enteros
Dentro de un case puede aparecer una sola instruccin o un bloque de instrucciones.
La instruccin switch evala la expresin entre parntesis y compara su valor con las
constantes de cada case. Se ejecutarn las instrucciones de aquel case cuya constante
coincida con el valor de la expresin, y contina hasta el final del bloque o hasta una
instruccin que transfiera el control fuera del bloque del switch (una instruccin break,
o return). Si no existe una constante igual al valor de la expresin, entonces se
ejecutan las sentencias que estn a continuacin de default si existe (no es obligatorio
que exista, y no tiene porqu ponerse siempre al final).
Ejemplo de uso de la instruccin switch en C++. Programa que lee dos nmeros y una
operacin y realiza la operacin entre esos nmeros.
#include <iostream>
using namespace std;
int main(void)
{
int A,B, Resultado;
char operador;
cout << "Introduzca un numero:";
cin >> A;
cout << "Introduzca otro numero:";
cin >> B;
cout <<"Introduzca un operador (+,-,*,/):";
cin >> operador;
Resultado = 0;
switch (operador)
{
case '-' : Resultado = A - B;
break;
case '+' : Resultado = A + B;
break;
case '*' : Resultado = A * B;
break;
case '/' : Resultado = A / B; //suponemos B!=0
break;
default : cout << "Operador no valido"<< endl;
}
cout << "El resultado es: ";
cout << Resultado << endl;
system("pause");
}
Otro ejemplo de uso de switch en C++. Programa que determina si un carcter ledo
es o no una vocal. En ese caso como la sentencia a ejecutar por todas las
etiquetas case es la misma, esta sentencia se pone una nica vez al final:
#include <iostream>
using namespace std;
int main(void)
{
char car;
cout << "Introduzca un caracter: ";
cin >> car;
switch (car)
{
case 'a':
case 'A':
case 'e':
case 'E':
case 'i':
case 'I':
case 'o':
case 'O':
case 'u':
case 'U': cout << car << " es una vocal" << endl;
break;
default : cout << car << " no es una vocal" << endl;
}
system("pause");
}
Estructuras condicionales: if / else en C++

Llega un punto en la programacin en el cual deseas realizar


aplicaciones que puedan tomar decisiones segn los datos que introduzca un usuario. Todas
las aplicaciones de usuario actan segn las opciones que eligen los mismos, podemos poner
por ejemplo la aplicacin que hay en los cajeros automticos o en los puntos de informacin
Si quieres aprender a realizar programas de este tipo no debes de leer este artculo puesto
que te explico la base para ello.

Hasta ahora hemos realizado programas secuenciales. Esto significa que todas nuestras
instrucciones eran evaluadas y ejecutadas secuencialmente por el compilador, lnea a lnea.
Ahora vamos a programar alternativas, quiere decir que segn nuestro cdigo y los valores
introducidos por el usuario el compilador evaluar y ejecutar lneas de cdigo de manera
alternativa, no secuencial.
Este programa es un programa secuencial:

1
#include
2
#include
3
using namespace std;
4
int main(){
5
int variableedad;
6
cout&lt;&gt;variableedad;
7
cout&lt;

En este caso el programa se ejecuta lnea a linea, lo voy a describir haciendo una traza
exhaustiva: En la lnea 1 y 2 el compilador carga las libreras necesarias. En la siguiente lnea
hace una llamada a la funcin std. en la lnea 4 declaramos el programa principal. En la lnea 5
declaramos una variable de tipo entero y sin ningn valor, por tanto, se crea una reserva de
memoria en la memoria principal.En la lnea 6 se manda un mensaje por pantalla para que se
introduzca un dato. En la lnea 7 el usuario introduce un dato y se guarda en la variableedad.
En la lnea 8 se muestra el dato introducido por el usuario por pantalla y en la 9 se ejecuta la
funcin getch() para mantener la pantalla hasta que se pulsa una tecla y termina el programa.
Este programa es secuencial por que se ejecuta desde la lnea 1 hasta la lnea 9 sin ninguna
alternativa.
La sentencia if, tras evaluar una expresin lgica, ejecuta una serie de sentencias en caso de
que la expresin lgica sea verdadera. Su sintaxis es:

La expresin lgica es una expresin vista en artculos anteriores, caben expresiones


relacionales y expresiones lgicas cuyo resultado sea verdadero o falso. Esta sentencia
condicional tambin puede ser compuesta. Es igual que la anterior pero se le aade un
apartado que es el else que contendr instrucciones que se ejecutarn en caso de que la
expresin evaluada por el if es falsa. Su sintaxis es la siguiente.

Dentro de una sentencia if se puede colocar otra sentencia if y asi sucesivamente, esto es lo
que se denomina como anidamiento, y permite crear programas donde se valoren expresiones
complejas.

Accede totalmente GRATIS al videocurso Aprende C++ desde cero >>>Accede al curso
GRATIS Ahora<<<<<<<<<
Decir que, tanto en el if como en el else slo hay una nica sentencia entonces en la sintaxis
podemos eliminar las llaves ({}). Para que este concepto te quede completamente claro
vamos a ver un ejemplo en c++. El ejemplo siguiente va a mostrar un programa con
alternativas. El programa pedir una nota de 0 a 10, y segn esa nota escribir en la pantalla
si es un aprobado, si la nota es mayor que 5 o si es un suspenso, si la nota es menor que
cinco.

Como se observa en el cdigo, este programa puede tomar dos alternativas, si el nmero
introducido por el usuario es menor que 5 entonces el compilador se olvida del else y slo
ejecuta las sentencias del if, en caso contrario,el nmero es mayor que 5, el compilador se
olvida del if y ejecuta lo que hay en el else.

Вам также может понравиться