Herramientas y Lenguajes de Programación

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Herramientas y Lenguajes de Programación"

Transcripción

1 Herramientas y Lenguajes de Programación Coromoto León Hernández 1,5 créditos Universidad de La Laguna Programa de Doctorado de Física e Informática Dpto. de Estadística, I.O. y Computación

2 Resumen El curso Herramientas y Lenguajes de Programación del programa de doctorado de Física e Informática está clasificado como metodológico (optativo). La Figura 1 muestra los distintos itinerarios que se pueden seguir en el programa de doctorado. Figura 1: Itinerarios del Programa de Doctorado El curso está dividido en tres partes. Este material cubre la parte del curso relacionada con la manipulación de herramientas informáticas y el desarrollo de aplicaciones.

3 Índice general 1. Introducción Desarrollo de aplicaciones Informáticas Herramientas Proceso de Compilación Compilación de programas formados por varios módulos Creación de Librerías Documentación Lenguajes de Programación Programas Java: Aplicaciones Ejemplo de aplicación Ejercicios Programas Java: applets Ejemplo de applet Ejercicios Creación de Threads La clase Thread La interfaz Runnable Ejercicios Sincronización de Threads Exclusión mutua y secuencialización Ejercicios Direcciones IP y Nombres de Dominio La clase InetAddress Ejercicios Las clases Java DatagramPacket y DatagramSocket Introducción La clase DatagramPacket La clase DatagramSocket

4 Herramientas y Lenguajes de Programación Ejercicios Las clases Java Socket y ServerSocket Introducción Sockets La clase Socket La clase ServerSocket La clase Thread y la implementación de servidores Ejercicios Códigos Fuente del Servidor de chistes iterativo Códigos Fuente del Servidor de chistes concurrente

5 Capítulo 1 Introducción El principal objetivo de está parte del curso de doctorado es dotar al alumno de las habilidades necesarias para la manipulación de herramientas informáticas que le permitan realizar una labor investigadora eficaz. En el desarrollo de un proyecto informático uno de los aspectos más importantes es la elección del lenguaje más apropiado para su implementación y las herramientas a utilizar. Existen múltiples herramientas informáticas y múltiples lenguajes de programación dependiendo del área de estudio. Una vez elegido el lenguaje, se ha de recabar información sobre las herramientas disponibles y realizar un estudio acerca de cuál se adapta mejor a las necesidades del proyecto a realizar. Así pues, es necesario iniciar al alumnado en el desarrollo sistemático y ordenado de aplicaciones informáticas integradas en proyectos de investigación. En este curso, se especifican de forma genérica las fases que componen el desarrollo e implementación de una aplicación informática y se formalizan las mismas con ejemplos concretos de realización. Los objetivos concretos del curso son: Manejar los fundamentos básicos del sistema operativo UNIX (Linux). Conocer las herramientas informáticas UNIX (Linux) fundamentales para el desarrollo de aplicaciones. Comprender los principios básicos de la programación imperativa, y oritentada a objetos. Reconocer la importacia de la generación de documentación que acompaña a todo proyecto informático. Comprender como diseñar algoritmos eficientes utilizando distintas técnicas algorítmicas Desarrollo de aplicaciones Informáticas En este apartado se expone de forma escueta cuáles son las partes que constituyen el desarrollo de un programa, esto es, las etapas de desarrollo de software. 3

6 Herramientas y Lenguajes de Programación Figura 1.1: Etapas del desarrollo de software Las etapas de desarrollo de software se pueden resumir en: 1. Diseñar una solución, proponiendo un algoritmo. 2. Traduccir la solución a pseudocódigo. 3. Implementar un programa en un lenguaje de programación (en el caso que estudiaremos Java). 4. Compilar el programa. 5. Realizar pruebas de ejecución. Aunque las etapas se presentan de forma secuencial, es habitual cometer errores que provoquen el tener que regresar a fases anteriores. El esquema que se muestra en la Figura 1.1 es válido para programas no demasiado complejos. Para los grandes proyectos informáticos exite un conjunto de técnicas de desarrollo que pueden estudiarse en cualquier libro de Ingeniería del Software, por ejemplo, R.S. Pressman, Ingeniería del Software: Un enfoque Prático, McGraw-Hill, 4 edición, ISBN Herramientas En el desarrollo de un proyecto informático un aspecto importante es qué tipo de herramientas se han de utilizar y el lenguaje más apropiado para su implementación. Existen

7 Herramientas y Lenguajes de Programación múltiples herramientas informáticas y múltiples lenguajes de programación dependiendo del área de estudio. El sistema operativo elegido para realizar los ejercicios práctico es este curso es Unix (Linux), debido a la diponibilidad de gran cantidad de herramientas que facilitan al programador el desarrollo y mantenimiento de sus programas. En este epígrafe, se hará un repaso de algunas de la principales herramientas que existen en el entorno Unix para el desarrollo de programas en el lenguaje de programación Java. Estas herramientas incluyen los compiladores - en los cuales se pueden encontrar diferencias según la versión Unix utilizada-, los intérpretes de la máquina virtual de Java (línea de comandos - stand-alone o herramientas de visualización - appletviewer), la creación de paquetes o bibliotecas, etc Proceso de Compilación Un traductor es un programa informático que traduce de un lenguaje fuente a un lenguaje objeto. Un compilador es un traductor en el que el lenguaje fuente es un Lenguaje de Programación de Alto Nivel, y el lenguaje objeto es Lenguaje Ensamblador o Lenguaje Máquina. El proceso de traducción que tiene que realizar un compilador, se puede dividir en los siguientes pasos: Preprocesamiento Compilación (propiamente dicho) y Optimización Generación de Código Objeto Enlace ( linker ) No es uno de los objetivos de este curso el estudiar en profundidad el proceso de compilación sino utilizar las herramientas disponibles para llevarlo a cabo. Para un estudio en detalle de los compiladores recomendamos el libro: A. Aho, R. Sethi, J. Ullman, Compiladores. Principios, Técnicas y Herramientas, Adisson-Wesley Iberoamericana, IS- BN La Figura 1.2 muestra el conjunto de herramientas que proporciona el paquete GCC de GNU para los compiladores de los lenguajes C y C++. El prepocesador ( cpp ) se invoca con el comando: g++ programa.c -E -o programa.i El compilador propiamente dicho ( comp ) se llama con la orden: g++ programa.c -S -o programa.s La llamada al ensamblador ( as ) utiliza la opción -c: g++ programa.c -c -o programa.o

8 Herramientas y Lenguajes de Programación Figura 1.2: Herramientas del compilador de GCC El editor de carga y enlace (ld) se invoca automáticamente sin especificar ninguna opción: g++ programa.c Se obtiene el fichero a.out que ya es ejecutable. Los ficheros intermedios generados se almacenan en /tmp y se borran cuando termina todo el proceso de compilación. En el caso de Java, se habla de un lenguaje de programación y de una plataforma de ejecución. Como lenguaje de programación de alto nivel se ha de destacar que es completamente orientado a objetos y tiene definida una sintaxis y una semántica. La plataforma de ejecución de Java está compuesta por: La Máquina Virtual de Java (Java Virtual Machine - JVM) Los APIs (Application Programming Interfaces - Paquetes) Compilación de programas formados por varios módulos Consideremos la división de la implementación de un problema C/C++ en dos ficheros: programa1.cc y programa2.cc. Según se muestra en la Figura 1.3, el primer paso consiste en editar dichos ficheros (con el editor vi, por ejemplo). A continuación, la orden que se debería emitir para generar la aplicación es:

9 Herramientas y Lenguajes de Programación Figura 1.3: Compilación de varios módulos separados g++ programa1.c programa2.c Se ha de tener en cuenta, que la llamada al enlazador (linker) se realiza de forma automática. Por lo tanto, los dos ficheros intermedios, programa1.o y programa2.o se borraran al finalizar la operación. Si se quieren conservar ambos es necesario compilar con los comandos: g++ -c programa1.c g++ -c programa2.c g++ programa1.o programa2.o La procedencia de los ficheros que aporta el sistema operativo al proceso de compilación es la siguiente: Ficheros de Cabecera - directorio /usr/include Librerías - directorios /lib, /usr/lib Creación de Librerías La creación de librerías (o bibliotecas) aporta modularidad y portabilidad a los programas. Una librería es un fichero que está compuesto por una colección de otros ficheros llamados miembros de la librería. La estructura de una librería posibilita la extracción de

10 Herramientas y Lenguajes de Programación sus miembros. Cuando se añade un fichero a una librería, los datos de éste y su información administrativa (permisos, fechas, propietario, grupo, etc.) se introduce en él. Para una descripción detallada de las opciones de esta herrmienta visite la página de manual (man ar). Las funciones básicas de ar son: crear, modificar y extraer miembros. ar [-] opciones [miembro] librería [ficheros] Entre las opciones se deben distinguir aquellas que son obligatorias y los modificadores. Cuando se emite una orden ar es necesario que haya una obligatoria y sólo una. Los paquetes Java agrupan las clases en librerías (bibliotecas). Los paquetes Java se utilizan de forma similar a como se utilizan las librerías en C++, sólo que en Java se agrupan clases y/o interfaces. En los paquetes las clases son únicas, comparadas con las de otros paquetes, y permiten controlar el acceso. Esto es, los paquetes proporcionan una forma de ocultar clases, evitando que otros programas o paquetes accedan a clases que son de uso exclusivo de una aplicación determinada. Los paquetes se declaran utilizando la palabra reservada package seguida del nombre del paquete. Esta sentencia debe estar al comienzo del fichero fuente. Concretamente debe ser la primera sentencia ejecutable del código Java, excluyendo, los comentarios y espacios en blanco. Por ejemplo: package figuras; public class Circulo {... En este caso, el nombre del paquete es figuras. La clase Circulo se considera como parte del paquete. La inclusión de nuevas clases en el paquete es simple, se ha de colocar la misma sentencia al comienzo de los ficheros que contengan la declaración de las clases. Cada uno de los ficheros que contengan clases pertenecientes a un mismo paquete, deben incluir la misma sentencia package, y solamente puede haber una sentencia package por fichero. La sentencia package colocada el comienzo de un fichero fuente afectará a todas las clases que se declaren en ese fichero. Se pueden referenciar paquetes precediendo con su nombre la clase que se quiere usar. También se puede usar la palabra reservada import, si se van a colocar múltiples referencias a un mismo paquete. La sentencia import se utiliza para incluir una lista de paquetes en los que buscar una clase determinada, y su sintaxis es: import nombre_paquete.nombre_clase; Esta sentencia, o grupo de ellas, deben aparecer antes de cualquier declaración de clase en el código fuente.

11 Herramientas y Lenguajes de Programación Documentación La herramienta javadoc genera páginas HTML de documentación del API a partir de ficheros con código fuente Java. En la línea de comandos se le puede pasar a javadoc una serie de paquetes o ficheros Java para los que se desea generar documentación. Se genera documentación para el paquete especificado o para los ficheros fuentes Java individuales que se listen en la línea de comandos. Se genera un fichero.html por cada fichero.java que se encuentre. También se genera la jerarquía de clases (tree.html) y un índice con todos los miembros que ha detectado (AllNames.html). La utilidad javadoc extrae información de los siguiente elementos: Paquetes Clases e interfaces públicas Métodos públicos y protegidos Datos públicos y protegidos Se puede añadir documentación para todos estos entes a través de comentarios de documentación en el código fuente. Estos comentarios pueden incluir marcas HTML. Un comentario de documentación está formado por todos los caracteres incluidos entre /** que indica el comienzo del comentario y */ que indica el final. En todas las líneas intermedias los caracteres * a la izquierda se ignoran, y también todos los espacios y tabuladores que precedan a ese carácter *. /** * Este es un comentario de documentación */ Se pueden incluir etiquetas HTML dentro de un comentario de documentación, aunque no deben utilizarse las etiquetas <h1>, <h2>,... o líneas horizontales <hr>, porque javadoc crea una estructura completa para el documento y estas marcas interfieren con el formato general de ese documento. Cada comentario de documentación puede incluir texto libre seguido de etiquetas de documentación. Estas etiquetas comienzan siempre con el y deben situarse al principio de la línea (tener en cuenta que todo lo que haya hasta el primer carácter * se ignora) y todas las etiquetas con el mismo nombre deben agruparse juntas dentro del comentario de documentación. Marcas de documentación de clases e nombre_de_clase Añade un enlace a la clase especificada en la zona See Also. Por ejemplo:

12 Herramientas y Lenguajes de Programación <a href="spec.html">especif. Java</a> Se utiliza el carácter # para separar el nombre de una clase del nombre de uno de sus campos de datos, métodos o texto-version Añade una entrada Version. El texto no tiene que tener formato texto-autor Añade una entrada Author. El texto no tiene que tener formato texto Este texto no tiene una estructura especial. Se utiliza para indicar desde qué fecha o desde qué versión se ha introducido el cambio o característica que indica el texto Añade un comentario indicando que el método está desautorizado y no debería utilizarse porque puede dejar de ser soportada por el API. La convención que se sigue es indicar en el texto la función o método por quien se ha sustituido. Ejemplo de comentario de una clase: /** * Clase que representa la figura geométrica cilindro * Por ejemplo: * <PRE> * Cilindro c = new Cilindro(1.0); * double d = c.volumen(); * </PRE> * figuras.circulo figuras.objetogeometrico Mar 04 Coromoto Leon Hernandez */ public class Cilindro extends Circulo {...

13 Herramientas y Lenguajes de Programación Marcas de documentación de campos de datos La única marca especial que se puede incluir es la Ejemplo de comentario de un campo de datos: /** * El palo de bastos */ public static final int BASTOS = 1; Marcas de documentación de constructores y métodos Pueden ser y parametro descripcion Añade un parámetro a la sección Parameters. La descripción puede continuar en la línea descripcion Añade una sección Return, que debe contener la descripción del valor a exception descripcion Añade una entrada Throws, que contiene el nombre de la excepción que puede ser lanzada por el método. La excepción estará enlazada con su clase en la nombre_de_clase Añade un enlace a la clase en la zona See texto Indica desde qué fecha o desde qué versión se ha introducido el cambio o característica que indica el texto Indica que no debería utilizarse el método, porque está desautorizado y puede dejar de ser soportado por el API en cualquier momento. Ejemplo de comentario de un método: /** * Devuelve el carácter de la posición indicada entre * <tt>0</tt> y <tt>length()-1</tt> indice La posición del carácter a obtener El carácter situado en la posición

14 Herramientas y Lenguajes de Programación Figura 1.4: Evolución de la metodología de programación StringIndexOutOfRangeException * Se prodcue cuando el indice no está en * el rango <tt>0</tt> a <tt>length()-1</tt> */ public char charat( int indice ) { Lenguajes de Programación El debate en este caso se centra en la programación orientada a objetos frente a la programación tradicional. La Figura 1.4 muestra la evolución de la metodología de la programación desde los primeros tiempos de la informática hasta hoy. En la historia de la programación ha habido varias evoluciones sucesivas. Una de las principales fue la programación estructurada, cuyo principio fundamental era dividir un programa en subprogramas más pequeños y fáciles de resolver, hasta llegar a niveles de complejidad elementales, siempre apoyándose en la idea de Qué debe hacer el programa?. Este método de diseño, a pesar de haber dado resultados satisfactorios, tiene limitaciones. Algunas de ellas son: No favorece la reulitización del código. Si en la figura anterior fn1 y fn2 fueran idénticas, este hecho seguramente pasaría desapercibido y no se compartiría una única función f n. Si dos subprogramas comparten una misma función f n reutilizando así el código que define la misma, y más adelante queremos modificar fn porque hay un cambio en uno de los subprogramas que la utilizan, la modificación afectará también al otro subprograma, razón por la que ahora tendremos que realizar dos funciones. Por lo tanto, se tiene que la programación tradicional se desarrolla a partir de procedimientos y datos, sin delimitar qué procedimientos actúan sobre qué datos. El diseño orientado a objetos se interesa en primer lugar por los datos, a los que se asocian posteriormente procedimientos. En este caso la idea principal es de qué trata el

15 Herramientas y Lenguajes de Programación programa?. Así que el desarrollo se organiza en torno a los datos y no a como se debe funcionar. En la programación orientada a objetos, un programa es una colección de una sóla entidad básica, el objeto, el cual combina los datos con los procedimientos que actúan sobre ellos. Durante la ejecución los objetos reciben y envían mensajes a otros objetos para ejecutar las acciones requeridas. La programación orientada a objetos se puede llevar a cabo con lenguajes convencionales, pero esto exige al programador la construcción de los mecanismos de que disponen los lenguajes orientados a objetos, tales como: objetos, clases, métodos, mensajes, herencia. etc.

16 Herramientas y Lenguajes de Programación

17 Capítulo 2 Programas Java: Aplicaciones El objetivo de este ejercicio práctico es mostrar el modo de funcionamiento de los distintos tipos de programas Java. En este caso se abordarán las aplicaciones Ejemplo de aplicación El código que aparece a continuación implementa en Java la aplicación que muestra en la terminal la frase Hola Mundo en Java : 1 /** 2 * Applicacion Simple 3 */ 4 class AplicacionSimple { 5 public static void main(string[] args) { 6 System.out.println("Hola Mundo en Java"); 7 8 El primer paso para manipular una aplicación Java es compilarla ejecutando en la línea de comandos la instrucción >javac AplicacionSimple.java Es importante que el nombre del fichero que contiene el código coincida exactamente con el nombre de la clase que aparece en la línea número 3. Al realizar este paso se obtiene un fichero AplicacionSimple.class. Para ejecutar la aplicación escribimos en la línea de comandos >java AplicacionSimple y obtenemos el resultado que aparece en la figura

18 Herramientas y Lenguajes de Programación Figura 2.1: Ejecución de la aplicación 2.2. Ejercicios 1. Compile y ejecute el ejemplo de aplicación. 2. Escriba una aplicación Java que: Contemple la creación de una clase (Clase1) que contengan un atributo entero y métodos para establecer y recuperar los valores de dicho atributo. Definir una segunda clase (Clase2) con un atributo que es un objeto de la Clase1 y con un método que establece diez valores diferentes en el atributo de la Clase1. Definir una tercera clase (Clase3) con un atributo que es un objeto de la Clase1 y con un método que recupera diez valores del atributo de la Clase1. Finalmente, crear una clase de prueba donde se instancien objetos de las clases anteriores y se invoque a sus métodos. 3. Escriba la jerarquía de clases del programa que ha desarrollado. 4. Dibuje una traza del flujo de ejecución de la aplicación. 5. Comente sus clases utilizando javadoc genere ficheros de descripción de su clase similares a los de la documentación de las API de Java. En el documento de descripción de la herramienta Javadoc puede encontrar la forma de uso de las distintas etiquetas disponibles: (conexión a @return Ejecute el comando javadoc desde la línea de comandos sin ningún argumento y obtendrá una lista de las opciones con las que puede llamar a la herramienta.

19 Herramientas y Lenguajes de Programación Nótese que para que aparezcan en el fichero html los comentarios asociados a los campos de datos privados, tiene que compilarlos con la opción -private. De la misma forma, para que aparezcan el autor y la versión, se han de utilizar las opciones -author y -version.

20 Capítulo 3 Programas Java: applets El objetivo de esta práctica es mostrar el modo de funcionamiento de los distintos tipos de programas Java. En esta práctica se abordarán los applets Ejemplo de applet El código que aparece a continuación muestra la implementación en Java del programa que muestra en la ventana principal del navegador la frase Hola Mundo en Java : /** * Applet Sencillo */ import java.applet.applet; import java.awt.graphics; public class AppletSimple extends Applet{ public void paint(graphics g){ g.drawstring("hola Mundo en Java", 50, 25); El primer paso para manipular un applet Java es compilarlo ejecutando en la línea de comandos la instrucción >javac AppletSimple.java Al realizar este paso se obtiene una fichero AppletSimple.class. El fichero.class resultante de la compilación, se ha de incrustar en un fichero para ser ejecutado por un navegador. En este caso las etiquetas a utilizar son <APPLET> y </APPLET>. 18

21 Herramientas y Lenguajes de Programación El siguiente código html contine la estructura de la etiqueta para el ejemplo que nos ocupa (está almacenado en un fichero con nombre html.html). <html> <head> <title> Un applet simple </title> </head> <body> <p> A continuación está la salida del programa </p> <applet code="appletsimple.class" width="300" height="100"> No hay disponible un intérprete de Java </applet> </body> </html> Nótese que en el atributo asociado code de la etiqueta <APPLET> se ha especificado AppletSimple.class y no AppletSimple.java. Figura 3.1: Ejecución del applet en un navegador Finalmente, cuando se abre con un navegador el fichero html.html se obtiene el resultado que se muestra en la figura 3.1. El paquete de desarrollo que proporciona SUN también ofrece una herramienta de visualización. Para usarla se ha de ejecutar: >appletviewer html.html La herramienta appletviewer sólo muestra el applet. Ignora el código html en el que está incrustado (véase la figura 3.2).

22 Herramientas y Lenguajes de Programación Figura 3.2: Ejecución del applet con appletviewer 3.2. Ejercicios 1. Compile y ejecute el ejemplo de applet. 2. Implemente un applet que: Defina la misma jerarquía de clases que en la práctica anterior, pero en la que la Clase1 se denomine CampoTextoEntero y extienda a la clase java.awt.textfield, proporcionando métodos para establecer y recuperar un valor entero en un campo de texto. Cree una clase de prueba que extienda a la clase java.awt.applet, donde se instancien objetos de las clases definidas por usted y un objeto de la clase java.awt.button. Para añadir las componentes al applet utilizar el método add en el la implementación del método init del applet. Implemente los eventos de manera que cuando el usuario pulse el botón se invoquen a los métodos que permiten establecer y recuperar los diez valores del campo de texto. Para ello, la clase debe implementar la interfaz ActionListener que sólo incluye al método public void actionperformed(actionevent e). Para registrar al applet como oyente del objeto botón utilizar el método addactionlistner. 3. Escriba la jerarquía de clases del applet que ha desarrollado. 4. Dibuje una traza del flujo de ejecución del applet.

23 Capítulo 4 Creación de Threads El objetivo de esta práctica es introducir al uso de los threads (hilos) y trabajar con las clases que permiten su creación La clase Thread Para crear y ejecutar un thread, en primer lugar, hay que definir una clase que extienda a la clase Thread. Esta clase debe sobreescribir el método run(), que le dice al sistema la tarea que debe ejecutar el thread. class AClass extends Thread {... public void run() {... En una clase cliente se crea un objeto thread. A estos objetos se les denomina objetos ejecutables. El método start() le indica al sistema que el thread está listo para ejecutarse. public class Client {... public static void main(string [] args) {... AClass ut = new AClass();... ut.start();... 21

24 Herramientas y Lenguajes de Programación La interfaz Runnable Para crear un thread para una clase que hereda de otra, es necesario implementar la interfaz Runnable. Para ello podemos seguir los siguientes pasos generales: Añadir en la declaración de la clase que se va a implementar la interfaz Runnable: public class AClass extends MotherClass implements Runnable Declarar un objeto Thread en la clase destino. Por ejemplo, las siguientes sentencias declaran una instancia de la clase Thread, t, con valor inicial nulo: private Thread t = null; Por defecto, el valor inicial es nulo, así que la asignación al valor null no es necesaria. Crear un thread (con el operador new) y ponerla en marcha llamando a su método start(): t = new Thread(this); //crear el thread t.start(); //poner en marcha el thread El argumento this en el constructor del thread es indispensable, puesto que especifica que el método run() de la clase actual es el que se debe llamar cuando se ejecute el thread. El método start() del thread provoca que el método run() se ejecute. Implementar en el método run() de la clase, la tarea que se quiere que ejecute el thread Ejercicios 1. Escriba una aplicación Java que implemente lo siguiente: Contemple la creación de una clase (Mostrador) que contengan un atributo entero y métodos para establecer y recuperar los valores de dicho atributo. Escriba una aplicacion Productor/Consumidor en la que se instancian dos objetos: uno de tipo Productor y otro de tipo Consumidor. Estos objetos son threads que se encargan uno de poner un valor y el otro de recogerlo de un objeto de tipo Mostrador.

25 Herramientas y Lenguajes de Programación Productor Consumidor Mostrador Figura 4.1: Ejemplo del Productor/Consumidor El Productor genera un entero entre 0 y 1000, lo almacena en el mostrador y lo imprime. El Consumidor al contrario, consume el entero del mostrador, que es exactamente el mismo objeto en el que el Productor coloca los enteros. Así pues, el productor y el consumidor de este ejemplo comparten los datos a través del objeto de tipo Mostrador (figura 8.3). 2. Dibuje la jerarquía de clases que ha implementado. 3. Dibuje el diagrama de ejecución de la aplicación (tiempo método). 4. Escriba un applet que implemente lo mismo que el ejercicio Dibuje la jerarquía de clases para el applet. 6. Dibuje el diagrama de ejecución del applet (tiempo método).

26 Capítulo 5 Sincronización de Threads El objetivo de esta práctica es trabajar con los principios básicos de los threads (hilos): la sincronización y la secuencialización Exclusión mutua y secuencialización La programación se vuelve un poco más compleja cuando se tiene un programa con threads. Considérese la siguiente descripción aparentemente sencilla: Los threads A y B comparten un dato, contador. El thread A efectúa repetidamente algunos cálculos que producen un entero y lo coloca en el contador. El thread B obtiene repetidamente el texto del contador y lo utiliza para sus propios cálculos. Cuando el programa esté en ejecución, el sistema alterna la ejecución de A y B. La forma en que ocurre esto varía de un Sistema Operativo a otro y está completamente fuera del control del programador. Es posible que el sistema ejecute un thread hasta terminarlo, antes de iniciar el otro; que ejecute tres instrucciones de un thread antes de hacer lo mismo con una del otro, e incluso que deje un thread en medio de una instrucción, lo suspenda y empiece con el otro. Una vez adevertido que es imposible suponer nada acerca del orden de ejecución de dos o más threads, aparecen los siguientes escenarios: 1. El thread A se ejecuta parcialmente en la actualización del contador y luego la ejecución cambia a B. El resultado de B puede recibir basura cuando trata de inspeccionar el contador. 2. El thread A escribe nueva información en el contador antes de que B inspeccione el valor antiguo. Este último se pierde. 3. El thread B recibe un valor y luego accede a contador de nuevo antes de que A haya generado un nuevo valor. Se utiliza dos veces el valor antiguo. 24

27 Herramientas y Lenguajes de Programación El escenario 1 requiere exclusión mutua, en que no permite que dos threads tengan acceso simultáneo al recurso compartido contador. Los escenarios 2 y 3 requieren secuencialización, en que cada thread debe esperar a que el otro termine de usar el recurso compartido. Es importante señalar que estos escenarios son problemáticos sólo porque los threads A y B tienen acceso al objeto contador. Si el código que ejecutan A y B no hiciera referencia a un objeto compartido, estos subprocesos podrían ejecutarse en el orden que decida el Sistema Operativo y dicho orden no tendría efecto en el resultado del programa. La aplicación PCTest.java contiene la definición de una aplicación Productor/Consumidor en la que se instancian dos objetos: uno de tipo Productor y otro de tipo Consumidor. Estos objetos son threads que se encargan uno de poner un valor y el otro de recogerlo de un objeto de tipo Mostrador. El Productor genera enteros entre 0 y 9, los almacena en el mostrador y los imprime. El Consumidor al contrario, consume todos los enteros del mostrador (que es exactamente el mismo objeto en el que el productor coloca los enteros) tan pronto como están disponibles. Así pues, el productor y el consumidor de este ejemplo comparten los datos a través del objeto de tipo Mostrador Ejercicios 1. Compile y ejecute la aplicación Productor/Consumidor. 2. Añada al código de la aplicación Productor/Consumidor las sentencias necesarias para que los dos threads que se ejecutan pasen al estado de dormido durante un intervalo aleatorio de tiempo. Cambia el resultado de la ejecución? Por qué? 3. Implemente los cambios necesarios para que el programa admita la creación de más de un thread productor y más de un thread consumidor. Ejecute el nuevo programa lanzando varios productores y varios consumidores. Dibuje el diagrama de la ejecución (métodos tiempo). 4. Añada los cambios necesarios al applet que se ha desarrollado en prácticas anteriores para que tenga el mismo funcionamiento que la aplicación Productor/Consumidor. Además: El Productor generará los enteros impares sucesivos y los colocará en el campo de texto compartido. El Consumidor ha de recoger los valores del campo de texto y sumarlos. El Productor indica el final de su tarea colocando el valor -1 en el campo de texto, mientras que el Consumidor utiliza el -1 como señal para informar de la suma. Finalmente cuando el usuario hace click en el botón del applet se lanzan los threads. Dibuje el diagrama de la ejecución (métodos tiempo).

28 Capítulo 6 Direcciones IP y Nombres de Dominio El objetivo de esta práctica es mostrar el modo de funcionamiento de las clase Java para definir nombres de recursos en Internet La clase InetAddress La clase InetAddress proporciona objetos que se pueden utilizar para manipular tanto direcciones IP como nombres de dominio. Ejemplo El ejemplo TestInetAddress.java trata de ilustrar la utilización de varios de los métodos de la clase InetAddress. Para que el programa se ejecute correctamente y no aparezca una excepción del tipo UnknownHostException, hay que estar conectados convenientemente. En caso de conectarse a un proveedor de Internet, la asignación de direcciones es automática por parte del ISP (Internet Service Provider), con lo cual se va a obtener una dirección diferente en cada conexión. import java.net.*; class TestInetAddress { public static void main( String[] args ) { try { System.out.println( "-> Direccion IP de una URL, por nombre" ); InetAddress address = InetAddress.getByName( "nereida.deioc.ull.es" ); System.out.println( address ); // Extrae la dirección IP a partir de la cadena que se // encuentra a la derecha de la barra /, luego proporciona // esta dirección IP como argumento de llamada al método getbyname() System.out.println( "-> Nombre a partir de la direccion" ); 26

29 Herramientas y Lenguajes de Programación int temp = address.tostring().indexof( / ); address = InetAddress.getByName( address.tostring().substring(temp+1) ); System.out.println( address ); System.out.println( "-> Direccion IP actual de LocalHost" ); address = InetAddress.getLocalHost(); System.out.println( address ); System.out.println( "-> Nombre de LocalHost a partir de la direccion" ); temp = address.tostring().indexof( / ); address = InetAddress.getByName( address.tostring().substring(temp+1) ); System.out.println( address ); System.out.println( "-> Nombre actual de LocalHost" ); System.out.println( address.gethostname() ); System.out.println( "-> Direccion IP actual de LocalHost" ); // Coge la dirección IP como un array de bytes byte[] bytes = address.getaddress(); // Convierte los bytes de la dirección IP a valores sin // signo y los presenta separados por espacios for( int cnt=0; cnt < bytes.length; cnt++ ) { int ubyte = bytes[cnt] < 0? bytes[cnt]+256 : bytes[cnt]; System.out.print( ubyte+" " ); System.out.println(); catch( UnknownHostException e ) { System.out.println( e ); System.out.println( "Debes estar conectado para que esto funcione bien." ); 6.2. Ejercicios 1. Compile y ejecute el ejemplo TestInetAddress. 2. Existe un gran número de nombres de dominio y direcciones IP en Internet, por lo que es deseable un servicio que permita asociar un nombre con la dirección correspondiente. Dicho servicio se conoce con el nombre de DNS (Servicio de Nombres de Dominio - Domain Name Service). Un ejemplo de este servicio es la utilidad UNIX nslookup. Utilizando nslookup, se puede encontrar el nombre de dominio de una dirección IP o viceversa, la dirección IP de un nombre de dominio. Haciendo uso de la clase InetAddress escriba un programa Java Nslookup.java que muestre la dirección IP de una máquina dado su nombre. Usage: java Nslookup <hostname>

30 Herramientas y Lenguajes de Programación Escriba un programa Java IPtoname.java que dada la dirección IP de una máquina muestre su nombre. Usage: java IPtoname <IP address> 4. Cuál es la IP de la dirección de red asignada a la Universidad de La Laguna?. Qué clase de red es (A hasta E)? 5. Cuál es el nombre de dominio del servidor web de la Universidad de La Laguna?. Cuál es su dirección IP? 6. Utilice los programas que ha implementado para completar la siguiente tabla: Dirección IP Nombre de Dominio cepba.upc.es

31 Capítulo 7 Las clases Java DatagramPacket y DatagramSocket El objetivo de esta sesión práctica es mostrar el modo de funcionamiento de las clases Java para definir datagramas y sockets de datagrama Introducción Las redes actuales utilizan el packet switching para la transferencia de datos. Los datos se envuelven en paquetes que se transfieren desde un origen a un destino, donde se extraen de uno en uno los datos de uno o más paquetes para reconstruir el mensaje original. Los nodos que se comunican a través de Internet utilizan principalmente dos protocolos: tcp - Transsmision Control Protocol udp - (Universal User) Datagram Protocol El protocolo udp - (User Universal) Datagram Protocol - se utiliza para comunicaciones en la que no se garantiza una transmisión fiable (reliable). udp no está orientado a conexión, por lo tanto no garantiza la entrega. udp envía paquetes de datos independientes, denominados datagramas, desde una aplicación a otra. El envío de datagramas es similar a enviar una carta a través del servicio postal: El orden de salida no es importante y no está garantizado, y cada mensaje es independiente de cualquier otro. En las comunicaciones basadas en datagramas como las udp, el paquete de datagramas contiene el número de puerto de su destino y udp encamina el paquete a la aplicación apropiada, como ilustra la figura 8.3. El API Java para udp proporciona una abstración del paso de mensajes, esto es, la forma más simple de comunicación entre ordenadores. Esto hace posible a un proceso emisor transmitir un único mensaje a un proceso receptor. Los paquetes independientes que contienen esos mensajes se denominan datagramas. En Java, el emisor especifica el 29

32 Herramientas y Lenguajes de Programación Figura 7.1: destino usando un socket (una referencia indirecta a un puerto particular usada por el proceso receptor en la máquina receptora). Un datagrama enviado mediante udp es trasmitido desde un proceso emisor a un proceso receptor sin reconocimiento o recomprobaciones. Si tiene lugar un fallo, el mensaje puede no llegar. Un datagrama es transmitido entre procesos cuando un proceso lo envía y otro proceso lo recibe. Cualquier proceso que necesite enviar o recibir mensajes debe en primer lugar crear un socket a un dirección de Internet y a un puerto local. Un servidor enlazará ese socket a un puerto servidor - uno que se hace conocido a los clientes de manera que puedan enviar mensajes al mismo. Un cliente enlaza su socket a cualquier puerto local libre. El método receptor devuelve la dirección de Internet y el puerto del emisor, además del mensaje, permitiendo a los receptores enviar una respuesta. Las clases Java para establecer comunicaciones mediante datagramas son: Datagram- Packet y DatagramSocket La clase DatagramPacket La clase DatagramPacket proporciona un constructor que permite crear instancias de un array de bytes parar: el mensaje, la longitud del mensaje, la dirección Internet y el puerto local del socket de destino, de la siguiente forma: array de bytes que contiene el mensaje longitud del mensaje dirección Intenet número de puerto Los objetos del tipo DatagramPacket se pueden transmitir entre procesos cuando un proceso los envía y otro los recibe. Esta clase proporciona otro constructor para usarlo cuando se recibe un mensaje. Sus argumentos especifican un array de bytes en el que recibir el mensaje y la longitud del array. Cuando se recibe un mensaje se pone en el DatagramPacket junto con su longitud, la dirección de Internet y el puerto del socket de envío. Se puede obtener el mensaje del objeto DatagramPacket mediante el método getdata(). Los métodos getport() y getaddress() permiten obtener el puerto y la dirección Internet del objeto de tipo DatagramPacket.

33 Herramientas y Lenguajes de Programación El proceso receptor del mensaje tiene que especificar un array de bytes de un tamaño determinado en el cual recibir el mensaje, esto es, ha de predecir el Tamaño del Mensaje. Si el mensaje es muy grande para el array se trunca cuando llega. El protocolo ip subyacente permite longitudes de paquetes de más de 2 16 bytes, que incluye tanto las cabeceras como los mensajes. Sin embargo, la mayoría de los entornos imponen una restricción en el tamaño a 8 kilobytes. Cualquier aplicación que necesite mensajes mayores que el máximo, debe fragmentarlos en pedazos de ese tamaño. Generalmente, una aplicación decidirá sobre un tamaño que no sea excesivamente grande pero que se adecue a su uso previsto La clase DatagramSocket La clase DatagramSocket da soporte a sockets para el envío y recepción de datagramas udp. Se proporciona un constructor que toma un puerto como argumento, para que sea usado por los procesos que necesitan usar un puerto particular. También se proporciona un constructor sin argumentos que permite al sistema escoger un puerto local libre. Estos constructores pueden lanzar una excepción del tipo SocketException si el puerto ya está en uso o si está reservado. Esta clase cuenta con los siguientes métodos: send() y receive(). Estos métodos permiten transmitir datagramas entre un par de sockets. El argumento del send es una instancia de un DatagramPacket que contiene un mensaje y su destino. El argumento del receive es un objeto DatagramPacket vacío en el cual se pondrá el mensaje, su longitud y su origen. Tanto el método send() como el receive() pueden lanzar una IOException. Las comunicaciones mediante datagramas de udp usan envíos no bloqueantes (nonblocking sends) y recepciones bloqueantes (blocking receives). Las operaciones de envío retornan cuando estas han dado el mensaje a los protocolos ip o udp subyacentes, los cuales son responsables de trasmitirlos a su destino. En la llegada, el mensaje es puesto en una cola por el socket que está asociado al puerto de destino. El mensaje puede ser recogido de la cola por una excepción o llamadas futuras de recepcion (receive()) sobre ese socket. Los mensajes son descartados en el destino si ningún proceso tiene asociado un socket al puerto de destino. El método receptor (receive()) se bloquea hasta que se recibe un datagrama, a menos que se establezca un tiempo límite (timeout) sobre el socket. Si el proceso que invoca al método receive() tiene otra tarea que hacer mientras espera por el mensaje, debería planificarse en un flujo de ejecución (thread) separado. setsotimeout(). Este método permite establecer un tiempo de espera. Con un tiempo de espera establecido, el método receive() se bloqueará por el tiempo especificado y entonces lanzará una InterruptedIOException().

34 Herramientas y Lenguajes de Programación connect(). Este método se utiliza para conectar a un puerto remoto particular y una dirección de Internet, en este caso el socket sólo es capaz de enviar y recibir mensajes desde esa dirección Ejercicios El siguiente código utiliza sockets datagrama para intercambiar una única cadena de datos. La lógica del programa es lo más sencilla posible para subrayar la sintáxis básica de las comunicaciones entre procesos. El emisor crea un paquete datagrama que contiene una dirección de destino, mientras que el paquete datagrama del receptor no incluye una dirección de destino. import java.net.*; import java.io.*; public class Example1Sender { public static void main(string[] args) { if (args.length!= 3) System.out.println ("This program requires three command line arguments"); else { try { InetAddress receiverhost = InetAddress.getByName(args[0]); int receiverport = Integer.parseInt(args[1]); String message = args[2]; // instantiates a datagram socket for sending the data DatagramSocket mysocket = new DatagramSocket(); byte[ ] buffer = message.getbytes( ); DatagramPacket datagram = new DatagramPacket(buffer, buffer.length, receiverhost, receiverport); mysocket.send(datagram); mysocket.close( ); // end try catch (Exception ex) { ex.printstacktrace( ); // end else // end main // end class El socket el emisor se enlaza a un número de puerto no especificado, mientras que el socket del receptor se enlaza a un número de puerto específico, para que el emisor pueda escribir este número de puerto en su datagrama como destino.

35 Herramientas y Lenguajes de Programación import java.net.*; import java.io.*; public class Example1Receiver { public static void main(string[] args) { if (args.length!= 1) System.out.println("This program requires a command line argument."); else { int port = Integer.parseInt(args[0]); final int MAX_LEN = 10; // This is the assumed maximum byte length of the datagram to be received. try { DatagramSocket mysocket = new DatagramSocket(port); // instantiates a datagram socket for receiving the data byte[ ] buffer = new byte[max_len]; DatagramPacket datagram = new DatagramPacket(buffer, MAX_LEN); mysocket.receive(datagram); String message = new String(buffer); System.out.println(message); mysocket.close( ); // end try catch (Exception ex) { ex.printstacktrace( ); // end else // end main // end class 1. Compile y ejecute el código del ejemplo en una máquina usando localhost como nombre de máquina. Por ejemplo se puede introducir el comando: java Example1Sender localhost Hola Ejecute los dos programas arrancando primero al receptor y después al emisor. El mensaje que se envíe no debería exceder la longitud máxima permitida que es de 10 caracteres. Describa el resultado de la ejecución. 2. Repita el ejercicio anterior utilizando las máquinas manis.etsii.ull.es y timple.- etsii.ull.es. 3. Vuelva a ejecutar las aplicaciones del apartado 1, esta vez ejecutando primero al emisor y luego al receptor. Describa y explique el resultado. 4. Repita el apartado 1, esta vez mandando un mensaje de longitud más grande que la máxima longitud permitida. Describa y explique la salida producida.

36 Herramientas y Lenguajes de Programación Añada código al proceso receptor de manera que el plazo máximo de bloqueo del receive sea de cinco segundos. Lance el proceso receptor pero no el proceso emisor. Cuál es el resultado? Descríbalo y explíquelo. 6. Modifique el código original de manera que el receptor ejecute indefinidamente un bucle que reciba y muestre los datos recibidos. Compílelo y ejecútelo de la siguiente forma: lance al receptor ejecute el emisor enviando un mensaje mensaje 1 en otra ventana, lanzar otra instancia del emisor, mandando un mensaje mensaje 2. Describa y explique el resultado. 7. Modifique el código original de manera que el emisor utilice el mismo socket para enviar el mismo mensaje a dos receptores diferentes. Primero lance los dos receptores y después al emisor. Cada receptor recibe el mensaje? Describa y explique el resultado. 8. Modifique el código original de manera que el emisor utilice dos socket distintos para enviar el mismo mensaje a dos receptores diferentes. Primero lance los dos receptores y después al emisor. Cada receptor recibe el mensaje? Describa y explique el resultado. 9. Modifique el código del último paso de modo que el emisor envíe de forma permanente, suspendiéndose durante 3 segundos entre cada envío. Modifique el receptor de manera que ejecute un bucle que repetidamente reciba datos y luego los muestre. Compile y ejecute los programas durante unos cuentos segundos antes de teminarlos con Ctrl-C. Describa y explique el resultado. 10. Modifique el código original de modo que el emisor también reciba un mensaje del receptor. Utilizar sólo un socket en cada proceso. Entregue este código.

37 Capítulo 8 Las clases Java Socket y ServerSocket El objetivo de esta sesión práctica es mostrar el modo de funcionamiento de las clases Java para definir sockets de flujo (stream) Introducción El paradigma Cliente/Servidor es quizás el más conocido de los paradigmas para aplicaciones de red. Se usa para describir un modelo de interacción entre dos procesos, que se ejecutan de forma simultánea. Este modelo es una comunicación basada en una serie de preguntas y respuestas, que asegura que si dos aplicaciones intentan comunicarse, una comienza la ejecución y espera indefinidamente que la otra le responda y luego continua con el proceso. Figura 8.1: Paradigma Cliente/Servidor 35

38 Herramientas y Lenguajes de Programación Los dos componentes del paradigma son: Cliente: aplicación que inicia la comunicación, es dirigida por el usuario. Servidor: es quien responde a los requerimientos de los clientes, son procesos que se están ejecutando indefinidamente. Los procesos clientes son más sencillos que los procesos de los servidores, los primeros no requieren de privilegios de sistemas para funcionar, en cambio los procesos servidores sí. Los usuarios cuando quieren acceder a un servicio de red, ejecutan un software cliente. El diseño de los servidores debe ser muy cuidadoso, debe incluir código para la manipulación de: autenticación: verificar la identidad del cliente. seguridad de datos: para que estos no puedan ser accedidos inapropiadamente. privacidad: garantizar que la información privada de un usuario, no sea accedida por alguien no autorizado. protección: asegurar que las aplicaciones no monopolicen los recursos del sistema. autorización: verificar si el cliente tiene acceso al servicio proporcionado por el servidor. La mayoría de las comunicaciones punto-a-punto en las redes (incluida Internet), están basadas en el modelo Cliente/Servidor. Desde el punto de vista Internet/Intranet, se tendría: Un servidor es un ordenador remoto en algún lugar de la red que proporciona información según petición. Un cliente funciona en su ordenador local, se comunica con el servidor remoto, y pide a éste información. El servidor envía la información solicitada. Un único servidor típicamente sirve a una multitud de clientes, ahorrando a cada uno de ellos el problema de tener la información instalada y almacenada localmente Sockets Normalmente, un servidor se ejecuta en una máquina específica y tiene un socket asociado a un número de puerto específico. El servidor simplemente espera a la escucha en el socket a que un cliente se conecte con una petición. El cliente conoce el nombre de la

Clases Java para comunicaciones en red

Clases Java para comunicaciones en red Clases Java para comunicaciones en red Lenguajes y Herramientas de Programación Universidad de La Laguna Programa de Doctorado de Física e Informática Escuela Técnica Superior Superior de Ingeniería Informática

Más detalles

Sockets. Los sockets son un mecanismo de comunicación entre procesos que se utiliza en Internet.

Sockets. Los sockets son un mecanismo de comunicación entre procesos que se utiliza en Internet. Sockets La biblioteca estándar de clases de Java nos proporciona todo lo que necesitamos para utilizar sockets en nuestras aplicaciones en el paquete java.net, por lo que tendremos que añadir la siguiente

Más detalles

Práctica 5: Implementación en C++ de sistemas cliente/servidor basados en comunicación

Práctica 5: Implementación en C++ de sistemas cliente/servidor basados en comunicación Práctica 5: Implementación en C++ de sistemas cliente/servidor basados en comunicación síncrona Programación de Sistemas Concurrentes y Distribuidos Grado de Ingeniería Informática Dpto. de Informática

Más detalles

Java Avanzado Facultad de Ingeniería. Escuela de computación.

Java Avanzado Facultad de Ingeniería. Escuela de computación. 2 Java Avanzado Facultad de Ingeniería. Escuela de computación. Java Avanzado. Guía 5 3 Introducción Este manual ha sido elaborado para orientar al estudiante de Java Avanzado en el desarrollo de sus prácticas

Más detalles

UNIVERSIDADE DA CORUÑA Departamento de Tecnoloxías da Información e as Comunicacións LABORATORIO DE RC: TUTORIAL DE SOCKETS EN JAVA

UNIVERSIDADE DA CORUÑA Departamento de Tecnoloxías da Información e as Comunicacións LABORATORIO DE RC: TUTORIAL DE SOCKETS EN JAVA UNIVERSIDADE DA CORUÑA Departamento de Tecnoloxías da Información e as Comunicacións LABORATORIO DE RC: TUTORIAL DE SOCKETS EN JAVA Índice 1. Presentación...3 2. Conceptos básicos...4 2.1. TCP...4 2.2.

Más detalles

La última versión disponible cuando se redactó este manual era la 5 Beta (versión ), y sobre ella versa este manual.

La última versión disponible cuando se redactó este manual era la 5 Beta (versión ), y sobre ella versa este manual. Manual de Dev-C++ 4.9.9.2 Página 1 de 11 Introducción Dev-C++ es un IDE (entorno de desarrollo integrado) que facilita herramientas para la creación y depuración de programas en C y en C++. Además, la

Más detalles

JAVA 7 Los fundamentos del lenguaje Java

JAVA 7 Los fundamentos del lenguaje Java Presentación 1. Historia 9 1.1 Por qué Java? 9 1.2 Objetivos del diseño de Java 10 1.3 Auge de Java 11 2. Características de Java 12 2.1 El lenguaje de programación Java 12 2.1.1 Sencillo 13 2.1.2 Orientado

Más detalles

Lenguaje Orientado por Objetos Simple, Poderoso y Fácil de aprender Robusto Interactivo Arquitectura neutral Interpretado y de alto desempeño

Lenguaje Orientado por Objetos Simple, Poderoso y Fácil de aprender Robusto Interactivo Arquitectura neutral Interpretado y de alto desempeño Programación Orientada a Objetos Introducción a Java Angela Carrillo Ramos Java: Lenguaje de Programación Por qué surge un lenguaje? Para adaptarse a los cambios de entorno y usos: Independencia de la

Más detalles

Introducción a Java LSUB. 30 de enero de 2013 GSYC

Introducción a Java LSUB. 30 de enero de 2013 GSYC Introducción a Java LSUB GSYC 30 de enero de 2013 (cc) 2013 Laboratorio de Sistemas, Algunos derechos reservados. Este trabajo se entrega bajo la licencia Creative Commons Reconocimiento - NoComercial

Más detalles

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones Unidad Didáctica 2 Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 1.0.3 Índice

Más detalles

Las clases Java Socket y ServerSocket

Las clases Java Socket y ServerSocket Las clases Java Socket y ServerSocket Lenguajes y Herramientas de Programación Universidad de La Laguna Programa de Doctorado de Física e Informática Escuela Técnica Superior Superior de Ingeniería Informática

Más detalles

Test : Conteste exclusivamente en una HOJA DE LECTURA ÓPTICA, no olvidando marcar que su tipo de examen es A.

Test : Conteste exclusivamente en una HOJA DE LECTURA ÓPTICA, no olvidando marcar que su tipo de examen es A. SISTEMAS INFORMÁTICOS I Junio 2003 INGENIERÍA EN INFORMÁTICA - Código Carrera 55 - Código Asignatura 077 Tipo de Examen: A NO SE PERMITE EL USO DE NINGÚN MATERIAL Tiempo: 2 horas Apellidos: Nombre: DNI:

Más detalles

FUNDAMENTOS DE INFORMÁTICA

FUNDAMENTOS DE INFORMÁTICA FUNDAMENTOS DE INFORMÁTICA Tema 1 Introducción a la Programación en Visual Basic Departamento de Ingeniería de Sistemas y Automática Universidad de Vigo undamentos de Informática. Departamento de Ingeniería

Más detalles

1. Cuántas sentencias hay en la secuencia principal del siguiente programa?

1. Cuántas sentencias hay en la secuencia principal del siguiente programa? 1. Cuántas sentencias hay en la secuencia principal del siguiente programa? public class PruebaSwitch { System.out.print ("Opcion: "); case 3: System.out.println ("miércoles "); A. 1. B. 4. C. Más de 10.

Más detalles

Tema 4. Excepciones en Java

Tema 4. Excepciones en Java Programación en Java Tema 4. Excepciones en Java Luis Rodríguez Baena Facultad de Informática Excepciones (I) Permiten la captura de errores en tiempo de ejecución. El control de excepciones permite extraer

Más detalles

Técnicas de Programación

Técnicas de Programación Técnicas de Programación 2.1.- Introducción: unos conceptos previos y primeros conceptos de la API Introducción La resolución de un problema con medios informáticos implica generalmente la siguiente secuencia

Más detalles

1.- FUNDAMENTOS...2 2.- FUNCIONAMIENTO GENÉRICO...3 3.- JAVA SOCKETS... 4. 3.4.1.- Creación de Streams de Entrada...7

1.- FUNDAMENTOS...2 2.- FUNCIONAMIENTO GENÉRICO...3 3.- JAVA SOCKETS... 4. 3.4.1.- Creación de Streams de Entrada...7 1.- FUNDAMENTOS...2 2.- FUNCIONAMIENTO GENÉRICO...3 3.- JAVA SOCKETS... 4 3.1.- INTRODUCCION... 4 3.2.- MODELO DE COMUNICACIONES CON JAVA...5 3.3.- APERTURA DE SOCKETS... 6 3.4.- CREACIÓN DE STREAMS...

Más detalles

Conceptos a tratar. Fundamentos de la Programación Orientada a Objetos Ampliación sobre clases y objetos

Conceptos a tratar. Fundamentos de la Programación Orientada a Objetos Ampliación sobre clases y objetos Fundamentos de la Programación Orientada a Objetos Ampliación sobre clases y objetos Programación Orientada a Objetos Facultad de Informática Dep. Ingeniería del Software e Inteligencia Artificial Universidad

Más detalles

UNIVERSIDAD CARLOS III DE MADRID DEPARTAMENTO DE INGENIERÍA TELEMÁTICA. Daniel Díaz Sánchez

UNIVERSIDAD CARLOS III DE MADRID DEPARTAMENTO DE INGENIERÍA TELEMÁTICA. Daniel Díaz Sánchez UNIVERSIDAD CARLOS III DE MADRID DEPARTAMENTO DE INGENIERÍA TELEMÁTICA Sockets para servidor Daniel Díaz Sánchez Florina Almenárez Andrés Marín Departamento de Ingeniería Telemática Universidad Carlos

Más detalles

Elementos de un programa en C

Elementos de un programa en C Elementos de un programa en C Un programa en C consta de uno o más archivos. Un archivo es traducido en diferentes fases. La primera fase es el preprocesado, que realiza la inclusión de archivos y la sustitución

Más detalles

INTRODUCCIóN A LA PROGRAMACIóN APUNTES DE JAVA APUNTES DE JAVA

INTRODUCCIóN A LA PROGRAMACIóN APUNTES DE JAVA APUNTES DE JAVA APUNTES DE JAVA FUNCIONAMIENTO DE UN PROGRAMA Assembler Ensamblador Ejecuta Programador Programa fuente BASIC Interprete Ejecuta C, C++, Pascal Compilador Compila Ejecuta Programa fuente Programa Objeto

Más detalles

Métodos para escribir algoritmos: Diagramas de Flujo y pseudocódigo

Métodos para escribir algoritmos: Diagramas de Flujo y pseudocódigo TEMA 2: CONCEPTOS BÁSICOS DE ALGORÍTMICA 1. Definición de Algoritmo 1.1. Propiedades de los Algoritmos 2. Qué es un Programa? 2.1. Cómo se construye un Programa 3. Definición y uso de herramientas para

Más detalles

Derechos de Acceso: COMPOSICION

Derechos de Acceso: COMPOSICION CLASES Una clase es un tipo definido por el usuario que describe los atributos y los métodos de los objetos que se crearan a partir de la misma. class nombre_clase cuerpo de la clase Derechos de Acceso:

Más detalles

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas 2 - Introducción al lenguaje Java, identificadores y comentarios. Carlos Montenegro Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas 1. Introducción: Java tiene como todos

Más detalles

PROGRAMACION ORIENTADA A OBJETOS EN C++

PROGRAMACION ORIENTADA A OBJETOS EN C++ PROGRAMACION ORIENTADA A OBJETOS EN C++ 1- INTRODUCCIÓN El lenguaje C++ representa el resultado de los esfuerzos realizados para proporcionar las ventajas de la programación Orientada a Objetos a un lenguaje

Más detalles

Modelo de Objetos Distribuidos

Modelo de Objetos Distribuidos Remote Method Invocation Modelo de Objetos Distribuidos Un objeto remoto es un objeto cuyos métodos pueden ser invocados desde otra máquina virtual de java, potencialmente en un host diferente. Modelo

Más detalles

I. Introducción a la programación orientada a objetos y al lenguaje JAVA Colegio Reuven Feuerstein --Javier Navarro

I. Introducción a la programación orientada a objetos y al lenguaje JAVA Colegio Reuven Feuerstein --Javier Navarro I. Introducción a la programación orientada a objetos y al lenguaje JAVA Colegio Reuven Feuerstein --Javier Navarro Lectura de Datos Dentro de un applet es sencillo tomar algún dato del usuario para realizar

Más detalles

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main.

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main. LENGUAJE C CARACTERISTICAS DEL LENGUAJE 'C' El lenguaje 'C' se conoce como un lenguaje compilado. Existen dos tipos de lenguaje: interpretados y compilados. Los interpretados son aquellos que necesitan

Más detalles

Tema 2 Conceptos básicos de programación. Fundamentos de Informática

Tema 2 Conceptos básicos de programación. Fundamentos de Informática Tema 2 Conceptos básicos de programación Fundamentos de Informática Índice Metodología de la programación Programación estructurada 2 Pasos a seguir para el desarrollo de un programa (fases): Análisis

Más detalles

MASTER PROFESIONAL C# 5 Y ASP.NET MVC 5

MASTER PROFESIONAL C# 5 Y ASP.NET MVC 5 MASTER PROFESIONAL C# 5 Y ASP.NET MVC 5 TEMARIO MODULO I. EL LENGUAJE C# 5 Introducción al desarrollo de soluciones informáticas. El Framework.NET. o Descripción de la plataforma. o Las especificaciones

Más detalles

EJEMPLOS PROGRAMACIÓN SOCKET - JAVA

EJEMPLOS PROGRAMACIÓN SOCKET - JAVA EJEMPLOS PROGRAMACIÓN SOCKET - JAVA 1.- Calcular el Cuadrado TCP En esta aplicación el cliente se conecta al servidor, para ello debe introducir la dirección IP del servidor y los parámetros sobre los

Más detalles

5. Sentencias selectivas o condicionales

5. Sentencias selectivas o condicionales 60 A. García-Beltrán y J.M. Arranz 5. Sentencias selectivas o condicionales Objetivos: a) Describir el funcionamiento de las sentencias selectivas o condicionales (if-else y switch) b) Interpretar el resultado

Más detalles

Tema 2 Introducción a la Programación en C.

Tema 2 Introducción a la Programación en C. Tema 2 Introducción a la Programación en C. Contenidos 1. Conceptos Básicos 1.1 Definiciones. 1.2 El Proceso de Desarrollo de Software. 2. Lenguajes de Programación. 2.1 Definición y Tipos de Lenguajes

Más detalles

UNIVERSIDAD POLITÉCNICA DE PACHUCA SOCKETS EN JAVA

UNIVERSIDAD POLITÉCNICA DE PACHUCA SOCKETS EN JAVA SOCKETS EN JAVA Los sockets son puntos finales de enlaces de comunicaciones entre procesos. Los procesos los tratan como descriptores de ficheros, de forma que se pueden intercambiar datos con otros procesos

Más detalles

TEMA 3. CONCEPTOS FUNDAMENTALES DEL NIVEL DEL SISTEMA OPERATIVO. Definición y objetivos de un S.O

TEMA 3. CONCEPTOS FUNDAMENTALES DEL NIVEL DEL SISTEMA OPERATIVO. Definición y objetivos de un S.O TEMA 3. CONCEPTOS FUNDAMENTALES DEL NIVEL DEL SISTEMA OPERATIVO Definición y objetivos de un S.O Definición y objetivos del sistema operativo Estructura, componentes y servicios de un S.O Llamadas al sistema

Más detalles

Qué es un programa informático?

Qué es un programa informático? Qué es un programa informático? Un programa informático es una serie de comandos ejecutados por el equipo. Sin embargo, el equipo sólo es capaz de procesar elementos binarios, es decir, una serie de 0s

Más detalles

Sockets en Java. Prof. Wílmer Pereira Universidad Simón Bolívar

Sockets en Java. Prof. Wílmer Pereira Universidad Simón Bolívar Sockets en Java Prof. Wílmer Pereira Universidad Simón Bolívar Arquitectura Cliente/Servidor Cliente Request Reply Servidor Cómo permitir comunicación entre objetos situados en diferentes máquinas? Sockets

Más detalles

Arquitecturas cliente/servidor

Arquitecturas cliente/servidor Arquitecturas cliente/servidor Creación de Sockets Cliente Servidor Creación de Sockets Cliente/Servidor Sockets en TCP Sockets en UDP Definición de DAEMON Concepto de Hilos Qué es un socket? Un socket

Más detalles

Federico Peinado www.federicopeinado.es

Federico Peinado www.federicopeinado.es Federico Peinado www.federicopeinado.es Depto. de Ingeniería del Software e Inteligencia Artificial disia.fdi.ucm.es Facultad de Informática www.fdi.ucm.es Universidad Complutense de Madrid www.ucm.es

Más detalles

El Modelo. Aplicación. Presentación. Sesión. Transporte. Red. Enlace. Físico

El Modelo. Aplicación. Presentación. Sesión. Transporte. Red. Enlace. Físico El Modelo Es una arquitectura por niveles para el diseño de sistemas de red que permiten la comunicación entre todos los dispositivos de computadoras. Esta compuesto por siete niveles separados, pero relacionados,

Más detalles

Red LSUB. 4 de marzo de 2015 GSYC

Red LSUB. 4 de marzo de 2015 GSYC Red LSUB GSYC 4 de marzo de 2015 (cc) 2015 Laboratorio de Sistemas, Algunos derechos reservados. Este trabajo se entrega bajo la licencia Creative Commons Reconocimiento - NoComercial - SinObraDerivada

Más detalles

Tema 1. Introducción a JAVA

Tema 1. Introducción a JAVA Tema 1. Introducción a JAVA Historia Características Plataforma Java Entorno de desarrollo Ejemplo: Hola mundo Estructura general de un programa Java 1 Historia de Java (i) Surge en 1991: Sun Microsystems

Más detalles

Principios de Computadoras II

Principios de Computadoras II Departamento de Ingeniería Electrónica y Computadoras Ing. Ricardo Coppo rcoppo@uns.edu.ar Qué es un Objeto? Un objeto es una instancia de una clase Las clases actuán como modelos que permiten la creación

Más detalles

Normalmente, los programas son ejecutados de forma secuencial. Único flujo de control

Normalmente, los programas son ejecutados de forma secuencial. Único flujo de control Hilos BUAP Introducción Normalmente, los programas son ejecutados de forma secuencial Único flujo de control Un programa con un único flujo de control, ejecuta sólo una tarea (hilo) Dr. Ivan Olmos 2 Introducción

Más detalles

Java Avanzado. Guía 1. Java Avanzado Facultad de Ingeniería. Escuela de computación.

Java Avanzado. Guía 1. Java Avanzado Facultad de Ingeniería. Escuela de computación. Java Avanzado. Guía 1 Java Avanzado Facultad de Ingeniería. Escuela de computación. Java Avanzado. Guía 2 Introducción Este manual ha sido elaborado para orientar al estudiante de Java Avanzado en el desarrollo

Más detalles

Práctica 5: Servidor web concurrente en Java

Práctica 5: Servidor web concurrente en Java Práctica 5: Servidor web concurrente en Java Esta práctica pretende familiarizar al alumno con la programación de servidores que emplean sockets TCP. Para ello partiremos del servidor web básico visto

Más detalles

Qué es Java? Introducción a Java. Lenguajes Orientados a Objetos. Qué es Java? Historia de Java. Objetivos de Java

Qué es Java? Introducción a Java. Lenguajes Orientados a Objetos. Qué es Java? Historia de Java. Objetivos de Java Qué es? Introducción a es Un lenguaje de programación Un entorno de desarrollo Un entorno de ejecución de aplicaciones Un entorno de despliegue de aplicaciones Utilizado para desarrollar, tanto applets

Más detalles

Guía práctica de estudio 05: Diagramas de flujo

Guía práctica de estudio 05: Diagramas de flujo Guía práctica de estudio 05: Diagramas de flujo Elaborado por: M.C. Edgar E. García Cano Ing. Jorge A. Solano Gálvez Revisado por: Ing. Laura Sandoval Montaño Guía práctica de estudio 05: Diagramas de

Más detalles

Agradecimientos. Nota de los autores. 1 Problemas, algoritmos y programas 1

Agradecimientos. Nota de los autores. 1 Problemas, algoritmos y programas 1 Prologo Agradecimientos Nota de los autores Índice general I III V VII 1 Problemas, algoritmos y programas 1 1.1 Programas y la actividad de la programación.................... 4 1.2 Lenguajes y modelos

Más detalles

TEMA 2 Introducción a C# ANÁLISIS Y DESARROLLO DE APLICACIONES INFORMÁTICAS Curso 2010/2011

TEMA 2 Introducción a C# ANÁLISIS Y DESARROLLO DE APLICACIONES INFORMÁTICAS Curso 2010/2011 TEMA 2 Introducción a C# ANÁLISIS Y DESARROLLO DE APLICACIONES INFORMÁTICAS Curso Origen Nuevo lenguaje de propósito general de Microsoft para la plataforma.net Es el único que ha sido diseñado específicamente.net

Más detalles

Tema: Introducción al IDE de Microsoft Visual C#.

Tema: Introducción al IDE de Microsoft Visual C#. Tema: Introducción al IDE de Microsoft Visual C#. Objetivos: El propósito de este tema es que el alumno se familiarice con el entorno de desarrollo de Visual C# Express mientras crea el formulario más

Más detalles

Agosto de 2012 TUTORIAL PSEINT. Servicio Nacional de Aprendizaje SENA Jordan Angulo Canabal

Agosto de 2012 TUTORIAL PSEINT. Servicio Nacional de Aprendizaje SENA Jordan Angulo Canabal Agosto de 2012 PSEINT TUTORIAL Servicio Nacional de Aprendizaje SENA Jordan Angulo Canabal Pseint Acerca de Pseint PSeInt es principalmente un intérprete de pseudocódigo. El proyecto nació como trabajo

Más detalles

Programación Orientada a Objetos en Java

Programación Orientada a Objetos en Java Programación Orientada a Objetos en Java Curso 2006-2007 Tema 1 Introducción a Java Gonzalo Méndez Pozo Dpto. de Ingeniería de Software e Inteligencia Artificial Universidad Complutense de Madrid Historia

Más detalles

Estructuras en LabVIEW.

Estructuras en LabVIEW. Estructuras en LabVIEW. Sumario: 1. Ejecución según el flujo de datos. 2. Estructuras básicas disponibles en LabVIEW. a) Estructura Sequence. b) Estructura Case. c) Estructura For Loop. d) Estructura While

Más detalles

Unidad II. Fundamentos de programación en Java. Ing. José Luis Llamas Cárdenas

Unidad II. Fundamentos de programación en Java. Ing. José Luis Llamas Cárdenas Unidad II Fundamentos de programación en Java Ing. José Luis Llamas Cárdenas En java para poder escribir se emplea el objeto System.out, t pero para leer del teclado es necesario emplear System.in Et Este

Más detalles

Capítulo 5. Programación de aplicaciones de red

Capítulo 5. Programación de aplicaciones de red Capítulo 5. Programación de aplicaciones de red Redes de Ordenadores 2º Grado en Ingeniería en Tecnologías de Telecomunicación 1 Área de Ingeniería Telemática Capítulo 5: Programación de aplicaciones de

Más detalles

TUTORIAL PSEINT. Ing. Ronald Rentería Ayquipa. Fundamentos de Programación

TUTORIAL PSEINT. Ing. Ronald Rentería Ayquipa. Fundamentos de Programación TUTORIAL PSEINT Ing. Ronald Rentería Ayquipa Fundamentos de Programación PSEINT Página Oficial: http://pseint.sourceforge.net/ Es un software que interpreta pseudocódigo. Permite la generación de diagramas

Más detalles

Java en 2 horas. Rodrigo Santamaría

Java en 2 horas. Rodrigo Santamaría + Java en 2 horas Rodrigo Santamaría + Generalidades 2 Desarrollado por Sun en 1995 Hereda mucha de la sintaxis de C (1972) Fuertemente tipado y orientado a objetos Aplicaciones compiladas a bytecode Gestión

Más detalles

FUNCIONES PHP: DECLARACIÓN Y LLAMADAS. PARÁMETROS, RETURN. EJERCICIOS EJEMPLOS RESUELTOS. (CU00827B)

FUNCIONES PHP: DECLARACIÓN Y LLAMADAS. PARÁMETROS, RETURN. EJERCICIOS EJEMPLOS RESUELTOS. (CU00827B) APRENDERAPROGRAMARCOM FUNCIONES PHP: DECLARACIÓN Y LLAMADAS PARÁMETROS, RETURN EJERCICIOS EJEMPLOS RESUELTOS (CU00827B) Sección: Cursos Categoría: Tutorial básico del programador web: PHP desde cero Fecha

Más detalles

Flujos (streams) Programación. Licenciatura Lingüística y Nuevas Tecnologias Nadjet Bouayad-Agha

Flujos (streams) Programación. Licenciatura Lingüística y Nuevas Tecnologias Nadjet Bouayad-Agha Flujos (streams) Programación Nadjet Bouayad-Agha Licenciatura Lingüística y Nuevas Tecnologias 2007 Agenda Java e argumentos de entrada: args.zip Como leer e escribir datos de/a los flujos estándares.

Más detalles

Arrays unidimensionales. Dim.Option Base. Erase. Ejemplos en Visual Basic (CU00311A)

Arrays unidimensionales. Dim.Option Base. Erase. Ejemplos en Visual Basic (CU00311A) aprenderaprogramar.com Arrays unidimensionales. Dim.Option Base. Erase. Ejemplos en Visual Basic (CU00311A) Sección: Cursos Categoría: Curso Visual Basic Nivel I Fecha revisión: 2029 Autor: Mario R. Rancel

Más detalles

Tema 4: Corrección y Robustez en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle

Tema 4: Corrección y Robustez en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle Tema 4: Corrección y Robustez en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle Contenido Asertos en C++ Mecanismo de excepciones: Declaración de excepciones Lanzar excepciones

Más detalles

Instrucciones de configuración del acceso remoto (VPN) de la UCLM para Windows, Mac y Linux

Instrucciones de configuración del acceso remoto (VPN) de la UCLM para Windows, Mac y Linux Instrucciones de configuración del acceso remoto (VPN) de la UCLM para Windows, Mac y Linux Referencia -- Fecha 14/03/2016 Autores Área TIC Destinatarios Estudiantes, PDI y PAS de la UCLM Descripción Este

Más detalles

UNIDAD 1 GENERALIDADES HTML

UNIDAD 1 GENERALIDADES HTML UNIDAD 1 GENERALIDADES HTML GENERALIDADES HTML5 Una página web es un archivo con texto en el que se insertan diferentes etiquetas HTML, para que ese contenido pueda ser interpretado por el navegador web.

Más detalles

Programación Avanzada

Programación Avanzada Programación Avanzada Instructivo de Compilación 1 1 Índice 1 ÍNDICE... 2 2 INTRODUCCIÓN... 3 3 HERRAMIENTAS... 3 3.1 SINTAXIS DE LOS COMANDOS GCC Y G++... 3 3.2 OTRAS HERRAMIENTAS:... 4 3.3 EJEMPLOS:...

Más detalles

LABORATORIO ARQUITECTURAS SOFTWARE DE VARIOS NIVELES EN JAVA (I)

LABORATORIO ARQUITECTURAS SOFTWARE DE VARIOS NIVELES EN JAVA (I) LABORATORIO ARQUITECTURAS SOFTWARE DE VARIOS NIVELES EN JAVA (I) SEPARACIÓN DEL NIVEL DE PRESENTACIÓN Y LÓGICA DE NEGOCIO MEDIANTE EL USO DE INTERFACES JAVA 1. OBJETIVO Los objetivos de este laboratorio

Más detalles

TEMA 3: El proceso de compilación, del código fuente al código máquina

TEMA 3: El proceso de compilación, del código fuente al código máquina TEMA 3: El proceso de compilación, del código fuente al código máquina 3.1 Fase de compilación y linkado (link, montado o enlace) Un programa escrito en un lenguaje de alto nivel, no puede ser ejecutado

Más detalles

LICENCIAS DEL SUPERVISOR X PARA CÁMARAS Y DISPOSITIVOS IP

LICENCIAS DEL SUPERVISOR X PARA CÁMARAS Y DISPOSITIVOS IP Nota Técnica ESPAÑOL LICENCIAS DEL SUPERVISOR X PARA CÁMARAS Y DISPOSITIVOS IP Fecha revisión: Aplicación: Septiembre 2015 Supervisor X 1.1 Sistema de licencias del Supervisor X El Supervisor X requiere

Más detalles

PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez

PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez Elementos de lenguaje: Identificadores Tipos de datos 2 Tipos de datos primitivos 3 Tipos de datos referenciados Clases Interfaces Arrays

Más detalles

CURSO DE PROGRAMACIÓN EN JAVA J2EE 7 ÍNDICE

CURSO DE PROGRAMACIÓN EN JAVA J2EE 7 ÍNDICE CURSO DE PROGRAMACIÓN EN JAVA J2EE 7 ÍNDICE PRÓLOGO... 13 APECTOS BÁSICOS DE JAVA... 15 1.1. LA MÁQUINA VIRTUAL JAVA... 15 1.2. EDICIONES JAVA... 16 1.3. ESTRUCTURA DE UN PROGRAMA JAVA... 16 1.4. EL MÉTODO

Más detalles

Sistemas Distribuidos: Migración de Procesos

Sistemas Distribuidos: Migración de Procesos Sistemas Distribuidos: Migración de Procesos Yudith Cardinale Universidad Central de Venezuela Facultad de Ciencias Postgrado en Computación Octubre 2013 Febrero 2014 Objetivos Entender la importancia

Más detalles

4. Operadores Operador asignación

4. Operadores Operador asignación Programación orientada a objetos con Java 43 4. Operadores Objetivos: a) Describir los operadores (aritméticos, incrementales, de relación, lógicos y de asignación) y los tipos de dato primitivos sobre

Más detalles

Sockets en Java. La Creatividad proviene de un conflicto de ideas. Uso de Sockets

Sockets en Java. La Creatividad proviene de un conflicto de ideas. Uso de Sockets Uso de Sockets Este pequeño manual, le muestra cómo funciona el Socket Server para crear un pequeño servidor web que envía una página HTML a cualquier Navegador Web como Firefox, Internet Explorer, etc..

Más detalles

PHP: Lenguaje de programación

PHP: Lenguaje de programación Francisco J. Martín Mateos Carmen Graciani Diaz Dpto. Ciencias de la Computación e Inteligencia Artificial Universidad de Sevilla Tipos de datos Enteros Con base decimal: 45, -43 Con base octal: 043, -054

Más detalles

C1 INTRODUCCIÓN AL LENGUAJE C. Fundamentos de Informática Departamento de Ingeniería de Sistemas y Automática. EII. Universidad de Valladolid

C1 INTRODUCCIÓN AL LENGUAJE C. Fundamentos de Informática Departamento de Ingeniería de Sistemas y Automática. EII. Universidad de Valladolid C1 INTRODUCCIÓN AL LENGUAJE C Fundamentos de Informática Departamento de Ingeniería de Sistemas y Automática. EII. Universidad de Valladolid Índice 1. Lenguajes de Programación 1. Definición. 2. Niveles

Más detalles

FACULTAD DE INGENIERÍA

FACULTAD DE INGENIERÍA NOMBRE DEL PROFESOR: Ing. Héctor Manuel Quej Cosgaya NOMBRE DE LA PRÁCTICA: Estructuras de decisión PRÁCTICA NÚM. [ 5 ] LABORATORIO: MATERIA: UNIDAD: TIEMPO: Centro de Ingeniería Computacional Lenguaje

Más detalles

MANUAL DE INSTRUCCIONES PARA LA SOLICITUD DE AYUDAS

MANUAL DE INSTRUCCIONES PARA LA SOLICITUD DE AYUDAS MANUAL DE INSTRUCCIONES PARA LA SOLICITUD DE AYUDAS Contenido Introducción...2 Registro...2 Iniciar sesión...4 Solicitar ayuda...4 Página de proyectos solicitados...5 Completar solicitud Página de proyecto...5

Más detalles

Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial.

Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial. Tipos de Datos Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial. Entrada de datos Procesamientos de datos Salida de resultados Los

Más detalles

Lo que necesitaremos para programar en Java, será un editor de texto o IDE y la JDK.

Lo que necesitaremos para programar en Java, será un editor de texto o IDE y la JDK. Introducción Java surgió en 1991 dentro de la empresa Sun Microsystems como un lenguaje de programación sencillo y universal destinado a electrodomésticos. La reducida potencia de cálculo y memoria de

Más detalles

APUNTADORES. Un apuntador es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria de otra variable.

APUNTADORES. Un apuntador es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria de otra variable. APUNTADORES Un apuntador es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria de otra variable. No hay que confundir una dirección de memoria con el contenido

Más detalles

Tema II: Metodología para la construcción de programas

Tema II: Metodología para la construcción de programas Tema II: Metodología para la construcción de programas Semestre: A-2012 Profesora: Nelly García Mora Agenda 1. Definición 2. Análisis E P S 3. Construcción de Algoritmos 4. Diagramas de Flujo 5. Codificación

Más detalles

Fundamentos de Programación 2017-I

Fundamentos de Programación 2017-I Fundamentos de Programación 2017-I Fundamentos para la construcción de código a partir del algoritmo Objetivo: El alumno construirá programas utilizando el lenguaje de programación C a través de un análisis

Más detalles

Jornadas sobre Gnu/Linex: Uso de Software Libre en las Administraciones públicas. Sonia Pizarro Redondo

Jornadas sobre Gnu/Linex: Uso de Software Libre en las Administraciones públicas. Sonia Pizarro Redondo OpenOffice Base Jornadas sobre Gnu/Linex: Uso de Software Libre en las Administraciones públicas. Sonia Pizarro Redondo OpenOffice Base Pertenece a la Suite de OpenOffice Es uno de los componentes más

Más detalles

Modulo 11. Clases y Objetos en Java

Modulo 11. Clases y Objetos en Java El siguiente texto es una traducción no oficial del documento publicado por el grupo JEDI, Introduction to Programming 1, no pretende en ningún momento reemplazar los contenidos generados por este grupo.

Más detalles

DESCRIPCIÓN ESPECÍFICA NÚCLEO: COMERCIO Y SERVICIOS SUBSECTOR: INFORMÁTICA

DESCRIPCIÓN ESPECÍFICA NÚCLEO: COMERCIO Y SERVICIOS SUBSECTOR: INFORMÁTICA DESCRIPCIÓN ESPECÍFICA NÚCLEO: COMERCIO Y SERVICIOS SUBSECTOR: INFORMÁTICA Nombre del Módulo: PROGRAMACIÓN EN JAVASCRIPT Código: CSTI0087 total: 51 Horas Objetivo General: Crear contenido web basado en

Más detalles

QUÉ ES UNA CLASE JAVA? ATRIBUTOS (PROPIEDADES O CAMPOS), CONSTRUCTOR Y MÉTODOS. (CU00623B)

QUÉ ES UNA CLASE JAVA? ATRIBUTOS (PROPIEDADES O CAMPOS), CONSTRUCTOR Y MÉTODOS. (CU00623B) APRENDERAPROGRAMAR.COM QUÉ ES UNA CLASE JAVA? ATRIBUTOS (PROPIEDADES O CAMPOS), CONSTRUCTOR Y MÉTODOS. (CU00623B) Sección: Cursos Categoría: Curso Aprender programación Java desde cero Fecha revisión:

Más detalles

1. Generación automática de documentación (javadoc)

1. Generación automática de documentación (javadoc) Índice 1. Generación automática de documentación (javadoc)... 1 1.1 Introducción... 1 1.2 La herramienta Javadoc... 1 1.3 Comentando el código Java... 1 2 Guía de estilo de Java... 5 2.1 Clases... 6 2.2

Más detalles

LABORATORIO ARQUITECTURAS SOFTWARE DE VARIOS NIVELES EN JAVA (I)

LABORATORIO ARQUITECTURAS SOFTWARE DE VARIOS NIVELES EN JAVA (I) LABORATORIO ARQUITECTURAS SOFTWARE DE VARIOS NIVELES EN JAVA (I) SEPARACIÓN DEL NIVEL DE PRESENTACIÓN Y LÓGICA DE NEGOCIO MEDIANTE EL USO DE INTERFACES JAVA 1. OBJETIVO Los objetivos de este laboratorio

Más detalles

Informática Ingeniería en Electrónica y Automática Industrial

Informática Ingeniería en Electrónica y Automática Industrial Informática Ingeniería en Electrónica y Automática Industrial Entrada y salida estándar V1.3 Autores Entrada y salida estándar Entradas y salidas Salida con formato: printf() Entrada de datos con formato:

Más detalles

Threads. La plataforma JAVA soporta programas multhreading a través del lenguaje, de librerías y del sistema de ejecución. Dos.

Threads. La plataforma JAVA soporta programas multhreading a través del lenguaje, de librerías y del sistema de ejecución. Dos. Threads Un thread es un flujo de control secuencial dentro de un programa. A los threads también se los conoce como procesos livianos ó contextos de ejecución. Un thread es similar a un programa secuencial:

Más detalles

Manual de instalación AutoFirma 1.4.2

Manual de instalación AutoFirma 1.4.2 Manual de instalación AutoFirma 1.4.2 Fecha: 31/05/2016 Versión: 1.0 Índice 1. Introducción... 2 2. Requisitos mínimos... 3 2.1. Sistema Operativo... 3 2.2. Navegadores Web... 3 3. Enlaces de descarga...

Más detalles

Tema 13: Apuntadores en C

Tema 13: Apuntadores en C Tema 13: Apuntadores en C M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom Estructuras de datos (Prof. Edgardo A. Franco) 1 Contenido Introducción

Más detalles

Bloque III. Herramientas

Bloque III. Herramientas Bloque III. Herramientas Capítulo 2. Uso de un entorno integrado de desarrollo de programas Editor de texto El compilador y la ejecución Uso del entorno de desarrollo de programas bluej La depuración Generación

Más detalles

REDES DE DATOS Modelo OSI. Angélica Flórez Abril, MSc.

REDES DE DATOS Modelo OSI. Angélica Flórez Abril, MSc. REDES DE DATOS Modelo OSI Angélica Flórez Abril, MSc. Jerarquía de protocolos Organización en capas o niveles. El número de capas y sus funciones difieren de red a red. Cada capa ofrece servicios a las

Más detalles

INTRODUCCIÓN...9 CAPÍTULO 1. ELEMENTOS DE UN PROGRAMA INFORMÁTICO...11

INTRODUCCIÓN...9 CAPÍTULO 1. ELEMENTOS DE UN PROGRAMA INFORMÁTICO...11 Índice INTRODUCCIÓN...9 CAPÍTULO 1. ELEMENTOS DE UN PROGRAMA INFORMÁTICO...11 1.1 PROGRAMA Y LENGUAJESDE PROGRAMACIÓN...12 1.1.1 EL LENGUAJE JAVA...13 1.1.2 EL JDK...15 1.1.3 LOS PROGRAMAS EN JAVA...16

Más detalles

Programación Orientada a Objetos (POO)

Programación Orientada a Objetos (POO) Programación Orientada a Objetos (POO) Introducción La programación orientada a objetos es una técnica de programación en la cual expresamos el código en términos relacionados a como vemos las cosas en

Más detalles

Servicio de terminal remoto. Jesús Torres Cejudo

Servicio de terminal remoto. Jesús Torres Cejudo 1 - Telnet, Rlogin, SSH. Telnet (TELecommunication NETwork) es el nombre de un protocolo de red red a otra máquina para manejarla remotamente como si estuviéramos sentados delante de ella. También es el

Más detalles

1 HILOS (THREADS) EN JAVA

1 HILOS (THREADS) EN JAVA 1 HILOS (THREADS) EN JAVA 1.1QUÉ ES UN THREAD La Máquina Virtual Java (JVM) es un sistema multihilo. Es decir, es capaz de ejecutar varios hilos de ejecución simultáneamente. La JVM gestiona todos los

Más detalles

Javadoc con NetBeans

Javadoc con NetBeans Javadoc con NetBeans Javadoc y NetBeans 5.0 Javadoc es una herramienta creada por Sun Microsystems para generar documentación en formato HTML a partir de los comentarios de documentación incluidos en el

Más detalles

PROYECTO 2 Parte 1 BASES DE DATOS. Curso (2 Semestre) Grupos 4F2M y 4F1M-1 (aula 5102) CONSULTAS REMOTAS EN JAVA A UNA BASE DE DATOS

PROYECTO 2 Parte 1 BASES DE DATOS. Curso (2 Semestre) Grupos 4F2M y 4F1M-1 (aula 5102) CONSULTAS REMOTAS EN JAVA A UNA BASE DE DATOS PROYECTO 2 Parte 1 BASES DE DATOS Curso 2014-15 (2 Semestre) Grupos 4F2M y 4F1M-1 (aula 5102) CONSULTAS REMOTAS EN JAVA A UNA BASE DE DATOS Pág. 1 de 8 1. Objetivos Generales Acceder a una Base de Datos

Más detalles