top of page

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:

​

Captura de pantalla (23).png
Captura de pantalla (24).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.

if_else_if.jpg

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

 

bottom of page