Нахождение всех множителей (делителей) числа

45660
знаков
6
таблиц
7
изображений

СОДЕРЖАНИЕ

Введение. 3

1. ТЕОРЕТИЧЕСКИЕ ОСНОВЫ РАЗРАБОТКИ.. 4

1.1. Описание предметной области. 4

1.2. Анализ методов решения. 4

1.3. Обзор средств программирования. 5

1.4. Описание языка Delphi. 5

2. ПРАКТИЧЕСКАЯ ЧАСТЬ. 10

2.1. Постановка задачи. 10

2.1.1. Основания для разработки. 10

2.1.2. Назначение программы.. 10

2.1.3. Требования к программе. 10

2.1.3.1. Требования к функциональным характеристикам. 10

2.1.3.2. Требования к надежности. 10

2.1.3.3. Требования к условиям эксплуатации. 10

2.1.3.4. Требования к техническим средствам. 11

2.1.3.5. Требования к информационной и программной совместимости  11

2.1.3.6. Требования к маркировке и упаковке. 11

2.1.3.7. Требования к транспортировке и хранению.. 11

2.1.4. Требования к программной документации. 11

2.1.5. Стадии разработки. 11

2.1.6. Виды испытаний. 12

2.2. Описание схем. 12

2.2.1. Описание схемы основного модуля. 12

2.2.2. Описание схемы процедуры searchingDividers. 12

2.2.3. Описание схемы процедуры OutToPrint 13

2.2.4. Описание схемы процедуры OutToFile. 13

2.3. Текст программы.. 13

2.4. Описание программы.. 17

2.4.1. Общие сведения. 17

2.4.2. Функциональное назначение. 17

2.4.3. Описание логической структуры.. 17

2.4.4. Используемые технические и программные средства. 18

2.4.5. Вызов и загрузка. 18

2.4.6. Входные и выходные данные. 18

2.5. Руководство оператора. 18

2.5.1. Назначение программы.. 18

2.5.2. Условия выполнения. 19

2.5.3. Выполнение программы и сообщения оператору. 19

2.6. Программа и методика испытаний. 19

2.6.1. Объект испытаний. 19

2.6.2. Цель испытаний. 19

2.6.3. Требования к программе. 19

2.6.3.1. Требования к функциональным характеристикам. 20

2.6.3.2. Требования к информационной и программной совместимости  20

2.6.3.3. Требования к маркировке и упаковке. 20

2.6.4. Требования к программной документации. 20

2.6.5. Средства и порядок испытаний. 20

2.6.6. Методы испытаний. 21

2.6.6.1. Для проверки способности обеспечивать ввод исходных данных  21

необходимо: 21

2.6.6.2. Для проверки способности находить делители числа необходимо: 21

2.6.6.3. Для проверки способности выводить результат на печать необходимо: 21

2.6.6.4. Для проверки способности выводить результат в файл необходимо: 21

2.7. Протокол испытаний. 22

ЗАКЛЮЧЕНИЕ. 23

СПИСОК ЛИТЕРАТУРЫ.. 24

Приложение 1. 25

Приложение 2. 25

Приложение 3. 26

Приложение 4. 30

Приложение 4. 30

Приложение 5. 31


Введение

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

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

1. ТЕОРЕТИЧЕСКИЕ ОСНОВЫ РАЗРАБОТКИ 1.1. Описание предметной области

Делителем (множителем) числа называется такое число, при делении на которое остаток от деления равен нулю, другими словами если остаток от деления n на некоторое число m равен нулю, то m является делителем n.

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

Описание алгоритма:

Чтобы найти делители числа необходимо перебрать все делители начиная с 1 до самого числа.
Можно сократить перебор до числа в 2 раза меньше n т.е. до n/2. Это ускорит выполнение программы и избавит ее от лишних вычислений.

Практическое применение:

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

Разрабатываемая программа позволит быстро получить правильные ответы и, таким образом, облегчит труд пользователя.

1.2. Анализ методов решения.

Нахождение делителей числа может быть реализовано следующими способами:

1)      Ручной способ: этот способ является трудоемким и требует больших затрат времени.

2)      Автоматизированный способ: исходные данные вводятся вручную, а результат рассчитывается программой на компьютере.

3)      Автоматический способ: исходные данные автоматически считываются с внешнего устройства (например, с файла на диске) и обрабатываются программой.

Автоматический способ может быть использован, если требуется найти делители (множители) сразу нескольких чисел, в таком случае можно заранее подготовить файл исходных данных и затем использовать его в качестве входных данных программы.

В нашем случае мы рассмотрим автоматизированный способ.

При этом найти делители (множители) можно следующим методом:

Если число n четное, то достаточно проверить его делители до m=n/2, так как дальнейшие вычисления нецелесообразны.

Если число n не четное, то, так как  при делении n на 2 не получиться целое число, делим n на 3 (m=n/3), и если число опять не получиться целым, округляем его в меньшую сторону.

Это так же избавит программу от лишних вычислений.

1.3. Обзор средств программирования.

Средством программирования данного курсового проекта является среда разработки Delphi. Почему я остановил свой выбор именно на этой среде.

На это есть несколько причин.

Мои знания в области программирования, а в данном случае именно знание различных языков программирования не очень велики, поэтому при написании данного курсового проекта моя задача состояла в выборе между Java, C#,  Delphi.

Java я не стал выбирать, так как из этих трех доступных мне языков программирования, я его знаю меньше всего.

Сравнивать C# и Delphi можно по разным характеристикам:

