Re: Rezultati ispita
1) Prototype ti je, kao sto ime kaze, prototip:) Dakle, red neposredno ispod MCDEFN, gde se navodi ime makroa i, eventualno, formalni argumenti. U ovom primeru prototipi su CREATECALL SUBR, LOAD PARM, PROCCALL PARM. Red u kome koristis neki makro (ime i lista STVARNIH argumenata) u onim algoritmima je krsten sa macroname... Other je sve sto nije tamo pobrojano - neki nespecificni redovi teksta (poput PUSH PARM, LOAD PARM). Njih, ako makroekspanzija nije u toku, jednostavno prepisujes sa ulaza na izlaz, a ako jeste, onda si taj "other" procitao iz neke makrodefinicije i potrebno je, pre upisa na izlaz, formalne argumente zameniti stvarnim. Stvari se jos malo komplikuju kod ugnezdenih definicija koje ovde imas - tada se formalni argumenti ne zamenjuju stvarnim nego se koriguju kako je objasnjeno u materijalima, pa se vrsi upis u tabelu makrodefinicija, s tim ces se valjda snaci...
2) Zato sto se koristi ekspanzija makroparametara po imenu. To znaci da se prvo ekspanduje MACRO, a ako se u njegovoj ekspanziji naidje na drugi poziv, on se tek tu obradjuje. Dakle, zbog ovog "X," na izlazu se dobije "ORIGINAL, ", ali se to zameni sa "ZAMENA,", usled poziva makroa ORIGINAL. Kada se ekspanduje i ovo "X##1", dobija se "ORIGINAL1". Medjutim, tu vise nema poziva makroa ORIGINAL. Nadovezali smo ovu jedinicu), pa se taj tekst ne tumaci kao makropoziv. Da se koristila ekspanzija po vrednosti, tada bi se najpre ekspandovao makro ORIGINAL u ZAMENA, pa bi se tek onda pozvao MACRO i dobili bismo ZAMENA, ZAMENA1. Nadam se da ti je sad jasnije.
3) Zavisi od toga kako se obradjuju ti podaci. Recimo, u onom primeru sa casa, gde se na ulaz dovodi integer u opsegu [1, 5000] imas jednu legalnu klasu ekvivalencije i dve nelegalne (za <0 i >5000), jer ocekujes da ce program na isti nacin racunati koren od 22, i od 976 i od 4998... Ne bi trebalo da bude nikakve posebne obrade za bilo koji dozvoljeni broj. Za drugu situaciju moze se navesti ovaj primer: na pocetku programa unosis, izmedju ostalog, ceo broj od 1-3. Za "1", rezultat obrade ispisace se na ekran, za "2" ce se upisati u neku datoteku na disku i za "3" ce se, recimo, proslediti nekom kolegi putem lokalne mreze. Sada ces imati tri zasebne legalne klase ekvivalencije, (za 1, 2 i 3) i jednu nelegalnu (ostalo). Razlog je sto se sada moze ocekivati neka specificna obrada za razlicite legalne vrednosti, pa su sve to posebne klase, a praviti dve nelegalne klase ovde gubi smisao.
Ne garantujem za tacnost gore napisanog:) Ako sam negde pogresio, molim da me ispravite.
Zamolio bih profesora da na sajt predmeta stavi septembarski ispitni rok...
Pozdrav,
Darko
----- Original Message -----
From: Bojan Đurković
To: ir3sp@rti.etf.bg.ac.yu
Sent: Wednesday, October 04, 2006 12:11 AM
Subject: Re: [ir3sp] Rezultati ispita
imam par pitanja, bio bih zahvalan ako bi mi neko od kolega odgovorio:
1)
pri makroprocesorskoj obradi sledećeg teksta:
1. MCDEFN
2. CREATECALL SUBR
3. MCDEFN
4. LOAD PARM
5. PUSH PARM
6. MOV SP, BP
7. MCEND
8. MCDEFN
9. PROCCALL PARM
10. LOAD PARM
11. CALL SUBR
12. MCEND
13. MCEND
14. CREATECALL ACTUAL
15. PROCCALL 5
kako znam šta je prototype a šta other?
2)
kako tačno iz ovog teksta:
#define MACRO(X) X, X ## 1
#define ORIGINAL ZAMENA
MACRO(ORIGINAL)
dobijem ovaj izlaz: ZAMENA, ORIGINAL1
zašto prvi X u prvoj liniji se promeni iz ORIGINAL u ZAMENA, a drugi X ostane ORIGINAL ?
3) u testiranju metodom klasa ekvivalencije, kada mogu da imam N nečega, kada odvajam kao posebu klasu da imam 1 toga, i 2-N toga (obe klase su legalne, ilegalne su 0 i >N).
Za sada toliko.
------------------------------------------------------------------------------
-----------------------------------------------------------------
unsubscribe:
minimalist@rti.etf.bg.ac.yu?subject=unsubscribe%20ir3sp
-----------------------------------------------------------------
2) Zato sto se koristi ekspanzija makroparametara po imenu. To znaci da se prvo ekspanduje MACRO, a ako se u njegovoj ekspanziji naidje na drugi poziv, on se tek tu obradjuje. Dakle, zbog ovog "X," na izlazu se dobije "ORIGINAL, ", ali se to zameni sa "ZAMENA,", usled poziva makroa ORIGINAL. Kada se ekspanduje i ovo "X##1", dobija se "ORIGINAL1". Medjutim, tu vise nema poziva makroa ORIGINAL. Nadovezali smo ovu jedinicu), pa se taj tekst ne tumaci kao makropoziv. Da se koristila ekspanzija po vrednosti, tada bi se najpre ekspandovao makro ORIGINAL u ZAMENA, pa bi se tek onda pozvao MACRO i dobili bismo ZAMENA, ZAMENA1. Nadam se da ti je sad jasnije.
3) Zavisi od toga kako se obradjuju ti podaci. Recimo, u onom primeru sa casa, gde se na ulaz dovodi integer u opsegu [1, 5000] imas jednu legalnu klasu ekvivalencije i dve nelegalne (za <0 i >5000), jer ocekujes da ce program na isti nacin racunati koren od 22, i od 976 i od 4998... Ne bi trebalo da bude nikakve posebne obrade za bilo koji dozvoljeni broj. Za drugu situaciju moze se navesti ovaj primer: na pocetku programa unosis, izmedju ostalog, ceo broj od 1-3. Za "1", rezultat obrade ispisace se na ekran, za "2" ce se upisati u neku datoteku na disku i za "3" ce se, recimo, proslediti nekom kolegi putem lokalne mreze. Sada ces imati tri zasebne legalne klase ekvivalencije, (za 1, 2 i 3) i jednu nelegalnu (ostalo). Razlog je sto se sada moze ocekivati neka specificna obrada za razlicite legalne vrednosti, pa su sve to posebne klase, a praviti dve nelegalne klase ovde gubi smisao.
Ne garantujem za tacnost gore napisanog:) Ako sam negde pogresio, molim da me ispravite.
Zamolio bih profesora da na sajt predmeta stavi septembarski ispitni rok...
Pozdrav,
Darko
----- Original Message -----
From: Bojan Đurković
To: ir3sp@rti.etf.bg.ac.yu
Sent: Wednesday, October 04, 2006 12:11 AM
Subject: Re: [ir3sp] Rezultati ispita
imam par pitanja, bio bih zahvalan ako bi mi neko od kolega odgovorio:
1)
pri makroprocesorskoj obradi sledećeg teksta:
1. MCDEFN
2. CREATECALL SUBR
3. MCDEFN
4. LOAD PARM
5. PUSH PARM
6. MOV SP, BP
7. MCEND
8. MCDEFN
9. PROCCALL PARM
10. LOAD PARM
11. CALL SUBR
12. MCEND
13. MCEND
14. CREATECALL ACTUAL
15. PROCCALL 5
kako znam šta je prototype a šta other?
2)
kako tačno iz ovog teksta:
#define MACRO(X) X, X ## 1
#define ORIGINAL ZAMENA
MACRO(ORIGINAL)
dobijem ovaj izlaz: ZAMENA, ORIGINAL1
zašto prvi X u prvoj liniji se promeni iz ORIGINAL u ZAMENA, a drugi X ostane ORIGINAL ?
3) u testiranju metodom klasa ekvivalencije, kada mogu da imam N nečega, kada odvajam kao posebu klasu da imam 1 toga, i 2-N toga (obe klase su legalne, ilegalne su 0 i >N).
Za sada toliko.
------------------------------------------------------------------------------
-----------------------------------------------------------------
unsubscribe:
minimalist@rti.etf.bg.ac.yu?subject=unsubscribe%20ir3sp
-----------------------------------------------------------------
- Follow-Ups:
- Re: Rezultati ispita
- From: "Bojan Đurković" <djurkovic@gmail.com>
- Re: Rezultati ispita
- References:
- Re: Rezultati ispita
- From: "Bojan Đurković" <djurkovic@gmail.com>
- Re: Rezultati ispita
- From: Ertan Ljajic <mailing.lista@yahoo.com>
- Re: Rezultati ispita
- From: "Bojan Đurković" <djurkovic@gmail.com>
- Re: Rezultati ispita
Previous by date: Re: Rezultati ispita
Next by date: Ispravka
Previous by thread: Re: Rezultati ispita Next by thread: Re: Rezultati ispita
Previous by thread: Re: Rezultati ispita Next by thread: Re: Rezultati ispita