Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

konkuretno programiranje

[es] :: Art of Programming :: konkuretno programiranje

Strane: 1 2

[ Pregleda: 5505 | Odgovora: 20 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

AljaSavkovic
student,PMF

Član broj: 207458
Poruke: 10
212.200.65.*



Profil

icon konkuretno programiranje25.08.2009. u 21:28 - pre 178 meseci
Moze li neko da mi pomogne treba da programiram problem obdanista pomocu monitora i uslovnih promenljivih u moduli-2, moze i pomocu semafora, mozda u paskalu. Ako se neko javi, poslacu mu potpun zadatak, ili da mi posalje neki svoj primer zadatka (to su oni pisci i citaci, problem filozofa i sl), mozda je na faksu imao neki zadatak za domaci . Pomoc, molim Vas i unapred Hvala!
 
Odgovor na temu

AljaSavkovic
student,PMF

Član broj: 207458
Poruke: 10
212.200.65.*



Profil

icon Re: konkuretno programiranje25.08.2009. u 21:31 - pre 178 meseci
Pa zar niko nezna nista o tome! Molim Vas!
 
Odgovor na temu

milan.dinic
Milan Dinic
Novi Sad

Član broj: 157176
Poruke: 85
*.ADSL.neobee.net.

Sajt: milandinic.blogspot.com


Profil

icon Re: konkuretno programiranje25.08.2009. u 23:21 - pre 178 meseci
evo zadatka za filozofima, nije moj :)
ali probao sam kod, radi, radjen je u javi, i moze da ti da neku ideju

http://www.filefactory.com/file/ah33e4f/n/src_zip


 
Odgovor na temu

Srđan Pavlović
Specijalna Edukacija i Rehabilitacija MNRO
Vojvodina, Bačka Palanka

Član broj: 139340
Poruke: 5571
93.86.225.*

Sajt: www.oligofrenolog.com


+382 Profil

icon Re: konkuretno programiranje26.08.2009. u 01:27 - pre 178 meseci
Negde u programiranje, valjda....
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1249



+96 Profil

icon Re: konkuretno programiranje26.08.2009. u 10:06 - pre 178 meseci
Čovek očekuje da mu neko za četiri minuta spuca rešenje za problem koji nije ni pošteno postavio? Zabavno. Elem, dao si nam opštu priču, ali sad nam daj konkretno šta je ulaz, šta je izlaz, i šta želiš da se desi između ulaza i izlaza. Ja ne znam Modulu-2, ali snaći ćemo se već. Nadam se da imaš vremena, jer će potrajati.
 
Odgovor na temu

AljaSavkovic
student,PMF

Član broj: 207458
Poruke: 10
212.200.65.*



Profil

icon Re: konkuretno programiranje06.09.2009. u 18:28 - pre 178 meseci
Sad slucajno odoh na sajt da vidim da mi neko nije nesto napisao u vezi mog problema, niko se nije javljao na prethodnim mestima, pa ja vec bila odustala. Postoji ceo zadatak, nije problem ja cu ga napisati.
Tekst zadatka glasi:

Realizovati simulaciju zabavista u programskom jeziku Modula 2. Za
sinhronizaciju koristiti monitore i uslovne promenljive.

U zabaviste nezavisno dolaze (i odlaze) roditelji i deca. Svaki
roditelj moze istovremeno da pazi na tri deteta i pretpostavlja se da
su svi roditelji savesni. Savestan roditelj nece otici iz zabavista
ako bi time ostalo nedovoljno roditelja da pazi na svu decu u
zabavistu.

Svako dete i svakog roditelja predstaviti posebnim procesom. Na
pocetku rada programa kreirati 10 procesa koji simuliraju decu i 4
procesa koji simuliraju roditelje. U toku svog rada i roditelji i deca
naizmenicno provode vreme van i u zabavistu, postujuci uslove zadatka.

