Форум: "Потрепаться";
Текущий архив: 2004.11.07;
Скачать: [xml.tar.bz2];
ВнизКалькулятор Найти похожие ветки
← →
Anatoly Podgoretsky © (2004-07-29 11:56) [320]Кстати стандартный калькулятор Виндоус работает в двух резимах, обычном (последовательном) и инженерном, инженерный является полустрочным и понимает скобки. Результаты вычисления 2+4/4 будут разные в этих режимах 1,5 и 3
← →
Ertong © (2004-07-29 11:59) [321]
>
> А что непонятного? С 16ричной системой счисления знаком?
Знаком, но непонятно.
Я понимаю так :
$e2=$0 * 10^2=0
Но видимо это не так :)
← →
Думкин © (2004-07-29 12:02) [322]$e2 = 14*16 +2 =226
← →
Anatoly Podgoretsky © (2004-07-29 12:18) [323]Ertong © (29.07.04 11:59) [321]
$e2 это шестнадатиричная константа, а не экспонент, экспонент не может быть записана так, поскольку Е это не число, а признак
← →
Nous Mellon © (2004-07-29 12:29) [324]
> Но видимо это не так :)
Ты перепутал два разных понятия. Смотри 322,323.
← →
Ertong © (2004-07-29 12:30) [325]
> $e2 = 14*16 +2 =226
Наверно я сячас сильно туплю:(
← →
Ertong © (2004-07-29 12:31) [326]
> $e2 это шестнадатиричная константа, а не экспонент, экспонент
> не может быть записана так, поскольку Е это не число, а
> признак
Блин! Точно туплю. Сорри! Понял.
← →
Юрий Зотов © (2004-07-29 12:39) [327]> GrayFace
Так как же быть с пустым числом? Пожалуйста, уточните спецификацию, иначе нельзя проводить тестирование. Но только давайте договоримся сразу - как только спецификация будет сформулирована, она становится окончательной, никаким изменениям уже не подлежит и любое отклонение калькулятора от нее рассматривается, как глюк.
Иначе мы снова придем к тому же самому - к подгонке спецификации под получившуюся программу.
Мое предложение:
<unsigned> ::= <digit> | <digit> <unsigned>
<sign> ::= <operation2> | <empty>
<signed> ::= <sign> <unsigned>
<fixed> ::= <signed> |
<signed> <separator> |
<signed> <separator> <unsigned> |
<sign> <separator> <unsigned>
<number> ::= <fixed> | <fixed> <exponent> <signed>
Такая спецификация чисел принята во многих языках (включая и Паскаль), поэтому ее можем принять и мы тоже. Но это только предложение, а последнее слово за Вами - автором.
← →
Григорьев Антон © (2004-07-29 12:59) [328]
> Юрий Зотов © (29.07.04 12:39) [327]
> Такая спецификация чисел принята во многих языках (включая
> и Паскаль)
Нет, в Паскале вот так:
<fixed>::=<signed> |
<signed> <separator> |
<signed> <separator> <unsigned>
А ".5" и "-.5" компилятор за числа не считает.
← →
Юрий Зотов © (2004-07-29 13:32) [329]> Григорьев Антон © (29.07.04 12:59) [328]
Можно и так. В любом случае слово за автором.
← →
GrayFace © (2004-07-29 17:50) [330]Новая спецификация:
<Empty> ::=
<Sign> ::="+"|"-"
<Digit> ::="0"|"1"|"2"|"3"|"4"|"5"|"6"|"7"|"8"|"9"
<Operation1> ::="*"|"/"|<Empty>
<Operation2> ::="+"|"-"
<FunctionName>::="sin"|"cos"|"tg"|"ctg"|"arcsin"|"arccos"|"arctg"|"arcctg"
<exponent> ::="e"|"Е"
<Separator> ::="."|<DecimalSeparator>
<Number> ::={Digit}[Separator][{Digit}][<Exponent>[Sign]{Gigit}] | [{Digit}][Separator][Digit][<Exponent>[Sign]{Gigit}]
<function> ::=<FunctionName><atom>
<atom> ::=<number> | "pi" | <function> | "("<expression>")" | "|"<expression>"|"
<operand> ::=[{Digit}]<atom>
<factor> ::=<operand>[{"^" <operand>}]
<term> ::=<factor>[{<Operation1><factor>}]
<expression> ::=<term>[{<Operation2><term>}]
Григорьев Антон © (29.07.04 11:53) [319]
>А вообще, спор можно считать законченным. Та спецификация, которую привёл GrayFace в [298],
>говорит о знакомстве с основами теории. Следовательно, любой калькулятор, который будет
>реализовывать эту спецификацию, уже не будет сделан без теории :))
Вначале я сделал калькулятор. Потом отец мне показал пример спецификации и сказал, что, когда писал калькулятор, он делал для по функции на каждый ее(не ее, но чего-то похожего) элемент(кроме всяких знаков). Потом я модифицировал калькулятор, мне меняя основу алгоритма, да и вообще мало меняя алгоритм. И, наконец, я увидел два примера спецификаций здесь. Все. Еще я здель видел польскую запись, но понятья не имею, как она может помоч написанию калькулятора. Главное - алгоритм был сделан до получения этих знаний и почти не изменился.
Юрий Зотов © (29.07.04 12:39) [327]
>Но только давайте договоримся сразу - как только спецификация будет сформулирована, она становится окончательной, никаким >изменениям уже не подлежит и любое отклонение калькулятора от нее рассматривается, как глюк.
Нет. Если будут ошибки в спецификации, то я изменю спецефикацию.
← →
GrayFace © (2004-07-29 17:51) [331]А какие правила спецификации наиболее стандартны?
← →
}|{yk © (2004-07-29 18:33) [332]смысл обратной польской записи? Пример (неточный)
a b +
реализуется как
mov st(0),a
mov st(0),b
fadd
a b + sin
реализуется как
mov st(0),a
mov st(0),b
fadd
fsin
Думаю понятно. То есть вычислить по обратной польской записи функции элементарно.
← →
}|{yk © (2004-07-29 18:39) [333]То есть на этапе преобразования ты должен получить массив типа
{(1,number),(3,number),(+,operand),(sin,function)}
Если ты не можешь получить такой массив, значит не нужно выполнять вычислений, ты на этапе преобразования получишь корректность или некорректность выражения. Если же ты получил массив, ты точно,и, главное всегда правильно произведешь операции.
← →
Юрий Зотов © (2004-07-29 18:55) [334]> GrayFace © (29.07.04 17:50) [330]
> Если будут ошибки в спецификации, то я изменю спецефикацию.
Это само собой. Я имел в виду, что спецификация не должна меняться с целью ее подгонки под алгоритм.
В спецификации [330] есть ошибки:
- <Number> допускает пустое число;
- нет унарных операций.
← →
GrayFace (2004-07-29 19:35) [335]Юрий Зотов © (29.07.04 18:55) [334]
Унарные операции есть:<operand>::=[{Digit}]<atom>
. Но теперь я это сделал по-другому.
>Я имел в виду, что спецификация не должна меняться с целью ее подгонки под алгоритм.
Это я тоже не могу гарантировать. Спецификация создавалась по алоритму, а не наоборот, и если я что-то не учел, то это глюк спецификации. Но, вообще, это не проблема - на месте разберемся.<Empty> ::=
<Sign> ::="+"|"-"
<Digit> ::="0"|"1"|"2"|"3"|"4"|"5"|"6"|"7"|"8"|"9"
<Operation1> ::="*"|"/"|<Empty>
<Operation2> ::="+"|"-"
<FunctionName>::="sin"|"cos"|"tg"|"ctg"|"arcsin"|"arccos"|"arctg"|"arcctg"
<exponent> ::="e"|"Е"
<Separator> ::="."|<DecimalSeparator>
<Number> ::={Digit}[Separator][{Digit}][<Exponent>[Sign]{Gigit}] | <Separator>[{Digit}][<Exponent>[Sign]{Gigit}]
<function> ::=<FunctionName><operand>
<operand> ::={Digit}<operand>|<number> | "pi" | <function> | "("<expression>")" | "|"<expression>"|"
<factor> ::=<operand>[{ "^" <operand>}]
<term> ::=<factor>[{<Operation1><factor>}]
<expression> ::=<term>[{<Operation2><term>}]
← →
Юрий Зотов © (2004-07-29 20:08) [336]> GrayFace (29.07.04 19:35) [335]
Унарных операций я все же не увидел. Может, плохо смотрел, но лучше проверить.
> Спецификация создавалась по алоритму, а не наоборот
И, надеюсь, теперь Вы уже понимаете, что наоборот было бы гораздо проще, быстрее и надежнее.
> и если я что-то не учел, то это глюк спецификации
Или все же кода. Никто ведь не может дать гарантию, что любой код безглючен? Никто. Стало быть, теперь отладка программы тоже усложнится, потому что теперь при каждом новом баге Вам нужно будет сначала еще разобраться, чей это баг - спецификации, или кода. А если бы спецификация была составлена с самого начала (что, как Вы теперь уже видите, делается максимум за полчаса), то писать и отлаживать программу было бы намного быстрее и проще.
← →
Ertong © (2004-07-29 21:32) [337]<>
> [335] GrayFace (29.07.04 19:35)
Я тоже не увидел унарных операций.
Так, наверное, будет лучше:<operand> ::={Sign}<operand>|<number> | "pi" | <function>
| "("<expression>")" | "|"<expression>"|"
← →
GrayFace (2004-07-30 10:48) [338]Скачайте новую версию калькулятора.
А как сделать www.grayface.chat.ru/Calk.zip ссылкой?<Empty> ::=
<Sign> ::="+"|"-"
<Digit> ::="0"|"1"|"2"|"3"|"4"|"5"|"6"|"7"|"8"|"9"
<Operation1> ::="*"|"/"|<Empty>
<Operation2> ::="+"|"-"
<FunctionName>::="sin"|"cos"|"tg"|"ctg"|"arcsin"|"arccos"|"arctg"|"arcctg"
<exponent> ::="e"|"Е"
<Separator> ::="."|<DecimalSeparator>
<Number> ::={Digit}[Separator][{Digit}][<Exponent>[Sign]{Gigit}] | <Separator>{Digit}[<Exponent>[Sign]{Gigit}]
<function> ::=<FunctionName><operand>
<operand> ::=[{Sign}]<operand>|<number> | "pi" | <function> | "("<expression>")" | "|"<expression>"|"
<factor> ::=<operand>[{ "^" <operand>}]
<term> ::=<factor>[{<Operation1><factor>}]
<expression> ::=<term>[{<Operation2><term>}]
> Или все же кода. Никто ведь не может дать гарантию,
> что любой код безглючен? Никто. Стало быть, теперь
> отладка программы тоже усложнится, потому что теперь
> при каждом новом баге Вам нужно будет сначала еще
> разобраться, чей это баг - спецификации, или кода. А
> если бы спецификация была составлена с самого начала
> (что, как Вы теперь уже видите, делается максимум за
> полчаса), то писать и отлаживать программу было бы
> намного быстрее и проще.
Разбираться, чей это баг - это несколько милисекунд. Я не спорю, что было бы проще. Мы спорим о том, возможно писать калькулятор без теории или нет.
← →
Gero © (2004-07-30 10:51) [339]
> А как сделать www.grayface.chat.ru/Calk.zip ссылкой?
Ключевое слово - http://
← →
Calm © (2004-07-30 10:53) [340]Разбираться, чей это баг - это несколько милисекунд.
Ну-ну...
Да и вообще, как говорит наша уборщица, работа программиста простая - кнопки нажимать.
← →
Юрий Зотов © (2004-07-30 12:13) [341]> GrayFace
Пожалуйста, не включайте в архив ничего, кроме файлов Project1.dpr, Unit1.pas и Unit1.dfm. Delphi есть у всех и скачивать пару сотен Кб совершенно незачем.
← →
Esu © (2004-07-30 13:08) [342]Разбираться, чей это баг - это несколько милисекунд. Я не спорю, что было бы проще. Мы спорим о том, возможно писать калькулятор без теории или нет.
:) Да уж, на этом форуме главное правильно вопрос поставить Ж)
Вот спросил бы человек как калькулятор писать закидали бы ссылками и забыли, а тут ведь уже сколько теории было высказано, сколько правлено-переправлено, а все равно, цель прежняя "калькулятор пишется без теории" :)
← →
Anatoly Podgoretsky © (2004-07-30 13:16) [343]И после этого можно будет нагло утверждать, даже после приведения нескольких БНФ, а это уже противоречит ранее сказаному.
← →
Anatoly Podgoretsky © (2004-07-30 13:18) [344]Он даже не заметил, что давно себя опроверг. Сейчас уже может стоять речь об написании рабочего калькулятора, ну хотя бы без грубых ошибок в вычислениях, как это быо многократно продемонстрировано.
← →
GrayFace (2004-07-30 14:12) [345]Чуть-чуть изменился интерфейс: http://www.grayface.chat.ru/Calk.zip
Esu [342]
Anatoly Podgoretsky [343-344]
См. в GrayFace [330] ответ Григорьеву Антону. Посмотрите исходники и увидите, что теорией там и не пахнет.
← →
GrayFace (2004-07-30 15:12) [346]Какие правила спецификаций наиболее общеприняты? Это важно, т.к. мне захотелось сделать разбор текста по любой спецификации.
← →
Anatoly Podgoretsky © (2004-07-30 15:23) [347]А я смотрю на GrayFace (29.07.04 19:35) [335] , это уже теория, не написание как получится, а спецификация входного языка, да еще и в виде БНФ. Так что лопнуло твое утверждение "без теории", без теории не получилось, весь вопрос а получится ли что ни будь с теорией, отсень сомневаюсь, ну разве, что попросишь помочь какого ни будь знакомого программиста, а нам не скажещь.
← →
GrayFace (2004-07-30 17:49) [348]Anatoly Podgoretsky © (30.07.04 15:23) [347]
Единственная теория, которую я знаю - это 1 пример спицификации, написанный отцом и два примера, приведенные в этой ветке. Почему вас надо второй раз отсылать к [330] и к исходникам? КАЛЬКУЛЯТОР НАПИСАН КАК ПОЛУЧИТСЯ. После того, как я увидел пример спецификации, я не вносил хоть чуть-чуть серьезных правок в алгоритм. Если сомневаетесь, СМОТРИЕ ИСХОДНИКИ.
БНФ - это что?
> весь вопрос а получится ли что ни будь с теорией,
> отсень сомневаюсь, ну разве, что попросишь помочь
> какого ни будь знакомого программиста, а нам не
> скажещь.
Например, Огромное Кулясищще. ;-)
Почему вы считаете, что я ламер? Я настолько же ламер в программировании, насколько и Вы! (потому, что я - вообще не ламер)
← →
Nous Mellon © (2004-07-30 17:52) [349]
> (потому, что я - вообще не ламер)
А вот и подтверждение обратному. :)
← →
Юрий Зотов © (2004-07-30 18:32) [350]Хочу все же заступиться за GrayFace. Насколько я понимаю, человек он еще совсем молодой - а посмотрите код. Грязноватый, конечно, и не совсем зрелый в плане структурирования, но с точки зрения кодинга - вполне крепкий. Думаю, немногие в его возрасте умеют так кодить.
Далее - посмотрите, насколько парень увлечен и настойчив, но при этом совсем не уперт. Он уже несколько дней насмерть бьется со своим калькулятором, но при этом вполне воспринимает и критику (причем очень спокойно, по-деловому), и новую информацию.
Далее - разве он с кем-то воюет или на кого-нибудь наезжает (что как раз для ламеров и характерно)? Нет. Он честно и трудолюбиво доказывает свою точку зрения ДЕЛОМ, а не криком.
Так какой же он ламер? Елы-палы, да если все бы были такими!
← →
Murkt © (2004-07-30 18:36) [351]>Так какой же он ламер?
Чайникъ :)
>да если все бы были такими!
А что, можно?
>человек он еще совсем молодой
Анкета где, анкета?
← →
Алхимик © (2004-07-30 20:33) [352]
> [351] Murkt © (30.07.04 18:36)
> >человек он еще совсем молодой
>
> Анкета где, анкета?
Где то он сам написал что 17 лет.
← →
Nous Mellon © (2004-07-30 20:43) [353]
> но при этом совсем не уперт
Юрий я честно говоря не знаю вашей методики оценки. Но результат вижу.
Почти 400 постов, а калькулятора все нет (АП). Так что не совсем понятна ваша точка зрения... Или вас интересовала зрелость кода, а не безглючный калькулятор?
← →
Nous Mellon © (2004-07-30 20:44) [354]Но что ГрейФэйсовский калькулятор лучший из представленных это спорить не буду....
← →
Хуан (2004-07-30 20:52) [355]>Юрий Зотов © (30.07.04 18:32) [350]
Молодец, Юрий Зотов.
Я уже начинаю Вас уважать :)))
← →
Gero © (2004-07-30 20:54) [356]
> Где то он сам написал что 17 лет.
Я могу написать, что мне 72...
← →
Алхимик © (2004-07-30 20:59) [357]
> [356] Gero © (30.07.04 20:54)
>
> > Где то он сам написал что 17 лет.
>
> Я могу написать, что мне 72...
Не прокатит. Тебя уже посчитали. :)
← →
Gero © (2004-07-30 20:59) [358]
> Тебя уже посчитали.
Кто, когда и зачем?
← →
Алхимик © (2004-07-30 21:03) [359]
> [358] Gero © (30.07.04 20:59)
>
> > Тебя уже посчитали.
>
> Кто, когда и зачем?
Ключевое слово "посчитали", ибо ветка про калькуляторы.
← →
Gero © (2004-07-30 21:07) [360]
> Алхимик © (30.07.04 21:03)
Да там наверняка ошибки при подсчетах были.
Калькуляторы ведь глюкавые в большинстве своем.
Страницы: 1 2 3 4 5 6 7 8 9
10 11 12 13 14 15 16 17 18
19 вся ветка
Форум: "Потрепаться";
Текущий архив: 2004.11.07;
Скачать: [xml.tar.bz2];
Память: 1.09 MB
Время: 0.197 c