1)Удобство среды программирования. Это, безусловно, важный пункт, так как от удобства среды программирования зависит производительность программиста. В этом пункте я отдаю  предпочтение C#. Удобный, понятный  и приятный интерфейс его среды программирования, всплывающие подсказки, подсвечиваемый код очень помогают в работе.

2)Синтаксис, семантика языка программирования. Принципы, правила написания кода, используемые ключевые слова опять же делают C# более привлекательным вариантом.

Есть еще разные характеристики для сравнения такие как:
Типизация (например, поддерживается ли неявная типизация, неявное приведение типов без потери данных и др.), вопросы Компиляции (возможность компиляции, условная компиляция и др.), вопросы управления памятью (возможность создавать объекты на стеке, сборка мусора и т.д.) и т.д.

Но их я рассматривать подробно не буду так при решении этой задачи они либо не используются, либо поддерживаются обеими средами.

Тем самым я сравнивал эти два языка не столько по функциональным характеристикам, сколько по удобству работы с ним.

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

1.4. Описание языка Delphi.

Концепция Delphi 1 была реализована в конце 1994 года, когда вышла первая версия среды разработки. В основу этого программного продукта легли концепции объектно-ориентированного программирования (ООП) на базе языка Object Pascal и визуального подхода к построению приложений.

После выхода Delphi 1 все компьютерные издания писали об этой среде, как об «убийце Visual Basic». Появление Delphi 2 (32-разрядной) ознаменовало новую эпоху, – появился доступ к возможностям программных интерфейсов Windows NT и Windows 95. Delphi 2 стала средством разработки полноценных приложений клиент/сервер. Вскоре Delphi 3 предоставила разработчикам средства создания распределенных многоуровневых приложений и полноценный инструментарий проектирования приложений для Internet и Intranet. Появилась полноценная поддержка com – модели объектов, ставшей краеугольным камнем современного программирования. Четвертая версия Delphi позволяет полностью интегрировать ваши разработки с объектами com. Поддержка архитектуры corba (common object request broker architecture) открывает перед приложениями, созданными в delphi для платформы wintel (windows + intel), мир других операционных систем (unix, os/2, wms).

Delphi представляет следующие новые свойства и усовершенствования:

– Новые расширения языка. В Delphi в язык Object Pascal включены динамические массивы, методы обработки переполнения, установка значения параметров по умолчанию, и многое другое;

– Менеджер Проекта. Новый менеджер проекта позволяет Вам объединять проекты, которые работают вместе в одну проектную группу. Это позволяет организовать как работу взаимозависимых проектов, таких как однозадачные и многозадачные приложения или dll, так и совместную работу исполняемых программ;

– Новый проводник. Новый проводник содержит выполняемые классы, навигацию по модулям, и браузер кода. Проводник кода делает создание классов проще. Также проводник позволяет быстро перемещаться через файлы модуля, а так же между интерфейсом и реализацией;

– Закрепляемые окна инструментов. IDE (Интегрированная Среда разработки) содержит более перенастраиваемую конфигурацию окон инструментов, которые можно закреплять с редактором кода;

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

– Усовершенствования Activex;

– Усовершенствования VCL. Иерархия объектов Delphi была расширена, чтобы включить новый компонент для Nt Service приложений. Кроме того, новый компонент выполняемого списка (на Стандартной странице палитры), позволяет централизовать управление меню и команд от кнопок. Управление VCL расширено, чтобы поддерживать drag-and-drop перетаскивания, обеспечивать дополнительный контроль над размещением окна, и многое другое.

Delphi – это комбинация нескольких важнейших технологий:

– высокопроизводительный компилятор в машинный код;

– объектно-ориентированная модель компонент;

– визуальное (а, следовательно, и скоростное) построение приложений из программных прототипов;

– масштабируемые средства для построения баз данных.

Компилятор, встроенный в Delphi, обеспечивает высокую производительность, необходимую для построения приложений в архитектуре «клиент-сервер». Он предлагает легкость разработки и быстрое время проверки готового программного блока, характерного для языков четвертого поколения. Кроме того, Delphi обеспечивает быструю разработку без необходимости писать вставки на Си или ручного написания кода (хотя это возможно).

В процессе построения приложения разработчик выбирает из палитры компонент готовые компоненты как художник, делающий крупные мазки кистью. Еще до компиляции он видит результаты своей работы – после подключения к источнику данных их можно видеть отображенными на форме, можно перемещаться по данным, представлять их в том или ином виде. В этом смысле проектирование в Delphi мало чем отличается от проектирования в интерпретирующей среде, однако после выполнения компиляции мы получаем код, который исполняется в 10-20 раз быстрее, чем то же самое, сделанное при помощи интерпретатора. Кроме того, компилятор компилятору рознь, в Delphi компиляция производится непосредственно в родной машинный код, в то время как существуют компиляторы, превращающие программу в так называемый p-код, который затем интерпретируется виртуальной p-машиной. Это не может не сказаться на фактическом быстродействии готового приложения.

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

Объекты БД в Delphi основаны на SQL и включают в себя полную мощь Borland Database Engine. В состав Delphi также включен Borland SQL LINK, поэтому доступ к СУБД Oracle, Sybase, Informix и Interbase происходит с высокой эффективностью. Кроме того, Delphi включает в себя локальный сервер Interbase для того, чтобы можно было разработать расширяемые на любые внешние sql-сервера приложения в офлайновом режиме. Разработчик в среде Delphi, проектирующий информационную систему для локальной машины (к примеру, небольшую систему учета медицинских карточек для одного компьютера), может использовать для хранения информации файлы формата .dbf (как в dbase или clipper) или .db (paradox). Если же он будет использовать локальный interbase for windows (это локальный SQL-сервер, входящий в поставку), то его приложение безо всяких изменений будет работать и в составе большой системы с архитектурой клиент-сервер.

