Personal tools

Rodin/Lista de sugestii si subtilitati cunoscute

From HaskellWiki

Jump to: navigation, search


1 Cautati intai la Rodin/FAQ si Rodin/CeSaFac (scris fara spatii dar cu majuscule) daca intampinati dificultati

Subtilitati ale limbajului Rodin. updated: 10 sept.2008

2 Subtilitati tehnice interne si teste interne

Treceti mai bine la punctul urmator daca nu aveti sursa la dispozitie.

3 Subtilitati si artificii de scriere

S2) Puneti spatiu dupa do la do while . Obligatoriu.
La fel si la versiunea care foloseste cuvinte cheie romanesti
 
 
S3) 12+(\\ y . y) (4+4) -- nu puneti spatii linga plusuri si alti operatori.
 
   Valabil si pentru comparatii: <,>, ==, !=
 
 
 
 
 
S4) Daca incercati sa folositi o atribuire pe post de expresie,
 
si o puneti in paranteza inchideti paranteza imediat, fara spatii:
 
 
 
H:\_Parsec_Modular>MainV03.exe Rodin2.hs
 
{ let y =2;
 
  let x=100;
 
  while (x>10)
 
    let x=x-(let y = 1 );
 
  print x;
 
  print y;
 
}
 
 
 
 
 
 
 
 
 
H:\_Parsec_Modular>MainV03.exe Rodin2.hs
 
{ let y =2;
 
  let x=100;
 
  while (x>10)
 
    let x=x-(let y = 1);
 
  print x;
 
  print y;
 
}
 
 
 
 
 
S5) \" este " ca si in C
 
Deci mesajul:
 
 
 
unexpected "\""
 
expecting space or expresion
 
 
 
inseamna ca a gasit o " neasteptata in string-ul de intrare
 
 
 
 
 
 
 
S6) Recomandare: Desi in teorie numele variabilelor
 
poate sa inceapa cu orice litera, Rodin nu accepta (cel putin acest prototip)
 
variabile care incep cu aceeasi litera ca si cuvintele cheie. 
 
(deoarece are un fel de scannerless parser).
 
NU FOLOSITI VARIABILE CARE INCEP LA FEL CA SI
 
CUVINTELE CHEIE, cu: d a c f p r s t
 
sau prefixati variabilele cu o litera
 
cum ar fi m.  
 
 
 
myif = "daca"
 
mythen = "atunci"
 
myelse = "altfel"
 
 
 
mylet = "fie"
 
 
 
mywhile = "cat timp" 
 
mywhile2 = "pina cand" 
 
mydo = "socoteste"
 
myprint = "scrie"
 
myread = "tasteaza"
 
mybegin = "{"
 
myend = "}"
 
myrepeat = "repeta"
 
myuntil = "pina cand"
 
myfor = "pentru"
 
 
 
Asa este insa gresit:
 
G:\_Rodin>MainV05-Ro Rodin-Ro-cmmdcLuc.txt
 
{ tasteaza a;
 
  tasteaza b;
 
  fie deimp=a;
 
  fie imp=b;
 
  cat timp (imp!=0)
 
    { fie rest=deimp/imp;
 
      fie deimp=imp;
 
      fie imp=rest;
 
     };
 
  cmmdc=deimp;
 
  scrie cmmdc;
 
};
 
MainV05-Ro: (line 6, column 16):
 
unexpected "e"
 
expecting "daca"
 
Observati confuzia dintre daca si deimp.
 
 
 
 
 
s7) Nu incepeti programul cu un rand liber ! 
 
va da eroare gasind acel Enter.
 
 
 
s8) Puneti imediat ; dupa atribuirea
 
 fie x=0; asa si nu fie x=0 ;
 
 
 
s9) dupa "socoteste" deschideti pe acelasi rand acolada,
 
   puneti un spatiu (macar) intre socoteste si acolada
 
 
 
s10)
 
Rodin-7/8/2008
 
{ tasteaza a;
 
  tasteaza b;
 
  fie undeimp=a;
 
  fie unimp=b;
 
  executa 
 
    { fie unrest=undeimp/unimp;
 
      fie undeimp=unimp;
 
      fie unimp=unrest;
 
     };
 
  cat timp (unimp != 0)
 
  scrie undeimp;
 
};
 
 
 
In instructiunea: "executa { ... } atat cat ( ... )"
 
punct si virgula pus dupa acolada e semnalat ca eroare.
 
iar al doilea set de cuvinte cheie este "atat cat" nu "cat timp" .
 
Ca urmare eroarea este semnalata asa:
 
 
 
G:\_Rodin>MainV05-Ro Rodin-Ro-cmmdcLuc.txt -mem
 
{ tasteaza a;
 
  tasteaza b;
 
  fie undeimp=a;
 
  fie unimp=b;
 
  executa
 
    { fie unrest=undeimp/unimp;
 
      fie undeimp=unimp;
 
      fie unimp=unrest;
 
     };
 
  cat timp (unimp != 0)
 
  scrie undeimp;
 
};
 
MainV05-Ro: (line 9, column 7):
 
unexpected ";"
 
expecting operator, space or "atat cat"
 
 
 
s11) In instructiunea 
 
repeta ... pana cand ....
 
nu apare nici un i.
 
 
 
Desi e enervant sa scrii "pana" in loc de "pina".
 
Dar hai sa facem cumva pe placul Academiei. :)
 
 
 
s12) Nu aveam operator modulo, pina la RodinV05-Ro si RodinV05-En.
 
acum avem unul, notat %. astfel ca ar trebui 10 % 3 sa dea 1.
 
 
 
s13) Preferati pentru lambda expresii (functii anonime)
 
forma (\x.x+1) si nu cea cu -> deoarece se confunda -> cu -,
 
neavand analizor lexical. Rodin 05,06,07
 
 
 
s14) Expresia a III-a din paranteza buclei cu numar cunoscut de iteratii
 
si cu corpul buclei erau inversate, pina la Rodin V06 inclusiv.
 
UPGRADATI la ultima versiune Rodin din rubrica [[Rodin/Download]]] pentru a putea preda bucle cu numar cunoscut de iteratii. 
 
 
s15) Atentie, una din versiunile mai vechi ale Limbajului foloseste "socoteste" alta "executa".
 
Orientati-va dupa numarul ei si data de lansare pentru a le deosebi. 
 
Sper sa nu gresesc afirmand asa ceva.

Pagina este in dezvoltare. Back pentru a reveni la pagina principala Rodin.