Особенности разработки программ в современных IDE: часть 1

№90-1,

технические науки

В статье рассматриваются особенности разработки программ и приложений в современных IDE.

Похожие материалы

В настоящее время существует большое количество интегрированных сред разработки (от англ. Integrated development environment, или сокр. IDE) программного обеспечения (ПО), предназначенные как для одного, так и для нескольких языков программирования [1, 2, 3].

Однако, несмотря на существенное многообразие IDE, большинство из них имеют схожие черты, такие как наличие текстового редактора программ, компилятора и (или) интерпретатора, встроенного отладчика и т.д.; оконные приложения строятся из схожего набора визуальных компонентов (кнопки, текстовые поля, списки и пр.), а сами программы сводятся к набору методов, описывающих реакции на различные события и т.п.

Чтобы проиллюстрировать все вышесказанное рассмотрим реализацию одних и тех же задач программирования в трех современных IDE: NetBeans, Embarcadero Delphi и Android Studio. В первой и третьей IDE при написании программ используется язык Java, во второй IDE — Delphi.

Условия задач выглядят следующим образом:

  1. Дано натуральное число (более четырех знаков). Необходимо:
    • определить самую большую цифру этого числа;
    • ответить на вопрос, верно ли, что в числе все цифры одинаковые?
  2. Найти все трехзначные числа из промежутка (100; 990], такие, что произведение их цифр, кратных трем, равно 27.
  3. Определить количество целых чисел в диапазоне [10; 100], у которых цифры идут в порядке возрастания, а также вывести эти числа на экран.
  4. Вычислить значение функции F(x, y) для значений аргументов x и y, вводимых пользователем с клавиатуры, или выданных случайным образом в диапазоне [5; 10):

Для реализации оконного приложения, реализующего решение данных заданий, в IDE NetBeans можно использовать стандартные компоненты для ввода и/или вывода данных, такие как: JLabel, JTextField и JTextArea, а также командные кнопки JButton, предназначенные для осуществления требуемых расчетов. Компоненты можно группировать, исходя из их принадлежности к тому или иному заданию, используя для этого компонент JPanel.

Таким образом, для реализации приложения были использованы, по числу заданий, 4 компонента JPanel одинаковых размеров, в свойстве border которых был выбран тип границ «Рамка с надписью», где были прописаны номера заданий, а также 4 командные кнопки для выполнения требуемых расчетов.

Компонент jPanel1 содержит следующие компоненты:

  1. jTextField1 — текстовое поле, используемое для ввода пользователем исходного натурального числа (более 4 знаков);
  2. jTextField2 — текстовое поле, предназначенное для вывода самой большой цифры числа;
  3. jLabel3 — надпись, в которую будет записываться ответ на вопрос, верно ли, что в числе все цифры одинаковые?
  4. jLabel1 и jLabel2 — надписи, используемые для идентификации полей jTextField1 и jTextField2 соответственно.

Компоненты jPanel2 и jPanel3, помимо кнопок JButton, содержат компоненты jTextArea1 и jTextArea2 соответственно, которые используются для вывода результатов.

Компонент jPanel4 содержит следующие компоненты:

  1. jTextField3 — текстовое поле, используемое для ввода значения переменной x;
  2. jTextField4 — текстовое поле, предназначенное для вывода на экран сгенерированного случайным образом значения переменной y в диапазоне [5; 10);
  3. jTextField5 — текстовое поле, предназначенное для вывода на экран рассчитанного значения функции F(x, y).

На рис. 1 показана структура готового приложения.

Структура оконного приложения
Рисунок 1. Структура оконного приложения

Метод обработки события mouseClicked для кнопки jButton1 имеет вид:

int n, max = 0;n = Integer.parseInt(jTextField1.getText());int k = n % 10;boolean b = true;while (n >= 1){     if (n % 10 > max){          max = n % 10;     }     if (k != n % 10){          b = false;     }     n /= 10;}jTextField2.setText(String.valueOf(max));String r = "Все цифры одинаковые? Ответ: ";if (b){     jLabel3.setText(r + "да.");} else{     jLabel3.setText(r + "нет.");}

Метод обработки события mouseClicked для кнопки jButton2 имеет вид:

jTextArea1.setText("");int n = 0;for (int i = 101; i <= 990; i++) {     int t = Math.abs(i), p = 1;     while (t >= 1) {          if ((t % 10) % 3 == 0) {              if (t % 10 != 0) {                   p *= t % 10;              }          }          t /= 10;     }     if (p == 27) {          n++;          jTextArea1.append(String.valueOf(i).concat("\n"));     }}jTextArea1.append("Всего чисел: " + n + ".");

Метод обработки события mouseClicked для кнопки jButton3 имеет вид:

jTextArea2.setText("");int n = 0;for (int i = 10; i <= 100; i++) {     boolean b = true;     int t = i;     while (t >= 10) {          if (t % 10 <= (t / 10) % 10) {              b = false;          }          t /= 10;     }     if (b) {          n++;          jTextArea1.append(String.valueOf(i).concat("\n"));     }}jTextArea2.append("Всего чисел: " + n + ".");

Метод обработки события mouseClicked для кнопки jButton4 имеет вид:

double x, y, f;x = Double.parseDouble(jTextField3.getText());y = Double.parseDouble(jTextField4.getText());if (x <= -2){     f = Math.sin(y) + Math.pow(x, 5);} else if ((-2 < x) && (x < 0)){     f = (Math.pow(x, 3) + 7 * Math.pow(y, 2)          – 3) / Math.PI;} else{     f = Math.cos(x) — Math.pow(y, 2);}jTextField5.setText(String.valueOf((double) Math.round(f*100)/100));

Для генерации случайного значения переменной y в момент запуска приложения необходимо записать в обработчик события windowOpened или windowActivated следующий код:

double d = Math.random()*200 — 100;d = (double) Math.round(d*100)/100;jTextField4.setText(String.valueOf(d));

На рис. 2 показано окно разработанного приложения в момент работы с ним.

Окно приложения в процессе работы
Рисунок 2. Окно приложения в процессе работы

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

Во второй части статьи будут рассмотрены реализации данных задач в средах разработки Embarcadero Delphi и Android Studio, и, кроме того, будут сделаны общие выводы.

Список литературы

  1. Список литературы
  2. Антипин А.Ф. Организация эффективной работы преподавателей в условиях рейтинговой системы обучения // Прикладная информатика. 2014. № 3. С. 48-59.
  3. Степашина Е.В. Оптимизация финансовых показателей предприятия на основе нейросетевой модели // Информационные системы и технологии. 2014. № 5. С. 34-42.
  4. Седова Н.А., Седов В.А. Методы оценки качества полученных решений // Южно-Сибирский научный вестник. 2012. № 1. С. 88–91.