algoritmus

Moczik Gabor pm at progzmaster.hu
Sat Dec 2 01:30:33 CET 2006


vajk fekete wrote:
>  - kenyszeres pointeraritmetika hasznalat, de pl a reference inicializalasanal megis inkabb a tombindex szintakszist hasznalja.
>  - a *left++=*right semmivel nem fordul hatekonyabbra mint a *left=*right ; left++; csak nehezebb elolvasni.

Hat igen, mazohistaknak ajanlott...

>  - ha a fenti modon kenyszeresen tomorit, akkor a while-t is irhatta volna igy: while (reference_key<(right--)->key); csak akkor meg lehetetlenebb elolvasni

Nem ekvivalens, mert a

while (reference_key < right->key) right--;  /* search from right */

eseten ha mar belepeskor hamis a feltetel, akkor a right-- nem fut le, meg a 
te esetedben a feltetel kiertekelesekor legalabb egyszer igen.


>  - egy az algoritmus megerteset szolgalo oktatasi celo source-ban nem az erthetosegre kellene torekedni?

De, es altalaban celszeru lenne az 1 utasitas 1 sor szabalyhoz ragaszkodni, 
kiveve ha papirra irsz es mar csak 2 sornyi hely van :-)

Ugyanilyen olvashatosagi kerdes az is, hogy a { } jeleket hova es hogyan 
rakod. Pl., szerintem tok idiota megoldas, ha
if (feltetel)
   {
      valami
   }

if (feltetel)
   {
      if (feltetel2)
         {
            valami2
         }
   }

format hasznaljak. A { } jel eleve nem jelent egy kulon beagyazasi szintet, 
tovabba ha talalsz egy } jelet, nem az azonos oszlopban kell kutatni ha a 
hozza valo if-et meg akarod talalni, hanem 1-el kijjebb. Latszolag 
ossze-vissza bedobalt kapcsos zarojelek az utasitasok kozott.

en igy szoktam:

if (feltetel) {
     if (feltetel2) {
         valami
     }
} else {
     if (feltetel2) {
         masvalami
     }
}

switch(x) {
     case 1  :...
              break;
     case 2  :...
              break;
     default :...
}

valtozo deklaracio sokkal olvashatobb ha a tipus es a valtozo neve oszlopra 
igazitva van, pl.:

int             i,j,k;
unsigned char   tmp;
struct TDevice  device1;

Amugy erdemes a linux kernel kodolasi stilus ajanlasat elolvasni, szerintem 
jo dolgokat tartalmaz.

> Amugy en is irtam olyan aritmetikai algoritmusokat, hogy az ilyen ekv. atalakitasok utan harom sor krikszkraksz volt az egesz de mukodott. Viszont 2 honap mulva orakba tellett megertenem hogy mit csinal. Pedig en irtam!

Teljesen egyetertek, erdemes megfogadni masnak is!
Neha en is addig optimalizalom a kodot, hogy 2 ev mulva mar ranezesre 
nehezen hamozhato ki, mikor milyen adatra milyen feltetel teljesul. Volt mar 
ra pelda hogy ujrairtam a kodot emiatt, mert nem sikerult megfeleloen 
modositani.

Ezt csak bonyolitja ha "kiaknazza" az ember 1 sorban az osszes C operatort.
Velemenyem szerint az "if (valami--) ..." vagy x=y++ vagy x=++y meg az 
erthetoseg keretein belul van, de a "left side"-ra barmilyen ilyen operatort 
irni...

-- 
((( Móczik Gábor  )))--((( pm -> @ -> progzmaster -> . -> hu  )))
((( Skype: moczik )))--((( Website: http://www.progzmaster.hu )))



More information about the Elektro mailing list