Prilikom promene stanja svakog procesa, kao i prilikom promene stanja
u zabavistu program bi trebalo da ispise odgovarajucu poruku na
standardnom izlazu.
p.s. Molim Mihajila posto je bio dobronameran moze li da mi se javi!
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1249



+96 Profil

icon Re: konkuretno programiranje06.09.2009. u 22:24 - pre 178 meseci
Pročitao sam malo na internetu opis monitora i uslovne promenljive. Uslovna promanljiva je objekat nad kojim se čeka, ali to funkcioniše samo unutar monitora, što je modul (skup podataka i funkcija vezanih za njih). Za čekanje na preuzimanje kontrole koristi se cwait, za prepuštanje kontrole koristi se csignal. To mi liči na kritične sekcije iz Windows okruženja (EnterCriticalSection, LeaveCriticalSection). Ako nije tako onda je možda ostatak teksta pogrešan.

Imamo procese (u Windowsu se zovu niti, threads) u sistemu, i to dve vrste, Decu i Roditelje. Ne znam kako se pravi proces u M2, nadam se da ti znaš. Oba tipa procesa potroše malo vremena u zabavištu, zatim malo kod kuće, i tako u krug. Razlika je što je Deci ograničeno da uđu u zabavište, a Roditeljima da ga napuste. I jedni i drugi ne mogu da promene svoje stanje ako bi se time narušila nejednakost 3*R >= D. gde su R i D broj roditelja i dece u zabavištu. Ako neki proces želi da promeni stanje, ali ne može zbog ove nejednakosti onda mora da čeka, dok se ne steknu povoljniji uslovi. Čekanje se radi sa cwait. Ti uslovi mogu da se steknu samo ako neki Roditelj dođe, ili neko Dete ode iz zabavišta. Kad god se to desi treba da se pozove csignal.

E sad, kako napraviti program od ovog? Napiši ovde kostur programa koji pokreće 10 Dece i 4 Roditelja, svih 14 sa stanjem "u zabavištu" (obična promenljiva koja može da ima jednu od dve vrednosti). Tamo gde se izvršava Dete trebalo bi da stoji ovako nešto:

Code:

ponavljaj sledeće dok ne dođe vreme za kraj rada:
  sačekaj malo
  ako <stanje je "dete u zabavištu"> onda
    promeni stanje u "dete van zabavišta"
    csignal(c)
  inače
    dokle god <dete ne može u zabavište>
      cwait(c)
    promeni stanje u "dete u zabavištu";


Za Roditelje je slično, samo suprotno:

Code:

ponavljaj sledeće dok ne dođe vreme za kraj rada:
  sačekaj malo
  ako <stanje je "roditelj van zabavišta"> onda
    promeni stanje u "roditelj u zabavištu"
    csignal(c)
  inače
    dokle god <roditelj ne može iz zabavišta>
      cwait(c)
    promeni stanje u "roditelj van zabavištu";


Svaka promena stanja bi trebala da se ispisuje na ekranu, zajedno sa ukupnim brojem Dece i Roditelja u zabavištu. Glavni proces bi trebao da čeka neko duže vreme dok traje simulacija, a onda da kaže svim procesima da završe rad, i da čeka da svi završe, da bi mogao i sam da završi. Ovaj detalj ne znam kako bih rešio, kako se u M2 čeka na kraj pokrenutog procesa, nadam se da ti znaš.
 
Odgovor na temu

AljaSavkovic
student,PMF

Član broj: 207458
Poruke: 10
212.200.65.*



Profil

icon Re: konkuretno programiranje07.09.2009. u 06:47 - pre 178 meseci
Hvala Mihajilo,
ma tako sam nesto i mislila, nego imam problem taj da sam htela da testiram program, koji se sastoji od def modula i implementacionog modula i glavnog programa, jer se preko ova dva predstavljaju monitori, ne znam kako da napravim def file i taj mod fail koji ide u src folder, da bih to primenila na svoj zadatak, na faksu su nam davali gotove file i mi smo ih koristili u zadatku, ako to ne uradim ne mogu testirati kod, javicu sta sam uradila. Pozdrav i Hvala!
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1249



