DU5

Odpovědět
Uživatelský avatar
Tuetschek
Supermatfyz(ák|ačka)
Příspěvky: 657
Registrován: 15. 6. 2005 13:54
Typ studia: Nestuduji ale učím na MFF
Kontaktovat uživatele:

Příspěvek od Tuetschek »

Hele nevite nekdo k cemu je instrukce LLDP? A jak se lisi od LREF?
Plug 'n' Pray.
Uživatelský avatar
nohis
Matfyz(ák|ačka) level III
Příspěvky: 128
Registrován: 7. 11. 2004 13:39
Typ studia: Informatika Mgr.
Bydliště: Praha - Prosek / Krakovany
Kontaktovat uživatele:

Re: typ pola

Příspěvek od nohis »

Tresko píše:ja som pouzil takyto "trik" na zistenie typu pola:

Kód: Vybrat vše

if (...->access_array()->compute_final_ptype() == ctx->tab->logical_bool()->compute_final_ptype())....
8)
nebo by to šlo takto :

Kód: Vybrat vše

if (...->access_array()->compute_final_ptype() == PTYPE_INT/STR/BOOL  atd...
:D
v doxyšmejdu o tom PTYPE_BOOL/REAL atd... sem sice nic nenašel ale podívate-li se to implementace fce compute_final_ptype() tak si TCAT_INT odpovida s PTYPE_INT atd...

Kód: Vybrat vše

switch ( cat() )
	{
	case TCAT_ARRAY: 
	    {
		type_pointer baseltype = arrayType_()->element_type();
		return baseltype->compute_final_ptype();
	    }
	case TCAT_BOOL: 
	    return mlaskal::PTYPE_BOOL;
	case TCAT_RANGE:
	case TCAT_INT:
	    return mlaskal::PTYPE_INTEGER;
	case TCAT_REAL:
	    return mlaskal::PTYPE_REAL;
	case TCAT_STR:
	    return mlaskal::PTYPE_STRING;
	default:; // !!! internal error
	    return mlaskal::PTYPE_UNDEF;
	}
Uživatelský avatar
nohis
Matfyz(ák|ačka) level III
Příspěvky: 128
Registrován: 7. 11. 2004 13:39
Typ studia: Informatika Mgr.
Bydliště: Praha - Prosek / Krakovany
Kontaktovat uživatele:

Příspěvek od nohis »

měl bych dotaz ještě k typu range...

vím že už se to tady řešilo, mám to přečtený ale uplně mi nění jasný jak to bude např. když budu dělit-násobit-... dva range nebo range s intem? je to chyba nebo prostě když je range vlastně integer tak ono to něco udělá když na to hodím to dělení-násobení... :D ?
gASK
Admin(ka) level I
Příspěvky: 635
Registrován: 9. 6. 2005 12:33
Typ studia: Informatika Mgr.
Bydliště: Konečně Vinohrady:)
Kontaktovat uživatele:

Příspěvek od gASK »

nohis píše:měl bych dotaz ještě k typu range...

vím že už se to tady řešilo, mám to přečtený ale uplně mi nění jasný jak to bude např. když budu dělit-násobit-... dva range nebo range s intem? je to chyba nebo prostě když je range vlastně integer tak ono to něco udělá když na to hodím to dělení-násobení... :D ?
Když na range hodíš dělení, násobení a vůbec jakoukoliv operaci, tak ti hodí CANNOTCONVERT. Viz ulití web:
* Unární + a - pro int (instrukce MINUSI) a real (instrukce MINUSR)
* Binární + pro int-int (instrukce ADDI), real-real (instrukce ADDR), real-int, int-real (instrukce CVRTIR a ADDR) a str-str (zřetězení - instrukce ADDS)
* Binární - a * pro int-int, real-real, real-int, int-real (instrukce SUBI, SUBR, MULI, MULR, případně CVRTIR)
* Binární / pro int-int, real-real, real-int, int-real s výsledkem real (instrukce DIVR, případně CVRTIR)
* Binární mod, div pro int-int s výsledkem int (instrukce MODI, DIVI)
O rangi ani slovo. :wink:
When life gives you crap, make crap golems.
Uživatelský avatar
nohis
Matfyz(ák|ačka) level III
Příspěvky: 128
Registrován: 7. 11. 2004 13:39
Typ studia: Informatika Mgr.
Bydliště: Praha - Prosek / Krakovany
Kontaktovat uživatele:

Příspěvek od nohis »

gASK píše:
nohis píše:měl bych dotaz ještě k typu range...

vím že už se to tady řešilo, mám to přečtený ale uplně mi nění jasný jak to bude např. když budu dělit-násobit-... dva range nebo range s intem? je to chyba nebo prostě když je range vlastně integer tak ono to něco udělá když na to hodím to dělení-násobení... :D ?
Když na range hodíš dělení, násobení a vůbec jakoukoliv operaci, tak ti hodí CANNOTCONVERT. Viz ulití web:
* Unární + a - pro int (instrukce MINUSI) a real (instrukce MINUSR)
* Binární + pro int-int (instrukce ADDI), real-real (instrukce ADDR), real-int, int-real (instrukce CVRTIR a ADDR) a str-str (zřetězení - instrukce ADDS)
* Binární - a * pro int-int, real-real, real-int, int-real (instrukce SUBI, SUBR, MULI, MULR, případně CVRTIR)
* Binární / pro int-int, real-real, real-int, int-real s výsledkem real (instrukce DIVR, případně CVRTIR)
* Binární mod, div pro int-int s výsledkem int (instrukce MODI, DIVI)
O rangi ani slovo. :wink:
ok,díkes :D taky sem si to myslel, chtěl sem se jen ujistit

někdo tady dříve napsal že range je vlastně takový retardovaný integer :D a retardovaný integer by třeba mohl taky mít právo na život, ehm tedy na nějakou tu binární operaci :D :D :D
Uživatelský avatar
Kate
Matfyz(ák|ačka) level III
Příspěvky: 146
Registrován: 8. 1. 2005 10:52
Typ studia: Informatika Mgr.
Bydliště: Milada squat
Kontaktovat uživatele:

Příspěvek od Kate »

gASK píše:
O rangi ani slovo. :wink:
to je sice pravda, ale v tom pripade by range byl opravdu jen na urceni mezi pole a nedalo by se s promennymi tohoto typu vubec nic delat (protote v DU6 uz zrejme budeme resit jine veci, nez napr. aritmeticke operace +,* apod.)

navic tady byl prispevek:
andree píše:tak som pisal na ulitu - odpoved je, ak som to dobre pochopil, range:=integer + ziadne kontroly medzi + ziadne varovania :-)
ja osobne teda povoluju range na jakemkoliv miste, kde je mozne mit integer, protoze to v podstate je integer. nemyslim si, ze by tento pristup mel byt povazovan za chybny.
Člověk si nemusí nic myslet, aby něco udělal.
Uživatelský avatar
rastik
Supermatfyz(ák|ačka)
Příspěvky: 661
Registrován: 19. 10. 2005 21:45
Typ studia: Informatika Mgr.
Bydliště: Praha
Kontaktovat uživatele:

Příspěvek od rastik »

Kate píše:
gASK píše:
O rangi ani slovo. :wink:
to je sice pravda, ale v tom pripade by range byl opravdu jen na urceni mezi pole a nedalo by se s promennymi tohoto typu vubec nic delat (protote v DU6 uz zrejme budeme resit jine veci, nez napr. aritmeticke operace +,* apod.)

navic tady byl prispevek:
andree píše:tak som pisal na ulitu - odpoved je, ak som to dobre pochopil, range:=integer + ziadne kontroly medzi + ziadne varovania :-)
ja osobne teda povoluju range na jakemkoliv miste, kde je mozne mit integer, protoze to v podstate je integer. nemyslim si, ze by tento pristup mel byt povazovan za chybny.
Mam to rovnako. Range JE integer, ma len inu minimalnu a maximalnu hodnotu nez integer. Teda vsetky tie operacie sa daju urobit.
Uživatelský avatar
nohis
Matfyz(ák|ačka) level III
Příspěvky: 128
Registrován: 7. 11. 2004 13:39
Typ studia: Informatika Mgr.
Bydliště: Praha - Prosek / Krakovany
Kontaktovat uživatele:

Příspěvek od nohis »

andree píše:tak som pisal na ulitu - odpoved je, ak som to dobre pochopil, range:=integer + ziadne kontroly medzi + ziadne varovania :-)
mě tedy spíš přijde že tímhle ulita měla na mysli jen přiřazení INTu do RANGE, nikoli to že můžem RANGE užít v aritmetických operacích stejně jako INT...

chjo... :cry:
gASK
Admin(ka) level I
Příspěvky: 635
Registrován: 9. 6. 2005 12:33
Typ studia: Informatika Mgr.
Bydliště: Konečně Vinohrady:)
Kontaktovat uživatele:

