sábado, 6 de febrero de 2010

JC7.1 - Metodos en Java y C#

Esta seccion la voy a dividir en dos partes, en la primera parte vamos a hablar de metodos que reciben parametros de tipo valor (value type), y
en la segunda parte de parametros tipo referencia (reference type)

Introduccion: Los metodos son bloques de instrucciones que devuelven algun tipo de valor cuando se ejecutan.

Pueden ser llamados mediante su nombre, llamar a un metodo hace que las instrucciones del metodo se ejecuten.


Formato general de la declaracion de un metodo


La primera linea del metodo se conoce como encabezado del metodo. Despues del encabezado van las declaraciones e instrucciones entre llaves, las cuales forman el cuerpo del metodo.

El formato de la declaracion de un metodo es el siguiente:


Tipo_Valor_Retorno Nombre_Del_Metodo(parametro1, parametro2, ..., parametroN)


{

declaraciones e intrucciones

}


El Nombre_Del_Metodo es cualquier identificador valido. El Tipo_Valor_Retorno es el tipo del resultado devuelto por el metodo solicitante. El Tipo_Valor_Retorno void indica que un metodo no devuelve un valor, parametro1, parametro2, ..., parametroN son los parametros que recibe el metodo para poder realizar su trabajo.
Los parametos se declaran en una lista separada por comas, encerrada entre parentesis, que declara el tipo y el nombre de cada uno de los parametros.
Los metodos pueden devolver como maximo un valor.

NOTA: Todos los metodos solo pueden declararse dentro de una clase.


Ejemplo:


//C#

public class SimpleMethod

{

public static void Main()

{

SimpleMethod mySimpleMethod = new SimpleMethod();

mySimpleMethod.myMethod();

}

void myMethod()

{

System.Console.WriteLine("Hello from CallMethod()!");

}

}




Para llamar a un metodo, se escribe su nombre en el lugar donde deberia ejecutarse el codigo de ese metodo, despues del nombre del metodo se escriben dos parentesis.

Si el metodo se define con una lista de parametros, sus valores deben ser especificados en el momento de llamar al metodo. Debe de especificar los parametros en el mismo orden en que son especificados en la lista de parametros del metodo. Por ejemplo:

//java

void myOtherMethod(int myInteger)

{

System.out.println("myInteger desde CallMetod: " + myInteger);

}




Y lo llamamos con:

mySimpleMethod.myOtherMethod(3);



Para los metodos que regresan un valor los declaramos de la siguiente manera:

//C#

int mySum(int oper1, int oper2)

{

int Sum;

Sum = oper1 + oper2;

return Sum;

}




Y lo llamamos de la siguiente forma asignandolo a una variable:

int myResult;

myResult = mySimpleMethod.mySum(2, 3);



A continuacion separaremos el codigo y diferenciaremos entre java y C# con respecto a la sintaxis de los siguientes conceptos.



Parametros de entrada

Los parametros de entrada son parametros cuyo valor es enviado al metodo. Los parametros de entrada se envian a la funcion, pero el cuerpo del metodo no puede cambiar permanentemente sus valores. Los parametros de entrada se pasan a los metodos por valor, pero no se le permite cambiar el valor proporcionado por la parte que realiza la llamada.


//C#

public class sampleMethod

{

public static void Main()

{

int myInteger;

sampleMethod myObj = new sampleMethod();

myInteger = 3;

myObj.CallMethod(myInteger);

System.Console.WriteLine(myInteger);

}

void CallMethod(int otherInteger)

{

otherInteger = 6;

System.Console.WriteLine(otherInteger);

}

}




//Java

public class Main

{

public static void main(String[] args)

{

int myInteger;

Main myObj = new Main();

myInteger = 3;

myObj.CallMethod(myInteger);

System.out.println(myInteger);

}

void CallMethod(int otherInteger)

{

otherInteger = 6;

System.out.println(otherInteger);

}

}