Зарезервированные слова Delphi:

and

File

not

then

array

For

object

to

asm

function

of

type

begin

Goto

or

unit

case

If

packed

until

const

implementation

procedure

uses

constructor

In

program

var

destructor

inherited

record

while

div

inline

repeat

with

do

interface

set

xor

downto

Label

shl

else

Mod

shr

end

Nil

string

Директивы:

absolute

Far

near

virtual

assembler

forward

private

external

interrupt

public

Основные алгоритмические конструкции Delphi

Оператор присваивания

var A, B : Integer;
begin
A:=3;
B:=4;
A:=A*A+B*B;
end;

Условный оператор

if  (условие) then (действие) else (альтернатива) ;

Слова if (если), then (тогда), else (иначе) - зарезервированные. Действие и else альтернатива - это любые операторы Delphi, или несколько операторов, заключённых в логические скобки begin/end, или вызов подпрограммы. Если условие истинно, то выполняется действие, если ложно, то выполняется альтернатива.

Арифметический цикл

(применяется, когда известно количество повторений цикла)

for счётчик := выражение-1 to выражение-2
do действие ;

Возможна работа оператора цикла, при котором переменная-счётчик будет не увеличиваться, а уменьшаться. В этом случае ключевое слово to заменяется на downto:


for счётчик := выражение-1 downto выражение-2 do действие ;

Цикл с предусловием

(применяется, когда неизвестно количество повторений цикла)

while условие do
   тело цикла ;


Этот цикл будет выполняться до тех пор, пока истинно условие (логическое выражение, возвращающее значение типа Boolean). При этом если это выражение сразу равно false, тело цикла не будет выполнено ни разу.
Нужно очень внимательно следить за написанием условия и контролем завершения цикла, так как в результате ошибки цикл while будет повторяться бесконечное количество раз, что приведёт к "зацикливанию" и "зависанию" программы.

Цикл с постусловием

(применяется, когда неизвестно количество повторений цикла)

repeat
тело цикла
until условие ;

Повторения сначала выполняет тело цикла, а затем уже проверяет выполнение условия:
Таким образом, этот вариант цикла гарантирует, что тело цикла будет выполнен по крайней мере один раз. И будет выполняться до тех пор, пока условие не станет истинным (т.е. true). Стоит отметить, что это единственный оператор Delphi, в котором тело цикла не требуется заключать в логические скобки begin/end. Начало и конец тела цикла определяются по ключевым словам repeat и until.

Оператор перехода

goto метка ;

Позволяет  изменить последовательность выполнения программы. В качестве метки может использоваться любой допустимый идентификатор или число в диапазоне от 0 до 9999. Метку предварительно необходимо объявить в разделе описания переменных, но с помощью не ключевого слова var, а ключевого слова label:

label меткa ;
или
label список меток ;


2. ПРАКТИЧЕСКАЯ ЧАСТЬ 2.1. Постановка задачи 2.1.1. Основания для разработки

Основанием для разработки является задание преподавателя в соответствии с программой МДК 01.02 "Прикладное программирование".

2.1.2. Назначение программы

Разрабатываемая программа предназначения для нахождения всех делителей (множителей) числа, находящегося в диапазоне от 1 до 10 тыс., введенного пользователем с клавиатуры.

2.1.3. Требования к программе 2.1.3.1. Требования к функциональным характеристикам

–        Возможность ввести входные данные с клавиатуры;

–       Программа находит делители числа, введенного с клавиатуры;

–        Возможность вывести результат на печать;

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

Входными данными являются:

–        Число, делители которого следует найти.

Выходными данными являются:

–        Множество делителей числа, введенного пользователем.

Выходные данные должны выводиться на экран. Возможность вывода их на  принтер или в файл производиться по желанию пользователя.

2.1.3.2. Требования к надежности

Программа находит делители любого числа от 1 до 10 тыс. Если пользователь некорректно ввел данные, программа предупреждает об этом пользователя и дает ему возможность исправить ошибку.

2.1.3.3. Требования к условиям эксплуатации

Программа должна эксплуатироваться в условиях вычислительного центра при температуре от +15 до +35 С и относительной влажности воздуха от 25 до 85%.

Программа не требует специального обслуживания, а ее сопровождение выполняется самим автором.

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

2.1.3.4. Требования к техническим средствам

Программа должна работать на IBM PC-совместимых компьютерах с процессором 80386 и выше, объемом оперативной памяти 64 Мбайт и выше, цветным монитором EGA/VGA, наличием жесткого диска и дисковода CD-ROM. Принтер необходим в тех случаях, когда предусмотрен вывод результатов на печать.

2.1.3.5. Требования к информационной и программной совместимости

Программа должна работать под управлением операционной системы Windows XP, Windows Vista, Windows7.

Текстовый файл с результатами работы программы должен иметь формат, позволяющий просматривать и редактировать его с помощью текстовых редакторов, совместимых с редактором Блокнот (Notepad++ и т.д.).

2.1.3.6. Требования к маркировке и упаковке

Программа должна поставляться на диске в виде исполняемого (еxе) файла, документации и проекта. На диске должна быть наклейка с надписью "Программа нахождения делителей числа". Диск должна быть упакован  в пластиковую коробку.

2.1.3.7. Требования к транспортировке и хранению

