Kaikissa ongelman ratkaisuissa tulee varautua erityistilanteisiin, jolloin vallitsevista olosuhteista on pääteltävä, mitä toimenpiteitä on suoritettava. Valintarakenteilla pyritään tunnistamaan ohjelman suorituksen aikana muuttuvia olosuhteita ja valitsemaan hallitusti olosuhteisiin nähden oikeat suoritettavat lauseet.
Usein algoritmeja suunnitellessa törmätään tilanteisiin, joissa jokin algoritmin osa on tarpeellinen vain joissain tietyissä olosuhteissa. Mikäli tällaista erityistilannetta ei tunnisteta, kostautuu se vähintäänkin tehottomuutena, sillä tällöin algoritmin osa suoritetaan, vaikkei välitöntä tarvetta ole. Joskus taas erityistilanteen huomiotta jättäminen saattaa johtaa vakaviinkin virhetilanteisiin.
Olosuhteet tunnistava algoritmi voidaan rakentaa ehtolauseen avulla. Tällöin tilanteesta tai olosuhteista riippuva algoritmin osa voidaan kirjoittaa ehtolauseen osaksi. Ehtolause on yksinkertaisimmillaan muotoa
jos (ehto) on voimassa niin suorita lauseryhmä
missä ehto on looginen lauseke, joka määrää, millä ehdoin mainittu lauseryhmä suoritetaan. Mainittu lauseryhmä on joko kokoelma lauseita tai kaikkein yksinkertaisimmillaan yksittäinen lause.
Ehtolauseella voidaan mahdollistaa jokin toimenpide ja estää samalla kyseisen toimenpiteen suoritus, mikäli olosuhteet eivät ole sen suoritukselle otolliset:
jos (vuodenaika on talvi) niin kaiva sukset esille ja mene hiihtelemään
Usein toiminta jakaantuu kahtia sen mukaan, onko jokin tietty olosuhde tai tilanne olemassa vaiko ei. Tällöin algoritmissa voidaan käyttää ehtolauseen täydellistä muotoa, jolloin vältytään kahden erillisen ehtolauseen kirjoittamiselta: Lause
jos (ehto) on voimassa niin suorita lauseryhmä1 muutoin suorita lauseryhmä2
olisi toteutettavissa myös kahdella erillisellä jos-lauseella (silloin kun lauseryhmä1 ei muuta ehtoa):
jos (ehto) on voimassa niin suorita lauseryhmä1 jos ei(ehto) on voimassa niin suorita lauseryhmä2
Täydellisessä ehtolauseessa voidaan suorittaa olosuhteiden niin salliessa haluttu toimenpide ja toisaalta varautua siihen, että kyseinen toimenpide ei ole olosuhteisiin nähden mielekäs:
jos (vuodenaika on talvi) niin kaiva sukset esille ja mene hiihtelemään muutoin puuhastele muuta ja odottele, kunnes talvi saapuu
Ohjelman toimintaa voidaan kuvata sanallisen kuvauksen lisäksi ns. lohkokaavioilla. Esimerkiksi yllä oleva ehtolause näyttäisi seuraavalta lohkokaavioesityksenä:
Jos ehtolauseen testaamalla ominaisuudella on useampi toisensa poissulkeva vaihtoehto, voidaan ne kaikki koota yhdeksi ketjutetuksi ehtolauseeksi. Tällöin saavutetaan se etu, että yhden ehdon toteutuessa muita ehtoja ei turhaan tarkastella. Ketjutettu ehtolause on muotoa
jos (ehto1) on voimassa niin suorita lauseryhmä1 muutoin jos (ehto2) on voimassa niin suorita lauseryhmä2 muutoin jos (ehto3) on voimassa niin suorita ... muutoin suorita lauseryhmäN
Vaikkapa vuodenaika tarjoaa meille esimerkin ominaisuudesta, jolla on useampi toisensa poissulkeva vaihtoehto:
jos (vuodenaika on kesä) niin mene rannalle ottamaan aurinkoa ja nauti lomasta muutoin jos (vuodenaika on syksy) niin pistä kumisaappaat jalkaan ja mene metsään marjastamaan muutoin jos (vuodenaika on talvi) niin kaiva sukset esille ja mene hiihtelemään muutoin jos (vuodenaika on kevät) niin mene mylläämään puutarha
Ehtolauseista voidaan rakentaa mielivaltaisen hierarkisia rakennelmia, sillä myös ehdollisesti suoritettavat lauseryhmät voivat sisältää ehtolauseita. Esimerkiksi vuodenaika voidaan päätellä käyttämällä seuraavaa sisäkkäin rakennettua ehtolausetta:
jos (kuukausi on myöhempi kuin helmi) niin jos (kuukausi on myöhempi kuin touko) niin jos (kuukausi on myöhempi kuin elo) niin jos (kuukausi on myöhempi kuin marras) niin vuodenaika on talvi muutoin vuodenaika on syksy muutoin vuodenaika on kesä muutoin vuodenaika on kevät muutoin vuodenaika on talvi
Tämän tyyppinen rakenne on kuitenkin aika vaikeaselkoinen, joten kannattaa pyrkiä yksinkertaisempaan esitykseen.