Бывают задачи, в которых приходится выбрать дальнейшее развитие программы. Например, необходимо определить какие символы введены в поле Edit.
Для этого используется оператор выбора case.
Оператор case сложный и состоит из нескольких зарезервированных слов.
Вот конструкция оператора:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Case «выражение» of Значение выражения: Оператор; Значение выражения: Оператор; Значение выражения: Оператор; Значение выражения: Оператор; Else Оператор; End; |
Оператор работает так: сначала вычисляется или считывается значение выражения, а потом в списке предложенных вариантов значений ищется совпадение и выполняется соответствующий оператор. Если такое значение не найдено, то выполняется оператор после слова else.
Для определения символов введённых в поле Edit необходимо перечислить возможные варианты в списке значений. Например, наша программа должна различать числа, русские буква и английские буквы.
Так как всего символов получается много. То можно их перечислять через запятую для одного оператора. Вот так:
1 |
‘1’,’2’,’3’,’4’,’5’,’6’,’7’,’8’,’9’,’0’:Label1.Caption:=’Это числа’; |
Но такая конструкция неудобная для букв, так как их много больше.
Большое количество символов или значений следующих друг за другом можно перечислять через две точки:
1 |
‘0’..’9’:Label1.Caption:=’Это числа’; |
Так же для букв:
1 |
'a'..'z','A'..'Z': Label1.Caption:='Это английская буква'; |
Сначала последовательность для строчных букв, а затем для прописных.
Вот полный оператор:
1 2 3 4 5 |
case edit1.text of '0'..'9': Label1.Caption:='Это число'; 'a'..'z','A'..'Z': Label1.Caption:='Это английская буква'; 'а'..'я','А'..'Я': Label1.Caption:='Это русская буква'; end; |
Осталось добавить на форму нужные элементы и в обработчик событий вставить этот код.
Рис. 10.1 Полученная программа.
Так же в операторе можно выполнять несколько действий для одного значения.
Например, нам необходимо вывести на экран класс, в котором учится ученик по введенному году рождения, а так же количество полных лет ученика в другое поле вывода.
Рис. 10.2 Интерфейс программы.
Для определения класса необходимо из сегодняшнего года вычитаем дату рождения и по получившемуся числу выводим на экран класс и возраст.
Будем считать что у ученика день рождения1 сентября, то есть его возраст в течении учебного года не меняется.
Для года рождения и сегодняшнего года создаем две переменные.
Вот обработчик для кнопки:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
procedure TForm1.Button1Click(Sender: TObject); var s,r:integer; begin s:=strtoint(Edit2.Text); r:=strtoint(Edit1.Text); case s-r of 7:begin label3.Caption:='1'; label6.Caption:='7'; end; 8:begin label3.Caption:='2'; label6.Caption:='8'; end; 9:begin label3.Caption:='3'; label6.Caption:='9'; end; 10:begin label3.Caption:='4'; label6.Caption:='10'; end; 11:begin label3.Caption:='5'; label6.Caption:='11'; end; 12:begin label3.Caption:='6'; label6.Caption:='12'; end; 13:begin label3.Caption:='7'; label6.Caption:='13'; end; 14:begin label3.Caption:='8'; label6.Caption:='14'; end; 15:begin label3.Caption:='9'; label6.Caption:='15'; end; 16:begin label3.Caption:='10'; label6.Caption:='16'; end; 17:begin label3.Caption:='11'; label6.Caption:='17'; end; end; end; |
Особенность кода в том, что после значения выводится несколько действий. Эти действия необходимо заключать в операторные скобки begin end;.
Практическое задание.
1. По заданному номеру месяца m вывести на печать название времени года.
2. Вывести на печать название дня недели, соответствующее заданному числу D, при условии, что в месяце 31 день и первое число – понедельник.
Об авторе