sábado, 25 de mayo de 2013

Estructuras condicionales anidadas


Decimos que una estructura condicional es anidada cuando por la rama del verdadero o el falso de una estructura condicional hay otra estructura condicional.

DIAGRAMA:


El diagrama de flujo que se presenta contiene dos estructuras condicionales. La principal se trata de una estructura condicional compuesta y la segunda es una estructura condicional simple y está contenida por la rama del falso de la primer estructura. Es común que se presenten estructuras condicionales anidadas aún más complejas.

Problema:

Confeccionar un programa que pida por teclado tres notas de un alumno, calcule el promedio e imprima alguno de estos mensajes:

Si el promedio es >=7 mostrar "Promocionado".
Si el promedio es >=4 y <7 mostrar "Regular".
Si el promedio es <4 mostrar "Reprobado".

Diagrama de flujo:

https://www.dropbox.com/s/h25a9yogflvycv1/GUIA3%20DIAGRAMA%202.pptx

Analicemos el siguiente diagrama. Se ingresan tres valores por teclado que representan las notas de un alumno, se obtiene el promedio sumando los tres valores y dividiendo por 3 dicho resultado (Tener en cuenta que si el resultado es un valor real solo se almacena la parte entera). Primeramente preguntamos si el promedio es superior o igual a 7, en caso afirmativo va por
la rama del verdadero de la estructura condicional mostramos un mensaje que indica "Promocionado" (con comillas indicamos un texto que debe imprimirse en pantalla). En caso que la condición nos de falso, por la rama del falso aparece otra estructura
condicional, porque todavía debemos averiguar si el promedio del alumno es superior o igual a cuatro o inferior a cuatro. Estamos en presencia de dos estructuras condicionales compuestas.

Programa:

import java.util.Scanner;
   public class EstructuraCondicionalAnidada1 {
   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=(nota1 + nota2 + nota3) / 3;
        if (promedio>=7) {
   System.out.print("Promocionado");
       } else {
       if (promedio>=4) {
   System.out.print("Regular");
       } else {
   System.out.print("Reprobado");
          }
       }
    }
}

Codifiquemos y ejecutemos este programa. Al correr el programa deberá solicitar por Bteclado la carga de tres notas y mostrarnos un mensaje según el promedio de las mismas. Podemos definir un conjunto de variables del mismo tipo en una misma línea:

            int nota1,nota2,nota3;

Esto no es obligatorio pero a veces, por estar relacionadas, conviene.A la codificación del if anidado podemos observarla por el else del primer if. Para no tener problemas (olvidarnos) con las llaves de apertura y cerrado podemos ver la siguiente regla:
Cada vértice representa una llave de apertura y una de cierre:

DIAGRAMA:
https://www.dropbox.com/s/2jyktfszfdirz3n/GUIA3%20DIAGRAMA%203.pptx

Descargar pdf.
https://www.dropbox.com/s/017vctyphoxji5d/Gu%C3%ADa3%282%29.pdf

domingo, 19 de mayo de 2013

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: 
https://www.dropbox.com/s/cbw4wekooeepkx2/lenguaje%20de%20GRAFICO1.pptx

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: 
https://www.dropbox.com/s/yfejvcrwj3ca2um/lenguaje%20de%20flujo2.pptx

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: 

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: 
https://www.dropbox.com/s/by03f3cj3yoy80j/lenguaje%20de%20GRAFICO2.pptx
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: 
https://www.dropbox.com/s/wo2c0bpwrby6t1l/LENGUAJE%20DE%20FLUJO3.pptx
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: 

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.

Descargar pdf.
https://www.dropbox.com/s/atg9thete7m0w27/Gu%C3%ADa2%282%29.pdf

Estructura de programación secuencial

Cuando en un problema sólo participan operaciones, entradas y salidas se la denomina una estructura secuencial. Los problemas diagramados y codificados previamente emplean solo estructuras secuenciales. La programación requiere una práctica ininterrumpida de diagramación y codificación de problemas.

Problema:
Realizar la carga de dos números enteros por teclado e imprimir su suma y su producto.

Diagrama de flujo:
Tenemos dos entradas num1 y num2 (recordar cuáles son los nombres de variables correctas), dos operaciones: realización de la suma y del producto de los valores ingresados y dos salidas, que son los resultados de la suma y el producto de los valores ingresados. En el símbolo de impresión podemos indicar una o más salidas, eso queda a criterio del programador, lo mismo para indicar las entradas por teclado.

Programa:

import java.util.Scanner;
public class SumaProductoNumeros {
public static void main(String[] ar) {
Scanner teclado=new Scanner(System.in);
     int num1,num2,suma,producto;
     System.out.print("Ingrese primer valor:");
           num1=teclado.nextInt();
     System.out.print("Ingrese segundo valor");
           num2=teclado.nextInt();
           suma=num1 + num2;
           producto=num1 * num2;
     System.out.print("La suma de los dos valores es:");
     System.out.println(suma);
     System.out.print("El producto de los dos valores es:");
     System.out.println(producto);
   }
}


Recordemos que tenemos que seguir todos los pasos vistos para la creación de un proyecto, su clase, definición de la función main y la codificación del diagrama de flujo. Algunas cosas nuevas que podemos notar:
• Podemos definir varias variables en la misma línea:
• int num1,num2,suma,producto;
• Si llamamos a la función println en lugar de print, la impresión siguiente se efectuará en la próxima línea:
• System.out.println(suma);

Descargar pdf.
https://dl-web.dropbox.com/get/Gu%C3%ADa1%282%29.pdf?w=AAB4LkqpNvsnewxl3YqjUVL3_CIwBUoPUCyhm_Z3BnvnHg