You are on page 1of 16

UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS

UNIDAD 6: ESTRUCTURAS BASICAS


6.1. ESTRUCTURAS SELECTIVAS

Las estructuras de control lógicas o condicionales, nos permiten realizar cambios en la


secuencia o flujo de ejecución de unas u otras sentencias; según se cumpla o no las
condiciones dadas por el programador. Cuando en un programa se requieran seleccionar
las instrucciones a ejecutar, utilizamos las estructuras if o switch.

6.1.1. SENTENCIA if

La estructura de control de selección if en C++, tiene dos alternativas que se ejecutan en


función del cumplimiento o no de una condición. Las hay sencillas o anidadas.

Sentencias if sencillas

Sintaxis de la instrucción:

if (expresión)
Acción1
else
Acción2

Cuando la expresión es verdadera, se ejecutan las instrucciones que se mencionen en


Acción1; en caso contrario se ejecutan las de Acción2. Una Acción puede ser una única
sentencia que termina en punto y coma o un grupo de sentencias encerradas entre
llaves.

Ejemplo:

if (numero>=0)
{cout<<”numero positivo”;
X++;}
else
cout<<”numero negativo”;
cout<<”otras instrucciones”;

En este ejemplo si número es mayor o igual que cero, escribe numero positivo y aumenta
en uno la variable x, a continuación escribe: “otras instrucciones”. Si la condición no se
cumple escribe: “numero negativo” y a continuación escribe “otras instrucciones”.

En el caso en que no haya acciones por falso, al evaluar la expresión del paréntesis, se
ignoran estas acciones y se continúa con la ejecución del programa, así:

Sintaxis de la instrucción:

if (expresión)
Acción

1
UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS

Ejemplo:

if (numero>=0)
cout<<”numero positivo”;
cout<<”otras instrucciones”;

En este ejemplo si la variable número es mayor que cero, el programa escribe: ”numero
positivo” y a continuación la siguiente instrucción: “otras instrucciones”. En caso de que
la condición no se cumpla solo imprime “otras instrucciones”;

Sentencias if-else anidadas


Se utilizan cuando se deben ejecutar instrucciones en cumplimiento de varias condiciones.

Sintaxis de la instrucción:

if (expresión) Acción-1
else
if (expresión1) Acción-2
else
if (expresión2) Acción-3
else
if (expresión3) Acción-4
else
:
:
Acción-n
Utilizamos este caso cuando se deben evaluar tres o más alternativas (condiciones).
Cuando expresión es verdadera, se ejecutan las instrucciones que se mencionen en
Acción1, en caso contrario (else), se evalúa expresión1 para ejecutar las instrucciones
por verdadero en Acción2. Si hay más alternativas (condiciones), se evalúan más
expresiones. Por lo anterior si un programa tiene tres alternativas, se requiere dos
condicionales; si tiene cuatro alternativas, se requieren tres condicionales y así
sucesivamente.

Por ejemplo:

if (numero==0)
cout<<”numero cero”;
else
if (numero>0)
cout<<”numero positivo”;
else cout<<”numero negativo”;
cout<<”otras instrucciones”;

En este ejemplo tenemos tres alternativas por lo que tenemos que anidar dos
instrucciones if. Si número es igual que cero, escribe: “numero cero” y a continuación:
“otras instrucciones”. Si el número es mayor que cero, escribe: “numero positivo” y
a continuación: “otras instrucciones”. Si la condición no es ninguna de las dos
anteriores alternativas o sea es menor que cero, escribe: “numero negativo” y a
continuación: “otras instrucciones”.

2
UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS

EJEMPLOS
EJEMPLO 1:
Leer un número y escribir si es “mayor” o “menor o igual” que 100
Variables: numero

PSEUDOCODIGO CODIGO EN C++


//Número “mayor” o “menor o igual” que cien
Inicio #include<iostream>
leer numero using namespace std;
si (numero > 100) int main()
entonces escribir “mayor” {
sino escribir “menor o igual” int numero;
fin_si cout<<" Ingrese un número "<<endl;
fin cin>>numero;
if(numero > 100)
cout<<" mayor "<<endl;
else
cout<<" menor o igual "<<endl;
system(“pause”);
return 0;
}

EJEMPLO 2:

Leer un número y escribir si es menor que cero, igual a cero o mayor que
cero.

Variable: NUMERO

PSEUDOCODIGO CODIGO EN C++

//Numero mayor, menor o igual a cero


Inicio #include <iostream>
leer NUMERO using namespace std;
si (NUMERO < 0) int main()
entonces escribir “menor que cero” {
sino int numero;
si (NUMERO = 0) cout<<"Ingrese el numero "<<endl;
entonces escribir “igual a cero” cin>>numero;
sino escribir “mayor que cero” if (numero < 0)
fin_si cout<<" Menor de Cero"<<endl;
else
fin_si if (numero == 0)
cout<<" Igual a Cero"<<endl;
Fin else
cout<<" Mayor de Cero"<<endl;
system("pause");
return 0;
}

EJEMPLO 3:
Leer tres números, determinar cuál es el mayor.

Variables: A: Numero 1, B: Numero 2, C: numero3

3
UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS

PSEUDOCODIGO CODIGO EN C++

//Leer 3 numeros y determinar cual es el mayor


Inicio #include <iostream>
leer A, B, C using namespace std;
si (A > B y A>C) int main()
{
entonces
int A, B, C;
escribir A cout<<"Digite los tres numeros: \n";
sino cin>>A>>B>>C;
si (B>A y B>C)entonces if (A>B && A>C)
escribir B cout<<" El numero mayor es "<<A<<"\n";
sino else
escribir C if (B>A && B>C)
fin_si cout<<" El numero mayor es
fin_si "<<B<<"\n";
fin else
cout<<" El numero mayor es
"<<C<<"\n";
system("pause");
return 0;
}

6.1.2. SENTENCIA switch

La estructura de control de selección switch en C++, permite seleccionar una entre


múltiples alternativas. Es especialmente útil cuando la selección se basa en valores
exacto de una variable. Escoger alternativas de valores exactos es más sencillo con un
switch que con estructuras if anidadas.

Sintaxis de la instrucción:

switch (valor)
{
case 1: ejecuta esto si valor es 1
break;

case 2: ejecuta esto si valor es 2


break;

case 3: ejecuta esto si valor es 3


break;

default: ejecuta esto si valor no es ninguno de los anteriores


break;

}
Se evalúa la expresión de control o selector (en este caso valor)y se compara con cada
una de las etiquetas case para ejecutar la secuencia de acciones hasta la sentencia break.
Cada etiqueta es un valor único y diferente de los otros, la etiqueta default, es opcional y se
utiliza cuando se sospecha que pueden venir valores diferentes a los de las etiquetas. Cuando
el computador encuentra la sentencia break, saltará a la primera sentencia luego de la llave
de cierre del switch.

4
UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS

La variable que se utilice para el switch, se denomina expresión de control o selector,


esta solo puede ser de tipo int o char.

Un ejemplo del uso de la estructura Switch:

include<iostream>
using namespace std;
int main()
{
int hijos;
cout<< "Ingrese la cantidad de hijos que usted tiene: \n";
cin>>hijos;
switch(hijos)
{
case 0:
cout<< "No le corresponde asignación familiar por hijo \n";
break;
case 1:
cout<< "Le corresponden $95000 de asignación familiar por su único hijo\n";
break;
case 2:
cout<< "Le corresponden $150000 de asignación familiar por sus dos hijos\n";
break;
default:
cout<< "Le corresponden $200000 de asignación familiar por tener más de dos
hijos\n";
break;
}
system(“pause”);
return 0;
}