El ejemplo anterior establece una variable entera llamada myInteger y le asigna el valor 3, a continucacion llama a CallMethod con myInteger como parametro, el metodo CallMethod() establece el valor del parametro en 6 y luego escribe el valor en la consola. Cuando el metodo CallMethod() regresa al metodo Main() continua y escribe el valor de myInteger, esto sucede porque el metodo modifica su copia del parametro de entrada, pero esta no afecta al valor del metodo original proporcionado por Main(). El valor de myInteger sigue siendo 3 despues de que regrese el metodo CallMethod(), debido a que CallMethod() no puede cambiar el valor del parametro de entrada del elemento que hace la llamada. Solo puede cambiar el valor de su copia.

Hasta aqui todo parece similar pero a continuacion vamos a ver como cambiar esos valores de entrada...

Parametros de salida

Los parametros de salida son parametros cuyos valores no se establecen cuando se llama al metodo, en su lugar el metodo establece los valores y los devuelve al elemento que hace la llamada mediante el parametro de salida. Suponga, por ejemplo que quiere escribir un metodo que cuente el numero de registros de una tabla de una base de datos. Supongamos que tambien queremos especificar si la operacion se realizo satisfactoriamente, Por tanto queremos que el metodo devuelva dos instancias de informacion.

  • Un contador de registros

  • Un indicador de exito de operacion


C# y java solo permiten devolver un valor. Que podemos hacer para que devuelva dos instancias de informacion?. La respuesta en el concepto de parametro de salida.
En C# los parametros de salida se especifican en listas de parametros con la palabra clave out. La palabra clave out debe preceder al tipo de parametro en la lista de parametros. Cuando se llama a un metodo con un parametro de salida, se debe de declarar una variable que contenga ese valor. En Java solo se necesita modificar el valor en el metodo internamente como se muestra a continuacion.


//Java


public class Main {

//Declaramos la variable como global de la clase

int myValue;

public static void main(String[] args) {

boolean myBool = false;



myBool = myObj.myOutValue();



System.out.println("myValue : " + String.valueOf(myObj.myValue));

System.out.println("myBool : " + String.valueOf(myBool));

}

boolean myOutValue()

{

myValue = 5;

return true;

}

}






//C#

public class SampleMethod{

public static void Main()

{

int myValue;

myObject = new SampleMethod();

bool myBool = false;

myBool = myObject.CallMethod(out myValue);

Console.WriteLine("myValue : " + myValue);

Console.WriteLine("myBool : " + myBool);

}

static bool CallMethod(out int myInteger)

{

myInteger = 7;

return true;

}

}

martes, 10 de noviembre de 2009

JC6 - Operadores Aritmeticos en Java y C#

Los operadores aritmeticos nos permiten realizar calculos en nuestras aplicaciones Java o C# ocupan la misma sintaxis para los operadores aritmeticos. Las expresiones que usan operadores aritmeticos son expresiones binarias porque se necesitan dos operadores para realizar una operacion matematica.

Operador de asignacion ( = )

Asigna un valor a una variable o expresion que se encuentra del lado izquierdo del operador ( = ).int myInteger = 1;

Operador Suma ( + )

Es la suma de los dos valores de los dos operadores.

myInteger = 3 + 6; //myInteger sera 9

Si se esta sumando un valor a una variable y se coloca el resultado en la misma variable, se puede escribir una instruccion abreviada que realice la suma. Por ejemplo:

myInteger += 3;

La instruccion anterior es la abreviatura de la siguiente:

myInteger = myInteger + 3;

El operador de suma tiene un significado especial cuando los dos operandos son cadenas. La suma de dos cadenas une la segunda cadena a la primera.

string myMensaje = "Hola desde " + "C#"; //myMensaje contiene "Hola desde C#"

Operador Resta ( - )

Es la diferencia de los valores de los dos operadores.

myInteger = 7 - 3; // myInteger sera 4

tambien es posible escribir una expresion abreviada

myInteger -=3; //myInterger = myInteger - 3;

Operador de multiplicacion ( * )

Es el producto de los valores de los dos operandos.

int myInteger = 3;

int myOtherInteger = 2 * myInteger;

Operador de division ( / )

El valor de una expresion que usa el operador de division es el producto de los valores de los operadores.

myInteger = 6 / 3; //MyInteger = 2;

