Coder Social home page Coder Social logo

Comments (3)

EinstokFair avatar EinstokFair commented on August 14, 2024 1

我完全高兴地这析,谢谢你的贡献。

from kumir2.

a-a-maly avatar a-a-maly commented on August 14, 2024

Thanks, here is a more precise program showing this bug:

алг маин
нач
цел кт = -1
лит выр = "3"
получи терминал("3", 1, кт)
вывод кт
кон

алг получи терминал(лит выражение, цел позиция, рез цел код токена)
нач
цел длина_выражения
длина_выражения := длин(выражение)
если позиция > длина_выражения
то 
код токена := 8
иначе
выбор
при выражение[позиция] = '+': код токена := 1
при выражение[позиция] = '-': код токена := 2
при выражение[позиция] = '*': код токена := 3
при выражение[позиция] = '/': код токена := 4
при выражение[позиция] = '(': код токена := 5
при выражение[позиция] = ')': код токена := 6
при выражение[позиция] = '1': код токена := 7
иначе стоп
всё
всё
кон

If we pass the argument not as a literal constant, but as a variable выр containg 1-char value, it works. Even if we pass the argument implicitly, via Kumir feature to read input arguments of the main algorithm from keyboard, it still works.
I guess, this strange magic of passing 1-char literal value as сим instead of лит may be due to the ancient ideas that we should "help" people make less bugs, allowing them to place symbols in double quotes like "3" instead of the correct expression '3'.

There may be two ways to fix this bug:

  1. (better) to disallow such a strange behaviour of explicit literals. But it can break a lot of incorrect user programs.
  2. extend длин function to сим arguments.

I can guess that I broke this code when I was optimizing the strings behaviour. That optimization is still on its way, so we will possibly have to address this issue many times.

from kumir2.

EinstokFair avatar EinstokFair commented on August 14, 2024

Я поменял код примерно таким образом:

алг считай (лит выражение2, рез вещ р)
нач
    лит выражение
    выражение := выражение2 + ""

однако калькулятор не заработал.
На этот раз

>> 19:20:11 - калькулятор.kum - Начало выполнения
ОШИБКА ВЫПОЛНЕНИЯ: Выход за границу таблицы
>> 19:20:11 - калькулятор.kum - Выполнение завершено 0.402 

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

from kumir2.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.