Advertisement
Guest User

Untitled

a guest
Jan 20th, 2017
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ada 5.89 KB | None | 0 0
  1. with Ada.Text_IO,Ada.Numerics.Discrete_Random;
  2. use Ada.Text_IO;
  3.  
  4. procedure pralnia is
  5. -------------------------------------------------TYPY
  6. subtype rano is Integer range 6 .. 9;
  7. TYPE Godzina_typ IS RANGE 0..24;
  8. TYPE Minuta_typ IS RANGE 0..60;
  9. TYPE Sekunda_Typ IS RANGE 0..60;
  10. -------------------------------------------------ZMIENNE
  11. Sekunda: Sekunda_typ := 59;
  12. Minuta: Minuta_typ := 59;
  13.    Godzina: Godzina_Typ := 5;
  14.    Pralka_1: Boolean :=true;
  15.    Pralka_2: Boolean :=true;
  16.       Pralka_3: Boolean :=true;
  17.    Pralka_4: Boolean :=true;
  18.       Pralka_5: Boolean :=true;
  19. l_rano: constant Integer := 5;
  20. Klient: array (1..20) of Boolean := (others=>False);
  21.      Wskaznik_Dodania: Integer :=1;
  22.    Wskaznik_Odjecia: Integer :=1;
  23.    D:Integer:=10;
  24. -------------------------------------------------FUNKCJA SPRAWDZAJACA CZY PRALNIA JEST OTWARTA
  25.  FUNCTION Otwarta RETURN Boolean IS BEGIN
  26.       IF (Godzina >= 6 AND Godzina < 22 ) THEN
  27.          Return True;
  28.       ELSE
  29.          Return False;
  30.       END IF;
  31.    END Otwarta;
  32. -------------------------------------------------TASKI
  33.    TASK Czas is entry Start; end Czas;
  34.    TASK Ekran is entry Start; end Ekran;
  35. TASK PRALKA1 is entry Start; end PRALKA1;
  36.    TASK PRALKA2 is entry Start; end PRALKA2;
  37.    TASK PRALKA3 is entry Start; end PRALKA3;
  38.    TASK PRALKA4 is entry Start; end PRALKA4;
  39.    TASK PRALKA5 is entry Start; end PRALKA5;
  40. --TASK TYPE PRALKA3;
  41. --P3 : PRALKA3;
  42. --TASK TYPE PRALKA4;
  43. --P4 : PRALKA4;
  44. --TASK TYPE PRALKA5;
  45. --P5 : PRALKA5;
  46. TASK Klienci is entry Start; end Klienci;
  47. -------------------------------------------------Klienci
  48.    TASK BODY Klienci IS
  49.             BEGIN
  50.       accept Start;
  51.       while true loop
  52.          Klient(Wskaznik_Dodania):=true;
  53.          delay 0.25*10;
  54.          Wskaznik_Dodania:=Wskaznik_Dodania+1;
  55.          end loop;
  56.    END Klienci;
  57. -------------------------------------------------PRALKA1
  58. TASK BODY PRALKA1 IS
  59.             BEGIN
  60.       accept Start;
  61.  
  62.       while true loop
  63.                if(Klient(Wskaznik_Odjecia)) then
  64.          Pralka_1:=False;
  65.             Klient(Wskaznik_Odjecia):=false;
  66.                Wskaznik_Odjecia:=Wskaznik_Odjecia+1;
  67.          delay 0.25*60;
  68.             Pralka_1:=True;
  69.                         else DELAY 0.25;
  70.                end if;
  71.          end loop;
  72.    END PRALKA1;
  73. -------------------------------------------------PRALKA2
  74. TASK BODY PRALKA2 IS
  75.   BEGIN
  76.     accept Start;
  77.  
  78.       while true loop
  79.                 if(Klient(Wskaznik_Odjecia) and (Pralka_1=false)) then
  80.          Pralka_2:=False;
  81.             Klient(Wskaznik_Odjecia):=false;
  82.                Wskaznik_Odjecia:=Wskaznik_Odjecia+1;
  83.          delay 0.25*60;
  84.             Pralka_2:=True;
  85.             else DELAY 0.25;
  86.                end if;
  87.          end loop;
  88.    END PRALKA2;
  89. -------------------------------------------------PRALKA3
  90. TASK BODY PRALKA3 IS
  91.   BEGIN
  92.     accept Start;
  93.  
  94.       while true loop
  95.                 if(Klient(Wskaznik_Odjecia) and (Pralka_1=false) and (Pralka_2=false)) then
  96.          Pralka_3:=False;
  97.             Klient(Wskaznik_Odjecia):=false;
  98.                Wskaznik_Odjecia:=Wskaznik_Odjecia+1;
  99.          delay 0.25*60;
  100.             Pralka_3:=True;
  101.             else DELAY 0.25;
  102.                end if;
  103.          end loop;
  104.    END PRALKA3;
  105. -------------------------------------------------PRALKA4
  106. TASK BODY PRALKA4 IS
  107.   BEGIN
  108.     accept Start;
  109.  
  110.       while true loop
  111.                 if(Klient(Wskaznik_Odjecia)and (Pralka_1=false) and (Pralka_2=false) and (Pralka_3=false)) then
  112.          Pralka_4:=False;
  113.             Klient(Wskaznik_Odjecia):=false;
  114.                Wskaznik_Odjecia:=Wskaznik_Odjecia+1;
  115.          delay 0.25*60;
  116.             Pralka_4:=True;
  117.             else DELAY 0.25;
  118.                end if;
  119.          end loop;
  120.    END PRALKA4;
  121. -------------------------------------------------PRALKA5
  122. TASK BODY PRALKA5 IS
  123.   BEGIN
  124.     accept Start;
  125.  
  126.       while true loop
  127.                 if(Klient(Wskaznik_Odjecia)and (Pralka_1=false) and (Pralka_2=false) and (Pralka_3=false)and (Pralka_4=false)) then
  128.          Pralka_5:=False;
  129.             Klient(Wskaznik_Odjecia):=false;
  130.                Wskaznik_Odjecia:=Wskaznik_Odjecia+1;
  131.          delay 0.25*60;
  132.             Pralka_5:=True;
  133.             else DELAY 0.25;
  134.                end if;
  135.          end loop;
  136.    END PRALKA5;
  137. -------------------------------------------------ZADANIE USTAWIAJACA CZAS
  138.  
  139.  TASK BODY Czas IS
  140.             BEGIN
  141.                accept Start;
  142.       WHILE True LOOP
  143.        Minuta:=Minuta+1;
  144.     If(Minuta = 60) THEN
  145.             Minuta := 0;
  146.         Godzina:=Godzina+1;
  147.         If(Godzina = 24) THEN
  148.             Godzina := 0;
  149.         end IF;
  150.          END IF;
  151. DELAY 0.25;
  152.       END LOOP;
  153.    END Czas;
  154.    -------------------------------------------------ZADANIE USTAWIAJACA CZAS
  155.  
  156.  TASK BODY Ekran IS
  157.             BEGIN
  158.                accept Start;
  159.       WHILE True LOOP
  160.          Put(ASCII.ESC & "[2J");
  161.          Put_Line("Zegar: " & Godzina'Img & ":" & Minuta'Img);
  162.          if(Pralka_1) then Put_Line("Pralka 1: Wolna");
  163.          else  Put_Line("Pralka 1: Zajeta"); end if;
  164.          if(Pralka_2) then Put_Line("Pralka 2: Wolna");
  165.          else  Put_Line("Pralka 2: Zajeta"); end if;
  166.           if(Pralka_3) then Put_Line("Pralka 2: Wolna");
  167.          else  Put_Line("Pralka 3: Zajeta"); end if;
  168.           if(Pralka_4) then Put_Line("Pralka 2: Wolna");
  169.          else  Put_Line("Pralka 4: Zajeta"); end if;
  170.           if(Pralka_5) then Put_Line("Pralka 2: Wolna");
  171.          else  Put_Line("Pralka 5: Zajeta"); end if;
  172.          for I in 1..Wskaznik_Dodania loop
  173.          if(Klient(I)) then Put_Line("Przyszedl klient");
  174.          else  Put_Line("Klient obsluzony"); end if;
  175.          end loop;
  176. DELAY 0.25;
  177.       end loop;
  178.    END Ekran;
  179. -------------------------------------------------MEJN
  180. begin
  181.    Czas.Start;
  182.    Ekran.Start;
  183.    PRALKA1.Start;
  184.    PRALKA2.Start;
  185.    PRALKA3.Start;
  186.    PRALKA4.Start;
  187.    PRALKA5.Start;
  188.    Klienci.Start;
  189. END pralnia;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement