Уроки 51–52 · 2 урока · Н. И. Тайлаков (общий редактор), А. Б. Ахмедов, М. Д. Пардаева, А. А. Абдуганиев, У. М. Мирсанов. Информатика и информационные технологии, 10 класс, 1-е издание. «Extremum-Press», Ташкент, 2017
51
Использование флажков в приложении
Учебник: с. 110–115
ЦельИспользует объект CheckBox, проверяет свойство Checked, объявляет глобальный массив и заполняет его начальными значениями в событии OnCreate.
Новые слова
CheckBox: флажок, который можно установить или снять · CheckBoxChecked: True, если флажок установлен, иначе False · Checkedглобальная переменная: переменная, объявленная вне процедур и доступная везде в модуле · global o‘zgaruvchiмассив: пронумерованные переменные одного типа под одним именем · massiv
Объяснение
CheckBox (вкладка Standard) либо установлен, либо снят; это состояние хранится в логическом свойстве Checked, а его надпись – в Caption. Можно одновременно установить сколько угодно флажков CheckBox, поэтому в опросе с ними число ответов может быть больше числа участников. Чтобы во время работы приложения запоминать, сколько человек что выбрали, нужны переменные, но локальная переменная исчезает, когда процедура заканчивается. Поэтому объявляется глобальная переменная (например, массив): в окне кода, в разделе implementation, запишите var n: array[0..3] of Integer;, а элементы называются n[0], n[1], n[2], n[3]. Начальные значения удобно задавать при создании окна приложения: выберите Form1, дважды щёлкните OnCreate на вкладке Events в Object Inspector и обнулите элементы циклом. Delphi сначала устанавливает глобальные переменные в ноль, но явная запись в OnCreate делает текст программы понятнее.
Примеры
«Дневник привычек»: CheckBox1 – я читал(а) книгу, CheckBox2 – я занимался(лась) спортом, CheckBox3 – я рано встал(а). Каждый вечер флажки отмечаются и нажимается кнопка «Конец дня»: procedure TForm1.Button1Click(Sender: TObject); ⏎ begin ⏎ n[0] := n[0] + 1; ⏎ if CheckBox1.Checked then n[1] := n[1] + 1; ⏎ if CheckBox2.Checked then n[2] := n[2] + 1; ⏎ if CheckBox3.Checked then n[3] := n[3] + 1; ⏎ CheckBox1.Checked := False; ⏎ CheckBox2.Checked := False; ⏎ CheckBox3.Checked := False; ⏎ end; n[0] считает дни, а n[1]–n[3] считают, в скольких днях была выполнена каждая привычка; отметки сбрасываются на следующий день.
Записано шесть дней: чтение отмечено в 4 днях, спорт – в 2, а раннее вставание – в 3. n[0] = 6, n[1] = 4, n[2] = 2, n[3] = 3. Сумма отметок равна 4+2+3 = 9, что больше числа дней (6), потому что в один день можно отметить несколько привычек. Доля дней с чтением равна 4/6 ≈ 67%.
Работа в классе
«Опрос класса»: группа создаёт приложение с 4 вариантами по собственной теме (например, любимый предмет); вводит 8 выдуманных «голосов» и сравнивает итоги с результатом, вычисленным вручную.
Упражнения
1
Какое свойство хранит, установлен ли флажок CheckBox?
Checked
2
Сколько элементов у var n: array[0..3] of Integer;?
4
3
В опросе участвовали пять учеников; один вариант получил 3 отметки, другой – 4. Чему равна сумма отметок для двух вариантов?
7
4
Почему число отметок может превышать число участников?
С флажками CheckBox один человек может выбрать несколько вариантов.