viernes, 13 de mayo de 2022

7 - Estructuras condicionales simples y compuestas

No todos los problemas pueden resolverse empleando estructuras secuenciales. Cuando hay que tomar una decisiĆ³n aparecen las estructuras condicionales.



En nuestra vida diaria se nos presentan situaciones donde debemos decidir.
ĀæElijo la carrera A o la carrera B?
ĀæMe pongo este pantalĆ³n?
Para ir al trabajo, Āæelijo el camino A o el camino B?
Al cursar una carrera, Āæelijo el turno maƱana, tarde o noche?

Por supuesto que en un problema se combinan estructuras secuenciales y condicionales.

Estructura condicional simple.

Cuando se presenta la elecciĆ³n tenemos la opciĆ³n de realizar una actividad o no realizar ninguna.
RepresentaciĆ³n grĆ”fica:
estructura condicional simple

Podemos observar: El rombo representa la condiciĆ³n. Hay dos opciones que se pueden tomar. Si la condiciĆ³n da verdadera se sigue el camino del verdadero, o sea el de la derecha, si la condiciĆ³n da falsa se sigue el camino de la izquierda.
Se trata de una estructura CONDICIONAL SIMPLE porque por el camino del verdadero hay actividades y por el camino del falso no hay actividades.
Por el camino del verdadero pueden existir varias operaciones, entradas y salidas, inclusive ya veremos que puede haber otras estructuras condicionales.

Problema:

Ingresar el sueldo de una persona, si supera los 3000 pesos mostrar un mensaje en pantalla indicando que debe abonar impuestos.

Diagrama de flujo:

problema estructura condicional simple

Podemos observar lo siguiente: Siempre se hace la carga del sueldo, pero si el sueldo que ingresamos supera 3000 pesos se mostrarĆ” por pantalla el mensaje "Esta persona debe abonar impuestos", en caso que la persona cobre 3000 o menos no aparece nada por pantalla.

Programa:

Ver video
import java.util.Scanner;

public class EstructuraCondicionalSimple1 {
    public static void main(String[] ar) {
    	Scanner teclado=new Scanner(System.in);
    	float sueldo;
    	System.out.print("Ingrese el sueldo:");
    	sueldo=teclado.nextFloat();
    	if (sueldo>3000) {
    	    System.out.println("Esta persona debe abonar impuestos");
    	}
    }
}

La palabra clave "if" indica que estamos en presencia de una estructura condicional; seguidamente disponemos la condiciĆ³n entre parĆ©ntesis. Por Ćŗltimo encerrada entre llaves las instrucciones de la rama del verdadero.

Es necesario que las instrucciones a ejecutar en caso que la condiciĆ³n sea verdadera estĆ©n encerradas entre llaves { }, con ellas marcamos el comienzo y el fin del bloque del verdadero.

Ejecutando el programa e ingresamos un sueldo superior a 3000 pesos. Podemos observar como aparece en pantalla el mensaje "Esta persona debe abonar impuestos", ya que la condiciĆ³n del if es verdadera.
Volvamos a ejecutar el programa y carguemos un sueldo menor o igual a 3000 pesos. No debe aparecer mensaje en pantalla.

Estructura condicional compuesta.

Cuando se presenta la elecciĆ³n tenemos la opciĆ³n de realizar una actividad u otra. Es decir tenemos actividades por el verdadero y por el falso de la condiciĆ³n. Lo mĆ”s importante que hay que tener en cuenta que se realizan las actividades de la rama del verdadero o las del falso, NUNCA se realizan las actividades de las dos ramas.

RepresentaciĆ³n grĆ”fica:
estructura condicional compuesta

En una estructura condicional compuesta tenemos entradas, salidas, operaciones, tanto por la rama del verdadero como por la rama del falso.

Problema:

Realizar un programa que solicite ingresar dos nĆŗmeros distintos y muestre por pantalla el mayor de ellos.

Diagrama de flujo:

problema estructura condicional compuesta

Se hace la entrada de num1 y num2 por teclado. Para saber cual variable tiene un valor mayor preguntamos si el contenido de num1 es mayor (>) que el contenido de num2, si la respuesta es verdadera vamos por la rama de la derecha e imprimimos num1, en caso que la condiciĆ³n sea falsa vamos por la rama de la izquierda (Falsa) e imprimimos num2.
Como podemos observar nunca se imprimen num1 y num2 simultƔneamente.

Estamos en presencia de una ESTRUCTURA CONDICIONAL COMPUESTA ya que tenemos actividades por la rama del verdadero y del falso.

Programa:

Ver video
import java.util.Scanner;

public class EstructuraCondicionalCompuesta1 {
    public static void main(String[] ar) {
    	Scanner teclado=new Scanner(System.in);
    	int num1,num2;
    	System.out.print("Ingrese primer valor:");
    	num1=teclado.nextInt();
    	System.out.print("Ingrese segundo valor:");
    	num2=teclado.nextInt();
    	if (num1>num2) {
    		System.out.print(num1);
    	} else {
    		System.out.print(num2);
    	}
    }
}

