Guest User

Untitled

a guest
Apr 16th, 2018
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.23 KB | None | 0 0
  1. With Ada.Text_IO; use Ada.Text_IO;
  2. With Ada.Integer_Text_IO; use Ada.Integer_Text_IO;
  3. With ADA.Float_Text_IO; use ADA.Float_Text_IO;
  4.  
  5.  
  6.  
  7. procedure Telefono is
  8.  
  9.  
  10. protected type bateria is
  11. procedure res_bateria;
  12. function estado return float;
  13. private
  14. porcentaje:float:=100.0;
  15. end bateria;
  16.  
  17. protected body bateria is
  18. procedure res_bateria is
  19. begin
  20. porcentaje := porcentaje - 0.00001;
  21. end res_bateria;
  22.  
  23. function estado return float is
  24. begin
  25. return porcentaje;
  26. end estado;
  27. end bateria;
  28.  
  29. type peticion is
  30. record
  31. id:character;
  32. numero:integer;
  33. end record;
  34.  
  35. pet:peticion;
  36.  
  37. task peticiones is
  38. entry LlamadaEntrante;
  39. entry LlamadaSaliente;
  40. entry EstadoBateria;
  41. end peticiones;
  42.  
  43. task interfaz;
  44. task encendido;
  45.  
  46. bateria_telefono:bateria;
  47.  
  48. task body encendido is
  49. begin
  50. loop
  51. bateria_telefono.res_bateria;
  52. delay 1.0;
  53. end loop;
  54. end encendido;
  55.  
  56. task body interfaz is
  57. begin
  58. loop
  59. put("Introduce peticion: "); get(pet.id); get(pet.numero);
  60. if (pet.id = 'E') then
  61. peticiones.LlamadaEntrante;
  62. else if (pet.id = 'S') then
  63. peticiones.LlamadaSaliente;
  64. else
  65. peticiones.EstadoBateria;
  66. end if;
  67. end if;
  68. end loop;
  69. end interfaz;
  70.  
  71.  
  72. task body peticiones is
  73. begin
  74. loop
  75. select
  76. accept LlamadaEntrante do
  77. put("Ha llegado una llamada del numero: "); put(pet.numero); new_line;
  78. delay 5.0; --5 segundos de llamada
  79. end LlamadaEntrante;
  80. or
  81. accept LlamadaSaliente do
  82. put_Line("Llamada Establecida numero: "); put(pet.numero); new_line;
  83. delay 10.0; --10 segundos de llamada
  84. end LlamadaSaliente;
  85. or
  86. accept EstadoBateria do
  87. put("Estado de la bateria: "); put(bateria_telefono.estado); put("%"); new_line;
  88. end EstadoBateria;
  89. end select;
  90. end loop;
  91. end peticiones;
  92.  
  93.  
  94. begin
  95. null;
  96.  
  97. end Telefono;
Add Comment
Please, Sign In to add comment