Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовая по информатике пример оформления.docx
Скачиваний:
49
Добавлен:
11.05.2015
Размер:
404.59 Кб
Скачать
    1. Использование готовых разработок

Так как библиотеки для работы с длинными числами написаны на большинстве языков программирования, в том числе и на Delphi, было решено не использовать данные разработки в полной мере, а писать новый модуль с нуля. И использовать готовые библиотеки только для проверки результатов, а также заимствовать процедуры или функции лишь при условии что, данная процедура или функция целиком подходит под данную версию модуля и не имеет значимых аналогов.

Как уже неоднократно повторялось, программа написана на языке Delphiс использованием основных его возможностей.

  1. Реализация программы

    1. Тип данных

В модуле в качестве основного типа данных используется новый класс TAPInt. В этом классе находятся

Num:arrayofWord; - массив типаWord(собственно само число)

procedurePack(constParam:Integer= 0); - процедура «упаковки» переопределяет длину массива, если имеются нулевые элементы в начале числа

ppoint:integer; - позиция плавающей точки в числе

Sign:TSign; - знак числа (имеет два значенияtsPositiveиtsNegative)

procedure Clear; - очищает массив

destructor Destroy; override; - деструктор

procedure ReadString(S: string); - считывание из строки

function WriteString: string; - вывод в строку

functionNormalize(accurancy:integer):string; - «нормализация» , приведение к нормальному виду

    1. Основные процедуры и функции

functionCompareAPM(consta,b:TAPInt):Integer; - функция сравнивает два длинных числа, если результат меньше нуля, то первое число меньше второго, если результат больше нуля, то первое число больше второго, если результат равен нулю, то числа равны. Входные параметры – два длинных числа, выходной параметр – число типаInteger.

procedureCopyAPM(Source,Destination:TAPInt); - копирует длинное число из одной переменной в другую. Входные параметры – ячейка памяти откуда копируется число, и ячейка памяти куда копируется число.

procedure AddAPM(const a,b: TAPInt; var c: TAPInt); - операция сложение. Входные параметры – три длинных числа, третье число является результатом.

procedureSubAPM(consta,b:TAPInt;varc:TAPInt); - операция вычитания. Входные параметры – три длинных числа, третье число является результатом.

procedureMulAPM(consta,b:TAPInt;varc:TAPInt); - операция умножения. Входные параметры – три длинных числа, третье число является результатом.

procedurePowAPM(consta,b:TAPInt;varc:TAPInt); - операция возведение в степень, длинное число возводится в целую степень не превышающую 9999 (более подробно в главе 5: Описание программы для пользователя), при этом результатом является также длинное число.

procedureDivAPM(consta,b:TAPInt;varc:TAPInt;vard:TAPInt); - операция деление, длинное число делится на другое длинной число, при этом результатом является длинное число, а также остаток от деления (тоже длинное число).

procedureDivByWord(consta:TAPInt;constb:Word;varc:TAPInt;vard:Word); - операция деления, при которой длинное число делится на короткое, при этом получается длинное число и остаток (короткое число), процедура реализована для ускорения программы.

procedureMulByWord(consta:TAPInt;constb:Word;varc:TAPInt); - операция умножения длинного числа на короткое, результатом является длинное число, процедура реализована для ускорения программы.

functionOddAPM(a:TAPInt):Boolean; - вспомогательная функция, результатом являетсяTrueесли первый элемент массива равен 1.

Блок-схема работы программы приведена в приложении А. В приложениях Б и В приведены пошаговые алгоритмы процедур сложения и деления.