ceckovy kviz 2 (hardcore)

Jan Waclawek konfera na efton.sk
Středa Září 6 18:33:34 CEST 2023


Asi ano, ten moj argument bol dost nasilu. Na druhej strane to goto je
skutocne svinstvo; ja s Dijkstrom do pismenka suhlasim (a nesuhlasim s
Wirthovym premenovanim toho clanku).

Na druhej strane... C ma niekolko sposobov goto, jeden z nich je tzv.
computed goto znamejsie pod nazvom switch/case :-) (a break je dalsia
forma goto, dalej continue a return - zvykne sa hovorit "disrupted flow"
alebo take nieco). Ten if sa da urobit aj s tym switchom, teraz citujem z
Dereka Jonesa (tiez taky zdroj perverznosti):

switch (x)
 default : if (prime(x))
 case 2: case 3: case 5: case 7:
 process_prime(x);
 else
 case 4: case 6: case 8: case 10:
 process_composite(x);

A hned za tym je spomenty Duff's Device, samozrejme.

(Mimochodom, vsimni si, ze tam nie su svorkove zatvorky. Derek Jones to
uvadza kvoli tomu, lebo toto je z pohladu switch len jediny prikaz, prave
ten if; a ze case moze byt kdekolvek v ramci toho prikazu a stale to patri
k tomu switch(x). Akurat ze to je neobvykle, obvykle je mat zlozeny
prikaz/blok t.j. tie svorkove zatvorky. Tuto je to prepisane do
prelozitelneho kuska, ak by si si to chcel vyskusat:
volatile int x;

int main(void) {


switch (x)
default : if (x)
case 2: case 3: case 5: case 7:
  x = 10;
else
  case 4: case 6: case 8: case 10:
   x = 20;

}

)

On ten pokyn nevyhodnocovat else v tej norme asi nie je nahodou.

wek


----- Original Message ---------------

>Este mi napadlo, ze keby sa else malo vyhodnocovat aj v pripade goto do 
>bloku if, viedlo by to k nezelanym nasledkom. Upravim Tvoj priklad:
>
>volatile int k;
>volatile int pin2=0; //a nebodaj by bola pin2 neinicializovana :)
>
>if (InputPin1()) goto pin1_active;
>pin2=InputPin2();
>if (pin2) {
>   pin1_active:
>     k = 10;
>} else {
>     k = 20;
>}
>
>Skutocna hodnota pinu 2 by sa ignorovala.
>
>miro
>
>On 06.09.2023 17:50, Miroslav ©inko wrote:
>> On 06.09.2023 17:39, Jan Waclawek wrote:
>>> Norme je fuk, ako sa zvyknu pisat prekladace.
>> 
>> Jasne, ze prekladace maju byt napisane podla normy a nie naopak.
>> 
>> Napisal som, ako prekladaju if-else. No a Ty si v norme dohladal, ze 
>> prekladaju spravne :)
>> 
>> miro
>_______________________________________________
>HW-list mailing list  -  sponsored by www.HW.cz
>Hw-list na list.hw.cz
>http://list.hw.cz/mailman/listinfo/hw-list



Další informace o konferenci Hw-list