ПО, ЭВМ и АСУ из Таможенного Союза

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » ПО, ЭВМ и АСУ из Таможенного Союза » утилиты » Калькулятор


Калькулятор

Сообщений 1 страница 25 из 25

1

Я бы сформулировал такие требования к калькулятору:
1) Калькулятор должен уметь работать с константами:
1.1) Должна быть константа "пи".
2) Калькулятор должен выполнять операции:
2.1) деление (левоассоциативная);
2.2) возведение в степень (правоассоциативная);
2.3) унарный минус (неассоциативная).
3) Калькулятор должен уметь работать со скобками, чтобы изменять порядок вычислений.
4) Операции не должны стоять рядом
      (Т.е. пи/-пи это некорректное выражение. Скобки операциями не считаются. пи/(-пи) - корректно.).
5) Калькулятор должен уметь вычислять функции:
5.1) должна быть функция "знак"
      (пример: знак(-пи^пи));

Чтобы не писать лексер, "пи" и "знак" сократить до первой буквы.

Этого достаточно.

Отредактировано Лис (2017-09-12 15:35:25)

0

2

Рекурсивный разбор выражений вида:

а операция б

(с учетом приоритета операций), дополнение унарных операций типа -а до 0-а :).

4) Операции не должны стоять рядом

При такой модели вычислений данный пункт будет приводить к ошибке без дополнительных проверок, так как будет возникать ошибка - отсутствие одного из операндов.

5.1) должна быть функция "знак"

"знак выражение" преобразовывать в выражение: "0 знак выражение" - так все операции будет представлены двумя параметрами.

5) Калькулятор должен уметь вычислять функции:

Так он должен вычислять функции или только одну - знак? Это тогда потребует перестройку кода.

Чтобы не писать лексер, "пи" и "знак" сократить до первой буквы.

Да в чем проблема-то? Все равно числа многоциферные. Это было бы критично для случаев, если абсолютно каждый элемент выражения был односимвольным.

4) Операции не должны стоять рядом
      (Т.е. пи/-пи это некорректное выражение. Скобки операциями не считаются. пи/(-пи) - корректно.).

Вот именно это выражение является корректным это выражение вида пи/(0-пи). Нет проблем. Выражение пи/+пи уже приведет к ошибке (хотя строго говоря, в математике ведь есть и унарный плюс, просто программисты часто строят из себя умников и не заводят унарный плюс).

Отредактировано utkin (2017-09-12 16:02:28)

0

3

utkin написал(а):

числа многоциферные

у меня особые требования. Цифр в моём калькуляторе нет, если присмотреться внимательно.

0

4

В данной теме это не прослеживается.

3) Калькулятор должен уметь работать со скобками, чтобы изменять порядок вычислений.

Да, для этого и нужна рекурсия.

Отредактировано utkin (2017-09-12 16:07:31)

0

5

utkin написал(а):

В данной теме это не прослеживается.

Программа должна соответствовать требованиям и при этом быть минимальной (это нужно для сокращения трудозатрат). Если в требованиях чего-то нет, то и в программе этого не должно быть.

Отредактировано Лис (2017-09-12 16:15:53)

0

6

Если в требованиях чего-то нет, то и в программе этого не должно быть.

Но Ваше требования не четкие. Калькулятор это хрень для вычислений. Абсолютное большинство известных мне калькуляторов умеют работать с числами у которых больше одной цифры. Вывод - Вам нужен не калькулятор, а очень очень ограниченное подмножество чего-то похожего на калькулятор. А такие вещи всегда должны быть обговорены. А если нет, разработчик пользуется общепринятыми обозначениями и терминами. А общепринятый калькулятор вычисляет числа отличные от одной цифры. Да и чему у Вас равно пи из одной цифры? 3 или 4? А если так то почему пи? А не а? Тогда ведь для константы а не нужно сокращать ее имя. Абсолютно все заказчики очень плохо понимают чего им хочется.

Отредактировано utkin (2017-09-12 16:12:49)

0

7

utkin написал(а):

общепринятый калькулятор вычисляет числа отличные от одной цифры.

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

Зачем нам общепринятый калькулятор?

Отредактировано Лис (2017-09-12 16:15:42)

0

8

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

Это нужно расписать подробно. Я в таком описании вижу вообще только одну константу пи. И чему она равна? И как должен вычислять калькулятор выражения, если цифр нет? Какие правила суммирования констант? И константы чего? Вы отвратительно составили ТЗ и мне это же ставите в укор. Если Вам нужно что-то особенное так и нужно написать.

Зачем нам общепринятый калькулятор?

Откуда я теперь это могу знать? В этой аномальной теме вообще все возможно, ведь правила выясняются в ходе решении задачи по правилам, которые нужно получить в ходе решения задачи.

ЗЫ. Альтернативой рекурсии может быть преобразование к обратной польской записи (что по сути есть та же самая рекурсия в извращенной форме). Имеет широкое распространение из-за удобства пихания полученной галиматьи в стек в случае преобразования в какой-нибудь ассемблер.  Высокий уровень - рекурсия, низкий - избавление от скобок путем загона данных в обратную польскую нотацию.

ЗЫ.ЗЫ. По-человечески эта тема называется не калькулятор, а разбор алгебраических выражений (раз уже Вы цифры токенами заменяете).

Отредактировано utkin (2017-09-12 16:30:16)

0

9

utkin написал(а):

Это нужно расписать подробно.

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

Отредактировано Лис (2017-09-12 16:30:14)

0

10

Я же не виноват, что такие требования пока не опубликовал Яр?

Я таки-думаю, что ему нужен обычный калькулятор :). И то чисто риторически, как результат наличия инструмента с русским синтаксисом.

0

11

utkin написал(а):

думаю, что ему нужен обычный калькулятор

пока он молчит - неизвестно, что ему нужно. Поэтому я пишу то, что нужно мне, как я это вижу.

Русскость синтаксиса будет обеспечиваться тем, что буквы 'п' и 'з' будут русскими.

Отредактировано Лис (2017-09-12 16:36:25)

0

12

пока он молчит - неизвестно, что ему нужно.

Я думаю, он уже забыл про это даже :). Если это прямо вот горит и сверхсуперважно могу у него спросить.

Русскость синтаксиса будет обеспечиваться тем, что буквы 'п' и 'з' будут русскими.

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

0

13

utkin написал(а):

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

С тех пор было выявлено следующее:
1) Кумира достаточно, чтобы написать таблично-управляемый парсер типа того, который генерирует yacc
2) известно, как написать алгоритм генерирования таблицы переходов для МП-автомата

план действий:
- сформулировать требования
- описать грамматику под требования
- прогнать алгоритм построения таблицы
- зашить таблицу в кумир-программу

Таким образом мечта Яр-а будет воплощена (Будет написана программа "калькулятор" на русском языке программирования).

Отредактировано Лис (2017-09-12 16:44:46)

0

14

Лис написал(а):

2.3) унарный минус (неассоциативная).

У т-ща budden'a по этому поводу было иное мнение:
можно 0-<выражение>

Лис написал(а):

Зачем нам общепринятый калькулятор?<...>Я же не виноват, что такие требования пока не опубликовал Яр?

Ну, я, например, некоторые озвучивал. Что это меняет?

Лис написал(а):

Таким образом мечта Яр-а будет воплощена (Будет написана программа "калькулятор" на русском языке программирования).

Сомнительно, учитывая, что он не высказал свои требования.

Отредактировано MihalNik (2017-09-12 17:16:22)

0

15

MihalNik написал(а):

Ну, я, например, некоторые озвучивал. Что это меняет?

Я внимательно рассмотрел Ваши требования, и внёс их в общий список.
Затем я дополнил список колонкой "финансирование". По критерию финансирования я разделил реализаю требований проекта на этапы. В первый этап я включил требования, которые совпадают с целями золотого спонсора проекта (Вежливого Лиса), а второй этап - требования по которым финансирование пока не поступило. Возможно второй этап будет выполнен позднее, возможно другим исполнителем. Если бы Вами были предложены требования, которые совпадают с целями рыжего золотого спонсора проекта, они были бы ,включены в первый этап (бесплатно), но к сожалению этого не случилось.

Отредактировано Лис (2017-09-12 19:16:50)

0

16