Диск с программой должен храниться вдали от электромагнитных полей и не подвергаться механической деформации. Место и условия хранения должны соответствовать санитарным требованиям отрасли. Сроки хранения устанавливаются в соответствии с гарантийными сроками поставщика магнитных носителей.

Основные требования к транспортировке – создание условий, исключающих механические повреждения магнитного носителя.

2.1.4. Требования к программной документации

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

–      Текст программы (ГОСТ 19.401-78)

–      Описание программы (ГОСТ 19.402-78)

–      Руководство оператора (ГОСТ 19.505-79)

–      Программа и методика испытаний (ГОСТ 19.301-79)

–      Описание языка (ГОСТ 19.507-79)

2.1.5. Стадии разработки

Разработка программы должна вестись по следующему графику:

Технический проект: срок сдачи 10.11.2013

Рабочий проект: срок сдачи 20.12.2013

2.1.6. Виды испытаний

Приемо-сдаточные испытания проводятся преподавателем.

2.2. Описание схем 2.2.1. Описание схемы основного модуля

Схема основного модуля приведена на рис.3.

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

Далее пользователь нажимает на кнопку «Найти». Запускается процедура-обработчик нажатия на кнопку. Она проверяет текст в поле ввода на наличие недопустимых символов, если недопустимые символы присутствуют - пользователь получает об этом уведомление, выполнение программы прерывается, предоставляя пользователю возможность ввести корректные данные. Если же введенная информация является корректной т.е. является  целым числом тогда целочисленной переменной chislo присваивается значение из поля ввода. Затем процедура проверяет попадает ли введенное число в диапазон допустимых значений от 1 до 10 тыс. Если не попадает- пользователь получает об этом уведомление, выполнение программы прерывается, предоставляя пользователю возможность ввести корректные данные. Если попадает – поля вывода ответа memo отчищается, chislo передаться как один из параметров в процедуру searchingDividers, вторым является поля вывода memo. Дальше происходит работа функции searchingDividers.

Процедура searchingDividers ищет делители числа и записывает ответ в объект типа TMemo, переданный в качестве второго параметра.

Процедура OutToFile сохраняет в файл содержимое поля вывода Memo.

Процедура OutToPrint выводит на печать содержимое поля вывода Memo.

2.2.2. Описание схемы процедуры searchingDividers

Схема процедуры searchingDividers приведена на рис.1.

Процедуре передается два параметра, число n типа integer и поле memo типа TMemo, которое  служит для вывода информации.

В начале работы процедуры создается переменная ts типа TStringList. Далее в ts добавляется строка, сообщающая делители какого числа мы находим: «Поиск делителей числа «Значение n» ».

В ts добавляется Запись «1», т.к. единица является делителем любого числа, если n=1 то на этом процедура завершает свою работу.

Далее проверяется четным или нечетным является число n. От этого зависит до какого числа m будут проверяться все возможные делители. Если n четное то до m=n/2. Если нечетное - до m=n/3. Если при делении на 3 переменная m станет нецелой - она округляется до целого в меньшую сторону.

Далее процедура делит число n на число i. Если остаток от деления равен 0 то в ts добавляется запись содержащая число i. Это действие выполняется для всех i от 1 до  m с шагом 1.

В конце процедуры в ts добавляется запись, содержащая само число n, и содержимое переменное ts записывается в поле memo, переданной в качестве второго параметра.

2.2.3. Описание схемы процедуры OutToPrint

Схема процедуры OutToPrint приведена на рис.2.

Процедуре передается один параметр – это поле  memo типа TMemo содержимое которого будет выводиться на печать.

Процедура подключается к принтеру в режиме записи.

Далее процедура перебирает все строки в поле memo и выводит их на печать.

В случае возникновения ошибки пользователю выводиться сообщение об ошибке.

2.2.4. Описание схемы процедуры OutToFile

Процедуре передается один параметр – это поле  memo типа TMemo, содержимое которого будет сохраняться в файл.

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

Далее происходит запись всех строк memo в файл.

2.3. Текст программы

Текст программы в соответствии с ГОСТ 19.101-77 (СТ СЭВ 1626-79) и ГОСТ 19.401-79 (СТ СЭВ 3746-82) представляет собой запись программы на исходном языке программирования с необходимыми комментариями. Текст программы представляет собой документ, выполненный машинным способом, и приведен в приложении 3.


Процедура searchingDividers.

1.jpg

рис 1.

Входные параметры процедуры

chislo –число, делители которого следует найти.

Выходные параметры

Текстовое поля типа TMemo, заполненное множеством делителей числа chislo.

Процедура OutToPrint.

2.jpg

Входные параметры процедуры

Текстовое поле, строки которого надо вывести на печать

 

рис 2.

Входные параметры процедуры:

Текстовое поле, строки которого надо вывести на печать


2.4. Описание программы 2.4.1. Общие сведения

Программа Search_dividers предназначена для нахождения делителей (множителей) числа. Программа написана на языке Delphi 7, работает под управлением операционных систем Windows XP, Windows Vista, Windows 7.

2.4.2. Функциональное назначение

Программа Search_dividers предназначена для нахождения делителей (множителей) числа, находящегося в диапазоне от 1 до 10тыс.

2.4.3. Описание логической структуры

Программа содержит основной модуль, а также 10 процедур:

При запуске отображается окно программы. В поле ввода пользователь может ввести целое число, входящее в диапазон от 1 до 10тыс. При вводе процедура отслеживания введенных символов проверяет правильность ввода (строки 108-118 приложения 3). Программа приступает к вычислениям при нажатии на кнопку «Найти».

