
Метода(c++)
.pdf
6.В компонент Panel добавить компонент Label и компонент SpinEdit. Подпись для Label – «N=», имя – lblN, имя для SpinEdit – spe. Расположение компонент – см. рис. 14.
7.Для компонента Panel установить значения свойств BevelInner и BevelOuter в bvNone.
8.Перейти в обработчик события ОnClick для компонента rbtnManual и указать код, представленный на рис. 15:
rbtn1->Enabled=False; rbtn2->Enabled=False; rbtn3->Enabled=False; lblN->Enabled=False; sspe->Enabled=False;
Рис. 15. Новый код
Рис. 14. Расположение компонентов на панели
9. Скопировать в буфер обмена только что набранный код; перейти в обработчик события OnClick для компонента rbtnRand и вставить текст, хранящийся в буфере. Выделить вставленный текст, выполнить Search -> Replace; в поле «TextToFind» указать False, в поле «Replace with» указать
True; снять флажок «Prompt on Replace»; в панеле «Scopе» выбрать вариант
«SelectedText» и нажать кнопку «Replace All».
10.Запусить проект, убедиться в его работоспособности и проверить правильность работы функций rbtnManualClick и rbtnRandClick.
11.Перейти в обработчик события OnClick для кнопки «Заполнить таблицу». В обработчике написать код, согласно следующему алгоритму (аналогичные действия уже были выполнены в лабораторной работе №5):
12.По возможности оптимизировать код.
13.Запустить программу и убедиться в ее работоспособности.
14.Получить индивидуальное задание по одномерным массивам.
Упражнение 4. Заполнение двумерного массива с помощью датчика
случайных чисел и вывод результата в компонент StringGrid.
70
1.Открыть проект проект InpTable из папки InpTableCol и сохранить его в папке InpTable2 с именем prTable2, файл модуля формы с именем frmTable2.
2.Добавить компоненты Label и SpinEdit для регулировки количества строк в таблице. Подписи и свойства настроить самостоятельно.
3.Заменить код события OnClick кнопки «Заполнить таблицу» для ситуации, когда выбран вариант «Ручной ввод» на следующий:
unsigned char ColCount; unsigned char RowCount; ColCount = speCount->Value+1;
RowCount = ….;// написать самостоятельно
StrGr->ColCount= ColCount;
StrGr->RowCount= ….;//написать самостоятельно StrGr ->Cells[0][0]="Строка/Столбец";
for (int i=1;i<ColCount;i++) {StrGr ->Cells[i][0]=i;} for (int i=1;i<RowCount;i++) {StrGr ->Cells[0][i]=i;} for (int i=1;i<ColCount;i++)
{
for (int j=1;j<RowCount;j++)
{
StrGr ->Cells[i][0]=i*j;
}
}
StrGr ->Visible = True;
4.Запустить программу, убедиться в ее верной работоспобности для измененного варианта. Если программа работает не верно, самостоятельно исправить ошибку.
4.Самостоятельно изменить код для всех остальных ситуаций.
5.Добавить кнопку «Обнулить строку» и компонент SpinEdit, который будет задавать номер обнуляемой в таблице строки. Перейти в обработчик события OnClick для кнопки «Обнулить строку» и самостоятельно написать соответствующий программный код.
Содержание отчета:
1.Титульный лист
2.Цель работы
3.Краткие теоретические сведения (список используемых операторов, их цель, синтаксис, формат и проч.)
4.Коды модулей С++
5.Копии форм и сведения о свойствах компонентов.
71
6.Копии экрана с примерами работы программ
7.Схемы алгоритмов программ.
8.Выводы по работе.
Контрольные вопросы
1.Для каких целей используется компонент CheckBox?
2.Перечислите свойства компонента CheckBox.
3.В каких случаях рекомендуется использовать компонент RadioButton?
4.Перечислите свойства компонента RadioButton.
5.Какое событие является важнейшим для компонентов CheckBox и RadioButton?
6.Почему в операторе ветвления п. 6 упражнения 1 в условии нет логического выражения?
7.Перечислите цель и свойства компонента Panel.
8.В чем отличие компонента GroupBox от компонента Panel?
9.Для каких целей используется компонент RadioGroup? Перечислите и поясните его свойства.
10.Расскажите о цели, свойствах и событиях компонента StringGrid.
72

