«« ( Date ) »» // «« ( Thread ) »» // ir4pp1 - 2008

Re: domaci 2 problem

by Marina Bjegovic
petak, 11. januar 2008 - 16:03.

I ja sam to primetila i slicno dodala (o != null) , ali u for petlju...
Mislim da bi moralo tako da se radi...

Medjim, ovo se javlja jer mi pretrazujemo hes tabelu u samo 1 nivou
(sa metodom searchKey), ne gledajuci pritom locals od Obj iz te
hashTable.
Kad bi ovo gledali, ne bi imali gore navedeni problem, ali bi
verovatno imali lose rezultate pri trazenju predefinisanih metoda....

Medjutim, mi nemamo Obj u HashTable, a samim tim ne mozemo dohvatiti
locals, i zbog toga je valjda ok da pretrazujemo HashTable u jednom
nivou i uvedemo gore navedenu izmenu...

Valjda nisam mnogo zbunila ljude...

Jel imao neko slicnu dilemu? Jel smemo dodati gore navedenu izmenu?

Pozdrav, Marina

On 1/10/08, Bojan <bojan23@sbb.co.yu> wrote:
> Meni se cini da postoji greska u kodu metode u fajlu Tab.java
>
>
>
> public static Obj find(String name) {
>
> HashTable scopeSyms;
>
> Obj o = null;
>
> for (Scope s = topScope; s != null; s = s.outer) {
>
> scopeSyms = s.locals;
>
> if (scopeSyms != null) {
>
> o = (Obj) scopeSyms.searchKey(name);
>
> // ovde bih dodao
>
> //if(o != null) break;
>
> } else {
>
> o = null;
>
> }
>
> }
>
> if (o == null) {
>
> error("GRESKA: Simbol " + name + " nije pronadjeno.");
>
> return noObj;
>
> } else {
>
> return o;
>
> }
>
> }
>
>
>
> Naime ako bi se pretrazivao neki scopeSyms i pronasao Obj sa trazenim
> kljucem, algoritam nastavlja dalje sa pretragom i prelazi na
> outerScope.locals i ako tu ne pronadje trazeni kljuc on vraca null iako je
> pronasao kljuc u nekom predhodnom scope-u, (prakticno on ce ovde vratiti Obj
> samo ako ga pronadje u universe scope-u !) Dodavanjem linije koda koju sam
> zakomentarisao bi se resio taj problem.
>
> Zamolio bih asistenta da proveri ovo i odgovori da li sam u pravu.
>
> Hvala.
>
>