Процедура обработки клика мышки по кнопке «Найти » сначала проверяет правильность информации в поле ввода (строки  95-104 приложения 3) далее число передается процедуре searchingDividers.

Процедура searchingDividers (строки 36-56 приложения 3) предназначена для поиска делителей числа. Входными данными являеться число, делители которого следует найти.

Процедура заполняет поле типа TMemo множеством решений.

Пользователь может распечатать информацию поля TMemo. Для этого надо выбрать пункт горизонтального меню Файл-Печать. Вызывается процедура OutToPrint (строки 71-88 приложения 3), которая получает в качестве входных данные поле TMemo и выводит все его строки на печать.

Пользователь может сохранить в текстовый файл информацию поля TMemo. Для этого надо выбрать пункт горизонтального меню Файл-Сохранить. Вызывается процедура OutToFile (строки 57-70 приложения 3), которая получает в качестве входных данные поле TMemo и сохраняет все его строки в файл, выбранный пользователем в появившемся диалоговом окне.

Пользователь может посмотреть справку по программе. Для этого надо выбрать пункт горизонтального меню Справка-О программе.  Вызывается процедура-обработчик клика мыши по пункту меню. Процедура открывает модально новое окно, в поле типа TMemo которого загружает справку из текстового файла spravka.txt , хранящегося в папке Info директории программы.

Пользователь может посмотреть информацию об авторе. Для этого надо выбрать пункт горизонтального меню Справка-Об авторе.  Вызывается процедура-обработчик клика мыши по пункту меню. Процедура открывает модально новое окно, в поле типа TMemo которого загружает информацию об авторе из текстового файла author.txt , хранящегося в папке Info директории программы.

Схема основного модуля приведена на рис.3  и описана в п.2.3.1.

Программа использует процедуры и функции следующих библиотек среды Delphi 7:

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, ExtCtrls, Printers, Menus.

Исполняемый файл программы создан средствами среды Delphi 7, имеет имя search_dividers.exe и размер  425 984  байт.

2.4.4. Используемые технические и программные средства

Программа может работать на IBM PC-совместимых компьютерах с процессором 80386 и выше, объемом оперативной памяти 64 Мбайт и выше, наличием цветного монитора EGA/VGA и выше и наличием CD-ROM. Наличие принтера необходимо, если пользователь желает выводить на него множество делителей числа.

2.4.5. Вызов и загрузка

Программа может быть загружена как с диска, так и с жесткого диска. В последнем случае требуется предварительно переписать программу с диска на жесткий диск.

Исполняемым файлом программы является файл Searching_dividers.exe. Для его запуска необходимо  дважды щелкнуть по исполняемому файлу левой кнопкой мышки.

2.4.6. Входные и выходные данные

Входными данными программы является целое число – значения, делители которого необходимо найти, вводимое с клавиатуры в поле ввода: после ввода необходимо нажать кнопку «Найти».

Прогон программы осуществлялся со значениями входных данных, приведенных в  приложении 5.

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

Имя файла представляет собой символьную строку, соответствующую правилам составления имен файлов системы Windows.

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

Форма вывода на экран и в файл соответствует образцу, представленному в приложении 1. Форма вывода на печать соответствует образцу, представленному в приложении 2.

2.5. Руководство оператора 2.5.1. Назначение программы

Программа search_dividers предназначена для нахождения всех множителей (делителей) числа. Число вводиться с клавиатуры. Ответ выводиться на экран. Пользователь имеет возможность вывести ответ на печать или сохранить в файл.


2.5.2. Условия выполнения

Программа работает на IBM PC совместимых компьютерах с процессором 80386 и выше, объемом оперативной памяти 64 Мбайт и выше, цветным монитором EGA/VGA  и выше, имеющих CD-ROM под управлением операционной системы Windows XP, Windows Vista, Windows 7.

2.5.3. Выполнение программы и сообщения оператору

Для запуска программы дважды щелкните левой кнопкой мыши по исполняемому файлу  search_dividers.exe.

Когда программа запуститься (рис.4) введите число, делители которого следует найти в поле ввода, проверьте введенные данные  и нажмите кнопку «Найти» (рис.5).

Число, по условию, должно быть целым и находиться в диапазоне от 1 до 10тыс.

Программа выведет результат в большое текстовое поле (рис.7).

Вы можете сохранить информацию в текстовый документ (.txt), содержащуюся в текстовом поле. Для этого выберите пункт горизонтального меню Файл - Сохранить (рис.6). В появившемся окне выберите папку и имя файла. Нажмите сохранить. В последствии можно открыть этот файл с помощью текстового редактора, например Блокнота (рис.11).

Вы можете распечатать информацию, содержащуюся в текстовом поле. Для этого выберите пункт горизонтального меню Файл – Печать (рис.6). При возникновении ошибки (рис.9) проверьте, подключен ли принтер и видит ли его ваша операционная система. Внешний вид страницы после записи в него данных программой на рис.10.

Чтобы вызвать справку по программе выберите пункт горизонтального меню  Справка – о программе (рис.7).

Чтобы показать информацию об авторе выберите пункт горизонтального меню Справка – об авторе (рис.7).

В процессе выполнения программы возникали  ошибки, сообщения о которых, возможные их причины и способы устранения приведены в приложении 3.

2.6. Программа и методика испытаний 2.6.1. Объект испытаний

Объектом испытаний является программа search_dividers, предназначенная для нахождения всех делителей (множителей) числа, введенного с клавиатуры.

2.6.2. Цель испытаний

Целью испытаний является проверка соответствия программы требованиям Технического Задания.

