Если оператор If и конструкция If then else, - предназначены для выбора одного из двух действий, то оператор Case
и конструкция Case of else - предназначены для выбора одного из любого количества вариантов. Перевести конструкцию Case... of... else... на русский язык, можно примерно так: Вариант... из... иначе... Понять что это все означает, нам поможет следующий пример. Работаем мы скажем с компонентом RadioGroup, со вкладки Standart и нам нужно, так его настроить, чтобы при выборе одной из скажем шести позиций c 1 по 5, переменная с принимала значения от 10 до 14, а при выборе шестой, срабатывало else и переменной присваивалось значение, скажем - 5.
Для этого:
1) Кидаем на форму компоненты Label и RadioGroup;
2) Выбираем свойство Items у компонента RadioGroup, где прописываем позиции, от одного до шести, а свойство ItemIndex устанавливаем в 0, так-как нумерация строк в компоненте начинается с нуля;
3) Создаем обработчик событий RadioGroup1Click на RadioGroup где записываем следующее:
var
c:Integer;
begin
case Radiogroup1.ItemIndex of
0: c:=10;
1: c:=11;
2: c:=12;
3: c:=13;
4: c:=14;
else
c:=5;
end;
Label1.Caption:=IntToStr(c);
end;
Запускаем проект и наблюдаем, что если мы выбираем окошки с 1 по 5, для с присваивается значения от 10 до 14 соответственно, а если окошко 6 тогда 5. Прокомментировать происходящее можно примерно так, допустим мы установили галочку в четвертом по счету окошке:
1) В начале анализируется выражение стоящее за оператором Вариант (Case), это Radiogroup1.ItemIndex;
2) Затем просматривается ряд констант Из (of) этого оператора это: 0: c:=10; 1: c:=11; 2: c:=12; 3: c:=13; 4: c:=14;
3) Если константа равная значению (какое именно из всех шести позиций - OnClick ) найдена, выполняется оператор стоящий за константой, в нашем случае c:=13;
4) Если константа равная значению (какое именно из всех шести позиций - OnClick ) не найдена, обработка передается оператору else - c:=5; В этом можно легко убедиться выделив шестое по счету окошко.
5) И только за тем обработчик выполняет действие Label1.Caption:=IntToStr(c); отображая содержимое переменной - с. Кстати, так же как и в If then else, применение слова else здесь - не является обязательным. При его отсутствии, когда ключу выбора нет соответствия, Case - просто прекращает работу. Еще один момент относительно синтаксиса. Если для нескольких вариантов нужно выполнять один и тот же оператор, то эти варианты можно перечислить через запятую. Давайте для закрепления материала, рассмотрим еще один не большой примерчик, где все это и разберем. Напишем программку, которая по нажатию клавиши Button будет определять четное или не четное число введено в Edit (ввод чисел от 1-10), выдавая при этом соответствующее сообщение. Для этого:
1) Кидаем на нашу форму два компонента Edit и Button;
2) В событии OnClick Button пишем наш код:
var
a:Integer;
begin
a:=StrToInt(Edit1.Text);
Case a of // Анализруем a;
0: ShowMessage('Ноль это ноль'); //Если a = 0, вывести сообщение - "Ноль - это ноль";
2,4,6,8,10: ShowMessage('Внимание!!! Введено четное число'); {Если a = 2 или 4 или 6 или 8 или 9 или 10, вывести сообщение - "Введено четное число";}
1,3,5,7,9: ShowMessage('Внимание!!! Введено не четное число'); {Если a = 1 или 3 или 5 или 7 или 8 или 9, вывести сообщение - "Введено не четное число";}
end;
end;
Запускаем программу, вводим в наш Edit любое число от одного до десяти и нажимаем кнопку. Если вы внимательно изучили данную статью, то комментарии я думаю будут излишни. Теперь придумайте какой нибудь свой примерчик, и для пользы дела поэкспериментируйте с Case самостоятельно.
и конструкция Case of else - предназначены для выбора одного из любого количества вариантов. Перевести конструкцию Case... of... else... на русский язык, можно примерно так: Вариант... из... иначе... Понять что это все означает, нам поможет следующий пример. Работаем мы скажем с компонентом RadioGroup, со вкладки Standart и нам нужно, так его настроить, чтобы при выборе одной из скажем шести позиций c 1 по 5, переменная с принимала значения от 10 до 14, а при выборе шестой, срабатывало else и переменной присваивалось значение, скажем - 5.
Для этого:
1) Кидаем на форму компоненты Label и RadioGroup;
2) Выбираем свойство Items у компонента RadioGroup, где прописываем позиции, от одного до шести, а свойство ItemIndex устанавливаем в 0, так-как нумерация строк в компоненте начинается с нуля;
3) Создаем обработчик событий RadioGroup1Click на RadioGroup где записываем следующее:
var
c:Integer;
begin
case Radiogroup1.ItemIndex of
0: c:=10;
1: c:=11;
2: c:=12;
3: c:=13;
4: c:=14;
else
c:=5;
end;
Label1.Caption:=IntToStr(c);
end;
Запускаем проект и наблюдаем, что если мы выбираем окошки с 1 по 5, для с присваивается значения от 10 до 14 соответственно, а если окошко 6 тогда 5. Прокомментировать происходящее можно примерно так, допустим мы установили галочку в четвертом по счету окошке:
1) В начале анализируется выражение стоящее за оператором Вариант (Case), это Radiogroup1.ItemIndex;
2) Затем просматривается ряд констант Из (of) этого оператора это: 0: c:=10; 1: c:=11; 2: c:=12; 3: c:=13; 4: c:=14;
3) Если константа равная значению (какое именно из всех шести позиций - OnClick ) найдена, выполняется оператор стоящий за константой, в нашем случае c:=13;
4) Если константа равная значению (какое именно из всех шести позиций - OnClick ) не найдена, обработка передается оператору else - c:=5; В этом можно легко убедиться выделив шестое по счету окошко.
5) И только за тем обработчик выполняет действие Label1.Caption:=IntToStr(c); отображая содержимое переменной - с. Кстати, так же как и в If then else, применение слова else здесь - не является обязательным. При его отсутствии, когда ключу выбора нет соответствия, Case - просто прекращает работу. Еще один момент относительно синтаксиса. Если для нескольких вариантов нужно выполнять один и тот же оператор, то эти варианты можно перечислить через запятую. Давайте для закрепления материала, рассмотрим еще один не большой примерчик, где все это и разберем. Напишем программку, которая по нажатию клавиши Button будет определять четное или не четное число введено в Edit (ввод чисел от 1-10), выдавая при этом соответствующее сообщение. Для этого:
1) Кидаем на нашу форму два компонента Edit и Button;
2) В событии OnClick Button пишем наш код:
var
a:Integer;
begin
a:=StrToInt(Edit1.Text);
Case a of // Анализруем a;
0: ShowMessage('Ноль это ноль'); //Если a = 0, вывести сообщение - "Ноль - это ноль";
2,4,6,8,10: ShowMessage('Внимание!!! Введено четное число'); {Если a = 2 или 4 или 6 или 8 или 9 или 10, вывести сообщение - "Введено четное число";}
1,3,5,7,9: ShowMessage('Внимание!!! Введено не четное число'); {Если a = 1 или 3 или 5 или 7 или 8 или 9, вывести сообщение - "Введено не четное число";}
end;
end;
Запускаем программу, вводим в наш Edit любое число от одного до десяти и нажимаем кнопку. Если вы внимательно изучили данную статью, то комментарии я думаю будут излишни. Теперь придумайте какой нибудь свой примерчик, и для пользы дела поэкспериментируйте с Case самостоятельно.
Комментариев нет:
Отправить комментарий
Примечание. Отправлять комментарии могут только участники этого блога.