![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вопрос по написанному мной коду :) [D7, XP]
repus © (2008-01-16 09:09:00)Дело в том, что изучаю Delphi по самоучителю и всего несколько дней как начал, и меня некому поправить, если что. В общем, сделал небольшую прогу. В ней 2 поля ввода, в первом по умолчанию стоит 1, во второе вводиться произвольное число. И при нажатии на кнопку прога выдает случайное число от 1 до Числа, введеного во второе поле ввода. Но если в первое поле вместо 1 ввести 2 или другое число, то случайное число вычисляется 2 раза или больше, в зависимости от введеного в первое поле числа, а потом результат складывается. Допустим, если в первом поле - 1, а во втором 6, то результатом будет случайное число от 1 до 6. А если 2 и 6, то результатом будет сумма 2-х разных случайных чисел от 1 до 6, и т.д.
Но есть еще дополнения, если число в поле Edit1 равно 4, то одно самое маленькое значение выкидывается, и в результат выводится сумма только трех случайных чисел.
Код который я написал работает так, как надо :) Но мне хотелось бы узнать у более знающих людей, можно ли сделать это как-то по проще и красивее что-ли...? И нет ли там чего лишнего?
Код:
procedure TForm1.Button1Click(Sender:TObject);
const
size=4;
var
a:integer;
b:integer;
i:integer;
m:integer;
z:integer;
u:array[1..size] of integer;
min:integer; //минимальный элемент массива
r:integer;
begin
a:=StrToInt(Edit1.Text);
b:=StrToInt(Edit2.Text);
z:=0;
Label2.Caption:='';
for i:=1 to a do
begin
m:=Random(b)+1;
if i=1 then
Label2.Caption:=IntToStr(m)
else
Label2.Caption:=Label2.Caption+'+'+IntToStr(m);
z:=z+m;
if a=4 then
u[i]:=m;
end;
Label2.Caption:=Label2.Caption+'='+IntToStr(z)+#13;
if a=4 then
begin
min:=1;
for i:=2 to a do
if u[i]<u[min] then
min:=i;
r:=u[min];
z:=z-r;
Label2.Caption:=Label2.Caption+'Минимальное значение - '+IntToStr(r)
+#13+'3 из 4d'+IntToStr(b)+' = '+IntToStr(z);
end;
end;
Игорь Шевченко (2008-01-17 14:03:00) [61]ketmar © (17.01.08 13:53) [44]
> эк вы упорно не знаете, что «системная венгерская» — это
> искажение оригинальной идеи…
оригинальная идея была для С без классов. Там это было вполне разумно. С классами можно реализовать гораздо понятнее, и проверку типов выполнять на уровне компиляции, а не на уровне просмотра исходного кода.
Более того, даже на Паскале проверку можно реализовать на уровне компиляции, путем объявления типов для тех переменных, имена которых в оригинале префиксировались.
Ку ?
l_v (2008-01-17 14:00:00) [62]function Dice(num_dice,dice_side:integer): string;
//////////////////////////////
Label1.caption:=Dice(a,b);
так вроде правильней...
ketmar (2008-01-17 13:59:00) [63]>[45] Kolan©(17.01.08 13:55)
>Пойду читать Джоэла…
всегда полезно. можешь даже в переводах посмотреть, эта статья переведена.
Kolan (2008-01-17 13:55:00) [64]> эк вы упорно не знаете,
Пойду читать Джоэла
Kolan (2008-01-17 13:53:00) [65]«прилВенгерская сущНотация, предлПри числВсем сущУважении предлК собсущВенгрии союзИ местЕе сущЧленстве предлВ прилЕвропейском сущСоюзе союзИ прилДругих прилКрутых сущОрганизациях, глагЯвляется прилПервым сущВрагом сущЧитабельности.»
Класс, серьезно
ketmar (2008-01-17 13:53:00) [66]эк вы упорно не знаете, что «системная венгерская» — это искажение оригинальной идеи…
впрочем, я не проповедник.
Skyle (2008-01-17 12:30:00) [67]Автор, а я вообще думаю, что Dice должно быть не процедурой, а функцией...
Игорь Шевченко (2008-01-17 12:29:00) [68]Кстати, о венгерской нотации:
"прилВенгерская сущНотация, предлПри числВсем сущУважении предлК собсущВенгрии союзИ местЕе сущЧленстве предлВ прилЕвропейском сущСоюзе союзИ прилДругих прилКрутых сущОрганизациях, глагЯвляется прилПервым сущВрагом сущЧитабельности."
(с) http://bugtraq.ru/library/programming/badcode.html
Игорь Шевченко (2008-01-17 12:03:00) [69]Kolan © (17.01.08 11:36) [39]
Да пофиг, как начинать имена переменных. Главное, чтобы каждая переменная была на своем очевидном месте.
> не оч., имхо правильно учить именовать переменные а-ля iCount,
> dValue итд…
именовать переменные Count или Value, равно как и count и value не менее "не оч. правильно" - я все к этому веду. А как именовать - это уже сугубо от места именования, то есть, от задачи, зависит.
Kolan (2008-01-17 11:36:00) [70]> если ты читал Джоэля, то знаешь ведь разницу между
Читал но не знаю :(
> Никакая нотация, никакое оформление имен переменных, никакие
> паттерны и прочие умствования яйцеголовых не поможет плохо
> написанному неструктурированному коду.
Я не спорю, просто не оч., имхо правильно учить именовать переменные а-ля iCount, dValue итд
Или
> посоветовал имена переменных начинать с маленькой буквы
value, i, j, simpleText
Это непее распространено чем, CamelCase(или как там его)
Игорь Шевченко (2008-01-17 10:08:00) [71]Kolan © (16.01.08 19:22) [35]
Не надо стараться быть правовернее Аллаха.
Никакая нотация, никакое оформление имен переменных, никакие паттерны и прочие умствования яйцеголовых не поможет плохо написанному неструктурированному коду.
ketmar (2008-01-16 19:52:00) [72]>[35] Kolan©(16.01.08 19:22)
кстати, никогда не считал эти рекомендации удобными во всём.
ketmar (2008-01-16 19:51:00) [73]>[35] Kolan©(16.01.08 19:22)
>>с чего бы?
>Венгерская нотация позволяется только в именах перечислимых типов. ©
а) если ты читал Джоэля, то знаешь ведь разницу между «венгерской нотацией» и «системной венгерской нотацией»? если не знаешь и читаешь быдлосоветы тех, кто не знает — ты ССЗБ;
б) ГДЕ я писал про венгерскую нотацию вообще? O_o
Kolan (2008-01-16 19:22:00) [74]> с чего бы?
Венгерская нотация позволяется только в именах перечислимых типов. ©
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=802
:)
ketmar (2008-01-16 19:17:00) [75]>[33] Kolan©(16.01.08 19:09)
>>посоветовал имена переменных начинать с маленькой буквы
>ненадо :)
с чего бы? визуально читать удобней намного, чем когда всё с большой. я не даю советов, которые личной кровью не проверял. %-)
>Ты про Refactoring?
и не только. паттерны тоже.
>Да ниче кстати сделана chm'ка — удобно пользоваться…
неудобно. chm никогда неудобно пользоваться. плюс — это проприетарный формат, для которого надо проприетарный IE. так что всё равно в итоге приходится разбирать его на части, чтобы читать Оперой. ну нафига такой геморрой, если pdf удобней? а чистый html вообще удобней всех.
Kolan (2008-01-16 19:09:00) [76]> посоветовал имена переменных начинать с маленькой буквы
ненадо :)
> на нормальном языке в уродской chm
Ты про Refactoring? Да ниче кстати сделана chm'ка удобно пользоваться
ketmar (2008-01-16 19:06:00) [77]2Kolan: что за дискриминация? почему книги на нормальном языке в уродской chm?! /me обиделсо.
ketmar (2008-01-16 19:03:00) [78]>[28] Kolan©(16.01.08 16:03)
я бы ещё посоветовал имена переменных начинать с маленькой буквы, а процедур/функций — с большой. но это уже вкусовщина.
Kolan (2008-01-16 16:09:00) [79]Учти еще выравнивание:
Не
for i:=1 to num_dice do
begin
m:=Random(dice_side)+1;
for k:=2 to num_dice do
if min>m then
min:=m;
if i=1 then
res:=IntToStr(m)
else
res:=res+'+'+IntToStr(m);
z:=z+m;
end;
А:
for i:=1 to num_dice do
begin
m:=Random(dice_side)+1;
for k:=2 to num_dice do
if min>m then
min:=m;
if i=1 then
res:=IntToStr(m)
else
res:=res+'+'+IntToStr(m);
z:=z+m;
end;
repus (2008-01-16 16:07:00) [80]ок. Завтра исправлю. Сегодня уже домой пора.
Стиль написания учту.
Просто не привык еще))