+96 Profil

icon Re: konkuretno programiranje07.09.2009. u 07:46 - pre 178 meseci
Dve napomene:

1. Svaki proces ima sopstvenu promenljivu koja kaže da li je proces u zabavištu, ali tu negde je i monitor sa dve promenljive, D i R, i dve funkcije, roditelj_ide_iz_zabavišta i dete_ide_u_zabavište, u kojima su petlje sa cwait.

2. Odnos Dece i Roditelja nije potpuno simetričan, jer kada Roditelj dođe u zabavište posledica je da ne jedno nego i tri Deteta mogu da dođu. To znači da treba da imamo tri csignal poziva.
 
Odgovor na temu

AljaSavkovic
student,PMF

Član broj: 207458
Poruke: 10
212.200.65.*



Profil

icon Re: konkuretno programiranje08.09.2009. u 12:37 - pre 178 meseci
Code:

DEFINITION MODULE Monitor;
CONST N;
PROCEDURE UzmiViljuske(i: CARDINAL);
PROCEDURE VratiViljuske(i: CARDINAL);
PROCEDURE UzmiId: CARDINAL
END Monitor.
IMPLEMENTATION MODULE Monitor[100];
FROM Process IMPORT SIGNAL,SEND,WAIT,Init;

CONST
  N = 5;
TYPE
  stanje = (misli,gladan,jede);
VAR
  stanja: ARRAY [1..N] OF stanje;
  up: ARRAY [1..N] OF SIGNAL;
  i: CARDINAL;

PROCEDURE UzmiId: CARDINAL;
BEGIN
  INC(i);
  RETURN i
END UzmiId;

PROCEDURE left(i: CARDINAL): CARDINAL;
BEGIN
  IF i = 1 THEN
    RETURN N
  ELSE
    RETURN i-1
  END
END left;

PROCEDURE right(i: CARDINAL): CARDINAL;
BEGIN
  IF i = N THEN
    RETURN 1
  ELSE
    RETURN i+1
  END
END right;

PROCEDURE TestUzmi(i: CARDINAL);
BEGIN
  IF (stanja[i]=gladan) AND (stanja[left(i)]<>jede) AND (stanja[right(i)]<>jede) THEN
    stanja[i] := jede
  ELSE
    WAIT(up[i])
  END
END TestUzmi;

PROCEDURE TestVrati(i: CARDINAL);
BEGIN
  IF (stanja[i]=gladan) AND (stanja[left(i)]<>jede) AND (stanja[right(i)]<>jede) THEN
    stanja[i] := jede;
    SEND(up[i])
  END
END TestVrati;

PROCEDURE UzmiViljuske(i: CARDINAL);
BEGIN
  stanja[i] := gladan;
  TestUzmi(i)
END UzmiViljuske;

PROCEDURE VratiViljuske(i: CARDINAL);
BEGIN
  stanja[i] := misli;
  TestVrati(left(i));
  TestVrati(rght(i))
END VratiViljuske;

BEGIN
  FOR i := 1 TO N DO
    Init(up[i]);
    stanja[i] := misli
  END;
  i := 0;
END Monitor.




MODULE filozofi;
FROM Process IMPORT StartScheduler,StopScheduler,StartProcess;
FROM Monitor IMPORT UzmiViljuske,VratiViljuske,UzmiId,N;
VAR
  k: CARDINAL;

PROCEDURE Filozof;
VAR
  id: CARDINAL;
BEGIN
  id := UzmiId;
  LOOP
    Razmisljaj;
    UzmiViljuske(id);
    Jedi;
    VratiViljuske(id)
  END
END Filozof;

BEGIN
  StartScheduler;
    FOR k := 1 TO N DO
    END;
  StopScheduler;
END filozofi.

