Здравствуйте! Система категоризации Живого Журнала посчитала, что вашу запись можно отнести к категории: Дети. Если вы считаете, что система ошиблась - напишите об этом в ответе на этот комментарий. Ваша обратная связь поможет сделать систему точнее. Фрэнк, команда ЖЖ.
Эта задача не на скобки, а на порядок вычислений, она весьма актуальна для программистов, которым важно всегда знать точную последовательность действий в системе.
Для окончательного разрешения этого и подобных вопросов были в своё время внедрены язык Forth и калькуляторы со стековой архитектурой. Но не помогло.
Какой "порядок вычислений", когда есть конкретное уравнение? В чём "порядок"? Или для программистов есть отдельная математика, в которой отсутствует логическое построение? Тогда это не программисты, а шизофреники.
Попробую объяснить. В программировании выражение произвольного вида перед вычислением всегда приводится к строчке последовательных действий:
х[1] → х[2] → ... →х[n]
Здесь стрелка → обозначает оператор, а х[k] - операнд. При расшифровке арифметического выражения текст читается слева направо, приоритеты расставляются в соответствии с общепринятыми: скобки 〉 степень 〉 умножение и деление 〉 сложение и вычитание. То есть, машина прочитает вашу формулу 8:2×(2+2) как 8:2×k, где k - заранее вычисленный результат действия в скобках, 2+2=4
Или же ваше выражение машина будет интерпретировать пошагово:
1. (2×2)=4 (высший приоритет) 2. 8:2=4 (действие деления «:» - первое слева в ряду равных по приоритету операций) 3. 4×4=16 (действие умножения «×» - второе слева в ряду равнозначных операций).
Машина тупа и не понимает логики. Она действует по инструкции. Поэтому для программиста поймать глюк программы на такой простейшей операции - раз плюнуть!
Comments 55
Система категоризации Живого Журнала посчитала, что вашу запись можно отнести к категории: Дети.
Если вы считаете, что система ошиблась - напишите об этом в ответе на этот комментарий. Ваша обратная связь поможет сделать систему точнее.
Фрэнк,
команда ЖЖ.
Reply
Reply
Reply
Reply
Reply
Reply
Reply
Reply
Reply
Для окончательного разрешения этого и подобных вопросов были в своё время внедрены язык Forth и калькуляторы со стековой архитектурой. Но не помогло.
Reply
Reply
х[1] → х[2] → ... →х[n]
Здесь стрелка → обозначает оператор, а х[k] - операнд. При расшифровке арифметического выражения текст читается слева направо, приоритеты расставляются в соответствии с общепринятыми: скобки 〉 степень 〉 умножение и деление 〉 сложение и вычитание. То есть, машина прочитает вашу формулу 8:2×(2+2) как 8:2×k, где k - заранее вычисленный результат действия в скобках, 2+2=4
Или же ваше выражение машина будет интерпретировать пошагово:
1. (2×2)=4 (высший приоритет)
2. 8:2=4 (действие деления «:» - первое слева в ряду равных по приоритету операций)
3. 4×4=16 (действие умножения «×» - второе слева в ряду равнозначных операций).
Машина тупа и не понимает логики. Она действует по инструкции. Поэтому для программиста поймать глюк программы на такой простейшей операции - раз плюнуть!
Reply
Reply
Reply
Reply
Reply
Reply
Leave a comment