Difference between revisions of "Ro/Sintaxa Limbajului Rodin"

From HaskellWiki
Jump to navigation Jump to search
m
m
Line 9: Line 9:
 
Pentru a nu ajunge in situatia proiectantilor din imaginea de mai sus este recomandabil sa se predea intai conceptele in limba romana (sub forma de pseudocod), urmate de cuvintele cheie englezesti. Deoarece studentii si elevii pot protesta (pe drept cuvant) ca vin in laboratorul de infoprmatica si fac pseudocod la tabla fara sa puna mina pe calculatoare (voi adauga link-ul ...)
 
Pentru a nu ajunge in situatia proiectantilor din imaginea de mai sus este recomandabil sa se predea intai conceptele in limba romana (sub forma de pseudocod), urmate de cuvintele cheie englezesti. Deoarece studentii si elevii pot protesta (pe drept cuvant) ca vin in laboratorul de infoprmatica si fac pseudocod la tabla fara sa puna mina pe calculatoare (voi adauga link-ul ...)
 
am realizat Limbajul Pseudocod Rodin, care rezolva aceasta problema. Si, bineinteles produce altele :)
 
am realizat Limbajul Pseudocod Rodin, care rezolva aceasta problema. Si, bineinteles produce altele :)
  +
  +
  +
Cuvinte cheie folosite, instructiuni, operatori, primele exemple:
  +
  +
  +
== RodinV08-Ro -- 9/11/2008 ==
  +
  +
Nota: Am introdus 'text' iar 'tasteaza' a devenit 'citeste'.
  +
  +
Nou: Am introdus vectori liniari oricat de lungi.
  +
  +
Dar sa fie initializati.
  +
  +
  +
  +
  +
  +
Atribuirea pentru vectori
  +
  +
=========================
  +
  +
<idvector>[<exp>]=<exp>;
  +
  +
  +
  +
Expresie element de vector
  +
  +
==========================
  +
  +
<idvector>[<exp>]
  +
  +
  +
  +
Secventa de instructiuni
  +
  +
=========================
  +
  +
{ <expr>; .... <expr> ; }
  +
  +
  +
  +
  +
  +
Atribuirea
  +
  +
==========
  +
  +
fie <name> = <expr>
  +
  +
  +
  +
Alternativa/Conditionala
  +
  +
========================
  +
  +
daca <expr> atunci <expr> altfel <expr>
  +
  +
  +
  +
  +
  +
Bucla cu test initial
  +
  +
========================
  +
  +
cat timp (<expr>) <expr>
  +
  +
  +
  +
Bucla cu test final
  +
  +
===================
  +
  +
executa <expr> atat cat (<expr>)
  +
  +
  +
  +
  +
  +
  +
  +
Bucla cu test de succes final
  +
  +
==============================
  +
  +
repeta <expr> pana cand <expr>
  +
  +
  +
  +
Bucla cea mai generala
  +
  +
======================
  +
  +
pentru (<exp>; <exp>; <exp>) <exp>
  +
  +
  +
  +
  +
  +
Tastarea unui nr (op de citire)
  +
  +
===============================
  +
  +
citeste <ident>
  +
  +
  +
  +
Scrierea
  +
  +
========
  +
  +
scrie <expr>
  +
  +
text "string de afisat"
  +
  +
  +
  +
  +
  +
Functii anonime nerecursive
  +
  +
===========================
  +
  +
(\ <name> . <expr>)
  +
  +
  +
  +
  +
  +
Aplicarea (asociaa la dreapta)
  +
  +
==============================
  +
  +
<functie anonima> <expr>
  +
  +
  +
  +
  +
  +
Operatori: + - * / %
  +
  +
Comparatii: > , < , == , !=
  +
  +
  +
  +
  +
  +
Lipsesc: ! negatia, op logici ,op logici pe biti, cond-ul...
  +
  +
  +
  +
  +
  +
Atribuirea are valoare
  +
  +
======================
  +
  +
{ fie y =2;
  +
  +
fie x=100;
  +
  +
cat timp (x>10)
  +
  +
fie x=x-(fie y = 1);
  +
  +
scrie x;
  +
  +
scrie y;
  +
  +
}
  +
  +
  +
  +
Program 1:
  +
  +
============
  +
  +
{scrie 1;}
  +
  +
  +
  +
Program 2
  +
  +
==========
  +
  +
{ citeste x;
  +
  +
scrie x;}
  +
  +
  +
  +
Program 3
  +
  +
=========
  +
  +
{ citeste x;
  +
  +
fie x=x+1;
  +
  +
scrie x;
  +
  +
}
  +
  +
  +
  +
Program 4:cmmdc
  +
  +
===============
  +
  +
{ citeste a;
  +
  +
citeste b;
  +
  +
fie undeimp=a;
  +
  +
fie unimp=b;
  +
  +
repeta
  +
  +
{ fie unrest=undeimp%unimp;
  +
  +
fie undeimp=unimp;
  +
  +
fie unimp=unrest;
  +
  +
}
  +
  +
pana cand (unimp==0);
  +
  +
scrie undeimp;
  +
  +
};
  +
  +
  +
  +
  +
  +
Program 5: bucla cu nr cunoscut de pasi
  +
  +
=======================================
  +
  +
{pentru(fie x=1;x<10;fie x=x+1) scrie x;};
  +
  +
  +
  +
  +
  +
Program 6: numere pitagoreice
  +
  +
==============================
  +
  +
{ pentru (fie x=1; x<3; fie x=x+1)
  +
  +
pentru (fie y=x+1; y<3; fie y=y+1)
  +
  +
{
  +
  +
scrie x*x+y*y;
  +
  +
scrie y*y-x*x;
  +
  +
scrie 2*x*y;
  +
  +
};
  +
  +
};
  +
  +
  +
  +
  +
  +
Program 7: maximul unui sir de numere terminat cu zero
  +
  +
=======================================================
  +
  +
{ text " Maximul elementelor unui sir de numere ";
  +
  +
text "pozitive distincte terminat cu numarul zero. ";
  +
  +
fie xmaxpp = 0;
  +
  +
text "Dati y ";
  +
  +
citeste y;
  +
  +
executa {
  +
  +
{daca (y>xmaxpp) atunci fie xmaxpp=y altfel fie xmaxpp=xmaxpp;};
  +
  +
text "Dati urmatorul y ";
  +
  +
citeste y;
  +
  +
}atat cat (y!=0);
  +
  +
text "maximul este ";
  +
  +
scrie xmaxpp;
  +
  +
};
   
 
Cuvinte cheie folosite, instructiuni, operatori, primele exemple:
 
Cuvinte cheie folosite, instructiuni, operatori, primele exemple:
   
RodinV07-Ro -- 10/9/2008
+
== RodinV07-Ro -- 10/9/2008 ==
   
 
'''Secventa de instructiuni:'''
 
'''Secventa de instructiuni:'''
Line 65: Line 365:
   
 
</haskell>
 
</haskell>
  +
  +
----
  +
  +
Pagina in curs de "renovare".

Revision as of 12:27, 19 November 2008

Sintaxa Limbajului Pseudocod Rodin

http://www.haskell.org/haskellwiki/Ro/Sintaxa_Limbajului_Rodin

Limbajele din clasa C-ului, fie ca este vorba de limbaje pentru software de proiectare (Solid Works ??) fie ca este vorba de limbaje de programare sau limbaje de (web-)scripting au in general o sintaxa asemanatoare. Necazul este ca un incepator trebuie sa invete SIMULTAN si semnificatia instructiunilor - impreuna cu acele concepte fundamentale ascunse in spatele lor - si cuvintele englezesti cu care se scriu programele. Si asta stiind uneori doar romana, franceza sau rusa. Greselile devin in acest caz mult mai usor de facut.

Engleza3.JPG

Pentru a nu ajunge in situatia proiectantilor din imaginea de mai sus este recomandabil sa se predea intai conceptele in limba romana (sub forma de pseudocod), urmate de cuvintele cheie englezesti. Deoarece studentii si elevii pot protesta (pe drept cuvant) ca vin in laboratorul de infoprmatica si fac pseudocod la tabla fara sa puna mina pe calculatoare (voi adauga link-ul ...) am realizat Limbajul Pseudocod Rodin, care rezolva aceasta problema. Si, bineinteles produce altele :)


Cuvinte cheie folosite, instructiuni, operatori, primele exemple:


