Condicionales y Bucles



Ya conocimos en la entrada anterior la sentencia condicional IF simple, ahora la veremos compuesta, es decir veremos que hacer en caso de que la condición del if no se cumpla. La sintaxis es la Sgte:

if (si se cumple esto )
{
realizar estas acciones
}else
{
realizar acciones
}

la sentencia else que va inmediatamente después del if se realizara siempre y cuando el if no se cumpla, es decir, si la condición del if no se cumple automáticamente se realizara el else.

EJ;

int num1 = 3;
int num2 = 8;

if(num1 >=num2)
{
System.out.println("num1 es mayor o igual a num2");
}else //se ejecuta solo si la condicion del if es false.
{
System.out.println("num1 es menor que num2 ");
}

La salida de este pequeño código seria:    num1 es menor que num2

La tercera forma de utilizar el if es atraves de sentencias if -else if.  acá un ejemplo.

int num1 = 10,
int num2 = 15;

if(num1==num2) //si num1 es igual a num2
{
   System.out.println("num1 es igual a num2");
}//fin del if
else if (num1 < num2)  //si num1 es menor a num2
{
  Systemout.println("num1 es menor que num2");
}//fin del primer else if
else if(num1 > num2)  //si num1 es mayor a num2
{
  System.out.println("num1 es mayor que num2");
}

La salida seria la del primer else if, ya que es la única condición que se cumple, hay que hacer notar que cuando se cumple la condición el programa continua después de la ultima llave del ultimo else if. es decir apenas se cumple una condición, se ejecuta lo que este entre {} y después no continua verificando ningún else if mas.


La sentencia switch


Al igual que la sentencia if, switch es una sentencia condicional que evalúa alguna variable.
a diferencia del if el switch evalua un tipo de dato. por ejemplo.


Scanner entrada = new Scanner(System.in);  //instancia de la clase Scanner la cual nis deja ingresar datos en                                                                       la consola
System.out.println(" ingrese un mes :");  //pide datos al usuario

String nombre = entrada.nextLine();   //almacena los datos ingresados en un String

switch (nombre) //revisa el valor de nombre
{
case "enero": //en caso de que nombre sea "enero"
        {
        System.out.println("enero tiene 31 dias");
        }break;
case "febrero": //en caso de que nombre sea febrero
        {
        System.out.println("febrero tiene 28 dias");
        }break;
 default:{
         System.out.println("no ingreso un mes valido")
         }
}//fin del switch

como puedes ver en el encabezado del switch usamos ( ) y dentro le pasamos un sentencia a evaluar. en este caso nombre. *el cuerpo de un switch va delimitador por llaves {}

-Primero se escribe el nombre se la sentencia y le sigen unos parentesis y llaves

switch ( valor_a_comparar) {

} //fin del switch

-en el cuerpo se ponen los denominados case podriamos decir que significa "en caso de"
se compara lo que pongamos a continuacion de case con lo que escribimos en el valos_a_comprar en la declaracion del switch, en este caso comparamos el valor de la variable nombre (que es String) con el String del case. podriamos leer el primer case de la seguiente manera

-En caso de que la variable nombre sea igual a "enero" ejecutar lo siguiente.

-Después del valor del case, se ponen dos puntos :  ¡¡¡no punto y coma!!!

-Entre las llaves van las acciones en caso de que esa comparación sea verdadera.

-inmediatamente después de la llave de cierre } del case debemos poner un break; //esta vez si con punto y coma.  El break hace que la ejecución del switch se termine y deje de comprobar. en caso de no poner el break una vez que la ejecución encuentre un case verdadero, ejecutara todas las acciones de los case siguientes.independiente de si son verdaderos o no. por eso es importante colocar break.

al finalizar los case (aun dentro del switch) se pone la sentencia default: {    }  las acciones dentro de los paréntesis se realizaran en caso de que ningun case se cumpla.

El ciclo for

for Es una sentencia de ciclo, bucle o repeticion, que nos permite iterar un numero determinado de veces sobre algunos elementos especificos. la sintaxis en seudocodigo de for es la siguiente

for(contador ; mientras se cumpla esto; contador++)
{
acciones
}

contador es una variable de control que se utilizara para controlar las veces que iterara el ciclo.
mientras es la condición para que el ciclo se mantenga o se detenga
contador++ vendría a ser el incrementador que le da un nuevo valor a contador por cada iteracion del ciclo.

