|
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"
___________________________________________________________________________________________
-
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.
-
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.
-
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.
-
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.
-
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.
-
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?
-
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.
-
Calcular la tangente de un ángulo,
considerando que se leen el valor del seno y del coseno.
-
Calcular la cotangente del mismo ángulo.
-
Dados dos números enteros, determinar si
un número es divisor del otro.
-
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.
-
Determinar e imprimir si un número
entero X es positivo, negativo o cero.
-
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.
-
Calcular las raíces reales, de ser
posible, de una ecuación de segundo grado: (ax² + bx + c = 0)
-
Dados los datos A, B y C, que representan
números enteros diferentes, imprimir estos números en forma
descendente.
-
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).
-
Determinar e imprimir si un número
entero X es par, impar o nulo.
-
Leer por teclado tres números enteros y
emitir un mensaje que indique si están o no en orden numérico.
-
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".
-
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.
-
Hallar la solución de una ecuación de
la forma: ax + b = 0.
-
Calcular e imprimir el área de un círculo,
rectángulo o triángulo. Utilice una escalera if-else-if.
-
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%.
-
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.
-
Leer por teclado tres números diferentes
y determinar cuál es el número mayor.
-
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.
-
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 |
| 0 |
para cualquier otro
valor de NUM |

|