VB-2012 / 2-cеместр / Заочники(весна) / Методика / МУ-к-Сам-раб-( Списки, стеки, очереди)
.doc
Восточноукраинский национальный университет имени Владимира Даля
кафедра экономической кибернетики
Списки, стеки, очереди
Практическое задание №
Информатика и компьютерная техника
Луганск 2004
Одной из форм представления выражений является польская инверсная запись, задающая выражения так, что операции в нем записываются в порядке выполнения, а операнды находятся непосредственно перед операцией.
Например, выражение (5+7)*3-4*3 в польской инверсной записи имеет вид 5 7 + 3 * 4 3 * -.
Особенность такой записи состоит в том, что значение выражения можно вычислить за один просмотр слева направо, используя стек (при этом сначала стек должен быть пустым). Каждое появившееся данное заносится в стек, а появившаяся операция выполняется над верхними элементами стека, заменяя их результатом вычисления.
Рассмотрим динамику изменения стека для рассматриваемого примера:
ST= < > → <5> → <5, 7> → <12> →<12, 3> → <36> → <36, 4> →
→ <36, 4, 3> → <36, 12> → <24>.
Разработаем программу, реализующую вычисление выражения, заданного в строке (элементы разделены пробелами) в форме обратной польской записи.
Создадим стандартный проект.
Вначале определим класс для хранения ячеек стека, для чего добавим в проект модель класса, который назовем mSt.
Изменим свойство Name на mSt.
Определим две переменные, необходимые для хранения значений и связи со следующей ячейкой:
' ***********************************************
' mSt.CLS
'
' Ячейка для хранения элементов стека
' ***********************************************
' Copyright (C) 2004, Велигура А.В.
'' ***********************************************
Option Explicit
Public Value As Single ' значение
Public NextCell As mSt ' указатель на следующую ячейку
В форме создадим текстовое поле Text1, кнопку cmStep, метку Label1 и еще одно текстовое поле StackText для отображения содержимого стека (см. рис.).
Опишем переменные и константы,
Добавляем служебные процедуры
Создадим обработчик события Click кнопки cmStep.
Запустим проект на выполнение.
Следует обратить внимание, что "сборка мусора" в данном случае производится автоматически, т.е. нет необходимости вручную уничтожать созданные динамические переменные.