*Notese que en el encabezado del for las declaraciones están separadas por ; y que el cuerpo del for al igual que las sentencias if y switch esta delimitado por  { }
* el operador de incremente ++ (variable++) le añade 1 a un numero despues de usarlo alguna vez, para añadirle un numero antes de utilizarlo el ++ se le pone antes (++variable)
Ej:

for(int i = 0; i < 5; i++)
{
System.out.println("El valor de i es  ="+ i);
}

primero creamos una variable int i = 0, luego especificamos la condición del ciclo, mientras i sea menor a 5, por cada vuelta sumale 1 a i.

¿cuantas vueltas daría este ciclo?
R: 5.   pese a que especificamos que el ciclo solo se repetirá mientras i sea menor que 5 ( i < 5) recuerden que el i esta inicializado como 0, así que los valores de i son.
//esta seria la salida del código
El valor de i es  = 0
El valor de i es  = 1
El valor de i es  = 2
El valor de i es  = 3
El valor de i es  = 4

cuando intenta evaluar nuevamente el i, la condición deja de cumplirse ya que no seria menor a 4. por ende se sale del ciclo y continua el código normalmente.

ahora utilizaremos  for para sumar el valor de las i

class Suma{

public static void main(String[] arg){
int suma = 0;

for(int i = 0; i < 5; i++)
{
suma = suma + i;
}

System.out.println("el total de la suma es :+"suma );
}//fin main
}//fin clase Suma

 la salida de este programa seria:    el total de la suma es 10

veamos, en la primera vuelta suma vale 0 e i también osea la ecuación seria
                                       suma = suma + 0
                                       0       = 0       + 0
En la segunda vuelta i vale 1 por lo tanto:

                                      1 = 0 + 1 //con lo que suma queda con valor 1.
en la tercera vuelta i vale 2 por lo tanto
       
                                     3 = 1 + 2; //con lo que suma queda en 3
en la cuarta vuelta i vale 3 por lo tanto

                                    6 = 3 + 3; //con lo que suma queda en 6
en la quinta vuelta i vale 4 por lo tanto:

                                    10 = 6 + 4; //con lo que suma queda en 10

for intenta dar la 6ta vuelta pero la condición de que i tiene que ser menor que 4 se cumple así que sale del bucle y devuelve el resultado


Falta la sentencia while, que también es un bucle. la veremos de forma fragmentada en los siguientes videos ya que por ahora con las acá presentadas no es suficiente. (*while es una poderosa herramienta de ciclo)

Operadores y la Sentencia If



Operadores Aritméticos  Los operadores aritméticos en java son exactamente iguales a los operadores normales de las matemáticas convencionales, Estos se podrían dividir en dos en relacion a su precedencia dentro de las ecuaciones:

 / = división
* = multiplicación           estos tres, tienen prioridad aritmética, en caso de existir mas de un operador
% = resto                       en la misma linea de la ecuación, se ejecutan siempre de izquierda a derecha,

+ = suma                      la suma y la resta se ejecutan despues de cualquiera de las operaciones recien
- = resta                       mencionadas, al igual que estas, se resuelven de izquierda a derecha.



Al igual que en las matemáticas convencionales, las operaciones en java también pueden ser ordenadas a través de paréntesis como:

n1= 4; 
n2=5; 
n3= 10;

                      equivale a
n1*(n2+n3)        --->       4*( 5 + 10 )

En java no se entiende lo siguiente  4(3+2), si queremos multiplicar el 4 al paréntesis estamos obligados a especificar el tipo de operador aritmético. 4*(3+2)


La sentencia IF

La sentencia if es condicional y esta sujeta a una regla; la pregunta, cuya respuesta debe ser verdadera para poder ejecutase es decir;

"Si esta condición se cumple, realiza estas acciones"
esta seria la forma de decirlo a través del pseudocodigo, la forma de declarar una sentencia if es la siguiente:

if (condición)
{
si la condición es verdadera(true), realiza estas acciones
}

para facilitarnos el uso de la sentencia condicional if, tenemos los denominados Operadores Condicionales y Relacionales.


Operadores Condicionales y Relacionales.



a través de estos operadores podemos usar la instrucción if, como en este ejemplo.

int num1 = 5; 
int num2 = 4;

if(num1 > num2) 
{
System.out.println("num1 es mayor que num2");
}