Si la operacion de division da como resultado un resto. El resultado de la operacion sera solo el cociente.

myInteger = 7 / 3;

Operador Resto ( % )

El valor de una expresion que usa el operador de resto es el resto de una operacion de division

myInteger = 7 % 3;

cuando se ejecuta este codigo, la variable MyInteger = 1, porque si se divide 7 entre 3 queda un cociente de 2 y un resto de 1.

Aprovechando que este blog esta muy pequenio...

Como prefijar operadores de incremento y decremento.

Los operadores postfijos ++ y -- pueden ser usados en uno de los dos modos. Ya hemos visto las versiones postfijas de los operadores, que aparece despues de la expresion. Las versiones prefijas aparecen antes de la expresion como se ve en el siguiente ejemplo:

myInteger = 125;


++myInteger; //el valor ahora es 126

--myInteger; //el valor ahora vuelve a ser 125

Tenga en cuenta una importante diferencia: Con los operadores prefijos el valor cambia antes de que se evalue la expresion, con los postfijos el valor cambia despues de que se evalue la expresion.

myInteger = 123;

System.Console.WriteLine(myInteger++);

System.Console.WriteLine(++myInteger);

Nota: Recuerden que cuando no hago diferencia quiere decir que el codigo es similar lo unico que cambia es la instruccion de salida a consola. De hecho en java puse saludos desde C#, jejeje ya que lo hice en C# y nada mas sutitui Console.WriteLine por System.out.println... Jeje Sorry!!!

Saludos y sigan el blog... je =)



JC5 - Operadores Logicos en Java y C#

Cada una de las instrucciones if, if...else, while, do...while, y for requieren de una condicion para determinar como continuar el flujo de control de un programa, las condiciones simples se expresan en los terminos de los operadores relacionales >, <, >=, <=, ==, !=, y cada decision evalua una condicion. Para evaluar multiples condiciones necesitamos de los operadores logicos que son:
  • && (AND CONDICIONAL)
  • (OR CONDICIONAL)
  • & (AND LOGICO BOOLEANO)
  • (OR ICLUYENTE LOGICO BOOLEANO)
  • ! (NOT LOGICO, TAMBIEN LLAMADO NEGACION LOGICA)
  • ^ (OR EXCLUYENTE LOGICO BOOLEANO)

AND CONDICIONAL (&&)

La condicion And solo es verdadera si ambas expresiones a evaluer son verdaderas en caso contrario son falsas.

OR CONDICIONAL ()

La condicion Or es falsa solo cuando ambas expresiones a evaluar son falsas en los demas casos es verdadero.

Las partes de una expresion que contiene && u se evaluan solo hasta que se sabe si la condicion es verdadera o falsa y se evaluan de izquierda a derecha. Por lo tanto la evaluacion de la expresion:

genero == FEMENINO && edad >= 65

se detienen inmediatamente si genero no es igual a FEMENINO(es decir toda la expresion es falsa) y continua si genero es igual a FEMENINO(es decir, toda la expresion podria aun ser true si la condicion edad >= 65 es true). Esta caracteristica se conoce como evaluacion en corto circuito


Los Operadores logicos booleanos (& y ) funcionan de manera identica a los operadores condicionales (&& y ) con una excepcion: los operadores logicos booleanos siempre evaluan ambos de sus operandos(es decir, no realiza una evaluacion por corto circuito). Por lo tanto la expresion:

genero == 1 & edad >= 65

evalua edad >= 65 sin importar que genero sea igual o no a 1, esto es util si el operando derecho del operador AND logico booleano u OR logico booleano tiene un efecto secundario requerido: la modificacion del valor de la variable. Por ejemplo la expresion:

cumpleanios == true ++edad >= 65

garantiza que la condicion ++edad >= 65 se evalue. Por lo tanto la variable edad se incrementa en la expresion anterior, sin importar que la expresion total sea true o false.


A continuacion se muestran las tablas de verdad de los operadores logicos.


A continuación muestro el código de un ejemplo en C# y su salida.


viernes, 24 de julio de 2009

JC4 - Estructuras de Control en Java y C#

Estructuras de Control en Java y C#

Breve introduccion

