unknown_gamer
Usuario (España)
Fuente: http://pixel-creations.org/2009/06/programando-funciones/ Muchas veces es tedioso escribir el mismo código una y otra vez. Ademas esto hace mas lento a nuestro programa. Para evitar esas incomodidades, existen las funciones. Agilizan el código, reduciendo el numero de lineas y al mismo tiempo nos ayudan a escribir menos. En este tutorial veremos como hacer funciones en C++ que básicamente es igual en todos los lenguajes lo único que cambia de lenguaje a lenguaje es la forma de escritura (sintaxis). Si estas interesado en aprender… Sigue leyendo… Les pondré el código y lo iremos descomponiendo poco a poco para que lo entiendan. #include <iostream> //incluyendo la librería de entrada salida using namespace std; //cargando el namespace estándar int suma(int,int); //prototipo de funcion suma int resta(int,int);//prototipo de funcion resta int main(){ int num1,num2,opcion,resultado; cout<<"Ingrese el primer numero:"; cin>>num1; cout<<"Ingrese el segundo numero:"; cin>>num2; cout<<"Que desea hacer: \n1-Sumar \n2-Restar \nIngrese el numero de opcion y presione enter:\n"; // "\n" sirve como enter(salto de lina) (Pleca invertida) cin>>opcion; //dependiendo de la opcion insertada por usuario //se sumaran o restaran los 2 numeros switch(opcion){ case 1: resultado=suma(num1,num2); cout<<"El resultado es: "<<resultado; //usa la funcion e imprime el retorno //el retorno de suma(num1,num2) es la suma de los 2 numeros break; case 2: resultado=resta(num1,num2); cout<<"El resultado es: "<<resultado; //usa la funcion e imprime el retorno //el retorno de resta(num1,num2) es la resta de los 2 numeros break; default: cout<<"Esa opcion no es valida"; break; } cin.ignore(); cin.get(); return 0; } //definicion completa de los prototipos int suma(int x,int y){ return x+y; } int resta(int x,int y){ return x-y; } El código ya viene comentado. Pero hay que explicar algo importante. Las funciones en c++ primero se declaran. Esto es lo que vemos en la primera parte del codigo: int suma(int,int); //prototipo de funcion suma int resta(int,int);//prototipo de funcion resta La sintaxis es la siguiente: <tipo de retorno> <nombre de funcion> (<tipo de parametro>...) Primero se pone el tipo de retorno. Estas 2 funciones devolveran numeros ENTEROS, por eso se usa int. Luego va el nombre de la funcion en este caso: suma y resta. Con el nombre llamaremos a las funciones. Luego vienen los parametros. En el prototipo vale con solo poner el tipo de dato del parametro, en este caso los 2 parametros son Enteros, por eso pone (int,int). Y al final SIEMPRE! se pone un “;” (punto y coma) porque es un prototipo. Ahora debajo del main ya ponemos que hara nuestra funcion: int suma(int x,int y){ return x+y; } int resta(int x,int y){ return x-y; } Aqui los parametros deben tener nombre. Ya no es solo el tipo de dato, sino que necesitamos un nombre para poder hacer referencia a ellos dentro de la función. Aquí ya no se pone un “;” como en el prototipo, aquí ya se abren los corchetes {} y dentro de los corchetes decimos que hará esa función. En estos casos sencillos, una función devuelve la suma de 2 números y la otra la resta de 2 números, que son pasados por parámetros. Para llamar una funcion simplemente ocupamos su nombre y rellenamos los parametros: suma(5,6); //esto nos dara 11, simplemente llamamos la funcion con parametros y listo. Bueno espero hayan entendido bien el concepto de función y hayan aprendido. Seria bueno que ampliaran este código y agregaran función para multiplicar y dividir. Si quieren pueden mandarlo al foro y así ver que tal van, al igual que mandar preguntas etc. Saludos LeX.
Fuente: http://pixel-creations.org/2009/06/java-rmi-chat-1/ Buenas a todos los visitantes de la web. RMI (Remote Method Invocation/ Invocación Remota de Métodos) es para programación distribuida en java. Consta de separar la parte visual (cliente) de la lógica del negocio (servidor) y el repositorio de datos (Base de Datos). Esto consiste en que yo desde una maquina puede mandar una petición a otra por red invocando uno de sus métodos remotamente. Eso es RMI. No se cuantas partes tenga esta Serie de tutoriales pero intentare hacerlo lo mas corto y entendible posible. Haremos una pequeña aplicación de chat, nada lujoso, simplemente lo básico para que entiendan el uso de RMI. Si estas interesado sigue leyendo… Primero dejemos claro que queremos que el chat haga, la funcionalidad. Como es un ejemplo y esto es algo avanzado, lo dejaremos simple, ya ustedes podran meterle mas funcionalidad mas adelante cuando entiendan lo básico del RMI en java. Funcionalidad Podrás mandar y recibir mensajes de un cliente a otro enviando el texto a un servidor, este lo recepcionara y lo enviara al otro cliente. Tendra una interfaz de usuario (GUI) amigable donde se presentara el texto enviado y recibido, y tambien habra una caja de texto para escribir mensajes. Talvez se agregue mas adelante la funcionalidad de envio de archivos Esta primera parte es nada mas para aclarar que cosas usaremos y para que sirven, a partir del próximo tutorial empezaremos el desarrollo del chat. Así que empecemos: Naming: Este método es el que practicamente hará todo. El nos permite llamar remotamente un método del servidor. Usaremos el metodo lookup() para buscar desde nuestro cliente (chat) en el registro el objeto remoto y así poder usar los métodos del servidor.(Esto lo entenderán mejor en la practica en el próximo tutorial). En la parte del servidor, para poder registrarlo como un servidor habil a usar, usaremos el metodo de Naming: rebind(). Este nos dejara registrar el servidor con un nombre el cual usaremos para llamarlo desde nuestro cliente. (En la practica entenderán mejor.) Aplicación del Servidor Explicando un poco de como constara la aplicación del servidor, tendrá 2 archivos. Interface: Primero haremos una interface donde se pondrán todos los métodos abstractos a los que podremos accesar remotamente. (Si no saben de interfaces en java les recomiendo lean un poco tal vez ponga mas adelante un articulo de eso para aclarar dudas). Servidor: Después haremos ya el servidor que implementara la interface y tendrá definido ya que hará cada método. Aplicación del Cliente Esta llevara la interfaz gráfica de usuario (GUI). Localizaremos el servidor en el registro, nos conectaremos haciendo un objeto del tipo del servidor y llamara los métodos remotamente del servidor usando la interface. Bueno eso es todo por ahora muchachos. Dudas y sugerencias en los foros. Saludos LeX.

