Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- with ada.text_io, ada.integer_text_io;
- use ada.text_io, ada.integer_text_io;
- procedure main is
- licznik_gofrownicy : natural := 0;
- protected gotowe_gofry is
- procedure dodaj (ilosc : natural);
- procedure odejmij (ilosc : natural);
- procedure stan (ilosc : out natural);
- private
- ilosc_gotowych_gofrow : natural := 0;
- end gotowe_gofry;
- protected body gotowe_gofry is
- procedure dodaj(ilosc : natural) is
- begin
- ilosc_gotowych_gofrow := ilosc_gotowych_gofrow + ilosc;
- end dodaj;
- procedure odejmij(ilosc : natural) is
- begin
- ilosc_gotowych_gofrow := ilosc_gotowych_gofrow - ilosc;
- end odejmij;
- procedure stan(ilosc : out natural) is
- begin
- ilosc := ilosc_gotowych_gofrow;
- end stan;
- end gotowe_gofry;
- TASK Produkcja IS
- entry smaz_gofry;
- end produkcja;
- task sprzedawaj is
- --zamowienie : integer := 0;
- --klient : char;
- entry obsluz_klienta;
- end sprzedawaj;
- task zadanie_glowne;
- task body zadanie_glowne is
- begin
- delay 0.5;
- loop
- select
- Sprzedawaj.Obsluz_Klienta;
- delay 2.0;
- then abort
- produkcja.smaz_gofry;
- end select;
- end loop;
- end zadanie_glowne;
- TASK BODY Produkcja IS
- begin
- delay 1.0;
- put_line("gofrownica nagrzana");
- loop
- ACCEPT Smaz_Gofry DO
- LOOP
- new_line;
- put("rozpoczynam smazenie gofra nr ");
- Put((Licznik_Gofrownicy + 1), 3);
- new_line;
- delay 1.5;
- Gotowe_Gofry.Dodaj(1);
- licznik_gofrownicy := licznik_gofrownicy + 1;
- put("gofr nr ");
- put(licznik_gofrownicy, 3);
- Put(" jest juz gotowy");
- new_line;
- DELAY 0.5;
- Put_Line("gofrownica oczyszczona");
- delay 1.0;
- New_Line;
- end loop;
- end smaz_gofry;
- end loop;
- end produkcja;
- task body sprzedawaj is
- Zamowienie : Integer := 0;
- obecna_ilosc : natural;
- klient : character;
- begin
- delay 1.1;
- put_line("kasa otwarta, zapraszamy do zakupu");
- loop
- ACCEPT Obsluz_Klienta DO
- loop
- put_line("w czym moge pomoc?");
- <<to_nie_jest_k>>
- put_line("k enter ilosc enter");
- get(klient);
- IF ((Klient = 'k') OR (Klient = 'K')) THEN
- Put_Line("witam klienta");
- put_line("prosze podac jeszcze ilosc zamawianych gofrow");
- <<ile_zamawiasz>>
- Get(Zamowienie);
- IF (Zamowienie > 10) then
- Put_Line("maksymalna liczba zamawianych gofrow to 10");
- goto ile_zamawiasz;
- end if;
- Put_Line("zamowienie przyjete");
- Gotowe_Gofry.Stan(Obecna_Ilosc);
- <<ujemny_natural>>
- IF(Obecna_Ilosc < Zamowienie ) then
- Put_Line("prosze chwileczke poczekac");
- DELAY (Zamowienie - Obecna_Ilosc)*3.0;
- Gotowe_Gofry.Stan(Obecna_Ilosc);
- IF(Obecna_Ilosc < Zamowienie ) THEN
- goto ujemny_natural;
- end if;
- end if;
- delay 0.5;
- gotowe_gofry.odejmij(zamowienie);
- put_line("zmowienie zrealizowane, wydano ");
- put(zamowienie, 3);
- Put(" gofry. ");
- new_line;
- else
- goto to_nie_jest_k;
- end if;
- end loop;
- end obsluz_klienta;
- end loop;
- end sprzedawaj;
- begin
- put_line("uproszczona symulacja budki z goframi");
- put_line("aby kupic gofra nacisnij wpisz k");
- put_line("nacisnij enter, podaj liczbe gofrow i potwierdz enterem");
- put_line("max ilosc w jednym zamownieniu to 10");
- new_line;
- end main;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement