c# : selectie

  1. Voorbereiding
  2. Booleaanse variabelen
  3. Booleaanse operatoren
  4. Volgorde van bewerkingen
  5. Selectie: if
  6. Selectie: switch

Voorbereiding

Booleaanse variabelen

In de wereld van het programmeren wordt gewerkt met bits. En bit heeft de waarde 1 of 0.
Dit zijn de twee toestanden van een bit.

In het programmeren moet een expressie altijd als waar of onwaar geëvalueerd worden: 1 of 0.
In het dagelijkse leven kan een antwoord op een vraag vaak nogal vaag zijn: misschien, waarschijnlijk, ...
Wanneer we programmeren moet het antwoord steeds exact gekend zijn.

Wanneer we in een variabele x de waarde 99 stoppen dan evalueren we als volgt:

C# gebruikt een type bool dat een van de twee statussen waar of onwaar kan bevatten.
De naam bool is afkomstig van de Booleaanse algebra en is een tak uit de exacte wiskunde.

Booleaanse operatoren

Een Booleaanse operator voert een berekening uit die resulteert in waar of onwaar, true / false.

De eenvoudigste operator is ! (het uitroepteken): dit is de operator NOT - true wordt false en false wordt true.

bool benjeklaar = false;
benjeklaar = !benjeklaar;
MessageBox.Show(benjeklaar.ToString(),"Ben je klaar?");

Na de aangeduide lijn is benjeklaar true geworden.

Gelijkheid en relationele operatoren

Operator Betekenis Voorbeeld Uitkomst als x = 99
== Gelijk aan x == 100 false
!= Niet gelijk aan x != 100 true
< Kleiner dan x < 21 false
> Groter dan x > 21 true
<= Kleiner dan of gelijk x <= 21 false
>= Groter dan of gelijk x >= 21 true

Logische operatoren

C# kent ook twee operatoren waarmee voorwaarden aan elkaar kunnen gekoppeld worden:

voorbeeld:
int uur = 14;
bool geldigUur = (uur >= 0) && (uur <= 23);
MessageBox.Show(geldigUur.ToString(), "Geldig uur?");

De variabele geldigUur bevat true wanneer uur groter of gelijk is aan 0 EN kleiner of gelijk is aan 23.

Volgorde van bewerkingen


Volgende tabel geeft aan welke prioriteit een bewerking heeft ten opzichte van een andere. Hoe hoger de sectie in de tabel, hoe hoger de prioriteit. Een bewerking met een hogere prioriteit wordt in een opdracht uitgevoerd VOOR een bewerking met lagere prioriteit.
Bewerkingen met een gelijke prioriteit worden van links naar rechts uitgevoerd.
operator beschrijving
() prioriteit aanpassen
++ verhogen als suffix
-- verlagen als suffix
! NOT
++ verhogen als prefix
-- verlagen als prefix
* vermenigvuldigen
/ delen
% modulo: rest bij deling
+ optellen
- aftrekken
< kleiner dan
> groter dan
<= kleiner dan of gelijk aan
>= groter dan of gelijk aan
== gelijk aan
!= niet gelijk aan
&& en
|| of
= toekenning

Selectie: if

Een selectie is een moment in een programma waarop een beslissing moet worden genomen hoe het programma verder zal worden uitgevoerd.
Enkel ALS aan een voorwaarde is voldaan worden bepaalde statements uitgevoerd.

Het sleutelwoord voor het nemen van een beslissing is if.

Basis if

De algemene syntax voor het nemen van een beslissing is als volgt:

if (booleaanse expressie)
	//statement als booleaanse expressie waar is;

else: voorwaarde is onwaar

if (booleaanse expressie)
	//statement als booleaanse expressie waar is;
else
	//statement als booleaanse expressie niet waar is;
voorbeeld:
int seconden = 50;

if (seconden == 59)
	seconden = 0;
else
	seconden++;
	
MessageBox.Show(seconden.ToString(), "Seconden");

Als seconden gelijk is aan 59 wordt seconden terug op 0 gezet, anders wordt seconden met 1 opgehoogd.

Statements groeperen: codeblokken

Gebruik accolades { ... } om statements te groeperen: meer dan 1 statement na if / else

if (booleaanse expressie)
{
	//statements als booleaanse expressie waar is;
}
else
{
	//statements als booleaanse expressie niet waar is;
}
voorbeeld:
int seconden = 50;
int minuten = 10;

