Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

VB-2012 / 2-cеместр / Заочники(весна) / Методика / МУ-к-Сам-раб-( Списки, стеки, очереди)

.doc
Скачиваний:
9
Добавлен:
26.03.2015
Размер:
394.75 Кб
Скачать

Восточноукраинский национальный университет имени Владимира Даля

кафедра экономической кибернетики

Списки, стеки, очереди

Практическое задание №

Информатика и компьютерная техника

Луганск 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.

Запустим проект на выполнение.

Следует обратить внимание, что "сборка мусора" в данном случае производится автоматически, т.е. нет необходимости вручную уничтожать созданные динамические переменные.

4