User Tools

Site Tools


laboratoare:06-aplicatii-cu-tda-uri
LDAP: couldn't connect to LDAP server

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