1. Лабораторная работа №8 для дисциплин: «Прикладное программирование» и
«Языки программирования»
1
Лабораторная работа 8
Структура программы на языке С++
Цель: Научиться составлять программы по средствам форм Visual C++ Builder
Общая постановка задачи
• Постановка задачи вычисления значений функции по формулам содержит функцию
),....,()( 21 nxxxFxFY == , определенную на n-мерном евклидовом пространстве Rn
.
• Требуется разработать функциональное приложение, в котором задаются значения
nxxx ,...., 21 и на основании заданных значений производятся вычисления функции )(xF .
Результаты решения должны быть отображены на экране.
Стратегия решения задачи
Производится анализ задачи. На этом этапе анализируется вычислительная сторона задачи,
определяются входные и выходные данные. В соответствии с этим формируется набор
компонент и внешний вид или интерфейс программы. Затем на форму выставляются визуальные
компоненты. В перечне компонент обязательно должны быть такие, которые предоставляют
пользователю возможность задавать вручную исходные данные и просматривать результаты
вычислений. На этом этапе обучения эти компоненты рекомендуется располагать в том виде, как
это показано на рисунках, сопровождающих решение задачи. С помощью инспектора объектов
устанавливаются свойства этих компонентов. После чего формируются тесты обработчиков
событий с целью обеспечения функциональности приложения. На завершающем этапе
производится тестирование работоспособности приложения, и исправляются обнаруженные
ошибки.
Пример задачи 1.1. Требуется вычислить значения функции nxknxkF ++=),,( для
заданных вещественных значений k, x, n.
Решение
1. Анализ задачи
2. Лабораторная работа №8 для дисциплин: «Прикладное программирование» и
«Языки программирования»
2
Следует определиться с типом переменных. Так как по условию задачи k, x, n –
вещественные, то, соответственно, и результат – вещественный.
В соответствии с условием задачи пользователю нужно предоставить возможность
вводить вручную значения исходных данных k, x, n и отражать результаты вычислений –
значение ),,( nxkFy = .
2. Разработка интерфейса и задание свойств компонентов
Для ввода/вывода данных можно воспользоваться визуальным компонентом – Edit
(однострочный редактор). Для отображения поясняющего статического текста необходимо
использовать визуальный компонент – Label. Программа должна быть функциональной.
Она должна принять от пользователя две команды:
- произвести вычисления;
- прекратить выполнение программы.
Для того чтобы пользователь мог задать эти команды необходимо воспользоваться
визуальными компонентами – кнопками Button (событие OnClick).
Все перечисленные компоненты можно расположить на одной форме. Расположение
кнопок может быть таким как показано на рисунке 1.1, а. Исходные данные и результаты
вычислений будут отображаться в области редактирования компонента Edit, доступ к
которой обеспечивается свойством Text редактора. Это поле представляет собой
стандартную строку на языке С++ с классовым типом AnsiString.
AnsiString реализован как класс, представляющий строки с нулевым символом в
конце. При объявлении переменной типа AnsiString инициализируются пустыми
строками. Для данного типа определены отношения ==, !=, >, <, >=, <=, а также операция
присваивания =, += и операция склеивания строк (конкатенация) +. Определена также
операция индексации [ ]. Индексы начинаются с 1.
Все переменные программы хранятся во внутреннем формате, поэтому использование
компонента Edit при вводе данных требует преобразования строки в вещественное число
(StrToFloat), а при выводе – преобразование числа в строку (FloatToStr).
3. Лабораторная работа №8 для дисциплин: «Прикладное программирование» и
«Языки программирования»
3
Value в строку тика AnsiString, используя заданный формат Format, точность Precision
и число цифр Digits.Здесь возможны следующие типы формата:
СВОЙСТВА КОМПОНЕНТОВ
· Компонент Lable1 (статический текст): Caption (заголовок метки) – «Х=»; Name
(наименование) – «XLabel».
· Компонент Lable2 :Caption – «K=»; Name – «KLabel».
· Компонент Lable3 :Caption – «N=»; Name – «NLabel».
· Компонент Lable4 :Caption – «F(K,N,X)=»; Name – «YLabel».
· Компонент Edit1 (однострочный редактор): Text (поле ввода, значение по умолчанию) –
«»; Name (наименование) –«XEdit»
· Компонент Edit2: Text – «»; Name –«KEdit»
· Компонент Edit3: Text – «»; Name –«NEdit»
· Компонент Edit4: Text – «»; Name –«YEdit»
4. Лабораторная работа №8 для дисциплин: «Прикладное программирование» и
«Языки программирования»
4
· Компонент Button1 (кнопка) : Caption (текст на кнопке) - «&Вычислить»; Name
(наименование компонента) – «CalcButton»
· Компонент Button2 : Caption - «&Выход»; Name – «CloseButton»
3. Подготовка кодов программ.
После установки свойств необходимо подготовить текст для обработчика событий
OnClick под кнопки.
Выделяем соответствующий компонент, в окне Object Inspektor выбираем страницу
Events. В свободном поле строки OnClick производим двойной щелчок левой клавишей
мыши. В открывшемся окне Code Editor будет автоматически создана процедура -
обработчик события OnClick имеющая один параметр Sender объектного типа TObject.
Параметр Sender является стандартным входным параметром процедуры обработчика
событий. Он указывает на компонент, который является инициатором события,
подлежащего обработке.
Алгоритм решения задачи сводится к следующим шагам.
1. Из окон однострочных редакторов (свойство Text) читаются исходные данные. При
чтении необходимо преобразование информации из типа AnsiString в тип float.
2. Производиться вычисление по формуле.
3. После оператора вычисления производит запись результата в поле Text
соответствующего редактора с преобразованием в тип AnsiString из типа float.
Тексты обработчиков событий представлены в листингах 1.1 и 1.2
Листинг 1.1. Описание действий команды «Вычислить»
Листинг 1.2. Описание действий команды «Выход»
При вводе числовых вещественных данных в строку Edit для последующего
преобразования в число, дробную часть от целой следует отделять не точкой, а запятой.
5. Лабораторная работа №8 для дисциплин: «Прикладное программирование» и
«Языки программирования»
5
Задачи для обязательного, самостоятельного решения
Задачи
Решение
Отличием от первой задачей является, то, что все исходные данные для ввода данных
располагаются в окне одного редактора Edit. Поэтому основное отличие только по способу ввода
данных и вычислительной формулой.
6. Лабораторная работа №8 для дисциплин: «Прикладное программирование» и
«Языки программирования»
6
7. Лабораторная работа №8 для дисциплин: «Прикладное программирование» и
«Языки программирования»
7