Opcje wyboru. Instrukcja warunkowa switch
Instrukcja warunkowa switch, to instrukcja wielokrotnego wyboru, która po sprawdzeniu wyrażenia dopasowania do wzorca wybiera jedną z sekcji case
Wskazówka:
switch (wyrażenie)
{
case wzorzec1: instrukcja-1;break;
case wzorzec2: instrukcja-2;break;
case wzorzec3: instrukcja-3;break;
.
.
.
.
default: instrukcja-braku-dopasowania; break;//instrukcja nie jest wymagana
}
Cel: Napisz aplikację z zastosowaniem kontrolki RadioButton i użyciem instrukcji warunkowej switch zrealizuje podstawowe działania mateamtyczne
Krok 1. Układ komponentów
- GroupBox- sztuk 1
- RadioButton- sztuk 4
- Label- sztuk 3
- TextBox- sztuk 2
- Button- sztuk 1
Krok 2. Zmiana zawartości właściwości Text poszczególnych kontrolek
Skompiluj program i sprawdź zachowanie się kontrolek RadioButton
Krok 3. Przypisujemy kontrolki RadioButton do jednego zdarzenia CheckedChanged
Komponenty RadioButton wprowadź w stan aktywności edycyjnej
Każdemu z komponentów RadioButton przypisz jedną i tą samą funkcję zdarzenia CheckedChanged
Krok 4. Zastosuj instrukcję wielokrotnego wyboru switch w funkcji zdarzenia CheckedChanged
W tym zdarzeniu ustalimy rodzaj wybranego działania matematycznego. Wybór zapamiętamy w zmiennej lokalnej klasy Form typu byte. Przyjmiemy, że wartość 0 to brak wyboru, 1 to dodawanie, 2 to odejmowanie, 3 to mnożenie, 4 to dzielenie
Wskazówka:
private void RadioButton1_CheckedChanged(object sender, EventArgs e)
{
RadioButton rb = sender as RadioButton;
if (rb.Checked)
{
switch (rb.Text)
{
case "+": dzialanie = 1; break;
case "-": dzialanie = 2; break;
case "*": dzialanie = 3; break;
case "/": dzialanie = 4; break;
default: dzialanie = 0; break;
}
}
}
Gdzie zmienna dzialanie jest zadeklarowana jak poniżej
public partial class Form1 : Form
{
byte dzialanie = 0;
Sprawdź czy program się kompiluje
Krok 5. Wykonujemy obliczenie w zdarzeniu Click komponentu Button
Odczyt zmiennych wprowadzonych z klawiatury potraktujemy jako prawidłowe i nie będziemy robić zabezpieczenia konwersji. Użyjemy trzech zmiennych lokalnych typu rzeczywistego
Wskazówka:
private void Button1_Click(object sender, EventArgs e)
{
float a = Convert.ToInt16(textBox1.Text),
b = Convert.ToInt16(textBox2.Text),
wynik = 0;
}
Instrukcja switch realizująca nasz problem przyjmie poniższą postać (wyniki działań wyślemy do komponentu label3)
Wskazówka:
switch (dzialanie)
{
case 1:wynik = a + b;break;
case 2: wynik = a - b; break;
case 3: wynik = a * b; break;
case 4: wynik = a / b; break;
dafault: wynik = 0; break;
}
label3.Text = wynik.ToString();
Uwaga: Bardziej eleganckim rozwiązaniem zastosowania zmiennej przechowującej informację o wybranym działaniu matematycznym jest zastosowanie typu wyliczeniowego
public partial class Form1 : Form
{
enum DZIALANIE { BRAK, DODAWANIE, ODEJMOWANIE, MNOZENIE, DZIELENIE };
private DZIALANIE dzialanie=DZIALANIE.BRAK;
Ćwiczenie sprawdzające
1. Zabezpiecz aplikację przed błędami konwersji i dzieleniem przez zero.