Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 11.06.2014
Сообщений: 9
1

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

11.06.2014, 00:39. Показов 848. Ответов 17
Метки нет (Все метки)

Здравствуйте, помогите пожалуйста расписать код что сначыт каждая строчка, те строчки которые повторяются или похожие можно расписать один раз, спасибо большое.
Вот код:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
var
  Form2: TForm2; a,b,c,d:extended;  znak: char;
 
 
implementation
 
{$R *.dfm}
 
procedure TForm2.Button18Click(Sender: TObject);
begin
a:=0;
b:=0;
c:=0;
d:=0;
edit1.text:='';
end;
 
procedure TForm2.Button1Click(Sender: TObject);
begin
edit1.Text:=edit1.Text+'1';
end;
 
procedure TForm2.Button2Click(Sender: TObject);
begin
edit1.Text:=edit1.Text+'2';
end;
 
procedure TForm2.Button3Click(Sender: TObject);
begin
edit1.Text:=edit1.Text+'3';
end;
 
procedure TForm2.Button4Click(Sender: TObject);
begin
edit1.Text:=edit1.Text+'4';
end;
 
procedure TForm2.Button5Click(Sender: TObject);
begin
edit1.Text:=edit1.Text+'5';
end;
 
procedure TForm2.Button6Click(Sender: TObject);
begin
edit1.Text:=edit1.Text+'6';
end;
 
procedure TForm2.Button7Click(Sender: TObject);
begin
edit1.Text:=edit1.Text+'7';
end;
 
procedure TForm2.Button8Click(Sender: TObject);
begin
edit1.Text:=edit1.Text+'8';
end;
 
procedure TForm2.Button9Click(Sender: TObject);
begin
edit1.Text:=edit1.Text+'9';
end;
 
procedure TForm2.Button10Click(Sender: TObject);
begin
edit1.Text:=edit1.Text+'0';
end;
 
procedure TForm2.Button11Click(Sender: TObject);
begin
edit1.Text:=edit1.Text+',';
end;
 
procedure TForm2.Button12Click(Sender: TObject);
begin
a:=strtofloat(edit1.text);
edit1.Text:='';
znak:='+';
end;
 
procedure TForm2.Button13Click(Sender: TObject);
begin
a:=strtofloat(edit1.text);
edit1.Text:='';
znak:='-';
end;
 
procedure TForm2.Button14Click(Sender: TObject);
begin
a:=strtofloat(edit1.text);
edit1.Text:='';
znak:='*';
end;
 
procedure TForm2.Button15Click(Sender: TObject);
begin
a:=strtofloat(edit1.text);
edit1.Text:='';
znak:='/';
end;
 
procedure TForm2.Button16Click(Sender: TObject);
begin
b:=strtofloat(edit1.text);
     case znak of
     '+':d:=a+b;
     '-':d:=a-b;
     '*':d:=a*b;
     '/':d:=a/b;
     end;
 
edit1.Text:=floattostr(d);
end;
 
procedure TForm2.Button17Click(Sender: TObject);
begin
c:=strtofloat(edit1.text);
c:=c*(-1);
edit1.Text:=floattostr(c);
end;
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.06.2014, 00:39
Ответы с готовыми решениями:

