User Tools

Site Tools


laboratoare:06-aplicatii-cu-tda-uri

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
laboratoare:06-aplicatii-cu-tda-uri [2015/03/30 16:57]
matei.popovici
laboratoare:06-aplicatii-cu-tda-uri [2015/05/07 13:48] (current)
radu.stoenescu
Line 1: Line 1:
 ===== Laborator 6 - Aplicatii cu TDA-uri ===== ===== Laborator 6 - Aplicatii cu TDA-uri =====
-  - Definiti un tip de date care codifica expresii generate de urmatoarea gramatica BNF 
 <​code>​ <​code>​
    <​expr>​ ::= <​valoare>​ | <​variabila>​ | <​expr>​ + <​expr>​ | <​expr>​ * <​expr>​ | (<​expr>​)    <​expr>​ ::= <​valoare>​ | <​variabila>​ | <​expr>​ + <​expr>​ | <​expr>​ * <​expr>​ | (<​expr>​)
    <​variabila>​ ::= string    <​variabila>​ ::= string
-   <​valoare>​ :: orice +   <​valoare>​ ::orice 
-</​code> ​     ​+    
 +   <​prog>​ ::= <​variabila>​ = <​expr>​ | if <​expr>​ then <​prog>​ else <​prog>​ | <​prog>​ ; <​prog>​ | return <​variabila>​ 
 +</​code> ​   
 +  - Definiti un tip de date care codifica expresii ''<​expr>''​ generate de gramatica BNF de mai sus 
 +      * Tipul definit de voi va fi monomorfic sau polimorfic?
   - Inrolati tipul vostru in clasa ''​Show''​. Definiti explicit o reprezentare (usor de urmarit)   - Inrolati tipul vostru in clasa ''​Show''​. Definiti explicit o reprezentare (usor de urmarit)
   - Definiti o expresie formata cu intregi (care va fi folosita ulterior pentru testare)   - Definiti o expresie formata cu intregi (care va fi folosita ulterior pentru testare)
Line 12: Line 15:
       * scrieti signatura pentru ''​eval''​       * scrieti signatura pentru ''​eval''​
       * realizati implementarea efectiva       * realizati implementarea efectiva
-  - +  - Definiti un tip de date care codifica expresii ''<​prog>''​ generate de gramatica BNF de mai sus. 
 +      * Tipul definit de voi va fi monomorfic sau polimorfic?​ 
 +  - Inrolati tipul definit de voi in clasa ''​Show''​. 
 +  - Definiti o clasa (type-class) ''​Evaluable''​ care modeleaza faptul ca o valoare **de tip //​container//​** poate fi evaluata la o valoare de **tipul continut** de containerul respectiv.  
 +       * Clasa pune la dispozitie o singura operatie ''​eval''​ care generalizeaza operatia eval definita pentru expresii 
 +       * Realizati o instanta a ''​Evaluable''​ pentru constructorul de tip al ''<​expr>''​. Observati faptul ca implementarea procedurii de evaluare a fost realizata anterior. 
 +       * Realizati o instanta a ''​Evaluable''​ pentru constructorul de tip al ''<​program>''​. Mai exact, implementati evaluarea unui program. 
 +           * In implementare,​ observati ca interpretarea se modifica pe masura ce programul este evaluat.  
 +           * Asadar, aveti nevoie de o functie auxiliara, care construieste o interpretare,​ pe baza unui program 
 + 
 +[[https://​github.com/​Programming-Paradigms/​Labs/​archive/​master.zip|Solutii]]
laboratoare/06-aplicatii-cu-tda-uri.1427723864.txt.gz · Last modified: 2015/03/30 16:57 by matei.popovici