Ovo je primer zadatka uradjenog u Moduli, to su takozvani jeduci filozofi, tj sto sa 5 filozofa i viljuskama sa strane za okruglim stolom.

[Ovu poruku je menjao Mihajlo Cvetanović dana 08.09.2009. u 13:53 GMT+1]
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1249



+96 Profil

icon Re: konkuretno programiranje08.09.2009. u 13:31 - pre 178 meseci
Ubacio sam ti [Code ] tagove, tako da listing sad ima smisla, i čitljiviji je. Uzgred u modulu filozofi postoji procedura Filozof koja se nigde ne koristi, a istovremeno postoji i prazna petlja u glavnoj proceduri. Tu verovatno fali nešto. Nedostaju i procedure Razmisljaj i Jedi, ali to verovatno fali onako "akademski". Zbog toga što one nedostaju nisi u mogućnosti da probaš da napraviš ovaj program, čak i kad bi htela.

Malo mi je čudna jedna stvar, pojavljuje se reč Monitor, ali kao ime, a ne kao neka sistemska reč. Na koji način je obezbeđeno da se funkcije iz modula koji se zove Monitor pozivaju atomski (tj. u jednom trenutku samo jedna funkcija)?

Ti moraš da znaš više od mene, s obzirom da ja ne znam Modulu 2 (a čini se da ga ne zna ni iko drugi ovde). Lepo je što si stavila algoritam 5 filozofa, ali sad stavi pokušaj algoritma simulacije zabavišta, pa da krenemo odatle.
 
Odgovor na temu

AljaSavkovic
student,PMF

Član broj: 207458
Poruke: 10
212.200.65.*



Profil

icon Re: konkuretno programiranje08.09.2009. u 17:50 - pre 178 meseci
Hvala, bas sam ne znam sta da kazem, uopste to nisam ni kontala, imam neke primere uradjene, ali svi na neki fazon uglavnom da se ne mogu pokrenuti, da vidim kako to radi, monitori su realizovani preko def i impl modula, to su manje celine u M-2, tako ti je to kad nemas dovoljno literature, ni nekih primera vise uradjenih pa da shvatis. Sta da ti kazem nista kako treba, probacu da uradim zadatak, pa cu da posaljem resenje. Jos jednom Hvala i divan si.
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1249



+96 Profil

icon Re: konkuretno programiranje08.09.2009. u 22:15 - pre 178 meseci
Gledao sam malo na internetu, stiče se utisak da je bilo koji modul automatski i monitor. Ko će ga znati. Elem, u tvom Monitor modulu treba da imaš dve promenljive D i R koje kažu koliko je datih procesa u zabavištu, kao i četiri funkcije Roditelj/Dete - u zabaviše/iz zabavišta. Svaka od tih četiri menja jednu od R i D promenljiva, s tim što neke rade cwait, a sve rade csignal.

Evo sad razmišljam o rešenju i otkrio sam grešku u svojoj prvobitnoj ideji. Deca bi mogla da "izgladnjuju" roditelje tako što bi se šetkala u i iz zabavišta, a roditelji bi ostali večito zarobljeni unutra. Stvar je u tome da kad neki Roditelj želi napolje moramo da zabranimo prolazak Dece unutra. Trebalo bi uvesti neku promenljivu koja kaze da roditelj hoće napolje, i na zadovoljavajuće uslove treba čekati u petlji, jer samim tim što si izašao iz WAIT-a ne znači da su se stekli zadovoljavajući uslovi. Evo nekakvog koda, ali možda nije ispravan, ovo je teška zavrzlama. Profesor ti možda neće verovati da si to sama uradila. Ako ne razumeš odlično svrhu svake linije koda bićeš u problemu.

Code:

PROCEDURE RoditeljUZabaviste;
BEGIN
  R := R + 1;
  IF (R*3 > D) THEN
    SIGNAL(moze_jos);
  END
END RoditeljUZabaviste;

PROCEDURE RoditeljIzZabavista;
BEGIN
  WHILE ((R-1)*3 < D)
    RoditeljHoceNapolje := 1;
    WAIT(moze_jos);
  END

  R := R - 1;
  RoditeljHoceNapolje := 0;

  IF (R*3 > D) THEN
    SIGNAL(moze_jos);
  END
END RoditeljIzZabavista;

PROCEDURE DeteIzZabavista;
BEGIN
  D := D - 1;

  IF (R*3 > D) THEN
    SIGNAL(moze_jos);
  END
END DeteIzZabavista;

PROCEDURE DeteUZabaviste;
BEGIN
  WHILE (RoditeljHoceNapolje = 1 AND R*3 < D + 1)
    WAIT(c);
  END

  D := D + 1;

  IF (R*3 > D) THEN
    SIGNAL(moze_jos);
  END
END DeteUZabaviste;

 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1249



+96 Profil

icon Re: konkuretno programiranje09.09.2009. u 09:37 - pre 178 meseci
Otkrio sam grešku u sopstvenom kodu :-). Na stranu to što se na jednom mestu koristi "c" umesto "moze_jos", algoritam ne valja jer postoji hipotetička situacija u kojoj je jedan Roditelj večito zarobljen u zabavištu. Problem je u tome što se čeka u petlji. Kad izađeš iz WAIT-a i uđeš ponovo (jer se nisu stekli zadovoljavajući uslovi), verovatno ideš na kraj nekog internog FIFO reda kojim se reguliše čekanje. Jedan Roditelj može večito da se vrti u petlji, dok svi drugi Roditelji i sva Deca lepo prolaze kroz zabaviše. Potrebno je izbeći čekanje u petlji. Evo novog rešenja u kome smoreni roditelji (koji hoće iz zabavišta) imaju prednost nad decom. Možda bi trebalo promeniti ime te promenljive :-)

EDIT: Argh, greška u proceduri SignalSledeci! Valjda je sad konačno ispravno.

Code:

PROCEDURE SignalSledeci;
BEGIN
  IF (SmoreniRoditelji > 0) THEN
    IF ((R - 1)*3  >= D) THEN
      SIGNAL(moze_roditelj);
    END
  ELSE IF (R*3 >= D + 1) THEN
    SIGNAL(moze_dete);
  END
END SignalSledeci;

PROCEDURE RoditeljUZabaviste;
BEGIN
  R := R + 1;
  SignalSledeci;
END RoditeljUZabaviste;

PROCEDURE RoditeljIzZabavista;
BEGIN
  IF ((R-1)*3 < D) THEN
    SmoreniRoditelji = SmoreniRoditelji + 1;
    WAIT(moze_roditelj);
  END

  R := R - 1;
  SmoreniRoditelji = SmoreniRoditelji - 1;
  SignalSledeci;
END RoditeljIzZabavista;

PROCEDURE DeteIzZabavista;
BEGIN
  D := D - 1;
  SignalSledeci;
END DeteIzZabavista;

PROCEDURE DeteUZabaviste;
BEGIN
  IF (SmoreniRoditelji > 0 AND R*3 < D + 1) THEN
    WAIT(moze_dete);
  END

  D := D + 1;
  SignalSledeci;
END DeteUZabaviste;
 
Odgovor na temu

AljaSavkovic
student,PMF

Član broj: 207458
Poruke: 10
212.200.65.*



Profil

icon Re: konkuretno programiranje09.09.2009. u 16:14 - pre 178 meseci
Code:

DEFINITION MODULE Monitor;
PROCEDURE  DecaUZabavistu;
PROCEDURE  DecaVanZabavista;
PROCEDURE RoditeljiUZabavistu;
PROCEDURE RoditeljiVanZabavista;
PROCEDURE SignalSledeci;
END Monitor.
IMPLEMENTION MODULE Monitor;
FROM Process IMPORT SIGNAL, WAIT, SAND, Init;
VAR
   moze_roditelj, moze_dete: SIGNAL;
  R, D, SmoreniRoditelji: CARDINAL;
