Re: pitanja
Djole wrote:
Preklapanje imena metoda u MikroJavi nije dozvoljeno.
Situacija koju ste prikazali je regularna. U iskazu (***) se pojavljuje 7 simbola. Svaki od njih morate potraziti u tabeli simbola. Ako postoji, ispisuje se poruka da je nadjen odgovarajuci simbol (npr. "Pronadjen simbol: polje c klase Unutra3 u liniji..."). Ako ne postoji, ispisuje se poruka o gresci. Ako posmatrate deo vaseg primera metod1(...).c[9].b[1], da biste mogli da pronadjete simbol c, Vi morate znati koja klasa je povratni tip metode metod1 i da onda u poljima te klase trazite c. Zatim, medju poljima klase koja je tip polja c trazite polje b. Znaci, morate da detektujete tipove da biste mogli da nadjete validan simbol. Ako u programu postoji vise simbola sa imenom c, u razlicitim opsezima, Vi morate ispravno da prepoznate o upotrebi kog imena se radi u nekom iskazu.
Morate. Moguc je npr. poziv metode m(a, b, m2(r)). Da bi ste tu mogli da proverite poklapanje tipova argumenata, morate iz tabele simbola procitati povratni tip metode m2.
Rekao sam da koriscenje predstavlja pojavu u naredbama u telu metoda. Deklaracije lokalnih promenljivih ne spadaju u to i ne ispisujete poruku o koriscenom simbolu.
Pozdrav,
Bojovic Marko
1. Da li je u MJ dozvoljeno preklapanje metoda po imenu? Npr, nije svejedno kada ubacujem metodu
int saberi(int a, int b, int c);
ako vec postoji
int saberi(int a);
Trenutna metoda Tab.insert(...) ne dozvoljava tako nesto. Problem nije samo pri umetanju, vec i pri ispitivanju poklapanja stvarnih i formalnih argumenata.
Preklapanje imena metoda u MikroJavi nije dozvoljeno.
2. Ako posmatram sledeci fragment koda
Class Program
Class Unutra1{
int a; }
Class Unutra2{
Unutra1 b[];
}
Class Unutra3{
Unutra2 c[];
}
{
Unutra3 metod1(Unutra1 x) {...}
void main()
Unutra1 un1; // (**)
Unutra2 un2;
Unutra3 un3;
{ ...
metod1(un3.c[7].b[4]).c[9].b[1].a=75; // (***)
}
}
Da li treba da se detektuje koriscenje i greske u kompatibilnosti za ovakvo igranje sa poljima klase i povratnim tipovima metoda, posto je ovaj izraz (***) sasvim regularan za zadatak 1a, varijanta od 8 poena? Primer sa vezbi ne konstatuje sta ce biti rezultat izraza npr. b[1], kog je on tipa, vec kao resultat vraca RESULT = b, tj. sam niz.
Situacija koju ste prikazali je regularna. U iskazu (***) se pojavljuje 7 simbola. Svaki od njih morate potraziti u tabeli simbola. Ako postoji, ispisuje se poruka da je nadjen odgovarajuci simbol (npr. "Pronadjen simbol: polje c klase Unutra3 u liniji..."). Ako ne postoji, ispisuje se poruka o gresci. Ako posmatrate deo vaseg primera metod1(...).c[9].b[1], da biste mogli da pronadjete simbol c, Vi morate znati koja klasa je povratni tip metode metod1 i da onda u poljima te klase trazite c. Zatim, medju poljima klase koja je tip polja c trazite polje b. Znaci, morate da detektujete tipove da biste mogli da nadjete validan simbol. Ako u programu postoji vise simbola sa imenom c, u razlicitim opsezima, Vi morate ispravno da prepoznate o upotrebi kog imena se radi u nekom iskazu.
Da li to znaci da pri pozivu metoda prakticno moramo da posmatramo i povratni tip da li se slaze, jer i vracena vrednost moze biti argument neke druge metode?
Morate. Moguc je npr. poziv metode m(a, b, m2(r)). Da bi ste tu mogli da proverite poklapanje tipova argumenata, morate iz tabele simbola procitati povratni tip metode m2.
Da li u tacki (**) treba da prijavimo, pored unosenja simbola un1 u tabelu simbola, i koriscenje simbola Unutrasnja1? To bi znacilo da i za svaku deklaraciju tipa int a; moramo da kazemo :"Koriscen predeklarisani simbol "int" u toj i toj liniji", jer zaista i jeste?
Rekao sam da koriscenje predstavlja pojavu u naredbama u telu metoda. Deklaracije lokalnih promenljivih ne spadaju u to i ne ispisujete poruku o koriscenom simbolu.
Pozdrav,
Bojovic Marko
- References:
- pitanja
- From: Djole <djolent@gmail.com>
- pitanja
Previous by date: Re: pitanja
Next by date: Re: pitanja
Previous by thread: Re: pitanja Next by thread: Re: pitanja
Previous by thread: Re: pitanja Next by thread: Re: pitanja