Make your own free website on Tripod.com

Condiciones, Expresiones lógicas y Estructuras de control

 

Encadenamiento de sentencias

Las sentencias “if (condición) s1; else s2;” se pueden encadenar. De nuevo, aquí debe llevar cuidado quien venga de Pascal, porque en C sí se debe poner un punto y coma antes de “else”.:

/*-------------------------*/

/*  Ejemplo                */

/*                         */

/*  “if..else” encadenados */

/*                         */

/*-------------------------*/

 

#include <iostream>

using namespace std;

main()

{

int numero;

 

cout <<"Escriba un número: ";

cin >> numero;

 

if (numero < 0)

cout << "El número es negativo.";

else if (numero == 0)

cout << "El número es cero.";

else

cout << "El número es positivo.";

return 0;

}

/* ------------------------*/

El If anidado

 

No ha límite respecto a cuántas sentencias de If puede haber dentro de un If. La única limitación es la claridad de lectura. Cuando se coloca un If dentro de otro If,  tenemos entonces una estructura de control anidada o un If anidado.  A continuación un ejemplo:

 

Algoritmo

Flujograma (Lógica positiva)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C++

 

#include <iostream>

using namespace std;

 

int main ()

{

      int temperatura   //Temperatura fuera

               

      // Leer la temperatura del ambiente

    cout << “Entra la temperatura de afuera:  “ <<endl;

      cin >>temperatura;

     cout << “La temperatura actual es “ <<temperatura << endl;

 

// Imprimir actividad

 

     cout << “La actividad recomendada es  “;

     if (temperatura > 85)

          cout << natacion ” << endl;

   else if (temperatura > 70)

   cout << “tennis ” <<endl;

     else if (temperatura > 32)

        cout << “golf ” << endl;

            else if (temperatura > 0)

                             cout << “squi” << endl;

    else

        cout << “danza” <<endl;

    return 0;

}

#include <iostream>

using namespace std;

 

int main ()

{

      int mes; 

      int dia;

 

    cout << “Entra el numero del mes:  “ <<endl;

      cin >>mes;

     if (mes == 1)

         cout << “Enero”;

    else

    if (mes == 2)

               cout << “Febrero”;

          else

                if (mes == 3)

                    cout << “Marzo”;

                else

                    if (mes == 4)

                       :

                       :

                     if (mes == 11)

                       cout << “Noviembre”;

                     else

                          cout <<Diciembre”;

    return 0;

}

 

En el flujograma del problema anterior discurre hacia la izquierda (Lógica positiva). También puede hacerse que las condiciones discurran hacia la derecha (Lógica negativa)

 

Algoritmo

Flujograma (Lógica negativa)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


El mismo algoritmo y flujograma anterior de diferente forma

Algoritmo

Flujograma (Lógica negativa)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Función IF anidada en Microsoft Excel

 

La mayoría de las aplicaciones comerciales utilizan la estructura lógica decisional. La misma puede tener una o varias instrucciones IF anidadas.

 

La sintaxis de una expresión decisional simple consta, como en cualquier lenguaje de programación, de tres partes:

 

 

Cada parte se separa con una coma (,) sin espacios entre la misma. Los datos alfanuméricos deben ir entre comillas.

 

=IF(D4>2000,”Referir Oficina Gerente”,”OK”)

o

=IF(G3<B10,(B6*.012)+124,115)

 

Registro de notas

 
Entra los siguientes datos en Excel (En E3 y F3 no se entran datos, se escriben las fórmulas del promedio y del IF respectivamente):
 
Curva

 

> 89
A
De 80 a 89
B
De 70 a 79
C
De 60 a69
D

 

< 60

F

 
 
 
Fórmula del promedio

La fórmula del promedio puede escribirse de distintas formas:

§         =AVERAGE(D7:G7)

§         =SUM(D7:G7)/COUNT(D7:G7)

§         =(D7+E7+F7+G7)/4

§         =ROUND(AVERAGE(D7:G7),0)

Fórmula del promedio eliminando la nota más baja

Suponiendo que tienes cuatro notas tal como aparece en el modelo siguiente, puedes adoptar una de estas dos fórmulas, entre muchas otras:

=(SUM(D7:H7)-MIN(D7:H7))/COUNT(D7:G7)

o

=(SUM(D7:H7)-MIN(D7:H7))/3

 
Fórmula de las Notas

También la fórmula de las notas puede escribirse de distintas formas. En esta lección usaremos la formula del IF anidado. Suponiendo que el Promedio del primer estudiante se encuentra en la celda E3, y la Nota en la celda F3, escribirías en F3 la siguiente fórmula:

=IF(E3>89,"A",IF(E3 >79,”B”,IF(E3 >69,"C",IF(E3 >59,"D","F"))))

 

Sustituye las letras “A”, “B”... por palabras o frases (siempre entre comillas) como: “Aprobado”, “Sobresaliente”, “Estás en probatoria”...

 

Copia las formulas y pégalas en las celdas correspondientes del resto de estudiantes.

 

//************************************************************

// Este programa saca el promedio de un estudiante

//basado en tres pruebas y el status de aprobado o suspendido

//*************************************************************

#include <iostream>

#include <iomanip>              // Para el setprecisiton()

 

using namespace std;

 

int main ()

{

                float promedio;                      //Promedio de las tres pruebas

                long numEstudiante;             //Número de identifiación del estudiante

                int test1;

                int test2;

                int test3;

                bool dataOK;                         //True si los datos son correctos

 

                cout << fixed << showpoint; //Calibra el formato de los decimales

 

                // Entrada de datos

 

                cout << "Entra el ID del estudiante y la puntuacion de tres pruebas:"

                                 <<endl;

                cin >>numEstudiante >> test1 >> test2 >> test3;

                cout <<"Numero del estudiante: " <<numEstudiante <<" Puntuaciones: "

                                 << test1 << ", " <<test2 << ", " <<test3 <<endl;

 

                // Probar los datos

 

                if (test1 <0 || test2 <0 ||test3 <0)

                                                dataOK = false;

                else dataOK = true;

 

                if (dataOK)

                {

                                // Calcular el promedio

 

                                promedio = float (test1 + test2 + test3) / 3.0;

 

                                // Imprimir mensaje

 

                                cout <<"El promedio es "

                                                 << setprecision(2) <<promedio<<"--";

                                if (promedio >=60.0)

                                {

                                                cout <<"Aprobado";                              // El estudiante pasa la prueba

                                                if (promedio <=70.0)

                                                                cout << " pero con poco margen";

                                                                cout << '.' << endl;

                                }

                                else

                                                cout << "Suspendido." <<endl;            // El estudiante no pasa la prueba

                }

                else

                                cout << "Datos invalidos: Puntuaciones menores de cero." <<endl;

 

                return 0;

}