Příspěvek od gASK »

rastik píše: Mam to rovnako. Range JE integer, ma len inu minimalnu a maximalnu hodnotu nez integer. Teda vsetky tie operacie sa daju urobit.
Přesvědčili jste mne - hlavně pro to že to není problém upravit. Prostě si tam dole u načítání kostant / proměnných z ID připíšu i TCAT_RANGE. :twisted: Ale jestli kvůli vám přijdu byť jen o bod - běda vám :lol:

Jinak - po 8 hodinách kódění jsem to právě dokončil. Trocha testování a mám klid. Takže vám všem, co ještě píšete přeji ať to brzy a správně dokončíte. :wink:
When life gives you crap, make crap golems.
Bečis
Matfyz(ák|ačka) level I
Příspěvky: 19
Registrován: 4. 2. 2006 13:53

Příspěvek od Bečis »

Já už to kóduju čtvrtej den téměř nonstop, no ale pravda, udělal jsem i většinu DÚ6 (zbytek operátorů, kopírování polí, parametry feferencí), nechtělo se mi to rozdělovat :lol:
Open mind is like a fortress, with its gates unbarred and unguarded
Uživatelský avatar
Tuetschek
Supermatfyz(ák|ačka)
Příspěvky: 657
Registrován: 15. 6. 2005 13:54
Typ studia: Nestuduji ale učím na MFF
Kontaktovat uživatele:

Příspěvek od Tuetschek »

To absolutne nechapu ... to jako range NEMA UMET scitani a odcitani :x ? To je trochu absurdni, ne? Ja aktualne s rangem pracuju stejne jako s integerem:

Kód: Vybrat vše

symbol_pointer p = find_symbol( ... );
type_category c = p->access_local_variable()->type()->cat();

if ( c == TCAT_RANGE )
    c = TCAT_INT;
Fakt myslite ze se tohle delat nesmi? Ja teda pochopil tu odpoved z Ulity
andree píše:tak som pisal na ulitu - odpoved je, ak som to dobre pochopil, range:=integer + ziadne kontroly medzi + ziadne varovania :)
tak, ze se to ma delat takhle nebo podobne.
Plug 'n' Pray.
Uživatelský avatar
andree
Matfyz(ák|ačka) level III
Příspěvky: 106
Registrován: 9. 12. 2006 17:00
Typ studia: Informatika Mgr.
Kontaktovat uživatele:

Příspěvek od andree »

ja to tak nejak robim :-) vzhladom na to ze fyzicky typ (ptype) toho range je podla zdrojakov rovnaky ako integer....

moja otazka je - myslite ze bude ulitakom vadit, ak v mojej du5 mam uz aj cast riesenia du6? nechcel som pri kodeni vytvarat novy "trunk", kedze tie projekty su skoro rovnake (a funkcne asi uplne)...
Bečis
Matfyz(ák|ačka) level I
Příspěvky: 19
Registrován: 4. 2. 2006 13:53

Příspěvek od Bečis »

Já taky dělám dost z DÚ6 ze stejnýho důvodu. Myslím si, že to vadit vůbec nebude, na cvikách Dokulil říkal, že klidně můžem udělat DÚ6 a identickej ho odevzdat rovnou jako DÚ5 i DÚ6 :wink:
Open mind is like a fortress, with its gates unbarred and unguarded
Uživatelský avatar
lavor
Matfyz(ák|ačka) level III
Příspěvky: 121
Registrován: 1. 2. 2005 20:39
Typ studia: Informatika Bc.
Bydliště: kolej 17.11., A1105
Kontaktovat uživatele:

Příspěvek od lavor »

zacul som nejake famy,ze du5 staci odovzdat do polnoci, co je na tom pravdy??
PS:s odpovedou si prosim pohnite,dik
Milujeme tých, čo nás odmietajú, odmietame tých, čo nás milujú.
LuKu
Matfyz(ák|ačka) level III
Příspěvky: 117
Registrován: 15. 1. 2005 18:29
Typ studia: Informatika Mgr.

Příspěvek od LuKu »

Myslím, že na přednášce Yaghob říkal něco v tom smyslu, že na dvanáctou je deadline stanovený proto, aby to do půlnoci skoro všichni poslali. A že to do půlnoci tolerují. Ale osobně už jsem DÚ5 radši uploadla.
Odpovědět

Zpět na „2006“