Coruniversitaria, Corporación Universitaria de Ibagué
Facultad de Ingeniería de Sistemas

Estructuras de Programación

Inicio

Generalidades

Ejercicios

Talleres

Proyecto

 

 Condicionales

 Las técnicas básicas de solución de problemas en computación requieren el uso de las estructuras de control selectivas o condicionales, para elegir entre diferentes acciones alternativas. Es aquí donde radica el mayor potencial inteligente de un programa computacional. En estas estructuras es fundamental el buen manejo de las expresiones y los operadores lógicos y relacionales.

Las estructuras condicionales o selectivas que se utilizan para la toma de decisiones lógicas se pueden clasificar así:

  - Estructura selectiva simple      (if )
  - Estructura selectiva doble        (if / else)
  - Estructura selectiva múltiple    (if / else / if...)
  - Estructura selectiva múltiple compuesta por casos   (switch  case)

Todas estas estructuras se pueden combinar.

--------------------------------------------------------------------------------------------------------------------------     

  Programación en lenguaje JAVA.  Instrucciones SELECTIVAS o CONDICIONALES:

--------------------------------------------------------------------------------------------------------------------------  

/** Ejemplo de condicional doble (if-else)
* Operacion_imp.java
*
* @author viejo Gus
* @version 1.00 2008/10/9
*/

class Operacion{
     private int resp;
     public void set_resp(){
          resp=Integer.parseInt(JOptionPane.showInputDialog("Cual es el resultado de (1+2*3-4) ? "));
     }
     public void get_resp(){
          if (this.resp == 3)
               JOptionPane.showMessageDialog(null,"Todo bien, todo bien!...");
          else
               JOptionPane.showMessageDialog(null,"Ojo! usted tiene deudas con Pitágoras...");
     }
}
public class Operacion_imp {

     public static void main(String arg[]){
              Operacion Op = new Operacion();
              Op.set_resp();
              Op.get_resp();
     }
}

_____________________________________

// Un programa para determinar el mayor y el menor entre tres numeros
import javax.swing.JOptionPane; // Importa la clase JOptionPane
/**
*
* @author Viejo Gus
*/
public class TresNum {

   public static void main(String arg []){
     String primernum, segundonum, tercernum;
     float num1,num2,num3,may,men;
     primernum=JOptionPane.showInputDialog("Digite el primer numero: ");
     segundonum=JOptionPane.showInputDialog("Digite el segundo: ");
     tercernum=JOptionPane.showInputDialog("Digite el tercero : ");
     // Convierte los numeros del tipo String a tipo float
     num1 = Float.parseFloat(primernum);
     num2 = Float.parseFloat(segundonum);
     num3 = Float.parseFloat(tercernum);
     // Determina el mayor
     if (num1 > num2)
        may = num1;
     else
        may = num2;
     may = (may > num3)? may : num3;
     // Determina el menor
     if (num1 < num2)
        men = num1;
     else
        men = num2;
     men = (men < num3)? men : num3;

     JOptionPane.showMessageDialog(null,"El numero mayor es "+may+"\nEl numero menor es "+men, "Resultados ",JOptionPane.PLAIN_MESSAGE);
     System.exit(0); // Terminar el programa con la ventana
   } // Fin del metodo main
}

_____________________________________

/** Ejemplo de condicional switch/case
* @Programa: LeydeOHM.java
*
* @author : vGus
* @version 1.00 2009/10/5
*/
import javax.swing.*;

class Ohm{
private double i,r,v;
public void set_voltaje(){
v=Double.parseDouble(JOptionPane.showInputDialog("Voltaje (Voltios) ?"));
}
public void set_intensidad(){
i=Double.parseDouble(JOptionPane.showInputDialog("Intensidad (Amperios) ?"));
}
public void set_resistencia(){
r=Double.parseDouble(JOptionPane.showInputDialog("Resistencia (Ohmios) ?"));
}
public double get_intensidad(){
return i;
}
public double get_resistencia(){
return r;
}
public double get_voltaje(){
return v;
}
public void calcularvoltaje(){
v=i*r;
}
}

