|
Функции и структура программВ обратном польском записи, каждый оператор следует за операндами; инфиксний выражение (1 - 2) * (4 + 5) будет введено как 1 февраля - 4 5 + * Скобки лишние; нотация будет недвусмысленным, пока мы знаем сколько операндов каждый оператор ожидает. Воплощение - простое. Каждый операнд проталкивается в стек; когда поступает оператор, надлежащее число операндов (два - для бинарных операторов) выталкиваются из стека, и применен оператор; результат проталкивается обратно в стек. В примере выше, скажем, 1 и 2 проталкиваются, а затем заменяются следствием их вычитания: -1. Впоследствии, 4 и 5 проталкиваются, и заменяются 9. Результат умножения -1 на 9, равна -9, заменит и их в стеке. Наконец, когда наступает конец строки ввода значения с верхушки стека выталкивается и выводится на экран. Таким образом, структура программы будет состоять из цикла, который будет выполнять соответствующее действие, в зависимости от оператора или операнда, поступил: while (следующий оператор или операнд не является концом файла) if (число) проштовхуты его else if (оператор) вытолкнуть операнды выполнить действие проштовнуты результат else if (красная строка) вытолкнуть и вывести верхушку стека else ошибка Операции проталкивания и выталкивания из стека простые, но, как только добавляется проверка ошибок и восстановление, код становится слишком длинным, поэтому лучше поместить каждую из них в отдельную функцию, чтобы можно было повторить тот же код течение выполнения программы. Также нужна отдельная функция для извлечения следующего введенного операнда или оператора. Основным вопросом разработки, к которому мы еще не дошли, является местонахождение стеке, то есть - какие функции имеют прямой доступ к нему? Одно из возможных решений - сохранить его в main, и передавать стек и текущее положение в нем функциям, которые проталкивать и выталкивать его данные. Но main не должна знать о переменных, управляющих стеком, он должен осуществлять только операции проталкивания и выталкивания. Поэтому мы решили сохранить стек и соответствующую информацию во внешних переменных, доступных функциям проталкивания и выталкивания, а не в main. Продолжение статьи: ч.1 Продолжение статьи: ч.2 Продолжение статьи: ч.3 Продолжение статьи: ч.4 Продолжение статьи: ч.5 Продолжение статьи: ч.6 Продолжение статьи: ч.7 Продолжение статьи: ч.8 Продолжение статьи: ч.9 Продолжение статьи: ч.10 Продолжение статьи: ч.11 Продолжение статьи: ч.12 Продолжение статьи: ч.13 Продолжение статьи: ч.14 Продолжение статьи: ч.15 Продолжение статьи: ч.16 Продолжение статьи: ч.17 Продолжение статьи: ч.18 Продолжение статьи: ч.19 Продолжение статьи: ч.20 Продолжение статьи: ч.21 Другие статьи по теме: - Типы, операторы и выражения- Введение в c++ - Внешние переменные и область действия - Символьные массивы - Функции и структура программ |
|
2006-2024 © SMTI.RU Главная страница | Связаться с нами |