Se define la variable del tipo entero hijos, se le pide al usuario que ingrese el número de hijos que
posee y luego entra en acción la estructura switch, actuando de diferentes formas dependiendo del
valor de la variable hijos en tiempo de ejecución.

Uno de los usos más frecuentes del switch está en la implementación de menús, esto es,
presentar en pantalla una serie de alternativas para que el usuario elija una.

EJEMPLO:

El siguiente ejemplo presenta en pantalla un menú con tres opciones y la captura de la


selección del usuario. El programa evaluará la opción y escogerá una alternativa; en caso de
que la opción sea diferente de 1, 2 o 3, utilizará la opción por defecto.

//Implementa un menú con 3 alternativas


#include <iostream>
using namespace std;
int main()
{
int opcion;
float area=0, base, altura, lado, radio, pi=3.141592;
cout<<"\n\t\tAREA FIGURAS\n";
cout<<"\t1. AREA DEL TRIANGULO"<<endl;
cout<<"\t2. AREA DEL CUADRADO"<<endl;
cout<<"\t3. AREA DEL CIRCULO"<<endl;
cout<<"DIGITE LA OPCION"<<endl;
cin>>opcion;
5
UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS

switch (opcion)
{
case 1:
cout<<"DIGITE EL VALOR DE LA BASE DEL TRIANGULO ";
cin>>base;
cout<<"DIGITE EL VALOR DE LA ALTURA DEL TRIANGULO ";
cin>>altura;
area=base*altura/2;
break;
case 2:
cout<<"DIGITE EL VALOR DEL LADO DEL CUADRADO ";
cin>>lado;
area = lado*lado;
break;
case 3:
cout<<"DIGITE EL VALOR DEL RADIO DEL CIRCULO ";
cin>>radio;
area = pi*radio*radio;
break;
default:
cout<<"OPCION NO VALIDA ";
}
cout<<"\nArea = "<<area<<endl;
system("pause");
return 0;
}

6
UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS

6.2. ESTRUCTURAS REPETITIVAS

En la elaboración de programas es importante que existan instrucciones que permiten que el


computador ejecute un grupo de instrucciones varias veces sin tener que volverlas a escribir,
estas son: la instrucción mientras que y la instrucción para.

6.2.1. BUCLES E ITERACIONES

Un bucle o ciclo es una instrucción que permite realizar tareas repetitivas. Un bucle
consta de tres partes fundamentales: DECISION (simple o compuesta), CUERPO DEL
BUCLE y la SALIDA DEL BUCLE.

Una iteración es la ejecución de todas las instrucciones del ciclo.

Los bucles pueden ser sencillos o anidados (ciclos dentro de otros ciclos).

BUCLES SENCILLOS BUCLES ANIDADOS


INICIO INICIO

Bucle A

Bucle A

B
U
Bucle B C
L
E
Bucle B

Bucle C

Contador
Los procesos repetitivos son la base del uso del computador. En estos procesos se
necesita normalmente contar los sucesos o acciones internas del bucle. Una forma de
controlar un bucle es mediante un contador.
Un contador es una variable cuyo valor se incrementa o disminuye en una cantidad
constante por cada iteración.

El formato general es: CONTADOR ← CONTADOR + CANTIDAD CONSTANTE

Ejemplo:

Z ← Z + 2, donde Z se incrementa en 2 por cada iteración.

7
UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS

Acumulador

Es una variable cuya misión es almacenar por cada iteración, cantidades variables
resultantes de sumas o productos sucesivos.

El formato general es: ACUMULADOR ← ACUMULADOR + CANTIDAD VARIABLE ó


ACUMULADOR ← ACUMULADOR * CANTIDAD VARIABLE

Ejemplo:

S ← S+N, donde N es una variable y no una constante

8
UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS

6.3. SINTAXIS DE LAS ESTRUCTURAS DE CONTROL


REPETITIVAS EN C++
C++, utiliza tres tipos de estructuras de control de repetición: for, while y do-while.