Ahora pasaremos a la segunda parte de la seria de tutoriales de RMI sobre hacer un Chat en java. En esta parte veremos como se hace la interfaz del servidor y como se implementa en el servidor. Después de este tutorial tal vez haga un pequeño articulo acerca de interfaces antes de seguir con la 3ra parte para que los que no vayan entendiendo puedan seguir el ritmo. Bueno para ver el tutorial sigan leyendo... Interfaz del servidor La interfaz solo llevara los metodos que se desarrollaran en el servidor. Aqui les dejo el codigo comentado: import java.rmi.*; //importamos la libreria RMI de java public interface Chat extends Remote{ //heredamos Remote a la interface chat //Metodos que tendra el servidor public int registerClient(ClientRemote cr)throws RemoteException; //agregara clientes public void removeClient(int c)throws RemoteException; //removera clientes } La interface es facil, no hay que explicar mucho, como les digo si no saben sobre interfaces en java el proximo tutorial hablara de ello antes de seguir avanzando mas en esta serie de tutoriales. Ahora pasamos al código del server se los dejo aqui: //TODOS LOS IMPORTS QUE SE USARAN import java.net.*; import java.io.*; import java.util.*; import java.rmi.*; import java.rmi.server.*; import java.rmi.registry.LocateRegistry; import java.rmi.registry.Registry; import java.rmi.server.UnicastRemoteObject; public class ChatServer extends java.rmi.server.UnicastRemoteObject implements Remote, Chat { //Ven en implements que sale "Chat" esa es nuestra interface private static ChatServer rmi; //hacemos un objeto de nuestro servidor private ClientRemote cr; //Sera el objeto de la interface del cliente Vector<ClientRemote> v = new Vector<ClientRemote>(); // un vector para saber que clientes estan conectados public ChatServer() throws java.rmi.RemoteException { super(); //super manda a llamar a la clase objeto que es de donde derivan todas. } public static void main(String[] args) { //ponemos parametros de seguridad para que podamos llamar a metodos remotamente System.setProperty("java.security.policy","file:/E:/RMI/CHATRMI/java.policy"; //se hara un tutorial sobre esto System.setSecurityManager(new SecurityManager()); try { rmi= new ChatServer(); //instanciamos nuestro servidor para llamar al super(); System.out.println("Registy is created...."; Naming.rebind("server", rmi); //le llamamos "server" a nuestro servidor para que podamos usarlo ajo ese nombre System.out.println("Binding has complete..."; System.out.println("Server is waiting for a client request..."; }catch(java.rmi.UnknownHostException uhe) { System.out.println("ERROR"; }catch(RemoteException re) { System.out.println("ERROR "+re); }catch(MalformedURLException mURLe) { System.out.println("ERROR "+ mURLe); } } public int registerClient(ClientRemote cr) throws RemoteException //aqui ya ponemos que hara la funcion que declaramos en al interface { int i =0; System.out.println("Client is requesting for a connection...."; v.addElement(cr); //agregamos al cliente en el vector i=v.indexOf(cr); System.out.println("Timer is started" +v.size()); return i; } public void removeClient(int i) throws RemoteException { v.removeElementAt(i);//quitamos al cliente del vector } public void showText(String str, String destino) throws RemoteException //envio de mensajes { String nn=""; for(int i=0; i<v.size();i++) { ClientRemote crl = (ClientRemote)v.elementAt(i);//instanciamos la interface del cliente if (crl!=null) //si no es nulo ese cliente o sea existe en el vector { if (crl.getName().equals(destino)) //comprabamos el destino { crl.getString(str); //mandamos el texto al cliente usando el metodo de la interfaz del cliente } } } } } Eso es por ahora la interfaz del servidor y el servidor en si ya poniendo los métodos. Nos hace falta el cliente que sera la interfaz gráfica donde nosotros escribiremos y recibiremos mensajes y la interfaz del cliente para que el servidor pueda llamar remotamente métodos del cliente también. Para compilar estos 2 archivos que son .java abrimos la consola y nos ubicamos en la carpeta donde los tengamos. Luego llamamos la funcion de compilacion de java: javac *.java Despues tenemos que hacer una compilacion especial para el Servidor en si. O sea el ChatServer: rmic ChatServer [IMAGENES EN LA WEB] Bueno eso es todo por ahora muchachos, el proximo tutorial sera de interfaces y de policy tools. Despues seguire con esta serie de tutoriales. Preguntas o sugerencias en el foro. Saludos LeX
Mas tutoriales en: http://pixel-creations.org Las sentencias de flujo de un progrma son como las decisiones que uno toma dependiendo de las circunstancias. Un ejemplo seria: Si tengo dinero entonces puedo comprarme un helado. Cuando programamos, es posible hacer este tipo de sentencias de decisiones usando if, if/else y switch. En este tutorial aprenderemos cuando y como se usan. Si estas interesado, sigue leyendo… Sentencia IF Como dije anteriormente en el ejemplo del helado, podemos programar decisiones para que nuestro programa ejecute determinado codigo dependiendo de estas. Aqui tenemos un ejemplo de una sentencia sencilla if, luego explicarla paso a paso: int dinero=120; if (dinero<100) { cout<<"Tienes mas de 100 cordobas"; } Empezemos separando el codigo. Primero declaramos la variable dinero con el valor de 120. int dinero=120; Luego empezamos la sentencia if: if (dinero>100) ponemos “if” y entre parentesis ponemos la condicion. La condicion dinero>100 nos dice que si la variable dinero es mayor a 20 entonces se ejecutara lo que sigue: { cout<<"Tienes mas de 100 cordobas"; } Todo lo que se encuentra ente “{ }” se ejecutara si se cumple la condicion de dinero>100 Bueno asi de simple es. Intente probar haciendo mas ejemplos diferentes de este caso a ver que resultados obtienen. Sentencia IF/ELSE Ahora pasamos a una sentencia mas completa. Aqui tendremos 2 o mas opciones. Pero para mantenerlo simple pondremos 3 y seguiremos el ejemplo anterior. int dinero=100; if (dinero>100) { cout<<"Tienes mas de 100 cordobas"; }else if (dinero<100) { cout<<;"Tienes menos de 100 cordobas"; }else{ cout<<"Tienes 100 cordobas exactos."; } Explicandolo paso por paso. Primero declaramos el dinero, pero esta vez lo pusimos con valor de 100. Asi podremos ver como va moviendose el codigo en esta sentencia. El primero if tiene de condicion: dinero>100, pero como nuestro dinero es 100, no es mayor, por tanto no se ejecutara el codigo ente “{ }” Despues entramos en un else. ELSE significa “entonces”. Eso quiere decir, si lo anterior no funcione entonces que haga lo que sigue. Pero despues del “else” tenemos otra condicion: dinero<100 dice que si el dinero es menor a 100. Eso es falso pues dinero es igual a 100 ni menor ni mayor. Entonces no se ejecutara el codigo entre “{ }” porque no cumple la condicion. Por ultimo hay un else solo y sin condicion. Entonces significa que si no es mayor (primero if) y tampoco menor (segundo if) entonces que se ejecute el codigo entre ” { } ” que esta ahi que es el siguiente: cout<<"Tienes 100 cordobas exactos."; Sentencia SWITCH Switch es una manera de tomar decisiones simples pero tener varias opciones. Esta manera se basa en casos. Si algun caso es correcto, entonces se ejecuta el codigo de ese caso. Aqui el ejemplo: int dinero=100; switch(dinero) { case 90: cout<<"Tienes 90 cordobas"; break; case 120: cout<<"Tienes 120 cordobas"; break; default: cout<<"No tienes ni 90 ni 120, tienes otra cantidad."; break; } Descompongamos en codigo. Siempre empezamos declarando la variable de dinero ya que con ella tomaremos decisiones. Luego vamos y empezamos el switch. La estructura del switch es: switch (<variable> entonces como la variable que nos ayuda a tomar decisiones es “dinero” ponemos: switch(dinero) Despues empezamos a hacer los casos. Los casos tienen esta estructura: case x: codigo a ejecutarse aqui!! break; Empiezan con la palabra reservada: “case” luego la condicion, X sera un numero que puede tomar dinero, despues si se cumple esa condicion ejecutamos el codigo, y al final para terminar el caso ponemos un break; El break lo que hace es que nos salimos del switch al terminar el caso. case 90: //si la variable dinero vale 90 cout<<"Tienes 90 cordobas"; //ejecutamos este codigo break; //termina el switch aqui, el break nos saca del switch Por ultimo veremos el DEFAULT. Esto significa que si ninguna de las anteriores se cumple, entonces se ejecutara este codigo predefinido. DEFAULT = Predefinido. Entonces en el ejemplo como el dinero es 100 pero ningun caso tiene 100 como condicion, entonces se ejecutara el DEFAULT. Bueno eso es todo por hoy. Espero hayan entendido todo, cualquier pregunta o sugerencia hacerla en los foros de la web donde responderemos sus dudas. LeX. (unknown_gamer)