Ylös Edellinen Seuraava Otsikkosivu Hakemisto Sisällys

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
A

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.


Ylös Edellinen Seuraava Otsikkosivu Hakemisto Sisällys