• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Kod w jezyku ADA

Object Storage Arubacloud
–2 głosów
103 wizyt
pytanie zadane 5 czerwca 2020 w Inne języki przez Nice guy Nowicjusz (160 p.)
zamknięte 6 czerwca 2020 przez HaKIM

Rozwiązanie problemu pięciu filozofów oparte
o porządek zasobów (”numerację” widelców, zob. slajdy nr 8 na
Pegazie). Rozwiązanie powinno wykorzystywać semafory zrealizowane
jako obiekty typu chronionego (typ SemBin w pliku źródłowym).
Zmodyfikować rozwiązanie aby działało poprawnie, gdy w uczcie bierze
udział ustalona liczba N > 2 filozofów.

with Ada.Text_IO;
use Ada.Text_IO;

procedure Filozofowie is 

----- typ reprezentujacy semafor binarny -----
protected type SemBin(W: Boolean := True) is -- domyslna wartosc poczatkowa: True (podniesiony)
-- tutaj definicje procedur/entry/funkcji
   entry P;
   procedure V;
   function moznaP return Boolean;
private
-- tutaj definicje danych (pol prywatnych)
   Wartosc: Boolean := W;
end SemBin;

protected body SemBin is
  entry P when Wartosc is -- kod bedzie wykonany tylko jesli Wartosc=True
  begin
    Wartosc:= False;
  end P;

  procedure V is
  begin
    Wartosc:= True;
  end V;
  
  function moznaP return Boolean is -- zwraca Wartosc tzn. "czy mozna wykonac P"
  begin
    return Wartosc;
  end moznaP;
end SemBin;
----- koniec semafora -----

-- tablica semaforow
Widelec: array(0..4) of SemBin;


----- zadania filozofow - uzupelnic wedlug warunkow zadania -----
task type Filozof(id: Integer) is
end Filozof;

task body Filozof is
  procedure myslenie is
  begin
    delay 2.0;
  end myslenie;
  
  procedure jedzenie is
  begin
    delay 2.0;
  end jedzenie;
  
  procedure podnies_widelce is
  begin
    null; --<-- TU KOD -----
  end;

  procedure odloz_widelce is
  begin
    null; --<-- TU KOD -----
  end;

begin
  loop	
	Put_Line("Filozof nr" & Integer'Image(id) & " mysli...");
   myslenie;
	
   podnies_widelce;
    
	Put_Line("Filozof nr" & Integer'Image(id) & " zaczyna jesc...");
   jedzenie;
	Put_Line("Filozof nr" & Integer'Image(id) & " konczy jedzenie...");
    
   odloz_widelce;
  end loop;
end Filozof;
----- koniec filozofow -----	
	

----- utworzenie zadan filozofow
F0: Filozof(0);
F1: Filozof(1);
F2: Filozof(2);
F3: Filozof(3);
F4: Filozof(4);

begin
  null; -- instrukcja pusta
end Filozofowie;

 

komentarz zamknięcia: Regulamin II.2.G

Podobne pytania

–1 głos
0 odpowiedzi 75 wizyt
pytanie zadane 5 czerwca 2020 w Inne języki przez Nice guy Nowicjusz (160 p.)
–1 głos
0 odpowiedzi 87 wizyt
pytanie zadane 5 czerwca 2020 w Inne języki przez Nice guy Nowicjusz (160 p.)
0 głosów
0 odpowiedzi 152 wizyt
pytanie zadane 15 stycznia 2016 w Inne języki przez victis Początkujący (490 p.)

92,539 zapytań

141,382 odpowiedzi

319,477 komentarzy

61,928 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...