elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


  Mostrar Mensajes
Páginas: [1]
1  Programación / Java / Re: Necesito entregar una práctica urgente en: 9 Junio 2021, 19:41 pm
Me gustaría poder mandar el guión de la práctica tambien, pero no veo que haya ninguna forma de enviar un archivo
2  Programación / Java / Re: Necesito entregar una práctica urgente en: 9 Junio 2021, 19:39 pm
Código
  1. [/// BancoCSP_skel.java
  2. // Lars feat. Julio -- 2021
  3. // esqueleto de código para JCSP
  4. // (peticiones aplazadas)
  5.  
  6. package cc.banco;
  7.  
  8. import org.jcsp.lang.Alternative;
  9. import org.jcsp.lang.AltingChannelInput;
  10. import org.jcsp.lang.Any2OneChannel;
  11. import org.jcsp.lang.CSProcess;
  12. import org.jcsp.lang.Channel;
  13. import org.jcsp.lang.Guard;
  14. import org.jcsp.lang.One2OneChannel;
  15. import org.jcsp.lang.ProcessManager;
  16.  
  17. // otras librerías: estructuras de datos, etc.
  18. //
  19. //
  20. //
  21. // COMPLETAD
  22. //
  23. //
  24. //
  25. //
  26.  
  27.  
  28. public class BancoCSP implements Banco, CSProcess {
  29.  
  30.    // canales: uno por operación
  31.    // serán peticiones aplazadas
  32.    private Any2OneChannel chIngresar;
  33.    private Any2OneChannel chDisponible;
  34.    private Any2OneChannel chTransferir;
  35.    private Any2OneChannel chAlertar;
  36.  
  37.    // clases para peticiones
  38.    // regalamos una como ejemplo
  39.    public class TransferirReq {
  40. // atributos (pueden ser públicos)
  41. String from;
  42. String to;
  43. int value;
  44. One2OneChannel resp;
  45.  
  46. // constructor
  47. public TransferirReq(String from, String to, int value) {
  48.    this.from = from; this.to = to; this.value = value; this.resp = Channel.one2one();
  49. }
  50.    }
  51.  
  52.    public class AlertarReq {
  53. // atributos (pueden ser públicos)
  54. //
  55. // COMPLETAD
  56. //
  57.  
  58. // constructor
  59. //
  60. // COMPLETAD
  61. //
  62.    }
  63.  
  64.    public class IngresarReq {
  65. // atributos (pueden ser públicos)
  66. //
  67. // COMPLETAD
  68. //
  69.  
  70. // constructor
  71. //
  72. // COMPLETAD
  73. //
  74.    }
  75.  
  76.    public class DisponibleReq {
  77. // atributos (pueden ser públicos)
  78. //
  79. // COMPLETAD
  80.  
  81. // constructor
  82. //
  83. // COMPLETAD
  84. //
  85.    }
  86.  
  87.    // constructor de BancoCSP
  88.    public BancoCSP() {
  89. this.chIngresar = Channel.any2one();
  90. this.chAlertar = Channel.any2one();
  91. this.chDisponible = Channel.any2one();
  92. this.chTransferir = Channel.any2one();
  93. new ProcessManager(this).start();
  94.    }
  95.  
  96.    // interfaz Banco
  97.    /**
  98.      * Un cajero pide que se ingrese una determinado valor v a una
  99.      * cuenta c. Si la cuenta no existe, se crea.
  100.      * @param c número de cuenta
  101.      * @param v valor a ingresar
  102.      */
  103.    public void ingresar(String c, int v) {
  104. // comprobar PRE
  105. // COMPLETAD
  106. // crear petición
  107. // COMPLETAD
  108. // enviar petición
  109. // COMPLETAD
  110.    }
  111.  
  112.    /**
  113.      * Un ordenante pide que se transfiera un determinado valor v desde
  114.      * una cuenta o a otra cuenta d.
  115.      * @param o número de cuenta origen
  116.      * @param d número de cuenta destino
  117.      * @param v valor a transferir
  118.      * @throws IllegalArgumentException si o y d son las mismas cuentas
  119.      *
  120.      */
  121.    public void transferir(String o, String d, int v) {
  122. // comprobar PRE
  123. // COMPLETAD
  124. // crear petición
  125. // COMPLETAD
  126. // enviar petición
  127. // COMPLETAD
  128. // esperar confirmación
  129. // COMPLETAD
  130.    }
  131.  
  132.    /**
  133.      * Un consultor pide el saldo disponible de una cuenta c.
  134.      * @param c número de la cuenta
  135.      * @return saldo disponible en la cuenta id
  136.      * @throws IllegalArgumentException si la cuenta c no existe
  137.      */
  138.    public int disponible(String c) {
  139. // crear petición
  140. // COMPLETAD
  141. // enviar petición
  142. // COMPLETAD
  143. // recibir respuesta del servidor
  144. // COMPLETAD
  145. // tratar resultado
  146. //
  147. // COMPLETAD
  148. //
  149. //
  150.    }
  151.  
  152.    /**
  153.      * Un avisador establece una alerta para la cuenta c. La operación
  154.      * termina cuando el saldo de la cuenta c baja por debajo de m.
  155.      * @param c número de la cuenta
  156.      * @param m saldo mínimo
  157.      * @throws IllegalArgumentException si la cuenta c no existe
  158.      */
  159.    public void alertar(String c, int v) {
  160. // crear petición
  161. // COMPLETAD
  162. // enviar petición
  163. // COMPLETAD
  164. // tratar respuesta del servidor
  165. //
  166. // COMPLETAD
  167.    }
  168.  
  169.    // Código del servidor
  170.    public void run() {
  171. // nombres simbólicos para las entradas
  172. final int INGRESAR   = 0;
  173. final int DISPONIBLE = 1;
  174. final int TRANSFERIR = 2;
  175. final int ALERTAR    = 3;
  176.  
  177. // construimos la estructura para recepción alternativa
  178. final Guard[] guards = new AltingChannelInput[4];
  179. guards[INGRESAR]   = chIngresar.in();
  180. guards[DISPONIBLE] = chDisponible.in();
  181. guards[TRANSFERIR] = chTransferir.in();
  182. guards[ALERTAR]    = chAlertar.in();
  183. Alternative servicios = new Alternative(guards);
  184.  
  185. // El estado del recurso debe ir en el servidor (aquí)
  186. // Reutilizar de la práctica de monitores
  187. // COMPLETAD
  188.  
  189. // colecciones para peticiones aplazadas
  190. // reutilizar de monitores si es posible
  191. //
  192. // COMPLETAD
  193. //
  194. //
  195.  
  196. // Bucle principal del servicio
  197. while(true) {
  198.    int servicio = servicios.fairSelect();
  199.  
  200.    switch (servicio) {
  201.    case INGRESAR: {
  202. // recibir petición
  203. // COMPLETAR
  204. // realizar ingreso
  205. //
  206. //
  207. //
  208. break;
  209.    }
  210.    case DISPONIBLE: {
  211. // recibir petición
  212. // COMPLETAD
  213. // responder
  214. // COMPLETAD
  215. //
  216. break;
  217.    }
  218.    case TRANSFERIR: {
  219. // recibir petición
  220. // COMPLETAD
  221. // encolar petición
  222. // (alternativamente, se puede comprobar CPRE y
  223. //  solo encolar si estrictamente necesario)
  224. //
  225. //
  226. //  COMPLETAD
  227. //
  228. //
  229. break;
  230.    }
  231.    case ALERTAR: {
  232. // recibir petición
  233. // COMPLETAD
  234. // encolar petición
  235. // (alternativamente, se puede comprobar CPRE y
  236. //  solo encolar si estrictamente necesario)
  237. //
  238. //
  239. // COMPLETAD
  240. //
  241. //
  242. break;
  243.    }
  244.    }// END SWITCH
  245.  
  246.    // tratamiento de peticiones aplazadas
  247.    // en parte, reutilizar de monitores
  248.    //
  249.    //
  250.    //
  251.    //
  252.    //
  253.    //
  254.    //
  255.    //
  256.    //
  257.    //
  258.    //
  259.    //
  260.    //
  261.    //
  262.    //
  263.    //
  264.    //
  265.    // COMPLETAD
  266.    //
  267.    //
  268.    //
  269.    //
  270.    //
  271.    //
  272.    //
  273.    //
  274.    //
  275.    //
  276.    //
  277.    //
  278.    //
  279.    //
  280.    //
  281.    //
  282.    //
  283.    //
  284.    //
  285.    //
  286.    //
  287.    //
  288.    //
  289.    //
  290.  
  291.    // no debemos volver al inicio del bucle
  292.    // de servicio mientras haya alguna
  293.    // petición pendiente que se pueda atender !!
  294. }// END BUCLE SERVICIO
  295.    }// END run SERVIDOR
  296.  
  297.    // cualquier otro código auxiliar que necesitéis...
  298.  
  299. }
  300.  
  301. ]
  302. Este es el esqueleto que me ayudo a hacer mi profesor
3  Programación / Java / Re: Necesito entregar una práctica urgente en: 9 Junio 2021, 19:01 pm
Realmente solo pedía ayuda porque no me da tiempo a hacerla, pero gracias de todas maneras.Había hecho la primera parte, pero la segunda parte ni idea, es para el dia 11, pero bueno, gracias por la aclaración.
4  Programación / Java / Necesito entregar una práctica urgente en: 9 Junio 2021, 18:38 pm
Es una practica que cuenta de 2 subprácticas , la primera ya la he realizado, que se hace mediante monitores, pero la segunda no tengo idea de como hacerla, se realiza mediante el envio de mensajes sincronos en java o jcsp.Al no disponer de mucho tiempo, escribo esto por aquí por si alguien me puede solucionar esto.Si alguien puede que me contacte por discord  xxxxxx

Editado: No poner datos de contacto, leer las normas del foro antes de postear.


Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines