«« ( Date ) »» // «« ( Thread ) »» // drs - 2003

Re: CSP pointeri

by Zaharije Radivojevic
utorak, 01. jul 2003 - 15:20.


Postovani,
Pointeri Vam nisu potrebni, a ako zatrebaju ili uvedete fiktivni tip
pointer ili kao sto je to slucaj sa zastarleim jezicima sami izigravate
pointer preko integera (dovoljan da sve pokrije).


Pozdrav
Zaharije


On Tue, 1 Jul 2003, Zarko Acimovic wrote:

> Da li u CSP-u postoje pointeri i ako ne postoje kako se resava sledeci zadatak?
>
> 3. Postoji N procesa node (i:1..N) koji ili cuvaju elemente liste ili su slobodni. Svaki od njih moze da cuva neku vrednost (vred) i pointer na sledeci element u listi (sled). Proces head cuva pointer na prvi element u listi. Prilikom brisanja elementa iz liste proces koji ga predstavlja se prebacuje na pocetak liste slobodnih procesa na koji ukazuje proces free. Proces start inicira brisanje elementa sa zadatom vrednoscu iz liste. Realizovati procedure za sve navedene procese pomocu CSP-a.
>
> Resenje:
>
> node:: vred: integer;
>
> sled: pointer;
>
>
>
> [free:: prvi: pointer;
>
> buffer: pointer;
>
> X?buffer;
>
> buffer.sled:=prvi;
>
> prvi:=buffer;
>
> ||X:: USER;
>
> ]
>
>
>
> [head:: prvi: pointer;
>
> start?m;
>
> start!prvi;
>
> ]
>
>
>
> [start:: buffer: integer;
>
> novi, stari: pointer;
>
>
> X?buffer;
>
> head!novi;
>
> head?novi;
>
>
> *[novi.vred<>buffer; novi.sled<>nil -> stari:=novi; novi:=novi.sled;]
>
>
> [novi.vred=buffer -> stari.sled:=novi.sled; free!novi;
>
> []novi.vred<>buffer -> skip;
>
> ]
>
> ||X::USER
>
> ]
>
>