public class LeydeOHM {

public static void main(String arg[]){
String opcion; char opc;
Ohm LeyO = new Ohm();
opcion=JOptionPane.showInputDialog(null,"MENU\n\n<V> oltaje\n<I> ntensidad\n<R> esistencia\n\nSu opción?","Formas de la ley de OHM",JOptionPane.INFORMATION_MESSAGE);
opc = opcion.charAt(0);
switch(opc){
case 'v' :
case 'V' : LeyO.set_intensidad();
LeyO.set_resistencia();
LeyO.calcularvoltaje();
JOptionPane.showMessageDialog(null,"Voltaje = "+LeyO.get_voltaje(),"Voltios",JOptionPane.INFORMATION_MESSAGE);
break;
case 'i' :
case 'I' : break;
case 'r' :
case 'R' : break;
default: JOptionPane.showMessageDialog(null,"ERROR... opción no es válida!!!");
}
}
}
// Implementar los métodos para calcular Intensidad y Resistencia. Resolver este mismo problema cambiando la instrucción switch/case por un condicional if-else-if

--------------------------------------------------------------------------------------------------------------------------

 

  • Codificar los siguientes programas de computación en Lenguaje C/C++ aplicando estructuras SELECTIVAS o CONDICIONALES:
// Ejemplo de condicional doble (if-else)
#include "iostream.h"
#include "conio.h"

main(){
  int res;
  clrscr();
  cout << "Cual es el resultado de (1+2*3-4) ? ";
  cin >> res;
  if (res == 3)
     cout << "Todo bien, todo bien!...";
  else
     cout << "Ojo! usted tiene deudas con Baldor...";
  getch();
}

<> Leer el nombre y la nota definitiva de un alumno de programación y visualizar un mensaje de acuerdo con una toma de decisiones.

#include "iostream.h"
#include "conio.h"
#include "stdio.h"
#define cls clrscr()
char nom[20]; // declaración de una variable global de tipo cadena

void main()
{
  float nota_def; // declaracion de una variable local de tipo real
  cls; // limpiar pantalla;
  cout << "Por favor, digite el nombre del alumno -> ";
  gets(nom); // entrada por teclado de una cadena;
  cout << "Su nota definitiva en programación es -> ";
  cin >> nota_def;
  cls;
  cout << nom << ", obtuviste un " << nota_def << endl;
// Este es un ejemplo de condicional doble
if (nota_def >= 0 && nota_def <= 5.0){
  // los siguientes son condicionales anidados
  if (nota_def >= 3.0)  // Este es un condicional simple
     cout << "Vas por el camino correcto..." << endl;

  // ahora otro condicional doble
  if (nota_def >= 3.0)
     cout << "Aprobaste la asignatura!," << endl;
  else
     cout << "Pilas!!! te volviste... antiguo!..." << endl;

  // a continuación, un condicional múltiple
  if (nota_def < 3.0)
    cout << "¿La materia es interesante y quieres volver a verla?"<<     endl;
  else
  if (nota_def >= 3.0 && nota_def < 3.5)
    cout << "pero debes mejorar." << endl;
  else if (nota_def >= 3.5 && nota_def < 4.0)
           cout << "Bien!" << endl;
        else if (nota_def >= 4.0 && nota_def < 4.5)
                  cout << "Muy Bien!!" << endl;
               else 
                  cout << "FELICITACIONES!!!" << endl;}
else
    cout << "Tu nota no es válida!!!";
getch(); // detiene la ejecucion del programa
} // Fin

  • Escribir un programa en Pascal para leer un número entero x. Determinar si es positivo o negativo.

program NUMERO;
uses crt;
var     
   x              :  integer;

BEGIN    
   clrscr;
   Write('Por favor, digite un número entero -> '); 
   ReadLn(x);       
   if (x > 0)  then 
      begin 

          WriteLn(x, ' es positivo...');
          WriteLn('en esta ocasión ',x,' es positivo');     

      end

   else

     begin 

         WriteLn(x, ' es negativo...');    WriteLn('o bien, es cero.');
     end

 ReadLn;
END.       

  • Leer su estado civil en una variable caracter y visualizar una cadena con el nombre del estado civil correspondiente.

#include "iostream.h"
#include "conio.h"
#include "stdio.h"
#define cls clrscr( )