Приложение
1. Библиотечные математические функции С++
Требуют подключения заголовочного файла math.h (см п. 7 их упражнения «Работа с компонентом
Memo»).
Все функции, принимающие или возвращающие угол, работают с радианами. Список некоторых математических функций модуля приведен в таблице 5.
Таблица 5.
Функция |
Описание работы функции |
|
|
acos |
Вычисление арккосинуса |
|
|
asin |
Вычисление арксинуса |
|
|
atan |
Вычисление арктангенса |
|
|
сbrt |
Вычисление кубического корня |
|
|
сeil |
Округление до ближайшего большего целого числа |
|
|
copysign |
возвращает величину, абсолютное значение которой равно x, но знак которой соответствует |
|
знаку y |
|
|
cos |
Вычисление косинуса |
|
|
exp |
Вычисление экспоненты |
|
|
exp2 |
Вычисление 2х |
fabs |
Вычисление модуля |
|
|
floor |
Округление до ближайшего меньшего целого числа |
|
|
fmax |
наибольшее значение среди x и y |
|
|
fmin |
наименьшее значение среди x и y |
|
|
fmod |
вычисление остатка от деления нацело (аналог – оператор «%») |
|
|
frexp |
разбивает число с плавающей точкой на мантиссу и показатель степени. |
|
|
hypot |
Вычисление гипотенузы (sqrt(x² + y²)) |
|
|
llround |
округление до ближайшего целого в направлении от нуля |
|
|
log |
Вычисление натурального логарифма |
|
|
log10 |
Вычисление десятичного логарифма |
|
|
Log2 |
Вычисление логарифма по основанию 2 |
|
|
lrint |
округление до ближайшего целого |
|
|
lround |
округление до ближайшего целого в направлении от нуля |
|
|
modf |
извлекает целую и дробную части (с учетом знака) из числа с плавающей точкой |
|
|
nearbyint |
округление аргумента до целого значения в формате числа с плавающей точкой |
|
|
pow |
Возводит число, принимаемое в качестве аргумента х, в степень, принимаемую в качестве |
|
аргумента y. |
|
|
round |
округление до целого |
|
|
sin |
Вычисление синуса |
|
|
sqrt |
Вычисление квадратного корня |
|
|
tan |
Вычисление тангенса |
|
|
trunc |
Округление до ближайшего целого числа в направлении к нулю |
|
|
2. Дополнительные свойства для компонентов
Название |
Смысл свойства |
свойства |
|
BiDiMode определяет направление ввода текста, действует в Windows с поддержкой языков с порядком ввода.
Возможные значения
73
|
|
|
|
|
|
|
|
bdLefttoRight |
слева на право |
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bdRighttoLeft |
справо на лево |
||||||
|
|
|
|
|
|
|
|
|
|
|
|||||
Tag |
|
Cистемой не используется. Пользователь может определить и использовать его по своему |
|||||||||||||
|
|
усмотрению, помещая в него необходимую информацию. Например, можно в процессе |
|||||||||||||
|
|
проектирования или программно в процессе выполнения задать некоторое значение Tag |
|||||||||||||
|
|
группе компонентов и затем оперировать с этой группой. |
|||||||||||||
|
|
|
|
|
|
|
|
|
|
||||||
Action |
|
Значение свойства выбирается во время проектирования из выпадающего списка |
|||||||||||||
|
|
предусмотренных действий в Object Inspector. Этот список формируется в процессе |
|||||||||||||
|
|
проектирования размещением на форме компонента TActionList (вкладка Standart) и |
|||||||||||||
|
|
заданием его свойств. |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
||||||
Align |
|
определяет, |
остается ли компонент неизменным при изменении размеров содержащей его |
||||||||||||
|
|
формы, панели, другого компонента, или он изменяется, занимая всю доступную |
|||||||||||||
|
|
площадь, ее верхнюю, нижнюю, левую или правую часть. |
|||||||||||||
|
|
Возможные значения : |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
alNone |
|
Компонент остается там, где он размещен во время проектирования. |
|||||||||||
|
|
|
|
Размеры его не изменяются. |
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
alTop |
|
Компонент занимает всю верхнюю часть контейнера и во время выполнения |
|||||||||||
|
|
|
|
приложения его ширина изменяется при изменении ширины контейнера. |
|||||||||||
|
|
|
|
Высота компонента остается неизменной. |
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
alBottom |
|
Компонент занимает всю нижнюю часть контейнера и во время выполнения |
|||||||||||
|
|
|
|
приложения его ширина изменяется при изменении ширины контейнера. |
|||||||||||
|
|
|
|
Высота компонента остается неизменной. |
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
alLeft |
|
Компонент занимает всю левую часть контейнера и во время выполнения |
|||||||||||
|
|
|
|
приложения его высота изменяется при изменении высоты контейнера. |
|||||||||||
|
|
|
|
Ширина компонента остается неизменной. |
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
alRight |
|
Компонент занимает всю правую часть контейнера и во время выполнения |
|||||||||||
|
|
|
|
приложения его высота изменяется при изменении высоты контейнера. |
|||||||||||
|
|
|
|
Ширина компонента остается неизменной. |
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
alClient |
|
Компонент занимает всю клиентскую область контейнера и во время |
|||||||||||
|
|
|
|
выполнения приложения его размеры изменяются при изменении размеров |
|||||||||||
|
|
|
|
контейнера. Если в контейнере часть клиентской области уже занята, |
|||||||||||
|
|
|
|
компонент занимает всю ее оставшуюся часть. |
|||||||||||
|
|
|
|
|
|
|
|
|
|
||||||
Anchors |
|
Определяет привязку данного компонента к родительскому при изменении размеров |
|||||||||||||
|
|
последнего. Свойство представляет собой множество, которое может содержать |
|||||||||||||
|
|
следующие элементы: |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
akTop |
|
Компонент привязан к верхнему краю родительского |
|||||||||
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
akLeft |
|
Компонент привязан к левому краю родительского |
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
akRight |
|
Компонент привязан к правому краю родительского |
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
akBottom |
|
Компонент привязан к нижнему краю родительского |
|||||||||
|
|
|
|
|
|
|
|
|
|
||||||
BoundsRect |
|
Свойство позволяет получить одновременно координаты пикселей всех четырех углов |
|||||||||||||
|
|
компонента, используя тип TRect. Иной способ получить те же координаты - |
|||||||||||||
|
|
использовать свойства компонента Left, Top, Width, Height и соответствующие |
|||||||||||||
|
|
вычисления. |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|||||||||||||
Constraints |
|
Определяет ограничения, налагаемые на размер компонента. Тип TSizeConstraints. |
|||||||||||||
|
|
Возможные значения |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
MaxHeight |
|
максимальная высота |
||||||
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
MinHeight |
|
минимальная высота |
||||||
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
MaxWidth |
|
максимальная ширина |
||||||
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
MinWidth |
|
минимальная ширина |
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
74

