• Welcome to TUKE FÓRUM - Fórum pre Å¡tudentov Technickej Univerzity v KoÅ¡iciach.
 

Principy programovacich jazykov

Started by stamperlik, 19.02.2010, 06:25:43

« predchádzajúce - ïal¹ie »

scream

nema niekto vypracovane zotavenia? bo stale neviem jak to ma byt:(

stiffmaister

Quote from: scream on  12.05.2010, 23:39:43
nema niekto vypracovane zotavenia? bo stale neviem jak to ma byt:(
nj, to by bodlo. ak to niekto vie, pomozte, pls..... :embarassed:

drtic

V podstate tam ide o to ze su dve procedury Check(SymSet K) a Error(SymSet K), ktore su vzdy rovnake a tretia procedura, pre ktoru robite zotavenie. Vychadzate z predpisu tej procedury a podla toho pisete kod. Ako na to je velmi dobre ukazane v Plocicovej 5.tej prezentacii. Z toho sa to da naucit.

scream

#203
je to tam vysvetlene, ale napr. ked su zlozitejsie veci ako bolo v druhej skupine na skuske tak to neni az taka sranda....

stiff...

ja by som  (H(B)|H(C)) robil cez kombinaciu IF - overi ci je z danej mnoziny a  SWITCH. case H(B) volanie procedury B a case C volanie C, default error.  Toto co si napisal ty by bolo podla mna dobre keby  tam nebolo B ale b - cize terminal.
NEVYPRACOVANA SKUSKA JE TU http://ulozto.sk/4762233/ppj7-5-2010.zip

stiffmaister

nejako takto?

X -> A[B|C]D:
void x (symset K)
{
A(H(B)|H(C)|H(D)|K);
check (H(B)|H(C)|H(D)|K);
if (sy in (H(B)|H(C))
 {
  switch (sy)
   case H(B) : B(K);
   case H(C) : C(K);
   default : error (H(B)|H(C));
  }
else check (H(D)|K);
switch (sy)
   case H(D) : D(K);
   default : error (K);
}

scream

#205
X -> A[B|C]D:
void x (symset K)
{
A(H(B)|H(C)|H(D)|K);

check (H(B)|H(C)|H(D)|K);
if (sy in (H(B)|H(C))
 {
check (H(B)|H(C);
  switch (sy){
   case H(B) : B( HD | K);
   case H(C) : C(HD | K);
}
   }
D(K);
}


EDIT !
dajak tak...

meki

tak by to malo byt na 99% dobre :D

X -> A[B|C]D:
void x (symset K)
{
A(H(B)|H(C)|H(D)|K);
check (H(B)|H(C)|H(D)|K);
if (sy & (H(B)|H(C))
  {
   check (H(B)|H(C)|K);
   switch (sy)
  {
    case H(B) : B(K);break;
    case H(C) : C(K);break;
    default : error (K);
   }
}

D(K);
}

scream

preco default : error (K); ? ved nic ine ako H(B), H(C) nemoze byt na vstupe po osetreni IF nie?

meki

Quote from: scream on  13.05.2010, 06:56:38
preco default : error (K); ? ved nic ine ako H(B), H(C) nemoze byt na vstupe po osetreni IF nie?
ved aj v tej plocicovej prednaske je po if error a kamos mal tak minule na skuske a mal Acko...

scream

no ja by som rad vedel preco tam ma byt... [ ] znamena 0...1, cize to tam moze byt alebo aj nemusi....  cize ak tam nieje znak z H(B) H(C) tak to nemusi byt chyba lebo moze byt z H(D)...tak to chapem ja....

sad47

Hodte sem prosim niekto link na tu plocicovu stranku... nejak nemam sajn kde to je


jim-beam33

Lustim krizovku - vie niekto ci to je spravne? bu
zadane bolo: A -> a b A / a {B} trebalo to upravit do bezkontextoveho tvaru: A -> a (b A / {B})

void A(symbolset K) {

if(sym == a)  getsymbol(); esle error(H(b)|HA|HB|K);
chceck(H(b)|HA|HB|K)
switch(sym) {

case H(b):   

if(sym == b ) getsymbol() ; 
A(k);
}break;

case HB :    {         

check(HB | K ) ;                                 

while(sym in HB) {   

B(HB | K ) ;                             

check (HB|K);                               

}
} break;
defaul error(H(b) | HA|HB | K ) ;     

}

}

jim-beam33

[quote author=meki link=topic=4058.msg187267#msg187267 date=1273704440]
tak by to malo byt na 99% dobre :D


no ja by som to trosku poopravil...
X -> A[B|C]D:
void x (symset K)
{
A(H(B)|H(C)|H(D)|K);
check (H(B)|H(C)|H(D)|K);
if (sy & (H(B)|H(C))
  {
   check (H(B)|H(C)|K);
   switch (sy)
  {
    case H(B) : B(H(D)|K);break;
    case H(C) : C(H(D)|K);break;
    default : error (H(B)|H(C)|K);
   }
}

D(K);
}

[/quote]

markus

Quote from: jim-beam33 on  13.05.2010, 16:55:44
Lustim krizovku - vie niekto ci to je spravne? bu
zadane bolo: A -> a b A / a {B} trebalo to upravit do bezkontextoveho tvaru: A -> a (b A / {B})....

Robil som to podobne ale mensie upravy:


void A(symbolset K)
{
   if(sym == a)  getsymbol();
   esle error({b}|HA|HB|K);
   check({b}|HA|HB|K)
   switch(sym)
   {
         case b: {
                       getsymbol(); 
                       A(k);
                       break;
                     }
        case HB :{         
                       check(HB | K ) ;                                 
                       while(sym & HB)
                       {   
                            B(HB | K ) ;                             
                            check (HB|K);                               
                       }
                       break;
                      }
        defaul: error(K ) ;     
    }
}

scream

ja by som to spravil tak ako markus....

Inak kde su nejake pravidla na tu pociatocnu upravu do bezkontextoveho jazyka?

jim-beam33

Quote from: markus on  13.05.2010, 17:34:33
Quote from: jim-beam33 on  13.05.2010, 16:55:44
Lustim krizovku - vie niekto ci to je spravne? bu
zadane bolo: A -> a b A / a {B} trebalo to upravit do bezkontextoveho tvaru: A -> a (b A / {B})....

Robil som to podobne ale mensie upravy:


void A(symbolset K)
{
   if(sym == a)  getsymbol();
   esle error({b}|HA|HB|K);
   check({b}|HA|HB|K)
   switch(sym)
   {
         case b: {
                       getsymbol(); 
                       A(k);
                       break;
                     }
        case HB :{         
                       check(HB | K ) ;                                 
                       while(sym & HB)
                       {   
                            B(HB | K ) ;                             
                            check (HB|K);                               
                       }
                       break;
                      }
        defaul: error(K ) ;     
    }
}


preco je default:error (K); ?????

scream

lebo switch deinuje co sa ma robit pre (b A / {B}) a ak pride nejaky iny znak (chyba) tak to skoci do default a vyhodi error.

markus

vie mi niekto povedat aky je rozdiel ked kreslim deterministicky a nedeterministicky graf?

scream


thom

Quote from: markus on  13.05.2010, 21:01:27
vie mi niekto povedat aky je rozdiel ked kreslim deterministicky a nedeterministicky graf?
Tak co ja si dobre pamatam tak deterministicky graf je taky, ze ak mas napr. dva vrcholy a z vrcholu c. 1 ides do vrcholu c. 2 iba po hrane "a"
a nedeterministicky je taky,ze mas tiez napr. dva vrcholy a z vrcholu c.1 ides do vrcholu c.2 a mozes ist po hrane "a", ale moze ist aj dalsou hranou "a".
Ale aby som to este aj inac vysvetlil tak, ze medzi dvoma vrcholmi mas jednu hranu "a" cize sa vies presne dostat z c.1 do c.2 - mas determinizmus
ale ak mas medzi c.1 a c.2 dve hrany "a" (lebo aj tak mozes mat) - nevies sa uz presne rozhodnut ako dalej, cize mas nedeterminizmus.
dufam,ze som to vysvetlil rozumne :)

markus

vzhladom na to ze sa mi uz podarilo najst v skriptach nieco o tom tak hej :D diky :D

kukinko

dnesok nevyzera dobre...
hnusne pocasie...
hnusna skuska....
:(
aj externisti ešte žijú .... len ktovie dokedy ... :(

lama niesom, ale všetko neviem .. ..

kúpim LCD na PS ONE

mucko

ako znie Kollarova stranka? este mam dve hodiny takze mozno sa stihnem aj nieco naucit  :ropebanana:

romeo

dneska zase zabil... 98.9 percent ze nemam...
....in dreams until my death i will wander on ....