estructuras de control
DESCRIPTION
ProgramacionTRANSCRIPT
![Page 1: Estructuras de Control](https://reader030.vdocuments.net/reader030/viewer/2022032523/55cf9139550346f57b8bb1be/html5/thumbnails/1.jpg)
Capıtulo 6
Estructuras de Control
Basicamente las instrucciones de un programa se ejecutan secuencialmente, es decir una
despues de otra, desde la primera hasta la ultima instruccion, pero cuando se analizan
los problemas a solucionar, estos resolver requieren que se tomen decisiones que bifurcan
la solucion o que se repitan algun proceso una cantidad determinada o indeterminada de
veces.
El lenguaje c cuenta con una serie de estructuras llamadas de control que le permiten
manejar el orden en que se ejecuta un programa, ya sea tomando una serie de distintos
caminos o repitiendo un cantidad especifica de instrucciones. las estructuras de control mas
comunes son:
if (if Simple) y If-else (If compuesto)
while
do-while
for
switch
83
![Page 2: Estructuras de Control](https://reader030.vdocuments.net/reader030/viewer/2022032523/55cf9139550346f57b8bb1be/html5/thumbnails/2.jpg)
84 CAPITULO 6. ESTRUCTURAS DE CONTROL
6.1. Estructura if-else
La estructura if-else se utiliza para tomar una decision segun si una condicion tiene un
resultado verdadero (TRUE o 1) o falso (FALSE o 0). Si al evaluar la condicion el resultado
es verdadero se ejecuta un bloque de instrucciones escogido y se resulta falso se salta este
bloque de instrucciones y continua el programa, en este punto se utiliza un else que es
opcional el cual permite ejecutar un bloque de instrucciones solo en el caso de que la
condicion sea falsa.
Representacion en diagrama de flujo:
![Page 3: Estructuras de Control](https://reader030.vdocuments.net/reader030/viewer/2022032523/55cf9139550346f57b8bb1be/html5/thumbnails/3.jpg)
6.1. ESTRUCTURA IF-ELSE 85
Sintaxis if (simple):
if(condicion)
{instrucciones
}
Ejemplo 1: Realizar un programa que calcule el valor absoluto de un numero real.
Solucion:
/************************************************************************/
#include <iostream.h>
#include <conio.h>
main()
{float n;
cout<<"Este programa determina el valor absoluto de n"<<endl;
cout<<"Introduzca el valor de n: ";
cin>>n;
if(n<0)
n=(-1)*n;//se omiten las llaves por ser una sola instruccion
cout<<"El valor absoluto es "<<n;
getch();
}
/************************************************************************/
Ejecucion:
Este programa determina el valor absoluto de n
Introduzca el valor de n: -5.3
El valor absoluto es 5.3
Este programa determina el valor absoluto de n
Introduzca el valor de n: 8.26
El valor absoluto es 8.26
![Page 4: Estructuras de Control](https://reader030.vdocuments.net/reader030/viewer/2022032523/55cf9139550346f57b8bb1be/html5/thumbnails/4.jpg)
86 CAPITULO 6. ESTRUCTURAS DE CONTROL
Sintaxis if-else (compuesto):
if(condicion)
{instrucciones
}else
{instrucciones
}
Ejemplo 2: Realizar un programa que dado un numero entero determine si es par o impar.
Solucion:
/************************************************************************/
#include <iostream.h>
#include <conio.h>
main()
{float n;
cout<<"Este programa determina si n es par o impar"<<endl;
cout<<"Introduzca el valor de n: ";
cin>>n;
if(n%2==0)
cout<<"El numero "<<n<<" es par";
else
cout<<"El numero "<<n<<" es impar";
getch();
}
/************************************************************************/
Ejecucion:
Este programa determina si n es par o impar
Introduzca el valor de n: 98
El numero 98 es par
![Page 5: Estructuras de Control](https://reader030.vdocuments.net/reader030/viewer/2022032523/55cf9139550346f57b8bb1be/html5/thumbnails/5.jpg)
6.1. ESTRUCTURA IF-ELSE 87
Ejemplo 3: Realizar un programa que solicite al usuario una cantidad entera de dıas.
Esta cantidad debe ser mostrada en pantalla con su equivalencia en anos, meses, semanas
y dıas.(no mostrar cuando uno de estos valores sea cero)
Solucion:
/************************************************************************/
#include<iostream.h>
#include<conio.h>
main()
{
int dias, anos=0,meses=0, semanas=0;
cout<<"Este programa expresa una cantidad de dıas en a~nos, meses,";
cout<<"semanas y dias\n";
cout<<"Digite la cantidad de dıas: ";
cin>>dias;
anos=dias/365;
dias=dias%365;
meses=dias/30;
dias=dias%30;
semanas=dias/7;
dias=dias%7;
cout<<"Esta cantidad corresponde a:"<<endl;
if(anos!=0)
cout<<anos<<" a~nos, ";
if(meses!=0)
cout<<meses<<" meses, ";
if(semanas!=0)
cout<<semanas<<" semanas, ";
if(dias!=0)
cout<<dias<<" dias";
getch();
}
/************************************************************************/
![Page 6: Estructuras de Control](https://reader030.vdocuments.net/reader030/viewer/2022032523/55cf9139550346f57b8bb1be/html5/thumbnails/6.jpg)
88 CAPITULO 6. ESTRUCTURAS DE CONTROL
Ejecucion:
Este programa expresa una cantidad de dıas en anos, meses, semanas y dıas
Digite la cantidad de dıas: 2000
Esta cantidad corresponde a:
5 anos, 5 meses, 3 semanas, 4 dıas
Este programa expresa una cantidad de dıas en anos, meses, semanas y dıas
Digite la cantidad de dıas: 1000
Esta cantidad corresponde a:
2 anos, 9 meses,
Este programa expresa una cantidad de dıas en anos, meses, semanas y dıas
Digite la cantidad de dıas: 120
Esta cantidad corresponde a:
4 meses,
Ejemplo 4: Realizar un programa que calcule el costo de las entradas a cine, si cada una
vale 5 dolares, pero si se compran de 5 a 10 tiene descuento del 15 % y mas de 10 descuento
del 25 %.
Solucion:
/************************************************************************/
#include<iostream.h>
#include<conio.h>
main()
{
int cantidad;
float costo, descuento;
cout<<"El programa calcula el costo de las entradas a cine"<<endl;
cout<<"Digite la cantidad de entradas: ";
cin>>cantidad;
![Page 7: Estructuras de Control](https://reader030.vdocuments.net/reader030/viewer/2022032523/55cf9139550346f57b8bb1be/html5/thumbnails/7.jpg)
6.1. ESTRUCTURA IF-ELSE 89
if(cantidad<5)
{
descuento=0;
}
else
{
if(cantidad<10)
{
descuento=5*cantidad*0.15;
}
else
{
descuento=5*cantidad*0.25;
}
}
costo=5*cantidad-descuento;
cout<<"El costo total de las boletas es "<<costo;
getch();
}
/************************************************************************/
Ejecucion:
El programa calcula el costo de las entradas a cine
Digite la cantidad de entradas: 4
El costo total de las boletas es 20
El programa calcula el costo de las entradas a cine
Digite la cantidad de entradas: 6
El costo total de las boletas es 25.5
El programa calcula el costo de las entradas a cine
Digite la cantidad de entradas: 12
El costo total de las boletas es 45
![Page 8: Estructuras de Control](https://reader030.vdocuments.net/reader030/viewer/2022032523/55cf9139550346f57b8bb1be/html5/thumbnails/8.jpg)
90 CAPITULO 6. ESTRUCTURAS DE CONTROL
6.1.1. Operador condicional ?:
Este operador permite representar en forma abreviada una estructura if-else
Sintaxis condicional ?:
condicion ? opcion si verdadero : opcion si falso;
Un ejemplo del operador condicional ?: puede ser el siguiente:
n %2 == 0? cout<< n <<“es par”: cout<< n <<“es impar”;
Ejemplo 5: Realice un programa que dada la nota de una habilitacion, determine si el
estudiante aprueba o reprueba el curso.
Solucion:
/************************************************************************/
#include <conio.h>
#include <iostream.h>
main()
{
int nota;
cout<<"Este programa determina si el estudiante aprueba o ";
cout<<"reprueba el curso\n\n";
cout<<"Introduzca la nota de la habilitacion: ";
cin>>nota;
nota>=3? cout<<"aprobo ": cout<<"reprobo ";
getch();
}
/************************************************************************/
Ejecucion:
Este programa determina si el estudiante aprueba o reprueba el curso
Introduzca la nota de la habilitacion: 2.5
reprobo
![Page 9: Estructuras de Control](https://reader030.vdocuments.net/reader030/viewer/2022032523/55cf9139550346f57b8bb1be/html5/thumbnails/9.jpg)
6.2. ESTRUCTURA WHILE 91
6.2. Estructura while
La estructura while es un ciclo que permite ejecutar un bloque de instrucciones mientras
se cumpla una condicion, en el momento que la condicion sea falsa se termina la repeticion
y se ejecuta la siguiente instruccion despues de la estructura de repeticion; el bloque de
instrucciones del ciclo while puede no ser ejecutado ni siquiera una vez, si de entrada la
condicion es falsa.
Es importante que alguna instruccion o combinacion de instrucciones dentro del ciclo,
generen que la condicion en algun momento sea falsa, ya que de lo contrario la repeticion
nunca termina, generando lo que se llama un ciclo infinito.
Representacion en diagrama de flujo:
Sintaxis while
while(condicion)
{instrucciones
}
![Page 10: Estructuras de Control](https://reader030.vdocuments.net/reader030/viewer/2022032523/55cf9139550346f57b8bb1be/html5/thumbnails/10.jpg)
92 CAPITULO 6. ESTRUCTURAS DE CONTROL
Ejemplo 6: Realizar un programa que determine el promedio de n numeros ingresados
por el usuario.
Solucion:
/************************************************************************/
#include <conio.h>
#include <iostream.h>
main()
{
int n, contador=1;
float num,suma=0,promedio;
cout<<"Este programa determina el promedio de n numeros"<<endl;
cout<<"Introduzca el valor de n: ";
cin>>n;
while(contador<=n)
{cout<<"Ingrese el numero "<<contador<<": ";
cin>>num;
suma=suma+num;
contador++;
}
promedio=suma/n;
cout<<"El promedio es: "<<promedio;
getch();
}
/************************************************************************/
Ejecucion:
Este programa determina el promedio de n numeros
Introduzca el valor de n: 4
Ingrese el numero 1: 6.3
Ingrese el numero 2: 4.5
Ingrese el numero 3: 7.26
Ingrese el numero 4: 1.2
El promedio es: 4.815
![Page 11: Estructuras de Control](https://reader030.vdocuments.net/reader030/viewer/2022032523/55cf9139550346f57b8bb1be/html5/thumbnails/11.jpg)
6.3. ESTRUCTURA DO-WHILE 93
6.3. Estructura do-while
La estructura do-while trabaja de forma analoga a la estructura while, con la unica
diferencia de que la condicion se evalua al final, luego de haber ejecutado el bloque de
instrucciones; esto obliga que al menos el bloque de instrucciones se ejecuten una vez, al
darse que al final la condicion fuera falsa, obligarıa a salir del ciclo o en caso contrario
repetirlo hasta que la condicion fuera falsa.
Representacion en diagrama de flujo:
Sintaxis do-while
do {instrucciones
} while(condicion);
Ejemplo 7: Realizar un programa que determine el promedio de los numeros ingresados
por el usuario, preguntando cada vez que se ingresa un elemento, si desea ingresar uno
nuevo.
![Page 12: Estructuras de Control](https://reader030.vdocuments.net/reader030/viewer/2022032523/55cf9139550346f57b8bb1be/html5/thumbnails/12.jpg)
94 CAPITULO 6. ESTRUCTURAS DE CONTROL
Solucion:
/************************************************************************/
#include <conio.h>
#include <iostream.h>
main()
{
int contador=0;
float num,suma=0,promedio;
char respuesta;
cout<<"Este programa determina el promedio de los numeros ";
cout<<"ingresados por el usuario"<<endl;
do
{
contador++;
cout<<"Ingrese el numero "<<contador<<": ";
cin>>num;
suma=suma+num;
cout<<"desea ingresar otro numero(s/n)";
cin>>respuesta;
} while(respuesta!=’n’);
promedio=suma/contador;
cout<<endl<<"El promedio es :"<<promedio;
getch();
}
/************************************************************************/
Ejecucion:
Este programa determina el promedio de los numeros ingresados por el usuario
Ingrese el numero 1: 25.3
desea ingresar otro numero(s/n) s
Ingrese el numero 2: 14.6
desea ingresar otro numero(s/n) s
Ingrese el numero 3: 18.3
desea ingresar otro numero(s/n) n
El promedio es : 19.4
![Page 13: Estructuras de Control](https://reader030.vdocuments.net/reader030/viewer/2022032523/55cf9139550346f57b8bb1be/html5/thumbnails/13.jpg)
6.4. ESTRUCTURA FOR 95
6.4. Estructura for
Dado que muchos de los ciclos while o do-while requieren de 3 etapas fundamentales,
que son la primera una inicializacion de variables, la segunda una condicion que controla
el numero de veces que se repite el ciclo y una tercera que permite el incremento (o
decremento) de variables por cada vez que se repite el ciclo; se maneja la estructura for que
es equivalente y maneja las tres etapas en una misma instruccion separadas con coma(,).
Representacion en diagrama de flujo:
A continuacion se da una equivalencia entre la sintaxis de la estructura for con la de while:
Sintaxis for
for(inicializacion, condicion control, incremento )
{instrucciones
}
equivalente a:
![Page 14: Estructuras de Control](https://reader030.vdocuments.net/reader030/viewer/2022032523/55cf9139550346f57b8bb1be/html5/thumbnails/14.jpg)
96 CAPITULO 6. ESTRUCTURAS DE CONTROL
inicializacion;
while(condicion control)
{instrucciones
incremento
}
un ejemplo sencillo puede ser el siguiente que permite imprimir los numeros del 1 al 10:
for(int i = 1; i <= 10; i + +)
cout<< i;
Ejemplo 8: Realizar un programa que haga un conteo regresivo en pantalla de 10 a 1.
Solucion:
/**********************************************************************/
#include <conio.h>
#include <iostream.h>
main()
{
int contador;
for(contador=10;contador>=1;contador--)
{
cout<<contador<<"\t";
_sleep(1000);//detiene la ejecucion 1 segundo
}
cout<<"digite una tecla para salir";
getch();
}
/************************************************************************/
Ejecucion:
10 9 8 7 6 5 4 3 2 1
digite una tecla para salir
![Page 15: Estructuras de Control](https://reader030.vdocuments.net/reader030/viewer/2022032523/55cf9139550346f57b8bb1be/html5/thumbnails/15.jpg)
6.4. ESTRUCTURA FOR 97
6.4.1. Variantes del for
El for no requiere que se encuentren las 3 expresiones dentro del parentesis despues de la
palabra for, lo que si es obligatorio es que los espacios esten separados con punto y coma
(;). Para comprender mas estas variaciones se presentan a continuacion equivalencias de la
estructura for validas para la impresion de los numeros de 1 a 10:
for(int i = 1; i <= 10; i + +)
cout<< i;
equivalente a:
for(int i = 1; i <= 10; cout<< i + +)
equivalente a:
for(int i = 1; i <= 10;)
cout<< i + +;
equivalente a:
int i = 1;
for(; i <= 10; )
cout<< i + +;
Ademas la primera instruccion del parentesis del for puede ser cualquier instruccion valida
del lenguaje c:
int i = 1;
for(cout<<“los numeros del 1 al 10 son:”; i <= 10; i + + )
cout<< i;
![Page 16: Estructuras de Control](https://reader030.vdocuments.net/reader030/viewer/2022032523/55cf9139550346f57b8bb1be/html5/thumbnails/16.jpg)
98 CAPITULO 6. ESTRUCTURAS DE CONTROL
Ejemplo 9: Realizar un programa que realice una escalera con los numeros del 1 al 9.
Solucion:
/**********************************************************************/
#include <conio.h>
#include <iostream.h>
main()
{
int i=1,j;
for(;i<=9;)
{
j=1;
for(;j<=i;)
cout<<j++;
i++;
cout<<"\n";
}
getch();
}
/************************************************************************/
Ejecucion:
1
12
123
1234
12345
123456
1234567
12345678
123456789
![Page 17: Estructuras de Control](https://reader030.vdocuments.net/reader030/viewer/2022032523/55cf9139550346f57b8bb1be/html5/thumbnails/17.jpg)
6.5. SENTENCIA SWITCH 99
6.5. Sentencia Switch
La sentencia Switch permite que el programa elija la ejecucion de una serie de instrucciones
entre varias posibilidades o casos dependiendo de la opcion escogida.
Representacion en diagrama de flujo:
Sintaxis Switch:
switch(expresion)
{case contante 1:
Instrucciones caso 1;
break;
case contante 2:
Instrucciones caso 2;
break;
![Page 18: Estructuras de Control](https://reader030.vdocuments.net/reader030/viewer/2022032523/55cf9139550346f57b8bb1be/html5/thumbnails/18.jpg)
100 CAPITULO 6. ESTRUCTURAS DE CONTROL
case contante n:
Instrucciones caso n;
break;
default:
Instrucciones caso que no se cumpla ninguna de las anteriores;
}
Ejemplo 10: Realizar un programa que dadas las letras d, a, b, s, que representan una
nota de un estudiante, mostrar deficiente, aceptable, bueno y sobresaliente para cada caso.
Solucion:
/************************************************************************/
#include<iostream.h>
#include<conio.h>
main()
{
char nota;
cout<<"Ingrese la letra que represente la nota del estudiante"<<endl;
cout<<"(d)eficiente,(a)ceptable,(b)ueno,(s)obresaliente"<<endl;
cin>>nota;
switch(nota)
{case ’d’: cout<<"La nota es deficiente, nota menor de 3.0"<<endl;
break;
case ’a’: cout<<"La nota es aceptable, nota entre 3 y 3.5"<<endl;
break;
case ’b’: cout<<"La nota es buena, nota entre 3.6 y 4.5"<<endl;
break;
case ’s’: cout<<"La nota es sobresaliente, mayor de 4.5"<<endl;
break;
default : cout<<"no es un sımbolo para una nota valida";
break;
}
getch();
}
/************************************************************************/
![Page 19: Estructuras de Control](https://reader030.vdocuments.net/reader030/viewer/2022032523/55cf9139550346f57b8bb1be/html5/thumbnails/19.jpg)
6.5. SENTENCIA SWITCH 101
Ejecucion:
Ingrese la letra que represente la nota del estudiante
(d)eficiente,(a)ceptable,(b)ueno,(s)obresaliente
d
La nota es deficiente, nota menor de 3.0
Ingrese la letra que represente la nota del estudiante
(d)eficiente,(a)ceptable,(b)ueno,(s)obresaliente
x
no es un sımbolo para una nota valida
Ejemplo 11: Realizar un programa que permita al usuario determinar la hipotenusa de
un triangulo rectangulo si se conocen los 2 catetos, o determinar un cateto si se conoce la
hipotenusa y el otro cateto.
Solucion:
/************************************************************************/
#include<iostream.h>
#include<conio.h>
#include<math.h>
main()
{
int op;
float c1,c2,hip;
do
{
system("CLS");//borrar pantalla
cout<<"MENU TRIANGULO RECTANGULO"<<endl;
cout<<"1. Determinar la hipotenusa"<<endl;
cout<<"2. Determinar un cateto"<<endl;
cout<<"3. Salir"<<endl;
cout<<"Digite una opcion: ";
cin>>op;
![Page 20: Estructuras de Control](https://reader030.vdocuments.net/reader030/viewer/2022032523/55cf9139550346f57b8bb1be/html5/thumbnails/20.jpg)
102 CAPITULO 6. ESTRUCTURAS DE CONTROL
switch(op)
{case 1: system("CLS");
cout<<"Esta opcion permite determinar la hipotenusa"<<endl;
cout<<"Ingrese el valor del cateto 1:";
cin>>c1;
cout<<"Ingrese el valor del cateto 2:";
cin>>c2;
hip=sqrt(pow(c1,2)+pow(c2,2));
cout<<"La hipotenusa de este triangulo es "<<hip;
getch();
break;
case 2: system("CLS");
cout<<"Esta opcion permite determinar un cateto"<<endl;
cout<<"Ingrese el valor de la hipotenusa:";
cin>>hip;
cout<<"Ingrese el valor del cateto :";
cin>>c1;
c2=sqrt(pow(hip,2)-pow(c1,2));
cout<<"El valor del cateto desconocido es "<<c2;
getch();
break;
}
}while(op!=3);
}
/************************************************************************/
Ejecucion:
MENU TRIANGULO RECTANGULO
1. Determinar la hipotenusa
2. Determinar un cateto
3. Salir
Digite una opcion: 1
borra pantalla y presenta la siguiente opcion:
![Page 21: Estructuras de Control](https://reader030.vdocuments.net/reader030/viewer/2022032523/55cf9139550346f57b8bb1be/html5/thumbnails/21.jpg)
6.5. SENTENCIA SWITCH 103
Esta opcion permite determinar la hipotenusa
Ingrese el valor del cateto 1: 3
Ingrese el valor del cateto 2: 5
La hipotenusa de este triangulo es: 5.83095
vuelve al menu principal y se puede volver a escoger cualquiera de las opciones:
MENU TRIANGULO RECTANGULO
1. Determinar la hipotenusa
2. Determinar un cateto
3. Salir
Digite una opcion: 2
Esta opcion permite determinar un cateto
Ingrese el valor de la hipotenusa: 10
Ingrese el valor del cateto: 5
El valor del cateto desconocido es : 8.66025
vuelve al menu principal y se puede ejecutar el programa tantas veces se desee hasta que
finalmente se escoja la opcion 3.
![Page 22: Estructuras de Control](https://reader030.vdocuments.net/reader030/viewer/2022032523/55cf9139550346f57b8bb1be/html5/thumbnails/22.jpg)
104 CAPITULO 6. ESTRUCTURAS DE CONTROL
6.6. TALLER
Realizar en lenguaje c cada uno de los siguientes programas
1. Realizar un programa que muestre los numeros enteros de 1 a n, con n ingresado por
el usuario.
2. Realizar un programa que encuentre el valor de la sumatoria: 5 + 10 + 15 + · · ·+ 100
3. Realizar un programa que determine el mayor de 3 numeros reales diferentes.
4. Realizar un programa que ordene de menor a mayor 3 numeros distintos ingresados
por el usuario.
5. Realizar un programa que determine el menor de un conjunto de numeros ingresados
por el usuario.
6. Realizar un programa que determine la cantidad de dıgitos de un numero entero.
7. Realizar un programa que determine los divisores de un numero entero.
8. Realizar un programa que determine la suma de los pares en el intervalo [2, n]
9. Realizar un programa que determine la suma de los multiplos de n en [a, b]
10. Realizar un programa que determine la suma de n numeros ingresados por el usuario.
11. Realizar un programa que determine si un numero es primo o no.
12. Realizar un programa que determine la cantidad de numeros primos en [a, b]
13. Realizar un programa que muestre todos los numeros romanos del 1 al 100.
14. Realizar un programa que muestre un menu que le permita al usuario escoger la
opcion de pasar un angulo de grados a radianes y otra opcion para pasar de radianes
a grados.
15. Realizar un programa que muestre la tabla de multiplicar que el usuario desee.
![Page 23: Estructuras de Control](https://reader030.vdocuments.net/reader030/viewer/2022032523/55cf9139550346f57b8bb1be/html5/thumbnails/23.jpg)
6.6. TALLER 105
16. Realizar un programa que muestre las tablas de multiplicar del 1 al 9.
17. Realizar un programa que dados x, y determinar xy, sin utilizar la librerıa math.h
18. Realizar un programa que aproxime el valor de π a partir de n terminos de la serie:
π ≈ 4− 43
+45− 4
7+
49− 4
11+ . . .