В то время пока кое-кто очередной раз "окончательно" закрывает тему (собирался в сентябре на новую работу),
по-прежнему считаю вопрос понятия калькулятора открытым. То, что у Вас называется первый этап - для этого ни грамматика ни таблица не нужны - взять любой исходный код подобного калькулятора и перевести на КуМир много проще и быстрее. Только неужели на нём до сих пор не написано калькулятора? Ну как-то в это не верится. И неужели надо объяснять, почему обычный калькулятор крив?

0

17

MihalNik написал(а):

То, что у Вас называется первый этап - для этого ни грамматика ни таблица не нужны

Первым этапом у меня является получение возможности парсить произвольные грамматики на КуМир'е. На примере калькулятора. Поэтому МНЕ грамматика и таблица нужны. Хотя, конечно, можно было в 53 раза быстрее написать рекурсивным спуском.

0

18

Что же мне мешает просто взять и написать калькулятор?

Я вижу S-аттрибутные грамматики, L-аттрибутные грамматики. Но не вижу, как туда закладываются понятия "приоритет", "ассоциативность" (левая, правая, отсутствующая), возможно "коммутативность" и что там ещё бывает для устранения неоднозначностей в грамматике.

? - Приоритет (операции)
1603 - Арность
? - Неассоциативность
? - Унарность
? - Префиксность
? - Постфиксность
? - Бинарность
1815 - Коммутативность
1853 - Ассоциативность
? - Левоассоциативность
? - Правоассоциативность
? - Тренарность

https://zamony.github.io/pub/4.html

«Внимательно посмотрев на эту грамматику можно заметить, что приоритет операций зашит в глубине вызовов функций нетерминалов»

«Правоассоциативные операторы записываются с помощью правой рекурсии (пример с power). В левоассоциативных операторах нельзя смоделировать то же самое с помощью левой рекурсии, так как при рекурсивном спуске не будет однозначного разбора.»

Отредактировано Лис (2023-03-18 20:56:23)

0

19

Вот тут вроде бы простенько всё добавляют:
https://medium.com/@mbednarski/operator … 9f23dd9daf

но в yacc это сделано по-другому.
https://www.opennet.ru/docs/RUS/yacc/yacc_rus_08.html

%right '='
%left  '+' '-'
%left  '*' '/'
%%
expr : expr '=' expr
  | expr '+' expr
  | expr '-' expr
  | expr '*' expr
  | expr '/' expr
  | NAME
  ;

0

20

Написал грамматику к этому калькулятору:

Код:
грамматика::=уГплюс|уГминус;

константа::='п';
функция='з','(',(уГплюс|уГминус),')';
скобки::='(',уГминус,')';

уГплюс::=константа|функция;
уГ::= скобки | функция;
уГминус::=уВ|уВминус;

уВплюс::=уГплюс|уГ;
уВ::='-',уВплюс;
уВминус::=уБ|уБминус;

уБплюс::=уВплюс|уВ;
уБплюс2::=уВплюс|уГ;
уБ::=уБплюс,'^',((уБплюс2),'^')*,уБплюс2;
уБминус::=уА;

уАплюс::=уБплюс|уБ;
уАплюс2::=уВплюс|уБ;
уА::=уАплюс,( '/', уАплюс2)*, '/', уАплюс2;

Писал тут:
https://mdkrajnak.github.io/ebnftest/

можете тестировать на соответствие ТЗ.

Вписать правоассоциативность '^' и левоассоциативность '/' прямо в грамматику мне пока не удалось.

Хочется сделать что-то такое:

левый операнд деления
        : что-то с приоритетом выше чем у деления
        // включая унарный минус
        ;
средний операнд деления
        : что-то с приоритетом выше чем у деления, кроме унарного минуса
        ;
правый операнд деления
        : что-то с приоритетом выше чем у деления, кроме унарного минуса
        ;
левый операнд возведения
        : что-то с приоритетом выше чем у возведения
        // включая унарный минус
        ;
средний операнд возведения
        : что-то с приоритетом выше чем у возведения, кроме унарного минуса
        ;
правый операнд возведения
        : что-то с приоритетом выше чем у возведения, кроме унарного минуса
        ;
       
деление
        : множественное деление
        | одиночное деление
        ;
одиночное деление
        : левый операнд деления '/' правый операнд деления
        ;
множественное деление
        : первое вычисляемое деление
        ;
