previous next Up Title Contents Index

10.1.2 Ehdolla suoritettava useita lauseita


Mikäli aliohjelmaa ei ole käytössä, täytyisi meidän voida suorittaa useita lauseita muuttujien vaihtamiseksi. C- kielessä voidaan lausesuluilla kasata joukko lauseita yhdeksi lauseeksi (lohko, koottu lause, block):

Vinkki

Sisennä kauniisti

	if ( a > b ) {
	  t = a; 
	  a = b; 
	  b = t;
	}
Huomautus! Lauseiden kirjoittaminen samalle riville ei auttaisi mitään, sillä
	if ( a > b ) t = a; a = b; b = t;
	/*  vastaisi loogisesti rakennetta: */
	if ( a > b ) t = a; 
	a = b; 
	b = t; 
Koodia voidaan kuitenkin usein lyhentää kirjoittamalla asioita samalle riville:
	if ( a > b ) {
	  t = a; a = b; b = t;
	}
	/* tai joskus jopa */
	if ( a > b ) { t = a; a = b; b = t; }
Niin kauan kuin todella hallitsee asian, voi olla helpointa laittaa aina if- lauseen ainoakin suoritettava lause lausesulkuihin
	if ( a > b ) {
	  vaihda(&a,&b);
	}
Tästä on se etu, että myöhemmin monimutkaisten makrojen kanssa ei tule ongelmia, sekä se, että nyt if- lauseen suoritettaviksi lauseiksi on helppo lisätä uusia lauseita. Mikäli sulkuja ei olisi, täytyisi toisen lauseen lisäyksen yhteydessä muistaa lisätä myös sulut (tosin eihän hyvin suunniteltua ohjelmaa tarvinnut enää jälkeenpäin paikata?).

Tehtävä 10.91 vaihda

Esitä pöytätestin avulla miksei vaihtaminen onnistu pelkästään lauseilla:
a = b; b = a;

Tehtävä 10.92 abs

Kirjoita funktio
int itseisarvo(int i),
joka palauttaa i:n itseisarvon (negat. muutet. posit.).

Tehtävä 10.93 jarjesta2

Kirjoita aliohjelma
void jarjesta2(int *a, int *b),
joka järjestää a:n ja b: siten, että a<=b.

Tehtävä 10.94 maksimi ja minimi

Kirjoita funktio
int maksimi(int a, int b),
joka palauttaa suuremman kahdesta luvusta.
Kirjoita vastaava funktio minimi.


previous next Up Title Contents Index