if (seconden == 59)
{
	seconden = 0;
	minuten++;
}
else
	seconden++;

MessageBox.Show(minuten +" min " +seconden +" sec", "Tijd");

Als seconden gelijk is aan 59 wordt seconden terug op 0 gezet en minuten met 1 opgehoogd, anders wordt seconden met 1 opgehoogd.

if statements nesten

if (dag == 0)
	dagnaam = "zondag";
else if (dag == 1 )
	dagnaam = "maandag";
else if (dag == 2 )
	dagnaam = "dinsdag";
else if (dag == 3 )
	dagnaam = "woensdag";
else if (dag == 4 )
	dagnaam = "donderdag";
else if (dag == 5 )
	dagnaam = "vrijdag";
else if (dag == 6 )
	dagnaam = "zaterdag";

Toepassing: waarden vergelijken

Maak in het project WpfSelectie een Window aan.

De sliders hebben o.a. volgende instellingen:

Property Value Omschrijving
AutoToolTipPlacement BottomRight Waarde wordt getoond tijdens slepen
TickPlacement BottomRight Intervalstreepjes worden getoond
IsSnapToTickEnabled True Enkel een waarde op de intervalstreepjes kan geselecteerd worden

Als op de knop wordt geklikt wordt een melding getoond:

Extra1: verander de tekstkleur van de melding

Extra2: gebruik het event ValueChanged van de Sliders om de melding te plaatsen, verwijder de knop.

Toon /verberg

Switch

Soms zal je bij een selectie een groot aantal gelijkaardige gevallen willen onderscheiden:
if (dag == 0)
	dagnaam = "zondag";
else if (dag == 1 )
	dagnaam = "maandag";
else if (dag == 2 )
	dagnaam = "dinsdag";
else if (dag == 3 )
	dagnaam = "woensdag";
else if (dag == 4 )
	dagnaam = "donderdag";
else if (dag == 5 )
	dagnaam = "vrijdag";
else if (dag == 6 )
	dagnaam = "zaterdag";

In dergelijk geval is het efficiënter en beter leesbaar wanneer je gebruik maakt van een switch statement:

switch(controleExpressie)
{
	case constanteExpressie :
		statements;
		break;
	case constanteExpressie :
		statements;
		break;
	...
	default :
		statements;
		break;
}

Opgepast, het sleutelwoord break is heel belangrijk als laatste statement van elk geval, dit statement beëindigt de switch-constructie. Zonder break zou de volgende case ook worden uitgevoerd, als is de voorwaarde niet vervuld.
ipv break kan ook return of throw (zie later) gebruikt worden.

Of toegepast op ons concreet voorbeeld:

switch(dag)
{
	case 0:
		dagnaam = "zondag";
		break;
	case 1:
		dagnaam = "maandag";
		break;
	case 2:
		dagnaam = "dinsdag";
		break;
	case 3:
		dagnaam = "woensdag";
		break;
	case 4:
		dagnaam = "donderdag";
		break;
	case 5:
		dagnaam = "vrijdag";
		break;
	case 6:
		dagnaam = "zaterdag";
		break;
	default:
		dagnaam = "onbekend";
		break;
}

Toepassing: tekst naar HTML-notatie

Wanneer je een webpagina maakt in HTML/XHTML dan worden voor bepaalde karakters specifieke codes gebruikt. Om bijvoorbeeld een kleiner-dan-teken (<) op een webpagina te plaatsen plaats je in de code &lt; in plaats van <. (< is het startkarakter van elke HTML-tag!).

Meer hierover in de cursus HTML

Maak een toepassing:

Wanneer je een teken kiest uit de ComboBox wordt de HTML-representatie getoond in een Label

Op te nemen tekens: <, > , € , &, é , ë: via de Property Items van de ComboBox

Tip:
Actie ondernemen wanneer de selectie in een ComboBox verandert doe je in het event SelectionChanged.
Om de nieuwe waarde van de ComboBox uit te lezen gebruik je:

string teken = ((ComboBoxItem)cmbKarakter.SelectedItem).Content.ToString();

cmbKarakter is hier de naam van de ComboBox
De property Text van de ComboBox is maar geupdated na SelectionChanged, daar je de verandering zou kunnen annuleren.

Toon /verberg

Meer tutorials:
leer ook: html | xhtml | css | asp | asp.net | c# | ado.net | linq | ajax | java | javascript
Valid HTML 4.01! Valid CSS! © - Cursusweb