Está en la página 1de 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

Una Acción puede ser una única

sentencia que termina en punto y coma o un grupo de sentencias encerradas entre

llaves.

Acción1; en caso contrario se ejecutan las de Acción2.

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

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 negativoy 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 positivoy 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 ceroy a continuación:

otras instrucciones”. Si el número es mayor que cero, escribe: numero positivoy 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 negativoy 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

Inicio leer numero si (numero > 100) entonces escribir mayor” sino escribir menor o igual” fin_si fin

EJEMPLO 2:

CODIGO EN C++

//Número mayor” o “menor o igualque cien #include<iostream> using namespace std; int main()

{

int numero; cout<<" Ingrese un número "<<endl; cin>>numero; if(numero > 100) cout<<" mayor "<<endl; else cout<<" menor o igual "<<endl; system(“pause”); return 0;

}

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

Variable: NUMERO

PSEUDOCODIGO

Inicio leer NUMERO si (NUMERO < 0) entonces escribir menor que cero

sino si (NUMERO = 0) entonces escribir igual a cerosino escribir mayor que cerofin_si

fin_si

Fin

CODIGO EN C++

//Numero mayor, menor o igual a cero #include <iostream> using namespace std; int main()

{

int numero; cout<<"Ingrese el numero "<<endl; cin>>numero; if (numero < 0) cout<<" Menor de Cero"<<endl;

else

if (numero == 0) cout<<" Igual a Cero"<<endl;

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

Inicio leer A, B, C si (A > B y A>C) entonces escribir A sino si (B>A y B>C)entonces escribir B

sino

escribir C fin_si fin_si

fin

6.1.2. SENTENCIA switch

CODIGO EN C++

//Leer 3 numeros y determinar cual es el mayor #include <iostream> using namespace std; int main()

{

int A, B, C; cout<<"Digite los tres numeros: \n"; cin>>A>>B>>C; if (A>B && A>C) cout<<" El numero mayor es "<<A<<"\n";

else

if (B>A && B>C) cout<<" El numero mayor es

"<<B<<"\n";

else

cout<<" El numero mayor es

"<<C<<"\n"; system("pause"); return 0;

}

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

I N I C I O I N I C I O Bucle A Bucle
I N I C I O
I N I C I O
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:

Ejemplo:

CONTADOR CONTADOR + CANTIDAD CONSTANTE

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:

Ejemplo:

ACUMULADOR ACUMULADOR + CANTIDAD VARIABLE ó ACUMULADOR ACUMULADOR * CANTIDAD VARIABLE

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

8

UNIVERSIDAD MILITAR NUEVA GRANADA

CENTRO DE SISTEMAS

6.3. SINTAXIS

REPETITIVAS EN C++

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

DE LAS

ESTRUCTURAS

DE

CONTROL

6.3.1.

SENTENCIA for (para)

. DE LAS ESTRUCTURAS DE CONTROL 6.3.1. SENTENCIA for (para) La estructura de control for ,

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

Inicio SUMA 0 para i 0,10,1 haga leer

NU

SUMA SUMA + UN

fin_para escribir SUMA

fin

CODIGO EN C++

//Suma 10 numeros que ingresan por teclado #include <iostream> using namespace std; int main()

{

int SUMA=0, NU; cout<<"\nIngrese 10 NUMEROS "<<endl; for(int i=1; i<=10; i++)

{

cin>>NU; SUMA += NU;

}

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

UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS Sintaxis de la instrucción: while (condición) { sentencia-1;

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:

no es indispensable el uso de las llaves { }. EJEMPLO 1: PSEUDOCODIGO Inicio Z 

PSEUDOCODIGO Inicio Z----- 0 Mientras y !=10 Hacer Leer y Z--- Z+y Fin mientras Escribir Z

Fin

CÓDIGO EN C++

#include<iostream> using namespace std; int main()

{

 

int

z= 0, y=0;

while (y != 10)

{

 

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

Variables:

Inicio

X 0

P -1

X: es el centinela P: es el contador

mientras (X >=0) hacer P P + 1 Leer X fin_mientras escribir P fin

CÓDIGO EN C++

/*Programa que cuenta cuantos números positivos ingresan por teclado hasta que ingrese un numero negativo*/ #include<iostream> using namespace std;

int main()

{

int X=0, p=-1;

while(X>=0)

{

 

p++;

cin>>X;

}

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);

sentencia-3; : : sentencia-n; } while (condición); Comienza ejecutando las sentencias y se evalúa a

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

Variables:

X: es el centinela y: es el contador

Inicio

 

Y1

Leer n;

Haga

 

n*Y

escribir

n “* “ Y = n*Y

Y=Y+1

 

mientras(Y<=10)

fin

CÓDIGO EN C++

//Programa que calcula la tabla de multiplicar // de un numero que ingresa por teclado #include<iostream> using namespace std; int main()

{

int y=1, n; cout<<"Cual es la tabla a Imprimir ? "; cin>>n; do{

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

UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS EJEMPLO Escribir las tablas de multiplicar de la 1

EJEMPLO

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

PSEUDOCODIGO

Inicio para i 1,5,1 haga para j 1,10,1 haga R i * j escribir R fin_para fin_para Fin

CÓDIGO EN C++

//Tablas de multiplicar del 1 al 5 con //10 multiplicandos cada uno #include<iostream> using namespace std; int main()

{

for(int i=1; i<=5; i++)

{

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,

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

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 //por teclado, si es 7 se rompe #include<iostream> using namespace std; int main()

{

V0

para i 1,10,1 leer x

si(x==7

)

escribir No es posible dividir por cero, se interrumpe el buclesino haga

v=(3*x+2)/(x-7)

int x;

float y;

for(int i=1; i<=5; i++)

{

cout<<"Introduzca un numero "; cin>>x;

escribir v fin si fin_para Fin

if(x==7)

{

cout<<"No se puede dividir por 0 - Fin del Bucle"<<endl; 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