void main( )
{
  char est_civil; // declaracion de una variable local de tipo caracter
  cls; // limpiar pantalla;
  cout << "Por favor, digite su estado civil (s,c,d,v,u...) -> ";
  cin >> est_civil;
  cls;
  cout << "Tu estado civil es... ";
  switch(est_civil){
     case 's':
     case 'S': cout << "SOLTERO!";break;
     case 'c':
     case 'C': cout << "CASADO!";break;
     case 'd':
     case 'D': cout << "DIVORCIADO!";break;
     case 'u':
     case 'U': cout << "UNION LIBRE!";break;
     case 'v':
     case 'V': cout << "VIUDO!";break;
     case 'i':
     case 'I': cout << "Infeliz?";break;   //        :-)
             // break: rompe la estructura switch
   default : cout <<endl <<"ERROR!!! estado civil NO existe!";
  } // fin del switch
getch();
}

  • Ejemplo en Pascal utilizando la sentencia CASE:

program CASO;
uses crt;
var   
   op           :  char;
   valor       :   real;

BEGIN    
   clrscr;   valor := 7;
   Write('Introduzca un operador (+,-,*,/) -> ');  ReadLn(op);

   case  op  of
            '+' : valor := valor + 5; 
            '-'  : valor := valor - 5;
            '*' : valor  := valor * 5;
            '/'  : valor  := valor / 5;

   end;

   writeLn('Resultado = ',valor);
   ReadLn;  
END.  

___________________________________________________________________________________________  

 Ejercicios "amistosos"