Antes de escribir un programa que de solucion a un problema, es necesario tener una idea detallada del problema, asi como la comprensión de los bloques para la construcción de diagramas de flujo.

Cualquier problema de computación puede resolverse ejecutando una serie de acciones en un orden especifico, a esto se le conoce con el nombre de algoritmo y depende de dos cosas principales:

1.- Las acciones a ejecutar

2.- El orden en el que se ejecutan las acciones.

Definicion de Pseudocodigo: Es un lenguaje informal que ayuda a los programadores a desarrollar algoritmos sin tener que preocuparse por los estrictos detalles de la sintaxis de un lenguaje de programación. El pseudocódigo es semejante al lenguaje cotidiano, es amigable con el usuario y ayuda a organizar un programa.


Estructuras de Control

Por lo general, en un programa las instrucciones se ejecutan una después de otra en el orden en que están escritas, este proceso se conoce como ejecución secuencial. Varias instrucciones en Java y C# permiten al programador especificar que la siguiente instrucción a ejecutarse tal vez no sea la siguiente secuencia. Esto se conoce como transferencia de control.


Java tiene solo tres estructuras de control: la secuencia de estructura, la estructura de selección (tres tipos) y la estructura de repetición (tres tipos), en C# tenemos la estructura de selección (tres tipos) y la estructura de repetición (cuatro tipos). Cada programa se forma combinando tantas estructuras de secuencia, selección y repetición como sea apropiado para el algoritmo que implemente el programa.


Estructura de Selección if Simple

Esta intruccion sirve para elegir entre entre los cursos alternativos de acción, por ejemplo:

Supongamos el siguiente pseudocódigo:

Si la edad de un individuo es mayor a 18

Imprimir “Mayor de edad”

Codigo en Java

if (edad > 18 )

System.out.println(“Mayor de edad”);


Codigo en C#

if (edad > 18)

Console.WriteLine(“Mayor de edad”);


Estructura de Selección if… else…

La estructura de selección if… else permite al programador especificar una acción cuando la condición es verdadera y otra cuando la condición es falsa, como en el siguiente pseudocodigo:

Si edad de una persona es mayor a 18

Imprimir “Mayor de Edad”

De lo contrario

Imprimir “Menor de Edad”


Codigo en Java

if (edad > 18)

System.out.println(“Mayor de Edad”);

else

System.out.println(“Menor de Edad”);

Codigo C#

if (edad > 18)

Console.WriteLine (“Mayor de Edad”);

else

Console.WriteLine (“Menor de Edad”);


Instrucciones if… else Anidadas

Un programa puede evaluar varios caso colocando if… else… anidados, por ejemplo el siguiente pseudocódigo:

Si la calificación del estudiante es mayor o igual a 90

Imprimir “Excelente”

De lo contrario

Si la calificación es mayor o igual a 70

Imprimir “Aceptable”

De lo contrario

Imprimir “Reprobado”


Codigo Java

if ( calificación >= 90 )

System.out.println(“Excelente”);

else

if (calificación >= 70 )

System.out.println(“Aceptable”);

else

System.out.println(“Reprobado”);


Codigo C#

if ( calificación >= 90 )

Console.WriteLine(“Excelente”);

else

if (calificación >= 70 )

Console.WriteLine (“Aceptable”);

else

Console.WriteLine (“Reprobado”);


Hay que tener cuidado de no caer en el error de no adidar correctamente el else, en Java y C# el ultimo else es asociado con el if que precede inmediatamente. Por ejemplo el siguiente código en Java.

if ( x > 5 )

if( y > 5 )

System.out.println(“x e y son > 5”);

else

System.out.println(“x es >= 5”);


En realidad el compilador lo interpreta de la siguiente manera:

if ( x > 5 )

if( y > 5 )

System.out.println(“x e y son > 5”);

else

System.out.println(“x es >= 5”);

Para lograr que la instruccion se ejecute como se pensaba en un principio se utiliza las {} para indicar que la intruccion else se ejecuta con la primer sentencia if.

if ( x > 5 ){

if( y > 5 )

System.out.println(“x e y son > 5”);

}

else

