with text_io; use text_io; procedure Kocsma is type Ital is ( sor, bor, palinka ); task Kocsmaros is entry Tolt( mit: in Ital ); end Kocsmaros; protected Ajto is entry Belep; procedure Kilep; function Telitettseg return float; private max: natural := 5; bent: natural := 0; end Ajto; task type Reszeg( id: natural := 0 ); reszegek: array (1..5) of Reszeg; task type Egyetemista is entry Nevadas( nev: in string := ""); end Egyetemista; egyetemistak: array (1..3) of Egyetemista; type PEgyetemista is access Egyetemista; egyEgyetemista: PEgyetemista; task body Kocsmaros is toltido: constant array (Ital) of duration := (1.0,0.1,0.2); zaras_varas: constant duration := 5.0; begin loop select accept Tolt( mit: in Ital ) do Put_Line(Ital'IMAGE(mit)&"-t töltök"); delay toltido(mit); end Tolt; or delay zaras_varas; exit; end select; end loop; end Kocsmaros; protected body Ajto is entry Belep when bent -- elment mar a Kocsmaros Put_Line("Bezart?"); Ajto.Kilep; end Reszeg; task body Egyetemista is type PString is access string; nevem: PString; begin accept Nevadas( nev: in string := "" ) do nevem := new string'(nev); end; select Ajto.Belep; Kocsmaros.Tolt(bor); Put_Line(nevem.all&" iszik"); delay 3.0; Ajto.Kilep; or delay 1.0; Put_Line(nevem.all & ": Akkor inkabb anal eloadasra megyek..."); end select; end Egyetemista; begin for i in egyetemistak'range loop egyetemistak(i).Nevadas; end loop; delay 2.0; egyEgyetemista := new Egyetemista; egyEgyetemista.Nevadas("Jancsi"); delay 5.0; egyEgyetemista := new Egyetemista; egyEgyetemista.Nevadas("Juliska"); end Kocsma;