Ehdollinen lausunto ja haara

Aktiivisuus kaavio if-else selvitys

In ohjelmointi, ehdollinen opetus on ohjelma osa, joka suoritetaan vain tietyin edellytyksin. Haara määrittää, mikä kahdesta tai useammasta ohjelman osia, riippuen yksi tai useampi ehto, suoritetaan.

Ehtolauseet ja oksat yhdessä silmukat muodostavat valvontaan liittyvät rakenteet ohjelmointikieliä . Ne ovat yksi ohjelmoinnin tärkeimmistä osista , koska niiden avulla ohjelma voi reagoida eri tiloihin ja panoksiin.

määritelmä

Ehdollinen lausunto

Ehdollinen lauseke koostuu ehdosta ja koodiosasta , joka puolestaan ​​koostuu yhdestä tai useammasta lauseesta . Jos ehdollinen lauseke saavutetaan ohjelman ollessa käynnissä, ehto arvioidaan ensin ja jos tämä pätee (ja vasta sitten), koodiosa suoritetaan. Tämän jälkeen ohjelman suorittaminen jatkuu ehdollisen lausekkeen jälkeen.

Muotoiltu vuonna pseudokoodi , ehdon on seuraavan muotoinen:

falls Bedingung dann
  Anweisung(en)
ende

Ehto on lauseke , joka on arvioitu sääntöjen mukaisesti ohjelmointikieli ( semantiikan ja ensisijaisuus operaattoreiden ). Sen on annettava totuusarvo tuloksena ( tosi : ehto pätee tai epätosi : ehto ei päde) tai sen tuloksen on oltava implisiittisesti muutettavissa totuusarvoksi kielen muuntamissääntöjen mukaisesti .

Ehto on kausaalinen eikä sitä pidä sekoittaa ajalliseen ehtoon, ts. Tämä tarkoittaa, että se riippuu siitä, onko ehto voimassa vai ei siinä vaiheessa, kun ehdollinen lauseke saavutetaan ohjelman suorituksen aikana ja lauseke arvioidaan.

Esimerkkejä: Monissa ohjelmointikielissä, joissa on C: n kaltainen syntaksi, esim. Esimerkiksi C ++ , C #, ja Java , ehtolauseet muotoillaan seuraavasti:

if (Temperatur < 20)
{
    HeizungEinschalten();
}

Jos tässä pyydetty arvo on Temperaturalle 20, toiminto HeizungEinschalten()suoritetaan. Jos ehto ei täyty, eli Temperatur ei alle 20, opetus ohitetaan.

Seuraava konstruktio esiintyy että tietokannassa kielellä SQL :

delete from tabelle where tabelle.id=42;

Tämä vastaa silmukkaa, joka kulkee taulukon merkintöjen läpi ja jossa suoritetaan ehdollinen lauseke kullekin taulukon merkinnälle: Kaikki merkinnät, joita ehto "id = 42" koskee, poistetaan.

haara

Haara, jopa valinta tai valittu kutsu, koostuu ehtokoodista ja kahdesta osasta. Jälleen ehto arvioidaan ensin, ja jos se pätee, ensimmäinen koodiosio suoritetaan, muuten suoritetaan toinen koodiosio:

falls Bedingung dann
  Anweisung(en)
sonst
  Anweisung(en)
ende

Esimerkki ohjelmointikielellä C :

if (Temperatur < 20)
{
    HeizungEinschalten();
}
else
{
    HeizungAusschalten();
}

Valintaoperaattori

Joillakin ohjelmointikielillä on kolmivaiheinen valintaoperaattori ?, jota kutsutaan myös ehdolliseksi lausekkeeksi . Tätä operaattoria voidaan käyttää esimerkiksi arvojen määrittämiseen muuttujille , mutta se voi olla myös osa monimutkaisempia lausekkeita. Se käsittelee kolme parametria ehdon muodossa ? Lauseke1: Lauseke2 . Ensimmäinen ehto arvioitu. Jos tulos on tosi , lauseke1 arvioidaan, muussa tapauksessa lauseke2 . Tulos on myös valintaoperaattorin tulos. Seuraava koodi näyttää saman toiminnon - kerran if -else -rakenteena ja kerran lyhyenä lomakkeena.

Esimerkki ohjelmointikielellä C :

const char *x;
// if-else-Anweisung
if (zahl == 5)
{
    x = "Zahl gleich 5";
}
else
{
    x = "Zahl ungleich 5";
}

// Mit Auswahloperator:
x = zahl == 5 ? "Zahl gleich 5" : "Zahl ungleich 5";

Toinen esimerkki:

  int x;
  x = (b > 7 ? 2 * b : 3 * b) + 1;

Useita haarautumisia

Monilla ohjelmointikielillä on myös useita haaroja, joita kutsutaan myös tapaerotuksiksi . Kaksi muotoa on erotettava toisistaan: Joko lausekkeen tulos määrittää, mikä koodiosa suoritetaan ja suoritetaanko toinen niistä ollenkaan, tai on useita ehtoja, joista kullekin on määritetty koodiosio. Molemmissa muodoissa voi olla toinen osa.

Ensimmäinen lomake

STRUCTOGRAM of kytkimen ohje

Lauseke arvioidaan ja sitä verrataan arvomäärityksiin (tässä arvo1 arvoon3). Jos ne vastaavat, lausumat suoritetaan arvomäärityksen jälkeen. Jos arvo ei täsmää, lausekkeet else suoritetaan, jos muu osa on läsnä:

falls Ausdruck gleich
   Wert1: Anweisung(en)
   Wert2: Anweisung(en)
   Wert3: Anweisung(en)
   sonst: Anweisung(en)
ende

Esimerkki ohjelmointikielellä C :

switch (zahl)
{
    case 0:
        v = 1;
        break; // 'break' ist hier nötig, damit nicht auch die ...
    case 1:
        v = 2;
        break; // ... folgenden Anweisungen ausgeführt werden (Besonderheit in C)
    case 2:
        v = 5;
        break;
    default:
        v = 10; // der sonst-Teil
}

Seuraava esimerkki ohjelmointikielessä C # tarkistaa vuodenajan ja antaa tekstirivin:

int month = date.Month;
string season;
switch (month)
{
	case 3:
	case 4:
	case 5:
		season = "spring";
		break;
	case 6:
	case 7:
	case 8:
		season = "summer";
		break;
	case 9:
	case 10:
	case 11:
		season = "autumn";
		break;
	case 12:
	case 1:
	case 2:
		season = "winter";
		break;
	default:
		season = "unknown";
		break;
}
Console.WriteLine("The date is in " + season + ".");

Tällaisen rakenteen tarkka semantiikka riippuu suuresti kyseisestä ohjelmointikielestä . Samoin z. B. muu osa ei ole aina sallittu, mutta joskus sen on oltava läsnä. Joskus kielen määritelmä määrää myös ajonaikaisen virheen , jos muu osa puuttuu ja lauseke ei ota mitään määritetyistä arvoista.

Toinen muoto

Datavuokaavio sisäkkäisen ehdollinen if-else selvitys

Ehdot arvioidaan järjestyksessä, kunnes yksi niistä pätee. Sitten tähän ehtoon kuuluva koodiosa suoritetaan ja monihaaraisen käsittely lopetetaan. Jos mikään ehdoista ei täyty, toinen osa suoritetaan, jos se on läsnä:

falls Bedingung dann
  Anweisung(en)
sonst falls Bedingung2 dann
  Anweisung(en)
sonst
  Anweisung(en)
ende

Seuraavat menetelmä on C # ohjelmointikieli tarkistaa, onko ajankohta on ennen, jälkeen tai tietyn ajan ja antaa tekstirivin:

void Compare(DateTime time, DateTime startTime, DateTime endTime)
{
	if (time < startTime)
	{
		Console.WriteLine("The point in time is before the period.");
	}
	else // time >= startTime
	{
		if (time > endTime)
		{
			Console.WriteLine("The point in time is after the period.");
		}
		else // time >= startTime && time <= endTime
		{
			Console.WriteLine("The point in time is in the period.");
		}
	}
}

Katso myös