Cotejemos el diagrama de flujo y la codificaciĆ³n y observemos que el primer bloque de llaves despuĆ©s del if representa la rama del verdadero y el segundo bloque de llaves representa la rama del falso.

Compilemos el programa, si hubo errores sintƔcticos corrijamos y carguemos dos valores, como por ejemplo:

Ingrese el primer valor: 10
Ingrese el segundo valor: 4
10

Si ingresamos los valores 10 y 4 la condiciĆ³n del if retorna verdadero y ejecuta el primer bloque.
Un programa se controla y corrige probando todos sus posibles resultados.
Ejecutemos nuevamente el programa e ingresemos:

Ingrese el primer valor: 10
Ingrese el segundo valor: 54
54

Cuando a un programa le corregimos todos los errores sintĆ”cticos y lĆ³gicos ha terminado nuestra tarea y podemos entregar el mismo al USUARIO que nos lo solicitĆ³.

Operadores

En una condiciĆ³n deben disponerse Ćŗnicamente variables, valores constantes y operadores relacionales.

>Operadores Relacionales:

>  (mayor)	
<  (menor)
>= (mayor o igual)
<= (menor o igual)
== (igual)
!= (distinto)

Operadores MatemƔticos

+ (mƔs)
- (menos)
* (producto)
/ (divisiĆ³n)
% (resto de una divisiĆ³n)  Ej.:  x=13%5;  {se guarda 3}

Hay que tener en cuenta que al disponer una condiciĆ³n debemos seleccionar que operador relacional se adapta a la pregunta.

Ejemplos:

	Se ingresa un nĆŗmero multiplicarlo por 10 si es distinto a 0.   (!=)
	Se ingresan dos nĆŗmeros mostrar una advertencia si son iguales.  (==)

Los problemas que se pueden presentar son infinitos y la correcta elecciĆ³n del operador sĆ³lo se alcanza con la prĆ”ctica intensiva en la resoluciĆ³n de problemas.

Problemas propuestos

  1. Realizar un programa que lea por teclado dos nĆŗmeros, si el primero es mayor al segundo informar su suma y diferencia, en caso contrario informar el producto y la divisiĆ³n del primero respecto al segundo.Ver video
  2. Se ingresan tres notas de un alumno, si el promedio es mayor o igual a siete mostrar un mensaje "Promocionado".Ver video
  3. Se ingresa por teclado un nĆŗmero positivo de uno o dos dĆ­gitos (1..99) mostrar un mensaje indicando si el nĆŗmero tiene uno o dos dĆ­gitos.
    (Tener en cuenta que condiciĆ³n debe cumplirse para tener dos dĆ­gitos, un nĆŗmero entero)Ver video
import java.util.Scanner;

public class EstructuraCondicionalCompuesta2 {
    public static void main(String[] ar) {
    	Scanner teclado=new Scanner(System.in);
    	int num1,num2;
    	System.out.print("Ingrese primer valor:");
    	num1=teclado.nextInt();
    	System.out.print("Ingrese segundo valor:");
    	num2=teclado.nextInt();
    	if (num1>num2) {
    	    int suma,diferencia;
    	    suma=num1 + num2;
    	    diferencia=num1 - num2;
    	    System.out.print("La suma de los dos valores es:");
    	    System.out.println(suma);
    	    System.out.print("La diferencia de los dos valores es:");
    	    System.out.println(diferencia);
    	} else {
    	    int producto,division;
    	    producto=num1 * num2;
    	    division=num1 / num2;
    	    System.out.print("El producto de los dos valores es:");
    	    System.out.println(producto);
    	    System.out.print("La divisiĆ³n de los dos valores es:");
    	    System.out.println(division);    		
    	}
    }
}



import java.util.Scanner;

public class EstructuraCondicionalSimple2 {
    public static void main(String[] ar) {
    	Scanner teclado=new Scanner(System.in);
    	int nota1,nota2,nota3;
    	System.out.print("Ingrese primer nota:");
    	nota1=teclado.nextInt();
    	System.out.print("Ingrese segunda nota:");
    	nota2=teclado.nextInt();
    	System.out.print("Ingrese tercer nota:");
    	nota3=teclado.nextInt();
        int promedio;
        promedio=(nota1 + nota2 + nota3) / 3;
    	if (promedio>=7) {
    	    System.out.print("Promocionado");
    	}
    }
}



import java.util.Scanner;

public class EstructuraCondicionalCompuesta3 {
    public static void main(String[] ar) {
    	Scanner teclado=new Scanner(System.in);
    	int num;
    	System.out.print("Ingrese un valor entero de 1 o 2 dĆ­gitos:");
    	num=teclado.nextInt();
    	if (num<10) {
    	    System.out.print("Tiene un dĆ­gito");
    	} else {
    	    System.out.print("Tiene dos dĆ­gitos");
    	}
    }
}

No hay comentarios:

Publicar un comentario