Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- with Ada.Text_IO,Ada.Numerics.Discrete_Random;
- use Ada.Text_IO;
- procedure pralnia is
- -------------------------------------------------TYPY
- subtype rano is Integer range 6 .. 9;
- TYPE Godzina_typ IS RANGE 0..24;
- TYPE Minuta_typ IS RANGE 0..60;
- TYPE Sekunda_Typ IS RANGE 0..60;
- -------------------------------------------------ZMIENNE
- Sekunda: Sekunda_typ := 59;
- Minuta: Minuta_typ := 59;
- Godzina: Godzina_Typ := 5;
- Pralka_1: Boolean :=true;
- Pralka_2: Boolean :=true;
- Pralka_3: Boolean :=true;
- Pralka_4: Boolean :=true;
- Pralka_5: Boolean :=true;
- l_rano: constant Integer := 5;
- Klient: array (1..20) of Boolean := (others=>False);
- Wskaznik_Dodania: Integer :=1;
- Wskaznik_Odjecia: Integer :=1;
- D:Integer:=10;
- -------------------------------------------------FUNKCJA SPRAWDZAJACA CZY PRALNIA JEST OTWARTA
- FUNCTION Otwarta RETURN Boolean IS BEGIN
- IF (Godzina >= 6 AND Godzina < 22 ) THEN
- Return True;
- ELSE
- Return False;
- END IF;
- END Otwarta;
- -------------------------------------------------TASKI
- TASK Czas is entry Start; end Czas;
- TASK Ekran is entry Start; end Ekran;
- TASK PRALKA1 is entry Start; end PRALKA1;
- TASK PRALKA2 is entry Start; end PRALKA2;
- TASK PRALKA3 is entry Start; end PRALKA3;
- TASK PRALKA4 is entry Start; end PRALKA4;
- TASK PRALKA5 is entry Start; end PRALKA5;
- --TASK TYPE PRALKA3;
- --P3 : PRALKA3;
- --TASK TYPE PRALKA4;
- --P4 : PRALKA4;
- --TASK TYPE PRALKA5;
- --P5 : PRALKA5;
- TASK Klienci is entry Start; end Klienci;
- -------------------------------------------------Klienci
- TASK BODY Klienci IS
- BEGIN
- accept Start;
- while true loop
- Klient(Wskaznik_Dodania):=true;
- delay 0.25*10;
- Wskaznik_Dodania:=Wskaznik_Dodania+1;
- end loop;
- END Klienci;
- -------------------------------------------------PRALKA1
- TASK BODY PRALKA1 IS
- BEGIN
- accept Start;
- while true loop
- if(Klient(Wskaznik_Odjecia)) then
- Pralka_1:=False;
- Klient(Wskaznik_Odjecia):=false;
- Wskaznik_Odjecia:=Wskaznik_Odjecia+1;
- delay 0.25*60;
- Pralka_1:=True;
- else DELAY 0.25;
- end if;
- end loop;
- END PRALKA1;
- -------------------------------------------------PRALKA2
- TASK BODY PRALKA2 IS
- BEGIN
- accept Start;
- while true loop
- if(Klient(Wskaznik_Odjecia) and (Pralka_1=false)) then
- Pralka_2:=False;
- Klient(Wskaznik_Odjecia):=false;
- Wskaznik_Odjecia:=Wskaznik_Odjecia+1;
- delay 0.25*60;
- Pralka_2:=True;
- else DELAY 0.25;
- end if;
- end loop;
- END PRALKA2;
- -------------------------------------------------PRALKA3
- TASK BODY PRALKA3 IS
- BEGIN
- accept Start;
- while true loop
- if(Klient(Wskaznik_Odjecia) and (Pralka_1=false) and (Pralka_2=false)) then
- Pralka_3:=False;
- Klient(Wskaznik_Odjecia):=false;
- Wskaznik_Odjecia:=Wskaznik_Odjecia+1;
- delay 0.25*60;
- Pralka_3:=True;
- else DELAY 0.25;
- end if;
- end loop;
- END PRALKA3;
- -------------------------------------------------PRALKA4
- TASK BODY PRALKA4 IS
- BEGIN
- accept Start;
- while true loop
- if(Klient(Wskaznik_Odjecia)and (Pralka_1=false) and (Pralka_2=false) and (Pralka_3=false)) then
- Pralka_4:=False;
- Klient(Wskaznik_Odjecia):=false;
- Wskaznik_Odjecia:=Wskaznik_Odjecia+1;
- delay 0.25*60;
- Pralka_4:=True;
- else DELAY 0.25;
- end if;
- end loop;
- END PRALKA4;
- -------------------------------------------------PRALKA5
- TASK BODY PRALKA5 IS
- BEGIN
- accept Start;
- while true loop
- if(Klient(Wskaznik_Odjecia)and (Pralka_1=false) and (Pralka_2=false) and (Pralka_3=false)and (Pralka_4=false)) then
- Pralka_5:=False;
- Klient(Wskaznik_Odjecia):=false;
- Wskaznik_Odjecia:=Wskaznik_Odjecia+1;
- delay 0.25*60;
- Pralka_5:=True;
- else DELAY 0.25;
- end if;
- end loop;
- END PRALKA5;
- -------------------------------------------------ZADANIE USTAWIAJACA CZAS
- TASK BODY Czas IS
- BEGIN
- accept Start;
- WHILE True LOOP
- Minuta:=Minuta+1;
- If(Minuta = 60) THEN
- Minuta := 0;
- Godzina:=Godzina+1;
- If(Godzina = 24) THEN
- Godzina := 0;
- end IF;
- END IF;
- DELAY 0.25;
- END LOOP;
- END Czas;
- -------------------------------------------------ZADANIE USTAWIAJACA CZAS
- TASK BODY Ekran IS
- BEGIN
- accept Start;
- WHILE True LOOP
- Put(ASCII.ESC & "[2J");
- Put_Line("Zegar: " & Godzina'Img & ":" & Minuta'Img);
- if(Pralka_1) then Put_Line("Pralka 1: Wolna");
- else Put_Line("Pralka 1: Zajeta"); end if;
- if(Pralka_2) then Put_Line("Pralka 2: Wolna");
- else Put_Line("Pralka 2: Zajeta"); end if;
- if(Pralka_3) then Put_Line("Pralka 2: Wolna");
- else Put_Line("Pralka 3: Zajeta"); end if;
- if(Pralka_4) then Put_Line("Pralka 2: Wolna");
- else Put_Line("Pralka 4: Zajeta"); end if;
- if(Pralka_5) then Put_Line("Pralka 2: Wolna");
- else Put_Line("Pralka 5: Zajeta"); end if;
- for I in 1..Wskaznik_Dodania loop
- if(Klient(I)) then Put_Line("Przyszedl klient");
- else Put_Line("Klient obsluzony"); end if;
- end loop;
- DELAY 0.25;
- end loop;
- END Ekran;
- -------------------------------------------------MEJN
- begin
- Czas.Start;
- Ekran.Start;
- PRALKA1.Start;
- PRALKA2.Start;
- PRALKA3.Start;
- PRALKA4.Start;
- PRALKA5.Start;
- Klienci.Start;
- END pralnia;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement