FIMEE-ELECTRÓNICA, UNICA
ESTRUCTURAS CONDICIONALES
#include <iostream>
#include <math.h>
using namespace std;
int main()
{ // declaracion
int a,b,c;
float r1,r2, discri, Yx;
//asignacion
cin>>a; cin>>b; cin>>c;
//proceso (calcular)
discri=pow (b,2)-4*a*c;
if (a!=0)
{
if (discri>0)
{r1=-b+sqrt (discri);
r2=-b-sqrt (discri);
}
else
cout<<"Imaginario";
}
else
cout<<"Indeterminado";
//imprimir
cout<<(r1,r2);
}
#include <iostream>
#include <cmath>
void calcularRaices(float a, float b, float c) {
// Calcular el discriminante
float discriminante = b * b - 4 * a * c;
// Verificar si hay raíces reales
if (discriminante >= 0) {
// Calcular las raíces
float raiz1 = (-b + sqrt(discriminante)) / (2 * a);
float raiz2 = (-b - sqrt(discriminante)) / (2 * a);
std::cout << "Raiz 1: " << raiz1 << std::endl;
std::cout << "Raiz 2: " << raiz2 << std::endl;
} else {
std::cout << "No hay raices reales." << std::endl;
}
}
int main() {
// Coeficientes del polinomio ax^2 + bx + c
float a, b, c;
std::cout << "Ingrese el coeficiente a: ";
std::cin >> a;
std::cout << "Ingrese el coeficiente b: ";
std::cin >> b;
std::cout << "Ingrese el coeficiente c: ";
std::cin >> c;
calcularRaices(a, b, c);
return 0;
}
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int opcion;
double Caidatension, L, i, R, X, Angulo, rad, PI = 3.141592, F, n, q, As, V, B;
cout << "calculo de campomagnetico y caida de tension" << endl;
cout << "formulas" << endl;
cout << "1-campomagnetico" << endl;
cout << "2-caida de tension" << endl;
cout << "ingrese una opcion: ";
cin >> opcion;
switch (opcion)
{
case 1:
// ASIGNACION
cout << "Ingrese el valor de la carga q=";
cin >> q;
cout << "Ingrese el valor de las espiras n=";
cin >> n;
cout << "Ingrese el valor de la area As=";
cin >> As;
cout << "Ingrese el valor del voltaje V=";
cin >> V;
cout << "Ingrese el valor del campo magnetico B=";
cin >> B;
// PROCESO
F = q * n * As * V * B;
// RESULTADO
cout << "EL valor de la fuerza magnetica es: F=" << F << " Newtons " << endl;
break;
case 2:
// ASIGNACION
cout << "Ingrese la longitud de cable L=";
cin >> L;
cout << "Ingrese la corriente i=";
cin >> i;
cout << "Ingrese la resistencia R=";
cin >> R;
cout << "Ingrese la reactancia X=";
cin >> X;
cout << "Ingrese el voltaje V=";
cin >> V;
cout << "Ingrese el angulo de desface Angulo =";
cin >> Angulo;
// PROCESO
rad = (2 * PI * Angulo) / 360;
Caidatension = (sqrt(3) * L * i * (R * cos(rad) + X * sin(rad))) / (V * 10);
// RESULTADO
cout << "EL valor de la caida de tension es: CT=" << Caidatension << " Voltios " << endl;
break;
case 3:
cout << "opcion 3" << endl;
break;
default:
cout << "Opción no válida" << endl;
break;
}
return 0;
}
TAREA
Programación en C++. CONDICIONALES (+ ejercicios)
Condiciones
Una condición es una expresión que se evalua a cierto o falso. En una expresión pueden participar como operandos valores literales, variables o funciones. Para construir expresiones condicionales podemos utilizar operadores relacionales. Los operadores condicionales comparan lo que tienen a su izquierda con lo que tienen a su derecha de la siguiente forma:
​
.png)
.png)
Los programas vistos hasta el momento se ejecutan de forma secuencial, una sentencia a continuación de otra sin omitir ninguna.
Estas sentencias, asociadas a la función principal main(), constituyen un ejemplo de sentencia compuesta: conjunto de sentencias situadas dentro de un bloque de código entre llaves { }.
La programación limitada a la ejecución secuencial de instrucciones es demasiado simple. Las capacidades que vemos día a día en nuestra interacción con los ordenadores y las aplicaciones informáticas, serían imposibles si solamente contáramos con las opciones vistas hasta el momento.
Es suficiente la introducción de dos nuevas estructuras básicas para que se abra la puerta a la posibilidad de realizar todas las tareas de cómputo que son teóricamente concebibles.
Estas dos estructuras, constituidas por sentencias compuestas, son:
-
las estructuras condicionales
-
las estructuras iterativas o bucles
Sirven para alterar la estructura secuencial que se tiene por defecto.
Una sentencia condicional realiza un conjunto u otro de sentencias dependiendo del cumplimiento o no de una determinada condición.
En C++ podemos distinguir diferentes tipos:
-
Simple: if
-
Ampliada: if - else
-
Anidada: if – else if - … - else
-
Multisalida: switch
Además de las sentencias de control de flujo condicional, introduciremos algunos de los operadores típicamente asociados a éstas.
C++ utiliza el tipo de dato nativo bool para almacenar los valores true o false de una expresión boolena. En la práctica, C++ lo que hace es lo siguiente:
-
si la expresión en la que interviene el operador es falsa, internamente se almacenará un 0.
-
si la expresión se evalúa como cierta, se almacenará un 1.
Las palabras reservadas true y false son literales predefinidos por el lenguaje con el objetivo de aportan legibilidad y contexto a las expresiones booleanas.
En C++ todos los valores representan verdad, excepto el 0.
​
Control de flujo condicional if
Es una sentencia en la que se evalúa una condición y, solo si es verdad, se ejecuta un conjunto de sentencias asociadas.
if (condicion)
{ bloque de sentencias; }
Las llaves { … } delimitan el conjunto de sentencias afectadas por la condición if.
​
Control de flujo condicional if - else if - ... - else
En muchas ocasiones interesa evaluar de forma anidada varias expresiones condicionales de arriba a abajo. Cuando aparece una condición verdadera, ejecuta las acciones asociadas y salta el resto de las expresiones condicionales sin necesidad de evaluarlas.
Normalmente existe un bloque final else{…} que actúa como condición por defecto.
El último bloque else puede aparecer opcionalmente.