como pueden fijarse los operadores condicionales funcionan sobre dos términos
en este caso comparamos num1 y num2 preguntando si num1 es mayor que num2, como lo es,
entra en el cuerpo del if { } y ejecuta la accion, monstrar el mensaje en este caso.

Los invito a probar los diversos Operadores acompañados con la instrucción if.








Algunas Generalidades y Tipos de Datos



Segundo video en el que analizamos algunas generalidades y presentamos los tipos de datos en java.

-\\ lel doble "backslash" nos permite generar comentarios de una sola linea en el código del programa

-La palabra clave package indica el paquete al cual pertenece nuestra clase (en caso de que pertenezca a uno). es importante hacer notar que "package _____" es siempre la primera declaración dentro del código java* En caso de tener nuestras clases en el paquete por defecto no aparecerá esta sentencia al inicio de la clase.

-Existen tres tipos de salida de datos a través de la consola, a través de System.out) print(), printf() y println().

-Existen los denominados caracteres de escape para utilizar dentro del metodo System.out.print, algunos son; \n ,  \\  ,  \",  todos llevan el carácter \ (backslash) por ejemplo  \n  provoca un salto de linea para lo que este delante de el. así por ejemplo:

System.out.println("Bienvenidos\n a mi blog");  // tendría la siguiente salida

Bienvenidos
a mi blog

El carácter de escape \\ nos imprime un \ en nuestro texto, y el  \" nos imprime unas comillas dobles, recuerden que las " en java delimitan un String, por lo que si queremos incluir una " en nuestro texto debemos hacerlo a través de esta manera. Ej:

System.out.println("Bienvenidos \"amigos\" a mi blog");  //  La salida seria la siguiente  -

Bienvenidos "amigos" a mi blog

-a través de printf(); podemos imprimir texto en pantalla con formato de salida, Existen para esto los denominados especificadores de formato. un especificador de formato siempre comienza con el caracter %(porcentaje) y va acompañada del tipo de dato a mostrar, asi por ejemplo:
%s = para cadenas de caracteres o String    y   %d=para números enteros. ej

System.out.printf("%s %d","Estamos en el año", 2015); //la salida seria asi:

Estamos en el año 2013

El primer %s indica que se mostrara un String, en este caso "Estamos en el año 2015"
el segundo %d indica que se mostrara un entero, en este caso 2015, nota que 2015 no lleva " " por lo que no se considera String.
Luego de poner los especificadores de acceso ponemos una coma , y agregamos los valores en el mismo orden en que pusimos los especificadores, en este caso, primero un String, luego un entero.

-El espacio que agreguemos entre los especificadores de formato aparecerá en el resultado final. ej:

System.out.printf("%s         %d","Estamos en el año",2013);
salida:
Estamos en el año          2013

*podemos agregar caracteres de escape para el salto de linea etc...

La salida con formato (printf()) es un tema mas extenso que iremos viendo de apoco pero esto es mas que suficiente para comenzar a practicar. Si te fijas puede para efectos practicos, por ahora es mas que suficiente solo utilizar el println().

Tipos de datos

Básicamente en java existen dos tipos de datos: primitivos y referenciados(objetos).





los tipos referenciados son cualquier tipo que no sea primitivo, como las clases, metodos, String(que es una clase) etc...

La diferencia entre estos dos tipos de datos es que los primitivos se almacenan directamente en memoria, mientras que los referenciados son punteros hacia el valor real.
para mayor información sobre tipos de datos por favor visita 

Existen (principlmente) dos formas de declarar e inicializar una variable; 


int numero = 10;

Esto es, primero nombrar el tipo de la variable, en este caso int seguido del nombre de la variable, en este caso -numero- el signo  =  representa la asignación del valor decimal que le sigue. Es decir, a partir de este momento cada vez que nombremos la variable -numero- lo que estamos nombrando es al valor 10.

La segunda forma es esta, crear la variable y luego, cuando se requiera, darle un valor.

int numero;        //declaramos una variable pero no le damos valor
numero = 10;    //la inicializamos asignandole un valor de acuerdo al tipo de dato de la variable.

tambien se permite delcarar mas de una variable en la misma linea de codigo.

int numero1, numero2, numero3;    //legal pero poco legible
numero1 = 10;
numero2 = 8;
numero2 = 4567;



Saludos.