previous next Up Title Contents Index

10.10 for - silmukka, yleinen muoto


Yleensä ohjelmointikielissä for- silmukka on varattu juuri siihen tarkoitukseen, kuin ensimmäinen esimerkkimmekin; tasan tietyn kierrosmäärän tekemiseen.

C- kielen for- silmukka on kuitenkin yleisempi:

	/*     1.             2.  5.          4.  7.           3.  6.  */
	for (alustus_lauseet; suoritus_ehto; kasvatus_lauseet) lause; 
for- silmukka vastaa melkein while- silmukkaa (ero tulee continue- lauseen käyttäytymisessä):
	alustus_lauseet;               /* 1.     */
	while ( suoritus_ehto ) {      /* 2.  5. */
	  lause;                       /* 3.  6. */
	  kasvatus_lauseet;            /* 4.  7. */
	}
Mikäli esimerkiksi alustuslauseita on useita, erotetaan ne toisistaan pilkulla:

c-silm\valinsum.c - useita alustuslauseita for-silmukassa

	/*  Lasketaan yhteen luvut 1..ylaraja */
	int valin_summa_2(int ylaraja)
	{
	  int i,summa;
	  for (summa=0, i=1; i<=ylaraja; i++) 
	    summa += i;
	  return summa;
	}
Erittäin C:mäinen tapa tehdä yhteenlasku olisi:

c-silm\valinsum.c - C:mäinen silmukka

	int valin_summa_3(int i)
	{
	  int s;
	  for (s=0; i; s += i- - );
	  return s;
	}
Tämä viimeinen esimerkki on juuri niitä C- hakkereiden suosikkeja, joita ehkä kannattaa osin vältellä.

Tehtävä 10.102 1+2+..+i

Miksi valin_summa_3 laskee yhteen luvut 1..i?


previous next Up Title Contents Index