System.out.println(“x es >= 5”);


Tambien es forzoso usar las {} cuando se ejecutan mas de una instruccion dentro de cada if… else

Por ejemplo:

if (edad > 18){

Console.WriteLine(“Ya eres mayor de edad”);

Console.WriteLine(“Y puedes sacar tu licencia de manejo”);


}

else{

Console.WriteLine(“Aun eres menor de edad”);

Console.WriteLine(“No puedes sacar tu licencia de manejo hasta después de los 18 anios”);

}

NOTA: Cuando no ponga los dos ejemplos para Java y C# quiere decir que la sintaxis es parecida en este caso lo único que diferencia es System.out.println y Console.WriteLine, ya que tienen el mismo fin.


Instrucción de Selección Multiple switch

La instrucción switch permite tomar una decisión en base a los posibles valores de una variable o expresión, cada acción se asocia con un valor integral constante (es decir un valor de tipo byte, short, int o char pero no long) que la variable o expresión pueda asumir.

Por ejemplo pedir la orden de un menú en base a lista formada por los menus 1, 2, 3

Codigo Java

switch (myOpcion) { //inicio de switch

case 1:

System.out.println(“-Sopa de letras \n –Pechuga empanizada\n –Gelatina \n -Agua de fruta”);

break;

case 2:

System.out.println(“-Crema de zanahoria \n –Costillas en salsa roja\n –Helado \n -Agua de fruta”);

break;

case 3:

System.out.println(“-Torta de Milaneza \n –Papas a la francesa\n –Refresco de cola”);

break;

default:

System.out.println(“Debe de elegir un menú de la lista”);

} //fin de switch


Codigo C#

switch opcion (myOpcion) { //inicio de switch

case 1:

Console.WriteLine(“-Sopa de letras \n –Pechuga empanizada\n –Gelatina \n -Agua de fruta”);

break;

case 2:

Console.WriteLine (“-Crema de zanahoria \n –Costillas en salsa roja\n –Helado \n -Agua de fruta”);

break;

case 3:

Console.WriteLine (“-Torta de Milaneza \n –Papas a la francesa\n –Refresco de cola”);

break;

default:

Console.WriteLine (“Debe de elegir un menú de la lista”);

} //fin de switch


Nota: Para Java no se pone la instruccion break despues de default, en C# si.


Estructura de Repeticion while

Una estructura de repetición (también llamada estructura ciclo) permite al programador especificar que un programa debe repetir una acción mientras cierta condición sea verdadera. Por ejemplo el siguiente pseudocódigo para una persona que sale de compras:

Mientras existan mas artículos en mi lista de compras

Comprar el siguiente articulo y quitarlo de mi lista


Ahora veamos un ejemplo:

Encontrar la primera potencia que sea mayor a 1000, suponiendo que la variable la inicializamos en 2.

int producto = 2;

while( producto <= 1000 )

producto = 2 * producto;

//Java

System.out.println(producto);

//C#

Console.WriteLine(producto);


Instrucción de Repeticion do… while

Es similar a la instrucción while, y la única diferencia es que en la istruccion while la condición se evalua al principio, por lo que si la condición es falsa el ciclo no se ejecuta y en la condición do…while por lo menos se ejecuta una vez el ciclo ya que la condición se evalua al final. Cuando termina una estructura do… while el programa continua inmediatamente después de la instrucción while.

El siguiente ejemplo imprime de el numero 0 al 9, notemos como si inicializamos la variable en 10 el ciclo se ejecuta por lo menos una vez.

int myVariable = 0;

do {

System.out.println(myVariable);

//C#

//Console.WriteLine(myVariable);

myVariable++;

} (while myVariable < 10);

Notemos que debemos de terminar con punto y coma (;) al finalizar la condición del while.


Instrucción for

La instrucción for es la instrucción de iteración mas potente. El código de control de la instrucción for se divide en tres partes:



  1. Un indicador. Que fija las condiciones iniciales de la instrucción de bucle for.

  2. Una condición que especifica la expresión booleana que mantiene ejecutándose la instrucción for.

  3. Un iterador que especifica las instrucciones que se ejecutan al final de cada paso por las instrucciones incrustadas