Operadores relacionales lógicos
Sirven para evaluar expresiones compuestas de tipo lógico, cuya resultado, por tanto, resultará cierto o falso, true o false.
La evaluación de las operaciones lógicas se realiza de izquierda a derecha y se interrumpe cuando se ha asegurado el resultado. Esto se conoce como propiedad de cortocircuito: si se puede concluir el valor lógico del resultado a partir de una evaluación parcial de la expresión, no se sigue evaluando la misma.
​
Control de flujo condicional switch
Aunque el escalonamiento if - else if - else puede evaluar de forma anidada múltiples condiciones, si estas son muy numerosas, empieza a haber pérdida de legibilidad.
C/C++ posee una estructura condicional múltiple, switch, que ejecuta un bloque de sentencias si una variable o expresión entera coincide con alguno de los valores proporcionados en una lista de constantes enteras (literales int o char, por ejemplo).
switch (expresion)
{
case valor_1:
sentencias_1
case valor_2:
sentencias_2
//Resto de bloques case
case valor_n:
sentencias_n
default:
sentencias_default;
}
​
La ejecución del programa consiste en comparar expresion de arriba a abajo con cada constante literal que aparece tras la palabra reservada case. Si se localiza una coincidencia, se ejecutan todas las sentencias por debajo de esa constante hasta:
-
finalizar el bloque switch
-
encontrar una sentencia break;
Opcionalmente se puede insertar una condición por defecto mediante default, cuyas sentencias asociadas se ejecutarían si no se ha encontrada previamente una coincidencia.
Para ilustrar el funcionamiento de la sentencia switch vamos a ver diferentes versiones de un programa con idéntica salida por pantalla, que muestra el númer de días de un mes.
EJERCICIOS
1
#include <iostream>
using namespace std;
int main()
{
double centigrados;
cout << "Introduzca grados Celsius: ";
cin >> centigrados;
const double limiteAbsolutoCelsius = -273.15;
if (centigrados >= limiteAbsolutoCelsius)
{
double kelvin = centigrados + 273.15;
cout << centigrados << " grados Celsius son " << kelvin
<< " grados Kelvin." << endl;
}
else
{
cout << "Error: La temperatura ingresada no es válida." << endl;
}
return 0;
2
// Solicita tres enteros y determina su orden
#include <iostream>
using namespace std;
int main()
{
int x, y, z;
cout << "Introduce tres enteros separados por espacios: ";
cin >> x >> y >> z;
cout << "El orden de menor a mayor es: ";
if (x < y)
{
if (z < x)
cout << z << ", " << x << ", " << y << endl;
else if (z < y)
cout << x << ", " << z << ", " << y << endl;
else
cout << x << ", " << y << ", " << z << endl;
}
else
{
if (z < y)
cout << z << ", " << y << ", " << x << endl;
else if (z < x)
cout << y << ", " << z << ", " << x << endl;
else
cout << y << ", " << x << ", " << z << endl;
}
}
3
// Ejemplo que controla el rango permitido de valores de dos enteros
#include <iostream>
using namespace std;
int main()
{
int x, y;
cout << "Introduce dos números enteros positivos o 0. "
<< "Ambos no pueden valer simultáneamente 0.\n";
cout << "Introduce el primer número: ";
cin >> x;
cout << "Introduce el segundo número: ";
cin >> y;
if (x < 0 || y < 0)
cout << "Error. Los números introducidos no son ambos positivos.\n";
else if (x == 0 && y == 0)
cout << "Error. Los dos números son 0.\n";
else
cout << "Los números introducidos son validos.\n";