2.6.3. Требования к программе

В процессе испытаний подлежат проверке следующие требования к программе:


2.6.3.1. Требования к функциональным характеристикам

–        Возможность ввести входные данные с клавиатуры.

–       Программа находить делители числа, введенного с клавиатуры.

–        Возможность вывести результат на печать.

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

2.6.3.2. Требования к информационной и программной совместимости

Текстовый файл с результатами работы программы должен иметь формат, позволяющий просматривать его с помощью текстовых редакторов типа Блокнот или  Notepad++.

2.6.3.3. Требования к маркировке и упаковке

Программа должна поставляться на диске в виде исполняемого Exe файла.

2.6.4. Требования к программной документации

На испытания должны быть представлены следующие программные документы:

–      техническое задание

–      текст программы

–      описание программы

–      руководство оператора

–      описание языка

2.6.5. Средства и порядок испытаний

Для проведения испытаний необходимы следующие технические средства:

–      IBM PC совместимый компьютер с процессором 80386 и выше, оперативной памятью 64 Мбайт и выше, цветным монитором EGA/VGA и выше, имеющий CD-ROM и принтер.

Для проведения испытаний необходимы следующие программные средства:

–      Операционная система Windows 7.

–      Текстовый редактор Блокнот

Испытания проводятся в следующем порядке

1) проверяется наличие и комплектность программной документации (п.2.6.4)

2) проверяется соответствие требованиям к маркировке и упаковке (п.2.6.3.3)

3) проверяется соответствие требованиям к функциональным характеристикам   (п.2.6.3.1)

–      Возможность ввести входные данные с клавиатуры.

–      Программа находить делители числа, введенного с клавиатуры.

–      Возможность вывести результат на печать.

–      Возможность сохранить результат в файл.

4) проверяется соответствие требованиям к информационной и программной    совместимости (п.2.6.3.2)

2.6.6. Методы испытаний 2.6.6.1. Для проверки способности обеспечивать ввод исходных данных необходимо:

–      запустить программу

–      ввести число в поле ввода

–      убедиться, что программа не зависла и продолжает выполнение

2.6.6.2. Для проверки способности находить делители числа необходимо:

–      запустить программу

–      ввести число в поле ввода

–      нажать на кнопку «Найти»

–      убедиться, что на экран результат выводиться по форме приложения 1

Проверить работоспособность программы можно, используя входные данные из приложения 5.

2.6.6.3. Для проверки способности выводить результат на печать необходимо:

–      запустить программу

–      ввести число в поле ввода

–      нажать на кнопку «Найти»

–      выбрать пункт горизонтального меню Файл – Печать

–      убедиться, что на печать выводятся результаты по форме приложения 2

2.6.6.4. Для проверки способности выводить результат в файл необходимо:

–      запустить программу

–      ввести число в поле ввода

–      нажать на кнопку «Найти»

–      выбрать пункт горизонтального меню Файл – Сохранить

–      в появившемся диалоговом окне выбрать папку и имя файла

–      убедиться, что на печать выводятся результаты по форме приложения 1

2.7. Протокол испытаний

Результаты испытаний программы представлены в таблице 1.

Результаты испытаний программы.

Таблица 1.

Проверяемые требования

Сообщения программы и вводимые значения

Результаты

Способность программы обеспечивать ввод исходных данных

Окно программы и текстовое поле в которое можно ввести значение.

После ввода значения программа вела себя корректно и позволяла совершать дальнейшие действия, например, продолжить вычисления при нажатии на кнопку «Найти»

Способность программы находить делители (множители) числа, находящегося в диапазоне от 1 до 10 тыс.

Вычисление происходят при нажатии на кнопку «Найти».

В конкретном случае возьмем число 10.

Результатом работы программы должны быть следующие числа: 1,2,5,10.

Результаты выводятся на экран

Поиск делителей числа 10:

1

2

5

10

Проверка правильности результатов в приложении 4

Способность программы выводить результаты по желанию пользователя на печать или в файл

С помощью пункта «Файл» горизонтального меню и его подпунктов «Печать» и «Сохранить» есть возможность выводить результаты на печать или в файл.

Вывод результатов на экран (см. рис. 9)

Вывод результатов на принтер (см. рис.11)

Создан текстовый файл Res.txt (см. рис.12)

ЗАКЛЮЧЕНИЕ

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

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

СПИСОК ЛИТЕРАТУРЫ

1.      Осипов Д., Delphi. Профессиональное программирование, СПб:-БХВ, 2006

2.      Сухарев М.,  Золотая книга Delphi, М:-Академия, 2010

3.      Стандарты Единой Системы Программной Документации:

ГОСТ 19.105-78 Общие требования к программным документам

ГОСТ 19.106-78 Требования к программным документам, выполненным печатным способом

ГОСТ 19.201-78 Техническое задание. Требования к содержанию и оформлению

ГОСТ 19.301-78 Программа и методика испытаний. Требования к содержанию и оформлению

ГОСТ 19.401-78 Текст программы. Требования к содержанию и оформлению

ГОСТ 19.402-78 Описание программы. Требования к содержанию и оформлению

ГОСТ 19.505-79 Руководство оператора. Требования к содержанию и оформлению

ГОСТ 19.701-90 Схемы алгоритмов, программ, данных и систем. Условные обозначения и правила выполнения

Приложение 1

Требуемая форма вывода на экран или в файл  результатов работы программы:

Поиск делителей числа <Значение n>:

<Значение 1>

<Значение 2>

<Значение 3>

<Значение m>

Приложение 2

