previous next Up Title Contents Index

14.2.3 Varo toistoa

Vaikka yksinkertaista funktiota voidaankin käyttää mukavasti lausekkeen osana, tulee seuraavankaltaista rakennetta välttää:
	int i,a_lkm=0;
	char st[50]="Saippuakauppias";
	for (i=0; i<strlen (st); i++) 	
	  if ( jono[i]=='a' ) a_lkm++;
	... 
Miksikö? Koska strlen- funktio suoritetaan jokaisella silmukan kierroksella ja strlen suorittaminenhan vaati koko jonon läpikäymisen! Rakenne tulee korvata seuraavasti:
	int i,a_lkm=0,st_pit;
	char st[50]="Saippuakauppias";
	...
	st_pit=strlen(st);
	for (i=0; i<st_pit; i++)
	  if ( jono[i]=='a' ) a_lkm++;
	... 
Edellä kävisi myös seuraava, miksi?
	for (i=strlen(st)- 1; i >= 0; i- - )
	  if ( jono[i]=='a' ) a_lkm++;


previous next Up Title Contents Index