В предыдущей части статьи были рассмотрены особенности разработки программ и приложений в интегрированной среде разработки (IDE) NetBeans на языке программирования Java [1, 2, 3].
Далее будут рассмотрены особенности разработки приложений в IDE Embarcadero Delphi и Android Studio, предназначенные для решения задач, описанных в первой части статьи.
При реализации оконного приложения в IDE Embarcadero Delphi также предпочтительно использовать стандартные компоненты для ввода и вывода данных, такие как: «Label», «Edit» и (или) «Memo», а также кнопки «Button», предназначенные для осуществления необходимых расчетов. Вместо пары компонентов «Label», «Edit» можно использовать комбинированный вариант «LabeledEdit», размещенный на вкладке «Additional».
Компоненты можно группировать, исходя из их принадлежности к какому-либо заданию, используя для этого компонент «GroupBox».
Таким образом, для реализации приложения были использованы, по числу заданий, 4 компонента «GroupBox», одинаковых размеров, в свойстве «Caption» которых были прописаны номера заданий, а также 4 командные кнопки для выполнения требуемых расчетов.
Компонент «GroupBox1» содержит следующие компоненты:
- LabeledEdit1» — текстовое поле, используемое для ввода исходного числа;
- LabeledEdit2» — текстовое поле, предназначенное для вывода на экран самой большой цифры числа;
- Label1» — надпись, в которую будет выводиться ответ на вопрос, верно ли, что в числе все цифры одинаковые?
Компоненты «GroupBox2» и «GroupBox3», помимо командных кнопок, содержат в себе компоненты «Memo1» и «Memo2» соответственно, которые используются для вывода результатов, со значением свойства «ScrollBars», равном «ssVertical» для отображения вертикальных полос прокрутки.
Компонент «GroupBox4» содержит следующие компоненты:
- LabeledEdit3» — текстовое поле, используемое для ввода значения x;
- LabeledEdit4» — текстовое поле, предназначенное для вывода на экран сгенерированного случайным образом значения y;
- LabeledEdit5» — текстовое поле, предназначенное для вывода на экран рассчитанного значения функции F(x, y).
На рис. 1 показано окно разработанного приложения в момент работы с ним.

Процедура обработки события «OnClick» кнопки «Button1» имеет вид:
var b: boolean; n,c,max: integer;
begin
if StrToInt(LabeledEdit1.Text) > 999 then
begin
b := true;
n := StrToInt(LabeledEdit1.Text);
c := n mod 10;
max := c;
while n >= 10 do
begin
n := n div 10;
if (c <> n mod 10) and b
then b := false;
if max < n mod 10
then max := n mod 10;
end;
LabeledEdit2.Text := IntToStr(max);
Label1.Caption := 'Все ли цифры ' + 'одинаковые? ';
if b
then Label1.Caption := Label1.Caption + 'Ответ: да.'
else Label1.Caption := Label1.Caption + 'Ответ: нет.';
end;
end;
Процедура обработки события «OnClick» кнопки «Button2» имеет вид:
var i,n,p: integer;
begin
Memo1.Clear;
for i := 101 to 990 do
begin
n := i;
p := 1;
while n >= 1 do
begin
if n mod 10 <> 0 then
if (n mod 10) mod 3 = 0
then p := p * (n mod 10);
n := n div 10;
end;
if p = 27
then Memo1.Lines.Add(IntToStr(i));
end;
if Memo1.Lines.Count = 0
then Memo1.Lines.Add('Таких чисел нет!');
end;
Процедура обработки события «OnClick» кнопки «Button3» имеет вид:
var b: boolean;
i,c,n: integer;
begin
Memo2.Clear;
c := 0;
for i := 10 to 100 do
begin
b := true;
n := i;
while n >= 10 do
begin
if n mod 10 <= (n div 10) mod 10
then b := false;
n := n div 10;
end;
if b then
begin
inc(c);
Memo2.Lines.Add(IntToStr(i));
end;
end;
Memo2.Lines.Add('Количество: ' + IntToStr(c) + '.');
end;
Процедура обработки события «OnClick» кнопки «Button4» имеет вид:
var x,y,f: double;
begin
randomize;
x := StrToFloatDef(LabeledEdit3.Text,0);
y := random(5) + 5;
LabeledEdit4.Text := FloatToStr(y);
if x <= -2
then f := sin(y) + power(x,5)
else if x >= 0
then f := cos(x) — y * y
else f := (power(x,3) + 7 * y * y — 3) / Pi;
LabeledEdit5.Text := FloatToStr(f);
end;
При разработке мобильного приложения, реализующее решение задач в Android Studio также следует использовать стандартные компоненты для ввода/вывода данных, такие как: Button, TextView и EditText.
Компоненты следует группировать, исходя из их принадлежности к тому или иному заданию, используя для этого компоненты ConstraintLayout, каждый из которых расположен в отдельном окне, или Activity.
Выбор необходимого задания осуществляется с помощью 4 командных кнопок Button, размещенных на главном окне приложения.
На рис. 2, 3, 4 и 5 показаны оконные формы мобильного приложения, в окне №3 которого (рис. 4) при нажатии на командную кнопку выполняется решение заданий №2 и №3 одновременно.




Методы для обработки событий onClick, по сути, повторяют методы из программы, разработанной в среде NetBeans. Так, метод обработки события onClick кнопки button5, где реализовано решение задания №1, имеет вид:
TextView tV2, tV3;
tV2 = (TextView) findViewById(R.id.textView2);
tV3 = (TextView) findViewById(R.id.textView3);
EditText eT1;
eT1 = (EditText) findViewById(R.id.editText1);
int n, max = 0;
n = Integer.parseInt(eT1.getText().toString());
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;
}
String answer;
answer = "Самая большая цифра числа равна: ";
answer += max + ".";
tV2.setText(answer);
if (b){
answer = "В числе все цифры одинаковые!";
} else{
answer = "Число содержит разные цифры!";
}
tV3.setText(answer);
Как видно, основное отличие заключается в реализации операций ввода и вывода данных.
На рис. 6 показано приложение в момент работы с ним.

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