Вычислительная техника и её применение 1991-3 1970 г.

"Терминал" - программный комплекс "POLYLISTER".


^«ТЕРМИНАЛ»"1!

Ш КОМПЬЮТЕРНЫЙ КЛУБ ШКОЛЬНИКОВ Щ

Елькин Сергей, (МАИ ''Искатель"),

г.Симферополь

Программный комплекс "POLYLISTER"
для обработки многочленов, представленных

в виде списков

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

Рассмотрим многочлены от одной переменной вида

anxn + anejxn~1 + ... + а0х°, (1)

в которых большинство коэффициентов равны нулю. Многочлены с большин-
ством нулевых коэффициентов называются разреженными.

Рассмотрим случаи, когда представление многочленов вида (1) с помощью
массивов неэффективно, так как требует дополнительной памяти для хране-
ния нулевых коэффициентов и дополнительного времени для упорядочивания
коэффициентов по степеням X.

Если задать многочлен х~9 + 2 в виде массива, то потребуется 10 элемен-
тов памяти для хранения коэффициентов, из них только два ненулевых.

Чтобы привести к канонической форме (с приведением подобных и упоря-
дочиванием) заданный в виде массива многочлен

хЗ + 2х~5 — хЗ,

или сложить многочлены хЗ — 2х~2 и хТ — хЗ + 5, потребуется как до-
полнительная память для хранения нулевых коэффициентов, так и дополни-
тельное время для сортировки.

Для многочленов больших степеней хранение многочленов в виде масси-
вов может оказаться вообще невозможным.

Альтернативным способом представления многочленов в памяти ЭВМ яв-
ляются динамические связанные структуры.

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

Высокая эффективность указанных действий объясняется простотой опера-
ций поиска, вставки, удаления и слияния, выполняемых над списками. Эти пре-
имущества компенсируют недостатки, связанные с выделением дополнитель-
ной памяти для указателей.

Для эффективной обработки многочленов создан комплекс программ
"PolyLister", написанный на ПАСКАЛЕ, и выполняющий следующие функции:

A. Преобразование внешнего представления многочлена в списковое с
приведением подобных членов и упорядочиванием.

B. Выполнение арифметических операций над списковыми представления-
ми многочленов.

C. Визуализация преобразований над списками.

D. Преобразование спискового представления многочлена во внешнее.

Ниже приводится специальная демонстрационная программа "MONOMIAL
ADDING", которая иллюстрирует следующие возможности программного
комплекса "PolyLister":

1. Поиск элемента с ключом Expori, равным показателю степени одночле-
на.

2. Сложение коэффициентов подобных одночленов.

3. Включение нового элемента в список.

4. Удаление элемента списка, если при сложении коэффициентов резуль-
тат равен нулю.

5. Визуализацию используемого списка.

Используемые в программе процедуры описаны в таблице и импортиру-
ются из файла IMPORTA.LST.

В программе используются следующие глобальные переменные:

List — указатель на вход в список

Num — количество элементов списка (одночленов)

Coeff — коэффициент одночлена

Ехроп — степень одночлена

Таблица

# Имя Список параметров Описание действия

1. FUNCTION Search (Ехроп: Integer): Reference; Поиск элемента списка, предше-

ствующего элементу с ключом
Ехроп

2. PROCEDURE Insert (Ref: Reference; Вставка элемента списка,

Coeff, Ехроп: следующего за элементом

Integer); с указателем Ref

3. PROCEDURE Delete (Ref: Reference); Удаление элемента списка,

следующего за элементом
с указателем Ref

4. PROCEDURE Add_Mono (Ref: Reference; Сложение двух подобных

Coeff: Integer); одночленов от одной

переменной

Кроме процедур, выполняющих операции над списками, в демонстрацион-
ной программе используются процедуры:

Visit-Card - задание окон и вывод запроса;

Accept-Monomial - ввод одночлена;
Vis-Polynomial - вывод многочлена.

Пример работы демонстрационной программы проиллюстрирован на рис.
1-8.

В процессе обработки многочленов выполняется визуализация списков.

Текст демонстрационной программы на ПАСКАЛЕ

PROGRAM POLYLISTER (INPUN, OUTPUT);
Uses Crt;
TYPE

Reference + "Node;
Node + RECORD

Coeff, Expon : integer ;
Link : Reference ;

END;

{.................GLOBAL VARIABLES..................}

VAR Lisn : Reference ;

Num : Integer ;
Coeff,

Expon : Integer ;

{-.........................................................>

($1 importa.lst }

{.........MONOMIAL ADDING DEMO PROGRAM.....)

VAR

PrQ : Reference ;
BEGIN

Num : = О ;
List : = nil;
Visit_Card;
REPEAT

Accept_Monomial ;
P: = Search (Expon);
if P = Nil
Then

Q : = List
Else

Q : = P'.Link;
if (Q".Expon < > Expon) and (Coeff < > 0.0)
Then

Insert (P,Coeff,Expon)
Else

Add_Mono (P,Coeff);
VisPolinomial;
UNTIL FALSE

END.

Комментарий специалиста

Комплекс < <PolyLister> > — это пример использования теории инфор-
мационных структур для эффективного машинного представления и обработ-
ки математических объектов.

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

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

Иными словами, < <PolyLister > > относится к визуальным моделирую-
щим программам. Основное свойство программ этого класса состоит в том,
что решение задачи сочетается с графической демонстрацией динамики ис-
пользуемых структур данных и существа применяемого алгоритма.

Режим визуализации полезен как для пользователей-новичков, так и для
опытных разработчиков.

При создании большой программной системы визуализация необходима на
всех этапах ее жизненного цикла.

Прокомментируем рисунки 1-8, иллюстрирующие работу комплекса
< <PolyLister> >.

Рис. 1. Демонстрируется окно
ввода одночлена и окно выво-
да многочлена

Рис. 2. Демонстрируется слу-
чай приведения подобных с об-
разованием нулевого члена,
когда выполняется визуализа-
ция процесса удаления соот-
ветствующего элемента списка

Рис. 3. Показано состояние
списка до удаления элемента

Рис. 4. Выделен удаляемый
элемент списка

Рис. S. Показана команда, фор-
мирующая новое значение
ссылки

Рис. 6. Показано завершение
процесса удаления одночлена
с нулевым коэффициентом

Рис. 7. Показана команда
Dispose, восстанавливающая
память, занятую удаленным
элементом

Рис. 8. Показано заключитель-
ное состояние процесса удале-
ния элемента списка

И.А.Переход




СОДЕРЖАНИЕ:


  Оставте Ваш отзыв:

  НИК/ИМЯ
  ПОЧТА (шифруется)
  КОД



Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Реклама - Реклама и объявления ...
Мозаика - Телефонный ретранслятор: поток сознания спектрумистов.
От авторов - Вот пролетела еще одна неделя.
Обзорчик - Обзор игровых программ: Kwik Snax, Block Dizzy, Bubble Dizzy.
Анкета - Результаты прошедшего анкетирования.

В этот день...   30 апреля