This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
laboratoare:06-aplicatii-cu-tda-uri [2015/03/30 16:56] 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> | + | |
| - | --Inrolati tipul vostru in clasa ''Show''. Definiti explicit o reprezentare (usor de urmarit) | + | <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) | ||
| - 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) | ||
| - 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 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. | ||
| Line 13: | 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]] | ||