A continuación vemos un ejemplo que imprime también los números del 0 al 9:

int myVariable;

For(myVariable = 0; myVariable < 10; myVariable++)

{

System.out.println(myVariable);

//C#

//Console.WriteLine(myVariable);

}

El iniciador, la condicion y el iterador de un bucle for son opcionales. Si prefiere no usar alguna de estas partes, simplemente escriba un punto y coma sin especificar la instrucción. Por ejemplo:

int myVariable = 0;

For(; myVariable < 10; myVariable++)

{

Console.WriteLine(myVariable);

//Java

//System.out.println(myVariable);

}

//------------------------

//O también

int intVaribale;

For (myVariable = 0; ; myVariable++ )

{

Console.WriteLine(myVariable);

//Java

//System.out.println(myVariable);


myVariable++;

}

Hay que tener cuidado cuando se omita la parte de la condición en un bucle for. El siguiente código es un ejemplo de los problemas que pueden surgir.

for(int myVariable = 0; ; myVariable++)

{

Console.WriteLine(myVariable);

}

Este código se ejecuta hasta que myVariable provoca un error porque contiene un numero demasiado largo para ser almacenado.


Instrucción foreach (Solo C#)

Se puede usar la instrucción foreach para repetir varias veces los elementos de una colección. Las matrices de C# admiten la instrucción for each y pueden usarse para trabajar fácilmente con cada elemento de la matriz.

La sintaxis es la siguiente:

Foreach (tipoDato nombreVariable in Colleccion)

{

}

Por ejemplo:

int[] myArray;

myArray[0] = 0;

myArray[1] = 1;

myArray[2] = 2;

myArray[3] = 3;

myArray[4] = 4;


foreach( int ArrayElement in myArray)

{

Console.WriteLine(ArrayElement);

}


Instrucciones de salto para moverse por el código

Hago mención de estas instrucciones ya que por lo regular se utilizan en estructuras de ciclos o repetición.

La instrucción break

Como ya vimos en la estructura switch la instrucción break sirve para salir de un bloque de instrucciones en el que se encuentre.

int myVariable = 0;

while(myVariable < 10)

{

Console.WriteLine(myVariable);

//Java

//System.out.println(myVariable);

if( myVariable == 5 )

break;

myVariable++;

}

El código anterior se sale cuando myVariable = 5, Imprime en pantalla del 0 al 4

La instrucción break suele usarse con bloques de instrucciones switch, while, do… while, for y foreach(solo C#).


La Instrucción continue

La instrucción continue devuelve el control a la expresión booleana que controla una instrucción de iteración, por ejemplo:

int myVariable;

For (myVariable = 0; myVariable < 10; myVariable++ )

{

if (myVariable == 5)

continue;

Console.WriteLine(myVariable);

//Java

//System.out.println(myVariable);

}

El codigo anterior imprime del 0 al 9, excepto el 5, es decir “Si el valor de myVariable es 5”, continua con la siguiente iteración sin ejecutar ninguna instrucción después del continue”. Al igual que break, continue se usa en instrucciones switch, while, do… while, for y foreach(solo C#).


Instrucción goto (C#)

La instrucción goto transfiere sin condiciones el control a una instrucción etiquetada. Puede etiquetarse cualquier instrucción de C#. Las etiquetas de instrucción son identificadores que preceden a una instrucción. Despues de una etiqueta se colocan dos puntos(:). Un identificador de etiqueta sigue a la palabra clave goto y la instrucción goto transfiere el control a la instrucción designada por el identificador de etiqueta. Por ejemplo:

int myVariable = 0;

while(myVariable < 10 )

{

Console.WriteLine(myVariable);

if ( myVariable == 5 )

goto done;

myVariable++;

}

done: Console.WriteLine(“Fuera del ciclo”);

El código anterior escribe del 0 al 4 y a continuación la leyenda “Fuera del ciclo”


break etiquetado(Java)


En Java tambien tenemos una opcion para poder hacer lo que se hace con goto de C#. A continuacion muestro un ejemplo:


String salida = "";

alto: { //bloque etiquetado

// contar 10 filas

for ( int fila = 1; fila <=10; fila++){

for ( int columna = 1; columna <= 5; columna++) {

if ( fila == 5 ) // si la fila es 5.

break alto; //saltar al final del bloque alto

salida += "* ";

} // fin de for interno

salida += "\n";

} // fin de for externo

// la siguiente linea se evita

salida += "\nLos ciclos terminaron normalmente";

} // fin del bloque etiquetado

// en el codigo anterior cuando fila es 5 se ejecuta break de la etiqueta y termina tanto el bloque interno del for como el externo, el for externo nunca se completa


Instruccion foreach (Java)
Hago una correccion a peticion de un amigo Tonat , que como bien es cierto desde la version 1.5 del jdk incorporo una estructura de control en Java que tiene la misma funcion que el ciclo foreach de C#, y a continuacion muestro un ejemplo sencillo y la sintaxis que maneja.
Sintaxis:
for (TipoBase variable: ArrayDeTiposBase)
{..}
Ejemplo:

List list = new ArrayList();

// Añadimos elementos
list.add("Primitivo");
list.add("Roman");
list.add("Montero");

for (String nombre: list)
System.out.println(nombre);

Pues como podemos ver la sintaxis de Java y C# para estructuras de control es muy parecida, a excepcion del ciclo foreach. Y de antemano agradezco sus comentarios y tambien si alguien quisiera que publicara algo en especifico me haga sus comentarios de lo que les parece este blog, Y el motivo de no incluirlo es debido a que actualmente desarrollo en C# y VB 2005, y como comentaba en la introduccion de esta serie de blogs dedicados a Java y C#. Que es solo una guia para no olvidarnos de la sitaxis de cada lenguaje ya que la vida nos lleva por rumbos distintos, pero tambien no hay que olvidarnos de lo que sabemos...

sábado, 11 de julio de 2009

JC3 - Comentarios y Declaracion de Variables en Java y C#

Comentarios

Los comentarios sirven para explicar el codigo y estos son ignorados por el compilador, ademas de que facilitan la comprension del codigo por otros programadores, facilita su mantenimiento y hacen mas claro el panorama del program.

Y en este caso los comentarios son igual en Java y C# con una pequenia diferencia, que mencionare mas adelante.

Podemos hacer comentarios de una sola linea de la siguiente manera:

//Comentario de una sola linea

O Podemos hacer comentario de mas de 1 linea como por ejemplo:
/*Comentario
de mas de
una linea*/

Bien ahora vamos a ver una diferencia entre estos dos lenguajes que es para comentarios de documentacion.

JAVA

/** Este es un comentario para documentacion */

C#

///
/// Este es un comentario para documentacion
///


------------------------------
Declaracion de Variables
En Java Tenemos los siguientes tipos de datos:


En C# Tenemos los siguientes tipos de datos:

Ahora vamos a ver unos ejemplos.

JAVA


Notemos que para la declaracion de Long, Float y Double ponemos una L, F, D respectivamente despues del valor de la variable para indicar que se trata de ese tipo de datos respectivo.


C#



Como conclucion de este tema podemos decir que practicamente la declaracion de variables es la misma en Java y C#, aunque en C# tenemos por ejemplo los uint (enteros sin signo), en base a la tabla vamos a declarar nuestras variables dependiendo de la necesidad del uso que se le de para no desperdiciar memoria.

sábado, 4 de julio de 2009

JC2 - Hello World en Java y C#

Bien para iniciar vamos a ver como crear nuestra primera y clasica aplicacion de Hello World! en Java y C#. Para trabajar con Java vamos a usar el IDE de NetBeans y para C# el IDE de Microsoft. A continuacion pongo los links para que descarguen cada una de estas herramientas.


Java: http://www.netbeans.org/downloads/index.html

C#: http://www.microsoft.com/exPress/


Y ovio para C# descargamos la version de C#
Para los siguientes articulos trabajaremos con aplicaciones de Consola a menos que el articulo lo requiera les indicare el tipo de proyecto que vamos a crear.


JAVA


Abrirmos Net Beans. Nos vamos al menu Archivo -> Nuevo Proyecto -> Aplicacion Java. Como a continuacion.
En la siguiente figura vemos la salida asi como el codigo del programa.



La linea

//--------------------

package helloworld2;

//--------------------

Esta linea es creada por NetBeans al momento de crear un nuevo proyecto y indica que se esta creado el paquete helloworld2.

//--------------------
public class Main {
}
//--------------------
Indica que la clase principal es Main, la cual tambien es creada por el IDE de NetBeans.
//--------------------
public static void main(String[] args) {
}
//--------------------
Es el metodo principal de la clase y contiene el codigo nesecario para las entradas y salidas del PC.
//--------------------
System.out.print("Hello World!");
//--------------------
Esta es la linea de codigo que vamos a usar para mandar datos a la salida estandar.


C#
Abrimos Visual Studio. Nos vamos a Archivo -> Nuevo Proyecto -> Aplicacion de Consola. Como en la siguiente figura.
Para correr nuestra aplicacion de consola vamos al menu Depurar-> Iniciar sin depuracion y nos quedaria algo asi:


A continuacion describo el codigo del programa por si alguno de ustedes tiene duda.

La directiva using es ocupada para llamar a otros codigo ya desarrollados y probados por Microsoft. Las lineas:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;


Son agregadas automaticamente por el IDE al momento de generar un nuevo proyecto. Estas se desarrollan dentro de un espacion de nombres para tener organizado el codigo. Como las siguientes lineas:

namespace HelloWorld2
{
//Nuestro codigo
}

Asi por ejemplo para la directiva
using System.Collections.Generic;

El codigo seria algo mas o menos asi

Namespace System{
Namespace Collections{
//Codigo
}
}


Por ultimo las lineas

//-------------------------
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
}
}
//-------------------------


//-------------------------
class Program
{
}
//-------------------------
Indica que la clase principal se llama Program, la cual siempre va a ser esta para los proyectos de consola, ya que Visual Studio la asigna por defecto, por el momento la vamos a dejar asi.
//-------------------------
static void Main(string[] Array)
{

}
//-------------------------
Indica que el metodo principal es de tipo estatico no regresa valor y recibe un arreglo de Strings, este metodo se encarga de procesar las entradas y salidas de datos de la PC.

Por ultimo la linea.
//-------------------------
Console.WriteLine("Hello World!");
//-------------------------
Permite escribir una linea en consola con la cadena "Hello World!"


Como vimos las lineas que mas nos interesan son las siguentes, ya el codigo restante es creado por el IDE de cada lenguaje

JAVA:
System.out.print("Hello World!");

C#:
Console.WriteLine("Hello World!");

Para los ejemplos siguientes voy a omitir la creacion del proyecto, y solo nos enfocaremos al codigo de cada lenguaje. =)

JC1 - Introduccion a Java y C#

En vista que Java y C# son unos de los lenguajes de programacion de mayor aceptacion iniciare una serie de articulos relacionados con estos dos lenguajes, asi como la sintaxis utilizada por cada uno de ellos. Dando al lector estas dos opciones de lenguajes y asi puedan apreciar las ventajas, la potencia , el uso y la creacion de aplicaciones completas.

Creo que la parte de historia, les voy a poner los siguientes link para los que les interese, profundizar un poco mas.

Java: http://distritos.telepolis.com/java/lib/documentos/historia.htm
C#: http://www.scribd.com/doc/9018328/Historia-C

Espero que estos articulos sean lo mas claros para aquellos que inician en el mundo de la programacion, ya que de no ser asi me hagan sus comentarios y preguntas correspondientes para que asi podamos profundizar en algunos conceptos basicos si es que mis lectores asi lo desean. Y espero que aquellos que ya conocen los lenguajes les sirva de guia ya que en la programacion existen infinidad de lenguajes y a veces, me ha pasado (confundimos la sintaxis entre un lenguaje y otro).

Para los siguientes articulos que se refieran al curso los nombre seran con el siguiente formato JC(Por Java C#) y el numero del articulo, el cual va a ser en orden ascendente y si alguno contiene un subTitulo, seria por ejemplo (JC Num_Articulo - Num_SubTitulo)