Ylös Edellinen Seuraava Otsikkosivu Hakemisto Sisällys

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++;


Ylös Edellinen Seuraava Otsikkosivu Hakemisto Sisällys