Перевод консольной программы в оконную

С такой задачей довольно часто приходится иметь дело начинающим программистам. И нередко она вызывает серьёзные затруднения, несмотря на то, что принцип её решения предельно прост.

Основная проблема чаще всего кроется в ещё недостаточном понимании структуры как консольных таки оконных программ.

Консольную программу, в большинстве случаев, можно условно разделить на три части выполняемые последовательно.

  1. Ввод данных;
  2. Выполнение тех или иных действий;
  3. Вывод результатов на экран консоли.

В оконной программе первая и третья части объединены в оконном интерфейсе, а вторая часть выполняется при возникновении определённого события (например, нажатие кнопки).

Для наглядности рассмотрим следующий простой пример.

Есть консольная программ, которая перемножает два числа введённые пользователем и выводит результат умножения. Ниже приведён её код на Pascal и C++.

Pascal

C++

Необходимо переделать эту консольную программу в оконную.

Реализацию оконной версии выполним в Delphi и C++ Builder.

Так как программа принимает на вход два числа и возвращает результат в виде одного числа, в окне должны быть два компонента исходных чисел (допустим, поля для ввода Edit) и один компонент для вывода результата (допустим, метка Label).

Для того чтобы дать программе команду выполнить вычисления можно задействовать обычную кнопку. При нажатии на неё оба исходных числа будут перемножены, а результат выведен в Label.

Внешний вид окна показан на скриншоте ниже.

Оконный вариант

Для большей наглядности можно добавить два дополнительных компонента Label, которые будут служить подписями для компонентов Edit.Однако в силу того, что при перестановке множителей произведение не изменяется, наличие или отсутствие этих компонентов, а также их взаимное расположение на работу пользователя с программой никак не повлияют.

Теперь необходимо обработать событие нажатия на кнопку.

В обработчике нужно преобразовать текст из полей вода в числа, затем перемножить их и вывести результат.

Для Delphi.

Для C++ Builder.

Таким образом, обработчик события нажатия кнопки полностью копирует работу исходной программы (особенно в Delphi).

Однако, несмотря на то, что задача как таковая решена оставлять обработчик события в таком виде нецелесообразно. Его можно значительно упростить и тем самым добиться большей простоты работы программы, чем была изначально в консольном варианте.

Из приведённых примеров кода, очевидно, что переменную a можно легко заметить на:

и

соответственно.

Переменную b можно заменить на:

и

В результате переменную c можно представить в виде:

и

Тем самым, можно отказаться от использования дополнительных переменных и свести весь алгоритм работы программы к одной единственной строке кода.

Для Delphi

Для C++ Builder

Принцип, показанный на примере, рассмотренном в данной статье, универсален и позволяет решать задачи по переводу консольных программ в оконные практически любой степени сложности.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *