Вход/Регистрация
Технологии программирования
вернуться

Камаев В А

Шрифт:

Ассемблерный файл mcmvsmem.asm является искусственно добавленным. Цель его добавления — демонстрация возможности использования ассемблерных вставок. Содержащиеся в нем алгоритмы вполне можно было бы реализовать на языке Pascal. Более того, можно было бы вообще обойтись без реализованных в нем подпрограмм, правда, при этом были бы видны некоторые задержки вывода информации на экран.

С целью совершения улучшающей проект новой проектной итерации получим из существующего проекта проектную документацию, состоящую из описания структуры данных программы; функционального описания основного ядра программы; схемы иерархии модулей основного ядра программы; спецификации назначения модулей основного ядра программы.

Рассмотрим организацию файла mcvars.pas, содержащего в основном описание структуры внутренних данных программы. Файл содержит описания в секции interface. Секция implementation пустая.

В начале файла содержится код, который в зависимости от наличия сопроцессора транслируется в одном из двух вариантов:

{$IFOPT N+}

{Есть встроенный сопроцессор}

type

Real = Extended; {Замена типа Real на Extended}

const

EXPLIMIT = 11356; {Предельное значение аргумента
экспоненты}

SQRLIMIT = 1Е2466;{Предельное значение аргумента
SQRT}

….

{$ELSE}

const

{Тип Real не переопределен}

EXPLIMIT = 88; {Предельное значение аргумента
экспоненты}

SQRLIMIT = 1E18; {Предельное значение аргумента
SQRT}

….

{$ENDIF}

Описания констант содержат следующие блоки:

— блок строчных констант, содержащих информацию всех выводимых на экран и в файлы текстовых надписей (для русификации всей программы требуется изменить только эту информацию);

— блок парных строк текстов меню и "горячих" клавиш выбора тем меню;

— блок описания важнейших констант, определяющих размерность таблицы и расположение информации на экране

MAXCOLS = 100; { Maximum is 702 } {Размер таблицы}

MAXROWS = 100;

MINCOLWIDTH = 3; {Минимальная ширина столбца}

MAXCOLWIDTH = 77; {Максимальная ширина столбца}

….

— блок описания цветов всех полей экрана, модификация констант которого позволяет оперативно изменять цвета;

— основные константы, мнемоника имен которых облегчает восприятие текстов программы

HIGHLIGHT = True; {Подсвеченная текущая клетка}

NOHIGHLIGHT = False; {Неподсвеченная клетка}

{Атрибут содержимого клетки}

ТХТ = 0;

VALUE = 1;

FORMULA = 2;

….

{Разрешенные буквы}

LETTERS: set of Char = ['A'..'Z', 'a'..'z'];

— коды управляющих клавиш клавиатуры.

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

Далее следуют описания типа информации содержимого табличной клетки и типа указателя на клетку:

type

CellRec = record

Error: Boolean;

case Attrib: Byte of

TXT: (T: IString);

VALUE: (Value: Real);

FORMULA: (Fvalue: Real;

Formula: IString);

end;

CellPtr = ^CellRec; {Указатель на клетку}

Данный тип организован так, что клетка всегда может содержать признак ошибки расчетов Error и размещать три варианта информации: текст, значение и формулу.

Далее описаны основные глобальные переменные. Описания начинаются с определения двухмерного, постоянно находящегося в памяти массива Cell указателя на клетки таблицы. Это позволяет не расходовать память на пустые клетки. Память под информацию клетки выделяется динамически в количестве, строго соответствующем информации клетки. Без использования динамически выделяемой памяти было бы невозможно разместить информацию клеток таблицы в 640К памяти машин того времени.

  • Читать дальше
  • 1
  • ...
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: