Особенность задач с графическим интерфейсом – существенное увеличение общего объема программного модуля за счет реализации интерфейса, состыкованного с расчетной частью задачи.
Большая часть общего программного кода генерируется ИСРП автоматически при создании интерфейса на этапе машинной обработки задачи. Разработка осуществляется с использованием программного модуля AppExpert. Активизация AppExpert приводит к созданию проекта.
Проект – совокупность файлов, реализующих задачу, и взаимосвязи между ними.
Он обеспечивает состыковку всех модулей, используемых в организации графического интерфейса. Типовой вариант проекта имеет вид:
Вычислительную часть задачи реализует только файл klddlgcl.cpp. Он содержит программный код обработки главного окна решения задачи. Программа реагирует на действия пользователя (события). События определяются на этапе разработки графического интерфейса. Для осуществления реакции программы на действия пользователя необходимо создать (вызвать стандартную) процедуру обработки события. Типичный пример: реакция на нажатие кнопки ОК – реализация вычислительного алгоритма задачи.
Обработка каждого события в программе реализуется отдельной функцией. Имя функции и ограничители ее тела добавляются ИСРП в программу автоматически при определении события, на которое программа реагирует.
Задача пользователя – вставка вычислительного фрагмента программы в тело функции – выполняется на этапе машинной обработки.
Добавление фрагмента программы реализации вычислительной части алгоритма производится на этапе создания и корректировки исходного модуля.
Внимание! Программный модуль решения задачи, предназначенный к обработке в ИСРП с использованием графического интерфейса строку заголовка main () и расположенную под ней открывающую фигурную скобку { содержать не должен.
Откорректированная программа решения задачи о кладах имеет вид:
#include <stdlib.h>
#include <stdio.h> /* директивы */
#include <math.h> /* препроцессора */
#include <conio.h>
…
void TKladDlgClient::ClickedOK() /*создается ИСРП*/
{ /*создается ИСРП*/
// INSERT>> Your code here. /*создается ИСРП*/
float c[7], /* массив значений стоимостей кладов */
p[7], /* массив значений начисленных премий */
pro; /* процент вознаграждения */
int n, i; /* размер массивов, параметр цикла */
char buf[10];
ListBoxVozn->ClearList();
EditNum->GetText(buf,10);
n=atoi(buf); /* ввод размера массивов */
EditProz->GetText(buf,10);
pro=atof(buf); /* ввод значения процента вознаграждения */
for(i=0; i < n; i++) /* заголовок цикла ввода исходного массива (массив стоимостей кладов) */
{
EditStoim->GetLine(buf, sizeof(buf), i);
c[i]=atof(buf); /* ввод значения элемента массива */
}
for(i=0; i < n; i++) /* заголовок цикла расчета премий*/
{
p[i] = (c[i] *pro)/ 100.;/*вычисление текущего значения*/
sprintf(buf,"%5.3f",p[i]); /* вывод текущего элемента*/
ListBoxVozn->AddString(buf); /* массивa на экран */
}
}
25.
492. 503. 948. 738. 892. 320. 250.
Полная, сгенерированная автоматически, программа решения задачи о кладах, представлена в приложении 6.2. Вычислительная часть программы, выполненная пользователем, выделена полужирным шрифтом, позволяя сравнить ее объем с общим объемом сгенерированного ИСРП исходного программного кода.
Под закрывающей скобкой записаны значения исходных данных для решения задачи.
Результаты решения приведены в приложении 6.3.
Заключение
Улучшение качества программного продукта – формы и методы оптимизации алгоритма решения задачи и улучшения дружественности интерфейса.
Улучшение алгоритма решения, с точки зрения пользователя, – компоненты оптимизации создания (записи) программы, ее запуска, отладки, эксплуатации.
Оптимизация создания – выбор удобного метода решения (например, циклического, а не линейного), использование специфических структур некоторых операторов (укороченных присваиваний, проверки условий и т.п.).
Улучшение дружественности программы – реализация диалоговых режимов работы, облегчающих работу пользователя с программой (организация удобного интерфейса).
Пути организации интерфейса:
улучшение классической процедуры ввода-вывода;
создание графического интерфейса задачи.
Преимущества классической процедуры ввода-вывода – простота создания, малый объем исходного программного модуля. Недостаток – не соответствие современной тенденции реализации интерфейса.
Преимущества графического интерфейса – соответствие современной тенденции. Недостаток – трудоемкость создания, увеличенный объем создаваемого пользователем исходного программного модуля. Объем графической части, создаваемой ИСРП, на порядок превышает объем вычислительной части задачи.
Современные тенденции развития программирования – значительное увеличение числа пользователей и снижение общего уровня профессионализма. Любые дополнительные затраты на организацию дружественности программ при работе поощряются.
Вопросы для контроля
Каковы методы улучшение качества программных продуктов?
В чем назначение укороченных спецификаторов ввода-вывода?
Как выглядят фрагменты алгоритмов и программ для организации диалогового ввода переменных?
Каковы варианты организации ввода массивов?
Каковы методики оформления вывода данных?
Как формируются составные присваивания?
Для чего и как реализуется повторение расчётов?
Что такое позиционирование курсора, как реализуется?
В чем суть графического интерфейса?
На каком этапе решения задачи проектируется окно интерфейса?
На каком этапе решения задачи окно интерфейса создается?
Каковы основные компоненты интерфейса?
Какие функции используют при организации ввода-вывода данных в графическом интерфейсе?
Каковы функции преобразования типов данных в графическом интерфейсе?
В чем отличие программных реализаций задачи с различными интерфейсами?