PROCEDURE SignalSledeci;
BEGIN
  IF (SmoreniRoditelji > 0) THEN
    IF ((R - 1)*3  >= D) THEN
      SEND(moze_roditelj);
    END
  ELSE IF (R*3 >= D + 1) THEN
    SEND(moze_dete);
  END
END SignalSledeci;

PROCEDURE RoditeljUZabaviste;
BEGIN
  R := R + 1;
  SignalSledeci;
END RoditeljUZabaviste;

PROCEDURE RoditeljIzZabavista;
BEGIN
  IF ((R-1)*3 < D) THEN
    SmoreniRoditelji = SmoreniRoditelji + 1;
    WAIT(moze_roditelj);
  END

  R := R - 1;
  SmoreniRoditelji = SmoreniRoditelji - 1;
  SignalSledeci;
END RoditeljIzZabavista;

PROCEDURE DeteIzZabavista;
BEGIN
  D := D - 1;
  SignalSledeci;
END DeteIzZabavista;

PROCEDURE DeteUZabaviste;
BEGIN
  IF (SmoreniRoditelji > 0 AND R*3 < D + 1) THEN
    WAIT(moze_dete);
  END

  D := D + 1;
  SignalSledeci;
END DeteUZabaviste;
BEGIN
Init(moze_roditelj); 
Init(moze_dete);
R:=0;
D:=0;
Smoreni_Roditelj:=0;
END Monitor.

MODULE Zabaviste;
FROM Monitor IMPORT   DecaUZabavistu,  DecaVanZabavista, RoditeljiUZabavistu, RoditeljiVanZabavista, SignalSledeci;
FROM Process IMPORT StartScheduler,StopScheduler,StartProcess;
VAR
  k: CARDINAL;

PROCEDURE Roditelj;
BEGIN
  
  LOOP
    RoditeljUZabavistu;
    RoditeljVanZabavista;
  
  END
END Roditelj;

PROCEDURE Dete;
BEGIN
  
  LOOP
    DeteUZabavistu;
    DeteVanZabavista;
  
  END
END Dete;

BEGIN
  StartScheduler;
    FOR k := 1 TO 4 DO
   StartProcess(Roditelj, 500, 1);
    END;
   FOR k := 1 TO 10 DO
   StartProcess(Dete, 500, 1);
    END;
    
  StopScheduler;
END Zabaviste.


Ne znam da li je ovo dobro, moram da vidim kako te poruke da realizujem.





[Ovu poruku je menjao Mihajlo Cvetanović dana 09.09.2009. u 17:46 GMT+1]
 
Odgovor na temu

AljaSavkovic
student,PMF

Član broj: 207458
Poruke: 10
212.200.65.*



Profil

icon Re: konkuretno programiranje09.09.2009. u 16:22 - pre 178 meseci
U Javi slican zadatka, ali pomocu semafora
U nekom zabavištu postoji pravilo koje kaže da se na svaka tri deteta mora naći barem jedna
vaspitačica. Roditelj dovodi jedno ili više dece u zabavište. Ukoliko ima mesta ostavlja
ih, ukoliko ne odvodi ih. Vaspitačica sme da napusti zabavište samo ukoliko to ne narušava
pravilo. Napisati procedure, koristeći semafore, za roditelje koji dovode i odvode decu i
vaspitačici i inicijalizovati početne uslove.
Rešenje:
Code:

program ChildCare;
const C = 3;
var numChild : integer;
numNann : integer;
numWaiting : integer;
mutex : semaphore;
confirm : semaphore;
toLeave : semaphore;
function bringUpChildren ( num : integer) : boolean;
begin
wait(mutex);
if((numChild + num) <= C * numNann) then
begin
numChild := numChild + num;
bringUpChildren := true;
end
else
bringUpChildren := false;
signal(mutex);
end;
procedure bringBackChildren ( num : integer);
var out, i : integer;
begin
wait(mutex);
numChild := numChild - num;
out : = numNann - (numChild + C - 1) / C;
if(out > numWaiting) then out := numWaiting;
for i := 1 to out do
begin
signal(toLeave);
wait(confirm);
end
signal(mutex);
end;
procedure nannEnter();
begin
wait(mutex);
numNann := numNann + 1;
if(numwaiting > 0) then
begin
signal(toLeave);
wait(confirm);
end
signal(mutex);
end;
procedure nannExit();
begin
wait(mutex);
if ((numChild) <= C * ( numNann - 1)) then
begin
numNann := numNann - 1;
signal(mutex);
end
else
begin
numWaiting := numWaiting + 1
signal(mutex);
wait(toLeave);
numNann := numNann - 1;
numWaiting := numWaiting - 1
signal(confirm);
end
end;
begin
numChild := 0;
numNann := 0;
numwaiting := 0;
init(mutex, 1);
init(confirm, 0);
init(toLeave, 0);
cobegin
...
coend;
end.


[Ovu poruku je menjao Mihajlo Cvetanović dana 09.09.2009. u 17:50 GMT+1]
 
Odgovor na temu

AljaSavkovic
student,PMF

Član broj: 207458
Poruke: 10
212.200.65.*



Profil

icon Re: konkuretno programiranje09.09.2009. u 16:39 - pre 178 meseci
U Paskalu, a ja tuka napisala u Javi.
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1249



+96 Profil

icon Re: konkuretno programiranje09.09.2009. u 16:59 - pre 178 meseci
Stavio sam [code ] tagove tamo gde treba, ti tagovi moraju da stoje oko listinga programa, jer bi inače forumski server mogao nešto da protumači pogrešno. Stavljaj obavezno [code ][/code ] tagove (bez ovih razmaknica što ih vidiš, to ja namerno da bi se tagovi videli, a ne interpretirali).

Uzgred, nisi morala da stavljaš ovde ovaj listing u paskalu, bilo je dovoljno da staviš link na mesto gde si ga našla: http://www.dreamincode.net/forums/showtopic105452.htm . A nisam baš ni potpuno siguran da taj kod može da se preslika u Modulu-2, mislim da koristi malo drugačiju tehnologiju sinhronizacije. Moguće da grešim, nisam baš siguran.
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1249



+96 Profil

icon Re: konkuretno programiranje09.09.2009. u 17:12 - pre 178 meseci
Što se tiče ispisivanja toka rada možeš da iskoristiš proceduru SignalSledeci, pošto se ona poziva svaki put kad se promeni nešto od R i D. Na početku te funkcije samo ispiši koliko je R, koliko D, i to je to. To je promena stanja u zabavištu. Sami procesi nemaju stanje, nego im se beskonačno izvršava jedna od dve funkcije. Možeš pre svake funkcije da ispišeš da recimo taj-i-taj proces kreće da izvršava tu-i-tu operaciju. Trebalo bi da se svi procesi razlikuju među sobom nekim identifikatorom koji će se videti pri ispisivanju.

Ako će to da se izvršava negde, onda treba da staviš i neke pauze između tih funkcija, sa slučajnim vremenima trajanja. Biće bolje i za oči i za kompjuter :-)
 
Odgovor na temu

AljaSavkovic
student,PMF

Član broj: 207458
Poruke: 10
212.200.65.*



Profil

icon Re: konkuretno programiranje09.09.2009. u 17:57 - pre 178 meseci
Hvala!
Ovaj zadatak je sinhronizovan semaforima, a u M-2 se oni mogu prikazati monitorima, valjda je tako i u Paskalu, jer je M-2 nastala na osnovu Paskala, isti je tvorac, cini mi se skoro isto, videcu sta dalje.
 
Odgovor na temu

[es] :: Art of Programming :: konkuretno programiranje

Strane: 1 2

[ Pregleda: 5505 | Odgovora: 20 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.