первое вычисляемое деление
        : левый операнд деления '/' среднее вычисляемое деление
        ;
среднее вычисляемое деление
        : среднее вычисляемое деление '/' средний операнд деления
        | последнее вычисляемое деление
        ;
последнее вычисляемое деление
        : средний операнд деления '/' правый операнд деления
        ;

возведение
        : множественное возведение
        | одиночное возведение
        ;
одиночное возведение
        : левый операнд возведения '^' правый операнд возведения
        ;
множественное возведение
        : последнее вычисляемое возведение
        ;
последнее вычисляемое возведение
        : левый операнд возведения '^' среднее вычисляемое возведение
        ;
среднее вычисляемое возведение
        : средний операнд возведения '^' среднее вычисляемое возведение
        | первое вычисляемое возведение
        ;
первое вычисляемое возведение
        : средний операнд возведения '^' правый операнд возведения
        ;

Думаю пока.

Проблема в том, что рекурсивный спуск не пройдёт из-за леворекурсивного правила
     среднее вычисляемое деление : среднее вычисляемое деление ...
а если устранить левую рекурсию, или заменить на цикл, а ассоциативность сделать руками,
то это будет уже другое.
Нужен алгоритм, который обрабатывает грамматики вместе с левой рекурсией, такой как GLL.
Ещё может сработать BISON с LALR/IELR (но надо проверять).
У них он есть, а у меня такого пока нет (точнее я нашел исходники на Java, но не понимаю что там написано).

Отредактировано Лис (2023-03-25 20:39:22)

0

21

У меня возникло затруднение в вычислении выражения
-x^x

Когда -2^2 возвращает +4, всё ок.

А вот когда -p^p, функция pow возвращает
-nan

А я даже и не знаю, как это правильно считать (что бы я делал без Wolfram alpha?)

Но даже с ней всё равно что-то клинит.

-32.914 - 15.690 i

[html]<img src="data:image/gif;base64,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"/>[/html]

как-то я не готов оказался к комплексным числам в калькуляторе.

Отредактировано Лис (2023-03-30 13:09:57)

0

22

Лис написал(а):

А вот когда -p^p, функция pow возвращает
-nan

Калькулятор, встроенный в ОС "Windows 10 x64"
пишет "Недопустимый ввод"
после ввода выражения "минус два в степени две целых одна десятая"
(пишу словами, чтобы понятнее было Лису).

Лис написал(а):

как-то я не готов оказался к комплексным числам в калькуляторе.

Похоже, что нас ждёт увлекательный российский многосерийный фильм "Тайна комплексных чисел" (драма, фантастика, криминал).

0

23

NuShaman написал(а):

Калькулятор, встроенный в ОС "Windows 10 x64"

Да кого интересует это старьё? Гугл считает из строки поиска с комплексными числами (только приоритет унарного минуса у него неправильный, надо брать в скобки первый аргумент)

Ну или у меня неправильное понимание приоритета унарного минуса. Но это мой минус, какой хочу приоритет, такой и назначаю :)

унарные операторы имеют более высокий приоритет, чем двоичные операторы. Таким образом, унарный минус имеет приоритет над возведением в степень

https://ru.frwiki.wiki/wiki/Ordre_des_oprations

Похоже, что это микрософтовская бага?

В письменной или печатной математике выражение −32 интерпретируется как 0 - (32) = - 9 .

Отредактировано Лис (2023-03-30 13:32:32)

0

24

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

0

25

У меня две новости:

Хорошая:
- эту грамматику можно написать так, что её понимает bison с алгоритмом LALR
(не выкладываю, потому что на английском)

Плохая:
- у нас нет генератора типа Бизон, генерирующего в русский язык (и написанного на русском языке)

Грамматика не очень большая, и её можно обработать руками, наверное,
то есть вот прям таблицы построить на бумаге.
А потом таблицы закодить в КуМир-скую программу на школьном алгоритмическом языке (ШАЯ).

Но, во-первых, (бес)полезность этого занятия смущает, во-вторых, то что это в принципе теоретически возможно, мы и раньше знали.
Почему этим должен заниматься Лис, а не школьные учителя?

Отредактировано Лис (2023-03-30 15:59:31)

0


Вы здесь » ПО, ЭВМ и АСУ из Таможенного Союза » утилиты » Калькулятор