___________________________________________________________________________________________

  1. Calcular el valor del peaje a pagar por un vehículo en la vía Ibagué - Alvarado. Los automóviles pagan un valor de $3500; los camiones pagan $5000; los buses pagan de acuerdo a su capacidad de pasajeros y se cobra $200 por pasajero. El tiquete de cobro del peaje a generar debe contener: Nombre del tipo de vehículo, Nro. de pasajeros y valor del peaje.

  2. En cierto país llamado "IVALANDIA" el impuesto que se debe pagar por los artículos se calcula mediante los siguientes criterios:  Los primeros $100 no causan impuesto; los siguientes $100 tienen el 30% de impuesto y el resto el 40% de impuesto, pero si el costo del producto es mayor a $1000, entonces no se cobra el 40%, sino el 50%. Determinar y visualizar en la pantalla: a) El nombre y costo básico del artículo,  b) valor del impuesto, y  c) valor total a pagar.

  3. En la Universidad de Ibagué, los estudiantes de Programación tienen que presentar 6 pruebas de conocimiento para evaluar la asignatura. Una prueba se gana con una nota mínima de 3.0.  Determinar si un estudiante aprobó o no la asignatura.  El alumno aprueba la asignatura si cumple con cualquiera de las siguientes condiciones:  a) Si tiene mínimo 3 pruebas con nota superior a 3.5    b) Si el promedio de las notas de las 6 pruebas es mínimo 3.0     c) Si el promedio de las notas de las pruebas perdidas es superior a 2.5.

  4. Leer la fecha de nacimiento de una persona (día, mes y año) y calcular su edad actual. Determinar si  es mayor de edad.

  5. La cooperativa de ahorro y crédito "COOPRESTA" establece las siguientes condiciones para determinar el valor máximo a prestar por cada línea de crédito:  a) Para las líneas de crédito de Educación, Vacaciones y Calamidad doméstica se presta un máximo de 3 veces el valor del ahorro del socio.  b) Para la línea de Vehículo se presta un máximo de 5 veces el valor del ahorro del socio.  c) Para la línea de Vivienda se presta un máximo de 7 veces el valor del ahorro del socio.   Calcular el valor máximo a prestarle a un socio.

  6. Un taxista trabaja en la empresa "PengüiTAXI" en la cual le asignan 3 rutas: Ruta A con un valor de $3000, Ruta B con valor $5000 y Ruta C con valor $7000.  Además, debe cobrar un recargo de $500 si está trabajando entre las 20:00 y las 05:00.  Si es festivo, hay un recargo de $100.  ¿Cuánto debe pagar un usuario que tome el servicio?

  7. Determinar el precio del pasaje de ida y vuelta en ferrocarril, conociendo la distancia a recorrer y sabiendo que si el número de días de estancia en la ciudad de destino es superior a 7 y la distancia superior a 800 Km, el tiquete tiene una reducción del 30%. Se debe leer el precio por kilómetro.

  8. Calcular la tangente de un ángulo, considerando que se leen el valor del seno y del coseno.

  9. Calcular la cotangente del mismo ángulo.

  10. Dados dos números enteros, determinar si un número es divisor del otro.

  11. Dados tres números enteros positivos, que representan las longitudes de los lados de un probable triángulo, determinar si los datos corresponden a un triángulo. En caso de que sí correspondan, escriba si el triángulo es equilátero.

  12. Determinar e imprimir si un número entero X es positivo, negativo o cero.

  13. Dados como datos los valores enteros P y Q, determine si los mismos satisfacen la siguiente expresión: P^4 + Q² - 2P < 977. En caso afirmativo debe imprimir los valores de P y Q.

  14. Calcular las raíces reales, de ser posible, de una ecuación de segundo grado: (ax² + bx + c = 0)

  15. Dados los datos A, B y C, que representan números enteros diferentes, imprimir estos números en forma descendente.

  16. Determinar si un año es bisiesto. Un año es bisiesto si es múltiplo de 4 (por ejemplo, 1984). Los años múltiplos de 100 no son bisiestos, salvo si ellos son también múltiplos de 400 (2000 es bisiesto, 1800 no lo es).

  17. Determinar e imprimir si un número entero X es par, impar o nulo.

  18. Leer por teclado tres números enteros y emitir un mensaje que indique si están o no en orden numérico.

  19. Examinar el valor de una variable de coma flotante llamada HORA y visualizar distintos mensajes a diferentes horas del día: a) "Buenos dias", b) "Buenas tardes", c) "Buenas noches".

  20. Examinar el valor de una variable de coma flotante llamada TEMP y visualizar uno de los siguientes mensajes: a) "Hielo", si el valor de TEMP es menor que 0, b) "Agua", si el valor de TEMP se encuentra entre 0 y 100, c) "Vapor", si el valor de TEMP es mayor que 100.

  21. Hallar la solución de una ecuación de la forma: ax + b = 0.

  22. Calcular e imprimir el área de un círculo, rectángulo o triángulo. Utilice una escalera if-else-if.

  23. En el almacén "Don Pingüino" se realiza descuento en las compras en función del valor total de dichas compras. Si se paga con tarjeta de crédito, el descuento en las compras se disminuye un 5%. Calcular el impuesto del IVA e imprimir el valor a cobrar al cliente en función de las siguientes premisas: a) Valor < $40000: sin descuento, b) Valor comprendido entre $40000 y $80000: descuento del 10%, c) Valor superior a $80000: descuento del 14%.

  24. Leer los tres lados de una figura y determinar si es un triángulo. En caso afirmativo, calcular e imprimir el área según sus lados.

  25. Leer por teclado tres números diferentes y determinar cuál es el número mayor.

  26. El costo de las llamadas internacionales depende de la zona geográfica en la que se encuentre el país destino, y del número de minutos hablados. En la siguiente tabla se presenta el costo por minuto en cada zona, a la cual se le ha asociado un código o clave.

    CLAVE  ZONA  PRECIO
    12 América del Norte 2
    14 América Central 2.2
    17 América del Sur 4.6
    18 Europa 3.7
    22 Asia 6
    25 Africa 6
    27 Oceanía 5

    Escriba un programa para calcular e imprimir el costo total de una llamada.

  27. Dados como datos dos variables de tipo entero, obtener el resultado de la siguiente función:

VAL = 100*V  si NUM=1
100^V  si NUM=2
100/V  si NUM=3
para cualquier otro valor de NUM
 



Inicio | Biografía | Cursos | Para pensar... | Para reflexionar... | Para reir | Enlaces

 
Profesor Gustavo Martínez Villalobos
Email: gustavo.martinez@unibague.edu.co
Facultad de Ingeniería de Sistemas, Coruniversitaria
Ibagué, Tolima, COLOMBIA