Está en la página 1de 41

UNIVERSIDAD MILITAR NUEVA GRANADA

DEPARTAMENTO DE TECNOLOGÍAS DEL


CONOCIMIENTO
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.
UNIDAD 6: ESTRUCTURAS BASICAS

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.
UNIDAD 6: ESTRUCTURAS BASICAS

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”.
UNIDAD 6: ESTRUCTURAS BASICAS
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
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”;
UNIDAD 6: ESTRUCTURAS BASICAS
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
UNIDAD 6: ESTRUCTURAS BASICAS

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.
UNIDAD 6: ESTRUCTURAS BASICAS
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”.
UNIDAD 6: ESTRUCTURAS BASICAS
EJEMPLO 1:

Leer un número y escribir si es “mayor” o “menor o igual” que 100


Variables: número

Pseudocódigo Código en C++


Inicio #include <iostream>
using namespace std;
leer numero
int main()
si (numero > 100) entonces {
escribir “mayor” int numero;
Sino cout<<" Ingrese un número "<<endl;
escribir “menor o igual” cin>>numero;
fin_si if(numero > 100)
fin cout<<" mayor "<<endl;
else
cout<<" menor o igual "<<endl;
system(“pause”);
return 0;
}
UNIDAD 6: ESTRUCTURAS BASICAS
EJEMPLO 2:

Leer un número y escribir si es menor que cero, igual a cero o mayor que cero.
Variable: NUMERO
Pseudocódigo Código en C++
#include <iostream>
Inicio using namespace std;
int main()
leer NUMERO {
si (NUMERO < 0) int numero;
entonces escribir “menor que cero” cout<<"Ingrese el numero "<<endl;
sino cin>>numero;
if (numero < 0)
si (NUMERO = 0) cout<<" Menor de Cero"<<endl;
entonces escribir “igual a cero” else
sino escribir “mayor que cero” if (numero == 0)
fin_si cout<<" Igual a Cero"<<endl;
else
fin_si cout<<" Mayor de Cero"<<endl;
Fin system("pause");
return 0;
}
UNIDAD 6: ESTRUCTURAS BASICAS
EJEMPLO 3:

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


Variables: A: Numero 1, B: Numero 2, C: numero3
Pseudocódigo Código en C++
Inicio #include <iostream>
using namespace std;
leer A, B, C
int main()
si (A > B y A>C) entonces {
escribir A int A, B, C;
sino cout<<"Digite los tres numeros: \n";
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)
cout<<" El numero mayor es "<<B<<"\n";
fin_si
else
fin_si cout<<" El numero mayor es "<<C<<"\n";
Fin system("pause");
return 0;
}
UNIDAD 6: ESTRUCTURAS BASICAS
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;
default: ejecuta esto si valor no es ninguno de los anteriores
break;
}
UNIDAD 6: ESTRUCTURAS BASICAS

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.

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.
UNIDAD 6: ESTRUCTURAS BASICAS
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;
}
UNIDAD 6: ESTRUCTURAS BASICAS

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.
Código en C++
#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;
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;
Continuación Código en C++
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;
}
UNIDAD 6: ESTRUCTURAS BASICAS
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.


UNIDAD 6: ESTRUCTURAS BASICAS
Los bucles pueden ser sencillos o anidados (ciclos dentro de otros ciclos).
UNIDAD 6: ESTRUCTURAS BASICAS
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.


UNIDAD 6: ESTRUCTURAS BASICAS
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


UNIDAD 6: ESTRUCTURAS BASICAS
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).
UNIDAD 6: ESTRUCTURAS BASICAS

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.
UNIDAD 6: ESTRUCTURAS BASICAS

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.
UNIDAD 6: ESTRUCTURAS BASICAS
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;
UNIDAD 6: ESTRUCTURAS BASICAS

EJEMPLO: Sumar 10 números enteros introducidos por teclado

Pseudocódigo Código en C++