Требуемая форма вывода на печать результатов работы программы:

Поиск делителей числа <Значение n>: <Значение 1>   <Значение 2>   <Значение 3>  …    <Значение m>

Приложение 3

Текст программы

{1}unit Unit1;

{2}interface

{3}uses

{4}Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

{5}Dialogs, StdCtrls, ExtCtrls, Printers, Menus;

{6}type

{7}TForm1 = class(TForm)

{8}Enter_edit: TEdit;

{9}Enter_button: TButton;

{10}          Output_memo: TMemo;

{11}          MainMenu1: TMainMenu;

{12}          Mfile: TMenuItem;

{13}          Msave: TMenuItem;

{14}          Mprint: TMenuItem;

{15}          Mexit: TMenuItem;

{16}          N1: TMenuItem;

{17}          N2: TMenuItem;

{18}          N3: TMenuItem;

{19}          procedure Enter_buttonClick(Sender: TObject);

{20}          procedure Enter_editKeyPress(Sender: TObject; var Key: Char);

{21}          procedure MsaveClick(Sender: TObject);

{22}          procedure MprintClick(Sender: TObject);

{23}          procedure MexitClick(Sender: TObject);

{24}          procedure N2Click(Sender: TObject);

{25}          procedure N3Click(Sender: TObject);

{26}          private

{27}          { Private declarations }

{28}          public

{29}          { Public declarations }

{30}          end;

{31}          var

{32}          Form1: TForm1;

{33}          implementation

{34}          uses Unit2;

{35}          {$R *.dfm}

{36}          //Поиск делителей+

{37}          procedure searchingDividers(chislo:integer; Memo:TMemo);

{38}          var

{39}          i:longint;

{40}          ts:TStringList;

{41}          d:byte;

{42}          begin

{43}          ts := TStringList.Create;

{44}          ts.Add('Поиск делителей числа ' + inttostr(chislo) + ': ');

{45}          ts.Add('1');

{46}          if (chislo=1) then

{47}          begin

{48}          Memo.Lines.AddStrings(ts);

{49}          exit;

{50}          end;

{51}          if (chislo mod 2=0) then d:=2 else d:=3;

{52}          for i:=2 to (chislo div d) do

{53}          if (chislo mod i =0) then  ts.Add(IntToStr(i));

{54}          ts.Add(IntToStr(chislo));

{55}          Memo.Lines.AddStrings(ts);

{56}          end;

{57}          //Вывод в файл+

{58}          procedure OutToFile(m:TMemo);

{59}          var

{60}          path:string;

{61}          SaveDialog:TSaveDialog;

{62}          begin

{63}          SaveDialog := TSaveDialog.Create(form1);

{64}          SaveDialog.InitialDir:=GetCurrentDir;

{65}          SaveDialog.Filter:='Text Files|*.txt';

{66}          if (SaveDialog.Execute)

{67}          then path:=SaveDialog.FileName

{68}          else exit;

{69}          m.Lines.SaveToFile(path);

{70}          end;

{71}          //Вывод на печать+

{72}          procedure OutToPrint(m:TMemo);

{73}          var

{74}          Prn : TextFile;

{75}          i:integer;

{76}          begin

{77}          try

{78}          AssignPrn(Prn);

{79}          Rewrite(Prn);

{80}          for i:=0 to (m.Lines.Count-1) do

{81}          begin

{82}          Write(Prn, m.Lines[i] ,'  ');

{83}          end;

{84}          CloseFile(Prn);

{85}          except