6.3.1. SENTENCIA for (para)

La estructura de control for,


genera bucles controlados
por contador, en los cuales se
sabe de antemano cuantas
son las iteraciones del bucle
(BUCLES para).

Sintaxis de la instrucción:

for (inicialización del contador; condición-expresión lógica; incremento o


disminución)

{
Bloque de sentencias
}

Para controlar el número de veces que se repite el bucle, se requiere la utilización de un


contador y especificar en qué valor va a iniciar, además en qué cantidad constante se
incrementará o disminuirá esta variable.

La condición es una expresión booleana que indica cuando se debe terminar con las
iteraciones.

Cada iteración en el ciclo, produce el incremento (o disminución) del contador. Se


acostumbra a utilizar los operadores incrementales o de disminución, para mostrar de una
manera sencilla el cambio en el contador, así:

a++ cuando se desea incrementar en uno el contador

a-- cuando se desea disminuir en uno el contador

a+=2 cuando se desea incrementar en dos el contador

Los puntos y comas son indispensables para separar la inicialización del contador, con la
expresión lógica y el incremento o disminución.

9
UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS

El siguiente ejemplo:
int K;
for (k=1; k <= 20; k+=2)
cout<< k;

Imprime los números 1, 3, 5, 7, 9, 11, 13, 15, 17 y 19. La variable k es el contador e


inicia en 1 y finaliza al llegar a 20, en la primera iteración imprimirá el valor 1. En la
siguiente incrementa k en 2 y la variable cambia su valor a 3 y escribe en pantalla el
número 3. En la siguiente aumenta k en 2 y la variable cambia su valor a 5, escribe en
pantalla el número 5 y así sucesivamente hasta imprimir el número 19, cuando k toma el
valor de 21, no ingresa al bucle por lo tanto este último dato no se imprime, el control del
programa continuará con las instrucciones siguientes al bucle.

La declaración de la variable de control si se desea se puede hacer en la misma


instrucción for así:

for (int k=1;k<=20;k+=2)


cout<<k;

EJEMPLO: Sumar 10 números enteros introducidos por teclado

PSEUDOCODIGO CODIGO EN C++

//Suma 10 numeros que ingresan por teclado


Inicio #include <iostream>
using namespace std;
SUMA ← 0
int main()
para i ← 0,10,1 haga
{
leer int SUMA=0, NU;
NU cout<<"\nIngrese 10 NUMEROS "<<endl;
SUMA ← SUMA + UN for(int i=1; i<=10; i++)
{
fin_para cin>>NU;
escribir SUMA SUMA += NU;
fin }
cout<<"\n\tSuma = "<<SUMA<<endl;
system("pause");
return 0;
}

6.3.2. SENTENCIA while (mientras que)

La estructura de control while, es especialmente útil cuando se desea generar bucles


controlados por centinela, esto es, cuando se sabe la condición de terminación del bucle,
pero no se sabe de antemano cuantas son las iteraciones del bucle ( BUCLES mientras
que).

10
UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS

Sintaxis de la instrucción:
while (condición)
{
sentencia-1;
sentencia-2;
sentencia-3;
…………………….
sentencia-n;
}
En este caso las sentencias se repiten, mientras la expresión lógica o condición del bucle
sea verdadera.
La condición para ingresar al bucle se evalúa antes de que se ejecuten las sentencias.
Si la condición es falsa, no se ingresará al bucle.
Note que no se coloca punto y coma (;) en el la línea del while, de hacerse no ejecutará
el bucle.
Cuando se debe ejecutar solo una sentencia varias veces, no es indispensable el uso de
las llaves { }.

EJEMPLO 1:
PSEUDOCODIGO CÓDIGO EN C++
Inicio #include<iostream>
Z----- 0 using namespace std;
Mientras y !=10 Hacer int main()
Leer y {
Z--- Z+y
int z= 0, y=0;
Fin mientras
Escribir Z while (y != 10)
Fin {
cout << "Escriba un numero ";
cin >> y;
z = z + y;
}
cout << z << endl;
system("pause");
}