Кажется написал ужасный код. Можно его как-то оптимизировать?
Решал одну задачку: Даны натуральное число n, целые числа x 1 , ..., x n (все числа попарно...

Определить, что делает код, и как его можно оптимизировать
не могу понять что делает код . как его можно максимально сократить? #include <iostream> #include...

Можно ли оптимизировать код
Доброго вечера. Есть небольшой кусок кода, можно ли как-то его упростить? (потому что идет дубляж...

Можно ли оптимизировать код?
День добрый! Задача: есть полубайтовые значения - машина выдает данные от 1 до 15. Хранятся и...

17
Житель Земли
2889 / 2807 / 381
Регистрация: 26.07.2011
Сообщений: 10,977
Записей в блоге: 1
11.06.2014, 09:22 2
Delphi
1
2
3
4
procedure TForm2.Button1Click(Sender: TObject);
begin
edit1.Text:=edit1.Text+'1';
end;
написать одну процедуру-обработчик

Delphi
1
2
3
4
procedure TForm2.ButtonCharClick(Sender: TObject);
begin
  edit1.Text:=edit1.Text+TButton(Sender).Caption;
end;
и навесить на все кнопки, которые добавляют символ в Edit. т.е. при нажатии кнопки добавляется символ, который указан в Caption нажатой кнопки

============================================================ ============================
Delphi
1
2
3
4
5
6
procedure TForm2.Button13Click(Sender: TObject);
begin
a:=strtofloat(edit1.text);
edit1.Text:='';
znak:='-';
end;
аналогично

Delphi
1
2
3
4
5
6
procedure TForm2.ButtonZnakClick(Sender: TObject);
begin
  a:=strtofloat(edit1.text);
  edit1.Text:='';
  znak:= TButton(Sender).Caption[1];  // обратить внимание!!
end;
0
836 / 731 / 342
Регистрация: 22.09.2012
Сообщений: 5,034
11.06.2014, 09:38 3
Цитата Сообщение от СпайкусС Посмотреть сообщение
те строчки которые повторяются или похожие можно расписать один раз
Самое главное у тебя с 18 строки до 66 строчки можно все сделать в одну стрку!
Delphi
1
Edit1.Text := Edit1.Text + (Sender as TButton).Caption;
Или как там тебе написали уже выше (это одно и тоже как-бы):
Delphi
1
edit1.Text:=edit1.Text+TButton(Sender).Caption;
Эта одна строка кода заменит твоих 48 строк, ты понял
0
836 / 731 / 342
Регистрация: 22.09.2012
Сообщений: 5,034
11.06.2014, 09:44 4
Я так понял ты калькулятор пишеш, вот написал тебе для примера, такой как на картинке + функций cos, sin и прочих добавил и расписал весь код в исходнике, можеш глянуть.
1
Миниатюры
Можно ли оптимизировать код, избавившись от его повторяющихся (похожих) участков  
Вложения
Тип файла: rar Кальк.rar (250.9 Кб, 3 просмотров)
Житель Земли
2889 / 2807 / 381
Регистрация: 26.07.2011
Сообщений: 10,977
Записей в блоге: 1
11.06.2014, 10:10 5
NIKOLAYY, ты ж вроде не новичок, а код дублируешь

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
procedure TForm1.Button12Click(Sender: TObject);
begin
  a := StrToFloat(Edit1.Text); //теперь в переменной лежит a число из Edit1
  Edit1.Text := ''; //очищаем
  d := '-'; //присваиваем знак символьной переменной
  Label1.Caption := d;
end;
 
procedure TForm1.Button14Click(Sender: TObject);
begin
  a := StrToFloat(Edit1.Text); //теперь в переменной лежит a число из Edit1
  Edit1.Text := ''; //очищаем
  d := '*'; //присваиваем знак символьной переменной
  Label1.Caption := d;
end;
 
procedure TForm1.Button13Click(Sender: TObject);
begin
  a := StrToFloat(Edit1.Text); //теперь в переменной лежит a число из Edit1
  Edit1.Text := ''; //очищаем
  d := '/'; //присваиваем знак символьной переменной
  Label1.Caption := d;
end;
Добавлено через 5 минут
ОДНА процедура

Delphi
1
2
3
4
5
6
7
8
procedure TForm1.Button11Click(Sender: TObject);
begin
  // определение знака
  a := StrToFloat(Edit1.Text);          //теперь в переменной лежит a число из Edit1
  Edit1.Text := '';                     //очищаем
  d := TBUtton(Sender).Caption[1];      //присваиваем знак символьной переменной
  Label1.Caption := d;
end;
0
836 / 731 / 342
Регистрация: 22.09.2012
Сообщений: 5,034
11.06.2014, 10:19 6
DenNik,
Не я нето что-бы дублирую, я показал ему что ваш вариант и мой вариант - это одно и тоже, вернее коды разные, а делают они одно и тоже!
Мне- это ненужно, вам- это ненужно, но ему как новичку это будет полезно...
Delphi
1
2
Edit1.Text := Edit1.Text + (Sender as TButton).Caption; // 1 вариант
edit1.Text:=edit1.Text+TButton(Sender).Caption; // 2 вариант
0
Житель Земли
2889 / 2807 / 381
Регистрация: 26.07.2011
Сообщений: 10,977
Записей в блоге: 1
11.06.2014, 10:24 7
Цитата Сообщение от NIKOLAYY Посмотреть сообщение
Не я нето что-бы дублирую, я показал ему что ваш вариант и мой вариант - это одно и тоже, вернее коды разные, а делают они одно и тоже!
в своем калькуляторе ты написал четыре процедуры вместо одной. присвоение знака
0
836 / 731 / 342
Регистрация: 22.09.2012
Сообщений: 5,034
11.06.2014, 10:34 8
DenNik,
Здесь чтой?
Delphi
1
2
3
4
5
6
7
8
9
  //производим операции
  b := StrToFloat(Edit1.Text);
  case d of
    '+': s := a + b;
    '-': s := a - b;
    '/': s := a / b;
    '*': s := a * b;
  end;
  Edit1.Text := FloatToStr(s);
0
0 / 0 / 0
Регистрация: 11.06.2014
Сообщений: 9
11.06.2014, 10:36  [ТС] 9
Николай спасибо большое но мне бы рассписать мой код калькулятора, очень надо срочно.
0
Житель Земли
2889 / 2807 / 381
Регистрация: 26.07.2011
Сообщений: 10,977
Записей в блоге: 1
11.06.2014, 10:42 10
NIKOLAYY, я уже показал
0
0 / 0 / 0
Регистрация: 11.06.2014
Сообщений: 9
11.06.2014, 10:52  [ТС] 11
Денис не могли бы вы мне код мой рассписать что какая процудра делает, очень надо срочно
0
836 / 731 / 342
Регистрация: 22.09.2012
Сообщений: 5,034
11.06.2014, 11:04 12
СпайкусС, DenNik уже показал же все места где оптимизировать, и я еще подчеркнул, одно место которое особенно сильно можно сократить в коде.
Найди кнопку где у тебя цифра 1 написана напиши тот код что тебе DenNik предложил, затем выдели все кнопки с 2 по 0 зайди в инспектор обьектов и нацепи на обработчик кнопки с цифрой 1 - все эти кнопки что выделил. Ты главное лишка невыдели, выделяй тока те кнопки на которых цыфры.
0
Житель Земли
2889 / 2807 / 381
Регистрация: 26.07.2011
Сообщений: 10,977
Записей в блоге: 1
11.06.2014, 11:08 13
NIKOLAYY, так и не понял, о чем я?
0
836 / 731 / 342
Регистрация: 22.09.2012
Сообщений: 5,034
11.06.2014, 11:12 14
DenNik, Не
0
Житель Земли
2889 / 2807 / 381
Регистрация: 26.07.2011
Сообщений: 10,977
Записей в блоге: 1
11.06.2014, 11:22 15
NIKOLAYY,
в твоем калькуляторе на каждой из кнопок + - * / отдельная процедура. зачем? если можно навесить одну
1
836 / 731 / 342
Регистрация: 22.09.2012
Сообщений: 5,034
11.06.2014, 11:43 16
DenNik,
А спс сча попробую, а то я об этом неподумал даже )
0
Житель Земли
2889 / 2807 / 381
Регистрация: 26.07.2011
Сообщений: 10,977
Записей в блоге: 1
11.06.2014, 11:46 17
NIKOLAYY, Кальк.zip
1
836 / 731 / 342
Регистрация: 22.09.2012
Сообщений: 5,034
11.06.2014, 12:30 18
DenNik,
Ага, нормально, там и кода то почти теперь нету и работает все считает правильно.
Вот автору темы пригодится, как учебное пособие. )
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.06.2014, 12:30

Можно ли векторизовать операцию, избавившись от цикла for?
Дамы и Господа! Возникла такая задача. Есть массив Х размерностью (n,m), два массива Y и V...

Как можно оптимизировать код?
#include <iostream> #include <algorithm> #include <vector> using namespace std; int main() {...

Как можно оптимизировать код?
#include <stdio.h> unsigned int A; int main(){ int i,p; p=6; for(i=5;i>=0;i--){ __asm{...

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

Как можно оптимизировать код?
Здравствуйте. Написал скрипт, позволяющий считывать с сервера картинку, преобразовывать ее в...

Можно ли оптимизировать данный код?
Есть задача: Прочитать шифр: Решил вот так: k = 0 aList = for s in "g fmnc wms bgblr...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.