RodinV08-Ro -- 9/11/2008

Nota: Am introdus 'text' iar 'tasteaza' a devenit 'citeste'.

Nou: Am introdus vectori liniari oricat de lungi.

Dar sa fie initializati.



Atribuirea pentru vectori

=============

<idvector>[<exp>]=<exp>;


Expresie element de vector

==============

<idvector>[<exp>]


Secventa de instructiuni

=============

{ <expr>; .... <expr> ; }



Atribuirea

==

fie <name> = <expr>


Alternativa/Conditionala

============

daca <expr> atunci <expr> altfel <expr>



Bucla cu test initial

============

cat timp (<expr>) <expr>


Bucla cu test final

=======

executa <expr> atat cat (<expr>)




Bucla cu test de succes final

==================

repeta <expr> pana cand <expr>


Bucla cea mai generala

==========

pentru (<exp>; <exp>; <exp>) <exp>



Tastarea unui nr (op de citire)

===================

citeste <ident>


Scrierea

==

scrie <expr>

text "string de afisat"



Functii anonime nerecursive

===============

(\ <name> . <expr>)



Aplicarea (asociaa la dreapta)

==================

<functie anonima> <expr>



Operatori: + - * / %

Comparatii: > , < , == , !=



Lipsesc: ! negatia, op logici ,op logici pe biti, cond-ul...



Atribuirea are valoare

==========

{ fie y =2;

 fie x=100;
 cat timp (x>10)
   fie x=x-(fie y = 1);
 scrie x;
 scrie y;

}


Program 1:

==

{scrie 1;}


Program 2

==

{ citeste x;

 scrie x;}


Program 3

=

{ citeste x;

 fie x=x+1;
 scrie x;

}


Program 4:cmmdc

===

{ citeste a;

 citeste b;
 fie undeimp=a;
 fie unimp=b;
 repeta
   { fie unrest=undeimp%unimp;
     fie undeimp=unimp;
     fie unimp=unrest;
    }
 pana cand (unimp==0);
 scrie undeimp;

};



Program 5: bucla cu nr cunoscut de pasi

===========================

{pentru(fie x=1;x<10;fie x=x+1) scrie x;};



Program 6: numere pitagoreice

==================

{ pentru (fie x=1; x<3; fie x=x+1)

  pentru (fie y=x+1; y<3; fie y=y+1)
    {
     scrie x*x+y*y;
     scrie y*y-x*x;
     scrie 2*x*y;
    };

};



Program 7: maximul unui sir de numere terminat cu zero

===========================================

{ text " Maximul elementelor unui sir de numere ";

 text "pozitive distincte terminat cu numarul zero. ";
 fie xmaxpp = 0;
 text "Dati y ";
 citeste y;
 executa {
   {daca (y>xmaxpp) atunci fie xmaxpp=y altfel fie xmaxpp=xmaxpp;};
   text "Dati urmatorul y ";
   citeste y; 
 }atat cat (y!=0);
 text "maximul este ";
 scrie xmaxpp;

};

Cuvinte cheie folosite, instructiuni, operatori, primele exemple:

RodinV07-Ro -- 10/9/2008

Secventa de instructiuni: { <expr>; .... <expr> ; }

Atribuirea fie <name> = <expr>

Alternativa/Decizia/Conditionala: daca <expr> atunci <expr> altfel <expr>

Bucla cu test initial: cat timp (<expr>) <expr>

Bucla cu test final: executa <expr> atat cat (<expr>)

Bucla cu test de succes final: repeta <expr> pana cand <expr>

Bucla cea mai generala: pentru (<exp>; <exp>; <exp>) <exp>

Tastarea unui nr (op de citire): tasteaza <ident>

Scrierea: scrie <expr>

Functii anonime nerecursive: (\ <name> . <expr>) unde name e numele variabilei parametru formal

Aplicarea (asociaza la dreapta): <functie anonima> <expr>

Atribuirea are valoare: valoarea atribuita e si valoarea ei

{ fie y =2;
  fie x=100;
  cat timp (x>10)
    fie x=x-(fie y = 1);
  scrie x;
  scrie y;
}

Operatori: + - * / %

Comparatii: > , < , == , !=

Lipsesc: ! negatia, op logici ,op logici pe biti ...

Pagina in curs de "renovare".