#include <iostream>
Inicio using namespace std;
SUMA ← 0 int main()
{
para i ← 0,10,1 haga
int SUMA=0, NU;
leer NU
cout<<"\nIngrese 10 NUMEROS "<<endl;
SUMA ← SUMA + UN for(int i=1; i<=10; i++)
fin_para {
escribir SUMA cin>>NU;
fin SUMA += NU;
}
cout<<"\n\tSuma = "<<SUMA<<endl;
system("pause");
return 0;
}
UNIDAD 6: ESTRUCTURAS BASICAS
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).
Sintaxis de la instrucción:

while (condición)
{
sentencia-1;
sentencia-2;
sentencia-3;
…………………….
sentencia-n;
}
UNIDAD 6: ESTRUCTURAS BASICAS

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 { }.
UNIDAD 6: ESTRUCTURAS BASICAS
EJEMPLO 1:

Pseudocódigo 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 while (y != 10)
Escribir Z {
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.
UNIDAD 6: ESTRUCTURAS BASICAS
EJEMPLO 2:

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

Variable Pseudocódigo Código en C++


#include<iostream>
X: es el Centinela. Inicio using namespace std;
X←0 int main()
P: es el Contador. {
P ← -1
int X=0, p=-1;
mientras (X >=0) hacer while(X>=0)
P←P+1 {
Leer X p++;
fin_mientras cin>>X;
escribir P }
fin cout<<"Ingreso "<<p<<" Numeros"<<endl;
system("pause");
return 0;
}
UNIDAD 6: ESTRUCTURAS BASICAS
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-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.
UNIDAD 6: ESTRUCTURAS BASICAS

Ejemplo 1:

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.

int x=1;
do
{
cout<<x<<endl;
x++;
} while(x<10);
UNIDAD 6: ESTRUCTURAS BASICAS
Ejemplo 2: Hacer un programa que imprima la tabla de multiplicar de un número
dado por teclado

Pseudocódigo Código en C++


#include<iostream>
Inicio using namespace std;
int main()
Y1 {
Leer n; int y=1, n;
Haga cout<<"Cual es la tabla a Imprimir ? ";
n*Y cin>>n;
escribir n “* “ Y = n*Y do{
cout<<"\t"<<y<<" * "<<n<<" = "<<y*n<<endl;
Y=Y+1 y++;
mientras(Y<=10) }while(y<=10);
fin system("pause");
return 0;
}
UNIDAD 6: ESTRUCTURAS BASICAS
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:
UNIDAD 6: ESTRUCTURAS BASICAS
EJEMPLO:

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

Pseudocódigo Código en C++


#include<iostream>
Inicio using namespace std;
para i ← 1,5,1 haga int main()
para j ← 1,10,1 haga {
R←i*j for(int i=1; i<=5; i++)
escribir R {
fin_para cout<<"\n Tabla del "<<i<<endl;
fin_para for(int j=1; j<=10; j++)
Fin cout<<i<<" * "<<j<<i*j<<endl;
}
system("pause");
return 0;
}
UNIDAD 6: ESTRUCTURAS BASICAS
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;


EJEMPLO: Calcular la ecuación, para 10 números que se
introducen por teclado.
Pseudocódigo Código en C++
#include<iostream>
Inicio using namespace std;
V0 int main()
{
para i ← 1,10,1
int x;
leer x float y;
si(x==7) for(int i=1; i<=5; i++)
escribir “No es posible dividir {
por cero, se interrumpe el cout<<"Introduzca un numero ";
bucle” cin>>x;
sino haga if(x==7){
v=(3*x+2)/(x-7) cout<<"No se puede dividir por 0 - Fin del Bucle"<<endl;
break;
escribir v
}
fin si else{
fin_para y=(3*x+2)/(x-7);
Fin cout<<"\t Solucion = "<<y<<endl;
}
}
system("pause");
return 0;
}
UNIDAD 6: ESTRUCTURAS BASICAS
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.
UNIDAD 6: ESTRUCTURAS BASICAS
#include<iostream>
using namespace std;
int main()
{
float cuenta=0, calificacion, suma=0;
cout<<"Introduzca la calificacion ";
for(int x=1; x<=5; x++)
{
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.
RESUMEN

➢ 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.

También podría gustarte