{86}          ShowMessage('Вывод на печать невозможен.'+#13#10+'Проверьте подключен ли принтер.');

{87}          end;

{88}          end;

{89}          //Обработчик события нажатия на кнопку 'Найти'+

{90}          procedure TForm1.Enter_buttonClick(Sender: TObject);

{91}          var

{92}          chislo:longint;

{93}          begin

{94}          chislo:=1;

{95}          try

{96}          chislo:=StrToInt(Enter_edit.Text);

{97}          except

{98}          ShowMessage('Некорректно введено число.'+#13#10+'Введите число от 1 до 1млрд.');

{99}          end;

{100}      if (chislo<=0) or (chislo>10000) then

{101}      begin

{102}      ShowMessage('Некорректно введено число.'+#13#10+'Введите число от 1 до 1млрд.');

{103}      exit;

{104}      end;

{105}      Output_memo.Clear;

{106}      searchingDividers(chislo, Output_memo);

{107}      end;

{108}      //Контроль введеных символов в поле ввода+

{109}      procedure TForm1.Enter_editKeyPress(Sender: TObject; var Key: Char);

{110}      begin

{111}      case Key of

{112}      '0'..'9',#8:;

{113}      #13:Enter_button.Click;

{114}      else key:=Chr(0);

{115}      end;

{116}      if (Length(Enter_edit.Text)>4) and (key<>#8)

{117}      then key:=Chr(0);

{118}      end;

{119}      //Пункт 'Файл/Сохранить' горизонтального меню+

{120}      procedure TForm1.MsaveClick(Sender: TObject);

{121}      begin

{122}      OutToFile(Output_memo);

{123}      end;

{124}      //Пункт 'Файл/Печать' горизонтального меню+

{125}      procedure TForm1.MprintClick(Sender: TObject);

{126}      begin

{127}      OutToPrint(Output_memo);

{128}      end;

{129}      //Пункт 'Файл/Выход' горизонтального меню+

{130}      procedure TForm1.MexitClick(Sender: TObject);

{131}      begin

{132}      Application.Terminate;

{133}      end;

{134}      //Пункт 'Спрака/О программе' горизонтального меню+

{135}      procedure TForm1.N2Click(Sender: TObject);

{136}      var path:string;

{137}      begin

{138}      path:=GetCurrentDir;

{139}      Form2.Memo1.Lines.LoadFromFile(path+'/info/spravka.txt');

{140}      Form2.ShowModal;

{141}      end;

{142}      //Пункт 'Спрака/Об авторе' горизонтального меню

{143}      procedure TForm1.N3Click(Sender: TObject);

{144}      var path:string;

{145}      begin

{146}      path:=GetCurrentDir;

{147}      Form2.Memo1.Lines.LoadFromFile(path+'/info/author.txt');

{148}      Form2.ShowModal;

{149}      end;

{150}      end.


Приложение 4

Возможные ошибки при работе программы

Сообщение об ошибке

Возможная причина

Метод устранения

Некорректно введено число. Введите число от 1 до 10 тыс.

Введённое значение не является числом, а является, например, текстовой информацией.

Введите  в поле ввода число и нажмите кнопку «Найти».

Некорректно введено число. Введите число от 1 до 10 тыс.

Введённое значение не попадает в диапазон значений от 1 до 10 тыс.

Введите в поле ввода число, находящееся в диапазоне значений от 1 до 10тыс и нажмите кнопку найти

Вывод на печать невозможен(рис 10). Проверьте подключен ли принтер.

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

Проверьте включен ли принтер в сеть, если после этого проблема останется проверьте видит ли его ваша операционная система.

Приложение 5

Контрольные примеры

Пример

Число

Входные данные

Выходные данные

Проверка

1

1

Chislo=1

1

1/1=1

Больше делителей нет

2

7

Chislo=7

1, 7

7/1=7

7/7=1

Больше делителей нет

3

10

Chislo=10

1, 2, 5, 10

10/1=10

10/2=5

10/5=2

10/10=1

Больше делителей нет

4

34

Chislo=34

1, 2, 17, 34

34/1=34

34/2=17

34/17=2

34/34=1

Больше делителей нет

5

165

Chislo=165

1, 3, 5, 11, 15, 33, 55, 165

165/1=165

165/3=55

165/5=33

165/11=15

165/15=11

165/33=5

165/55=3

165/165=1

Больше делителей нет

6

2564

Chislo=2564

1, 2, 4, 641, 1282, 2564

2564/1=2564

2564/2=1282

2564/4=641

2564/1282=2

2564/2564=1

Больше делителей нет

7

10000

Chislo=10000

1, 2, 4, 5, 8, 10, 16, 20, 25, 40, 50, 80, 100, 125, 200, 250, 400, 500, 625, 1000, 1250, 2000, 2500, 5000, 10000

10000/1=10000

10000/2=5000

10000/4=2500

10000/5=2000

10000/8=1250

10000/10=1000

10000/16=625

10000/20=500

10000/25=400

10000/40=250

10000/50=200

10000/80=125

10000/100=100

10000/125=80

10000/200=50

10000/250=40

10000/400=25

10000/500=20

10000/625=16

10000/1000=10

10000/1250=8

10000/2000=5

10000/2500=4

10000/5000=2

10000/10000=1

Больше делителей нет

8

12000

Chislo=12000

Ошибка:

«Некорректно введено число. Введите число от 1 до 10тыс.»


Окно программы

3.jpg

Рис.4

Поле для ввода данных

4.jpg

Рис.5

Меню для выбора устройства вывода результатов

5.jpg

Рис.6

Меню справки

6.jpg

Рис.7

Окно с результатами работы программы

7.jpg

Рис.8

Сообщение о необходимости включить принтер

8.jpg

Рис.9

Вывод результатов решения на принтер

Поиск делителей числа 342: 1  2   3   6   9   18  19  38  57  114    171 342

Рис.10

Вывод результатов решения в файл

9.jpg

Рис.11


Информация о реферате «Нахождение всех множителей (делителей) числа»
Раздел: Информатика, программирование
Количество знаков с пробелами: 45660
Количество таблиц: 6
Количество изображений: 7

Похожие материалы

Скачать
28008
1
18

... а также три вопроса. В заключении следует отметить, что тематика данной исследовательской работы является достаточно новой и поэтому и достаточно интересной. В дальнейшем планирую продолжать исследовать антипростые числа. Список использованных источников и литературы 1.  Сендеров В., Френкин Б. Гипотеза Каталана. - журнал "Квант", 2007, №4. – С. 8-10. 2.  Сендеров В. Решение задачи М2032 ...

Скачать
24303
27
7

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

Скачать
21645
0
2

... Ямвлиха, великий Пифагор на вопрос, кого считать своим другом, ответил: "Того, кто является моим вторым Я, как числа 220 и 284". История дружественных чисел теряется в глубине веков. Эти удивительные числа были открыты последователями Пифагора. Правда пифагорейцы знали только одну пару дружественных чисел – 220 и 284. Проверим эту пару чисел на свойство дружественных чисел: 1 + 2 + 4 + 5 + 10 ...

Скачать
38828
0
4

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

Скачать
17395
1
12

... так делаем, пока не закончатся элементы цепной дроби. Пример. Цепная дробь: [2,3,4,5] Рациональная дробь: 157/68 Тесты. 1.Некорректные данные 2.Корректные данные Заключение Разработана программа CalcKurs, выполняющая следующие функции: 1.формирование заданного подмножества натурального ряда с помощью общего делителя; 2.факторизация числа с опциями; 3.нахождение НОД и НОК ...

0 комментариев


Наверх