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:51]
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>​
    <​expr>​ ::= <​valoare>​ | <​variabila>​ | <​expr>​ + <​expr>​ | <​expr>​ * <​expr>​ | (<​expr>​)    <​expr>​ ::= <​valoare>​ | <​variabila>​ | <​expr>​ + <​expr>​ | <​expr>​ * <​expr>​ | (<​expr>​)
    <​variabila>​ ::= string    <​variabila>​ ::= string
-   <​valoare>​ :: orice:+   <​valoare>​ ::orice
        
-    +   <​prog>​ ::= <​variabila>​ = <​expr>​ | if <​expr>​ then <​prog>​ else <​prog>​ | <​prog>​ ; <​prog>​ | return <​variabila>​ 
-  * Inrolati tipul vostru in clasa Show. Definiti explicit o reprezentare (usor de urmarit) +</​code> ​   
-  ​Definiti o expresie formata cu Intregi ​(care va fi folosita ulterior pentru testare) +  ​- Definiti un tip de date care codifica expresii ''<​expr>''​ generate de gramatica BNF de mai sus 
-  ​Definiti un tip care reprezinta o multime de asocieri ale unor +      ​Tipul definit de voi va fi monomorfic sau polimorfic?​ 
 +  - 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 un tip care reprezinta o multime de asocieri ale unor variabile la valori. Obiecte avand un astfel de tip sunt //​interpretari//​ pentru o multime de variable. Interpretarea pentru o variabila consta intr-o valoare. 
 +  - Definiti o functie ''​eval''​ care determina rezultatul unei expresii, pe baza unei interpretari:​ 
 +      * scrieti signatura pentru ''​eval''​ 
 +      * 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.1427723497.txt.gz · Last modified: 2015/03/30 16:51 by matei.popovici