El ciclo while, suma los números que se ingresan por teclado en la variable z, hasta que
se digite el valor del centinela que en este caso es 10 y que permite la terminación del
ciclo.

11
UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS

EJEMPLO 2:

Contar los números positivos que se ingresan por teclado hasta que se ingrese un número
negativo.

PSEUDOCODIGO CÓDIGO EN C++

/*Programa que cuenta cuantos números positivos


Variables: X: es el centinela
ingresan por teclado hasta que ingrese un numero
P: es el contador
negativo*/
#include<iostream>
Inicio using namespace std;
X←0 int main()
P ← -1 {
mientras (X >=0) hacer int X=0, p=-1;
P←P+1 while(X>=0)
Leer X {
fin_mientras p++;
escribir P cin>>X;
}
fin
cout<<"Ingreso "<<p<<" Numeros"<<endl;
system("pause");
return 0;
}

6.3.3. SENTENCIA do- while (haga mientras que)

Esta sentencia funciona de modo análogo a la instrucción while, con la diferencia de


que la condición se evalúa después de ejecutar las sentencias, esto significa que el bucle
se ejecuta por lo menos una vez.

Sintaxis de la instrucción:
do
{
sentencia-1;
sentencia-2;
sentencia-3;
:
:
sentencia-n;
} while (condición);

Comienza ejecutando las sentencias y se evalúa a continuación el ciclo. Si la condición es


verdadera, entonces se repite la ejecución de las sentencias. Este proceso continúa hasta
que la condición sea falsa.

Observe que se coloca punto y coma (;), luego de la condición del while.

12
UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS

EJEMPLO 1:

int x=1;
do
{
cout<<x<<endl;
x++;
} while(x<10);

Imprime los números del 1 al 9. Se ha utilizado una variable contador x que inicia en 1,
esta variable nos permitirá controlar la terminación del ciclo, haciendo incrementos de 1,
por cada iteración.

EJEMPLO 2:

Hacer un programa que imprima la tabla de multiplicar de un número dado por teclado

PSEUDOCODIGO CÓDIGO EN C++


Variables: X: es el centinela
y: es el contador //Programa que calcula la tabla de multiplicar
Inicio // de un numero que ingresa por teclado
Y1 #include<iostream>
Leer n; using namespace std;
int main()
Haga
{
n*Y
int y=1, n;
escribir n “* “ Y = n*Y cout<<"Cual es la tabla a Imprimir ? ";
Y=Y+1 cin>>n;
mientras(Y<=10) do{
fin cout<<"\t"<<y<<" * "<<n<<" = "<<y*n<<endl;
y++;
}while(y<=10);
system("pause");
return 0;
}

6.4. BUCLES ANIDADOS


Es posible anidar bucles en C++. Esto es especialmente útil cuando se requiere hacer
ciclos y estos a su vez contienen otros ciclos. Estos constan de un bucle externo con uno
o más bucles internos. Cada vez que se realiza una iteración en el bucle externo, los
bucles internos se repiten.

Se pueden hacer combinaciones de bucles for y while:

13
UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS

EJEMPLO

Escribir las tablas de multiplicar de la 1 a la 5, con 10 multiplicandos cada una.

PSEUDOCODIGO CÓDIGO EN C++

Inicio //Tablas de multiplicar del 1 al 5 con


para i ← 1,5,1 haga //10 multiplicandos cada uno
para j ← 1,10,1 haga #include<iostream>
R←i*j using namespace std;
int main()
escribir R
{
fin_para for(int i=1; i<=5; i++)
fin_para {
Fin cout<<"\n Tabla del "<<i<<endl;
for(int j=1; j<=10; j++)
cout<<i<<" *
"<<j<<i*j<<endl;
}
system("pause");
return 0;
}