DragCursor |
|
отвечает за изображение курсора при перемещении его в области компонента в процессе |
|||
|
|
перетаскивания. |
|
|
|
|
|
|
|
|
|
DragKind |
|
определяет, будет ли компонент перетаскиваться обычным образом (по технологии |
|||
|
|
Drag&Drop ), или он будет перетаскиваться для встраивания (по технологии Drag& Doc). |
|||
|
|
|
|||
DragMode |
|
определяет поведение компонента в процессе его перетаскивания. |
|||
|
|
Возможные значения: |
|||
|
|
|
|
||
|
|
dmAutomatic |
От программиста не требуется обработка каких-либо событий. |
||
|
|
|
|
Компонент готов к перетаскиванию. Пользователю достаточно |
|
|
|
|
|
щелкнуть на его изображении и начать перетаскивать. |
|
|
|
|
|
|
|
|
|
DmManual |
|
Компонент не может быть перетащен, пока приложение не вызовет |
|
|
|
|
|
метод BeginDrag |
|
|
|
|
|
|
|
Parent |
|
определяет родительский компонент, т.е. компонет-контейнер, содержащий данный |
|||
|
|
компонент. Контейнерами являются оконные компоненты, такие, как формы, панели и |
|||
|
|
некоторые другие. Расположенные на них дочерние компоненты могут наследовать часть |
|||
|
|
свойств содержащего их контейнера Изменение свойства во время выполнения |
|||
|
|
заставляет компонент перемещаться на экране в клиентскую область нового родителя. |
|||
|
|
|
|||
ParentColor |
|
определяет, наследует ли компонент цвет содержащего его компонента-контейнера. |
|||
|
|
|
|||
ParentFont |
|
определяет, будет ли для данного компонента использоваться шрифт (свойство Font) |
|||
|
|
родительского компонента-контейнера. |
|||
|
|
При изменении свойства Font в каком-то компоненте, его свойство ParentFont |
|||
|
|
автоматически сбрасывается в False. |
|||
|
|
|
|||
ParentShowHint |
|
используется, чтобы иметь возможность одновременно всем компонентам некоторого |
|||
|
|
контейнера или формы разрешать или запрещать отображение всплывающей подсказки. |
|||
|
|
Если свойство ParentShowHint установлено в True, то разрешение или запрет отображения |
|||
|
|
ярлычков определяется свойством ShowHint родительского компонента. Если же свойство |
|||
|
|
ParentShowHint установлено в False, то отображение окон подсказки определяется |
|||
|
|
свойством ShowHint самого компонента. |
|||
|
|
При задании в компоненте значения ShowHint, равного True, его свойство ParentShowHint |
|||
|
|
автоматически сбрасывается в False. |
|||
|
|
|
|||
PopupMenu |
|
обеспечивает появление всплывающего меню компонента |
|||
|
|
Объект меню имеет тип TPopupMenu. Если в этом объекте свойство AutoPopup |
|||
|
|
установлено в true, то меню будет появляться автоматически. В противном случае надо |
|||
|
|
отображать меню с помощью метода Popup класса TPopupMenu. |
Компонент Button (кнопка)
Назв |
|
|
|
|
|
Смысл |
|
ание |
|
|
|
|
|
|
|
|
|
|
|
|
|||
Canc |
|
|
Если имеет значение True, событие Click кнопки возникает при нажатии клавиши Esc |
||||
el |
|
|
|
|
|
|
|
|
|
|
|
|
|||
Moda |
|
|
В модальных диалоговых окнах значение этого свойства, не равное mrNone, при |
||||
lResult |
|
нажатии на кнопку закроет окно и запишет свое значение в свойство ModalResult формы. |
|||||
|
|
|
|
|
|||
4. Дополнительные сведения о событиях |
|
|
|||||
|
|
|
|
|
|
||
Имя события |
|
|
Возникает |
|
Примечание |
||
|
|
|
|
|
|
|
|
OnStartDrag |
|
Когда |
пользователь |
начинает |
перетаскивать |
|
|
|
|
|
компонент, т. е. нажал над компонентом левую кнопку |
|
|||
|
|
|
мыши, и, не отпуская ее, начал смещать указатель |
|
|||
|
|
|
мыши |
|
|
|
|
|
|
|
|
|
|
|
|
75
OnDragDrop |
когда |
пользователь |
отпускает |
перетаскиваемый |
|
|
|
||
|
компонент над другим компонентом. |
|
|
|
|
|
|||
|
|
|
|
|
|||||
onDragOver |
когда перетаскиваемый компонент пересекает границу |
|
|
|
|||||
|
данного компонента и оказывается над ним. |
|
|
|
|
||||
|
|
|
|||||||
OnEndDrag |
при любом окончании процесса переноса, как |
может применяться для реакции |
|||||||
|
успешного, так и неудачного (когда компонент |
приложения на |
перетаскивание |
||||||
|
отпущен над формой или компонентом, не способном |
(например, "выполнено успешно" |
|||||||
|
его принять). |
|
|
|
|
или "неудача"). |
|
|
|
|
|
|
|
|
|
||||
OnMouseDown |
Когда над компонентом была нажата кнопка мыши |
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
OnMouseMove |
Когда |
указатель |
мыши |
перемещается |
над |
|
|
|
|
– |
компонентом |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
OnMouseUp |
Когда пользователь отпустил нажатую кнопку мыши |
|
|
|
|||||
|
над компонентом |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
OnMouseLeave |
Когда указатель мыши выходит за пределы элемента |
|
|
|
|||||
|
управления. |
|
|
|
|
|
|
|
|
|
|
|
|||||||
onKeypress |
при нажатии пользователем символьной клавиши. |
Не позволяет отследить нажатие |
|||||||
|
Данное событие имеет параметр Key, который |
функциональных |
клавиш |
и |
|||||
|
содержит символ нажатой клавиши и имеет тип char. |
клавиш-комбинаций <Shift>+…, |
|||||||
|
При этом различаются символы верхнего и нижнего |
<Ctrl> + … и <Alt>+ …. |
|
||||||
|
регистров, а также раскладка клавиатуры. |
|
|
|
|
||||
|
|
|
|||||||
OnKeyUp |
при отпускании пользователем любой ранее нажатой |
позволяет обрабатывать нажатия |
|||||||
|
клавиши |
|
|
|
|
всех клавиш |
|
|
|
|
|
|
|
|
|||||
OnKeyDown |
при нажатии пользователем на какую-либо клавишу |
|
|
|
|||||
|
|
|
|
|
|||||
onMouseDown |
при нажатии пользователем любой кнопки мыши в тот |
|
|
|
|||||
|
момент, когда указатель мыши находится над |
|
|
|
|||||
|
компонентом. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
onMouseUp |
Когда пользователь отпускает кнопку мыши над |
|
|
|
|||||
|
компонентом |
|
|
|
|
|
|
|
|
|
|
|
|||||||
onMouseMove |
наступает при перемещении указателя мыши над |
При нажатой левой кнопке мыши |
|||||||
|
компонентом. |
|
|
|
|
данное событие не возникает. |
|
||
|
|
|
|||||||
onPaint |
когда приложение получает сообщение Windows о |
Изображение может испортиться |
|||||||
|
необходимости |
перерисовки |
испорченного |
от перекрытия окон одного или |
|||||
|
изображения. |
|
|
|
|
нескольких приложений. |
|
||
|
|
|
|
|
|
|
|
|
|
76
СПИСОК ЛИТЕРАТУРЫ
1.Вальпа О. Д. Borland C++ Builder. Экспресс-курс. – СПб.: БХВ-Петербург,
2006. – 224 с.: ил.
2.Культин Н. Б. С++ Builder. – 2-е изд., перераб. и доп. – СПб.: БХВПетербург, 2008. – 464 с.: ил. + CD-ROM – (Самоучитель)
3.Пахомов Б. И. С/С++ и Borland C++ Builder для студента. – СПб.: БХВПетербург, 2006 – 448 с.: ил.
4.Павловская Т. А. C/C++. Процедурное и объектно-ориентированное программирование: Учебник для вузов. Стандарт 3-го поколения. — СПб.:
Питер, 2015. — 496 с.
5.Мещеряков П. С. Прикладная информатика : учебное пособие. / П. С. Мещеряков. — Томск : Эль Контент, 2012. — 132 с
6.https://code-live.ru/tag/cpp-manual/
7.http://www.cyberforum.ru/cpp-beginners/
8.http://www.cyberforum.ru/cpp-builder/
9.Липпман, С. Язык программирования С++. Полное руководство. [Электронный ресурс] / С. Липпман, Ж. Лажойе. – Электрон. дан. — М. :
ДМК Пресс, 2006. – 1105 с. – Режим доступа: http://e.lanbook.com/book/1216
– Загл. с экрана.
77
|
ОГЛАВЛЕНИЕ |
Введение................................................................................................................... |
3 |
ЛАБОРАТОРНАЯ РАБОТА №1 |
......................................................................... 4 |
ЛАБОРАТОРНАЯ РАБОТА №2 |
....................................................................... 13 |
ЛАБОРАТОРНАЯ РАБОТА №3 |
....................................................................... 19 |
ЛАБОРАТОРНАЯ РАБОТА №4 |
........................................................................ 24 |
ЛАБОРАТОРНАЯ РАБОТА №5 |
....................................................................... 28 |
ЛАБОРАТОРНАЯ РАБОТА №6 |
....................................................................... 34 |
ЛАБОРАТОРНАЯ РАБОТА №7 |
....................................................................... 56 |
Приложение ........................................................................................................... |
71 |
Список литератуы ................................................................................................. |
75 |
78
Учебно-методическое пособие
Андреева Ольга Марковна, Григорьев Евгений Борисович, Маркелов Олег Александрович, Хачатурян Алена Борисовна
Лабораторные работы по программированию в среде С++ Builder 6.0
Издание публикуется в авторской редакции
СПбГЭТУ «ЛЭТИ» 197376, Санкт-Петербург, ул. Проф. Попова, 5
79