6.5. INSTRUCCIONES BREAK Y CONTINUE


Algunas veces es necesario interrumpir un bucle o no tomar en cuenta una iteración, la
instrucción break, obliga a una terminación inmediata de la instrucción switch, while, for
o do-while y la instrucción continue, transfiere el control al inicio del bucle.
La instrucción break, se utiliza por lo general, cuando se detecta que va a suceder algo
fuera de lo normal en un programa, como por ejemplo cuando se introduce un dato que
puede ocasionar una división por cero.

Sintaxis de la instrucción: break;

14
UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS

EJEMPLO
Calcular la ecuación, para 10 números que se introducen por teclado.

PSEUDOCODIGO CÓDIGO EN C++

Inicio //Calcular la ecuación para 10 números que se ingresan


V0 //por teclado, si es 7 se rompe
para i ← 1,10,1 #include<iostream>
leer x using namespace std;
int main()
si(x==7
{
) int x;
escribir “No es posible float y;
dividir por cero, se for(int i=1; i<=5; i++)
interrumpe el bucle” {
sino haga cout<<"Introduzca un numero ";
v=(3*x+2)/(x-7) cin>>x;
escribir v if(x==7)
fin si {
fin_para cout<<"No se puede dividir por 0 - Fin del
Bucle"<<endl;
Fin
break;
}
else
{
y=(3*x+2)/(x-7);
cout<<"\t Solucion = "<<y<<endl;
}
}
system("pause");
return 0;
}

OBSERVACIONES:

La instrucción permite la entrada de 10 números y realizar el cálculo de la ecuación e


imprimir el resultado. Si se introduce el número 7, el programa se sale del ciclo.

Cuando la instrucción continue aparece en una instrucción while, significa que la ejecución
se transferirá automáticamente a la parte superior del ciclo y empezará a evaluar
nuevamente la condición.

Sintaxis de la instrucción: continue;

Es útil la instrucción continue para no contabilizar datos inválidos. Por ejemplo las
notas erradas de un grupo de estudiantes cuando se desea el promedio y se ingresan
datos por fuera del rango 1 a 5.

//El contrrol se trasfiere al incremento de la instruccion


#include<iostream>
using namespace std;
int main()
{
float cuenta=0, calificacion, suma=0;
cout<<"Introduzca la calificacion ";
for(int x=1; x<=5; x++)
15
UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS

{
cin>>calificacion;
if(calificacion<1 || calificacion >5)
continue;
suma+=calificacion;
cuenta++;
}
cout<<"\nPromedio = "<<suma/cuenta<<endl;
system("pause");
return 0;
}

Cuando continue aparece en una instrucción for, hace que el control se transfiera al
incremento de la instrucción, después de lo cual se vuelve a evaluar la expresión de
prueba, a diferencia de la anterior la iteración es contada.

RESUMEN
- Las estructuras de control registran la secuencia o flujo de ejecución de las
sentencias. Las estructuras de control se dividen en tres grandes categorías por el flujo de
ejecución: secuencia, selección y repetición.

- Las estructuras de selección nos permiten controlar la secuencia o flujo de ejecución de las
sentencias del programa, según se cumpla o no una condición.

- Las estructuras de control de selección en C++, son las sentencias if y switch.

- La estructura de control de selección if en C++, es sencilla si solo se ejecutan las sentencias


cuando la condición es verdadera; o if-else si se ejecutan sentencias por verdadero o falso.

- En la estructura de control de selección switch en C++, al evaluar la condición, solo permite


seleccionar una entre múltiples alternativas, con valores exactos.
- Las estructuras repetitivas permiten ejecutar una grupo de líneas de programa más de una
vez en lugar de repetirlas más adelante en el programa.
- Existen tres estructuras repetitivas en C++: while, for y do while la utilización de una u otra
depende de las características del problema que se esté solucionando.

16

You might also like