Разработка Windows-приложения нахождения НОД двух целых чисел с помощью алгоритма Евклида
Цель курсовой - применение на практике знаний, полученных в процессе освоения теоретического курса и лабораторного практикума по дисциплине "Программирование", приобретение практических навыков разработки программного обеспечения информационных систем.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 06.05.2024 |
Размер файла | 1013,8 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Разработка Windows-приложения нахождения НОД двух целых чисел с помощью алгоритма Евклида
Аннотация
Тема курсовой работы: "Разработка Windows-приложения нахождения НОД двух целых чисел с помощью алгоритма Евклида".
Цель курсовой работы - применение на практике знаний, полученных в процессе освоения теоретического курса и лабораторного практикума по дисциплине "Программирование", приобретение практических навыков разработки программного обеспечения информационных систем с применением современных инструментальных средств и технологий программирования. программирование информационный практикум
План
Введение
1. Теоретическая часть
2. Описание программного продукта
2.1 Общие сведения
2.2 Функциональное назначение
2.3 Описание логической структуры и реализации
2.4 Требования к техническому обеспечению
2.5 Вызов программы
2.6 Входные данные
2.7 Выходные данные
2.8 Описание тестовых прогонов
2.9 Инструкция по использованию программы
Заключение
Список использованных источников
Приложение 1
Введение
Цель курсовой работы - углубление знаний студентов, полученных в процессе освоения теоретического курса и лабораторного практикума по дисциплине "Программирование", приобретение практических навыков разработки программного обеспечения информационных систем с применением современных инструментальных средств и технологий программирования.
Задачей курсового проектирования является разработка Windows-приложения "Калькулятор" на языке С++ в среде Microsoft Visual Studio, версия 2010/1012 (или более поздние), реализующего:
- решение одной из математических задач: нахождение НОД двух целых чисел с помощью алгоритма Евклида;
- организацию современного оконного интерфейса пользователя приложения, блокирующего возможность ошибочных действий;
- адекватную реакцию приложения на ошибки пользователя при работе с приложением: возможность исправления ошибок после выдачи соответствующего сообщения без перезагрузки приложения.
Актуальность выполняемой работы заключается в формировании и закреплении навыков разработки программного обеспечения информационных систем. Без них дальнейшее обучение не будет эффективным в полной мере.
Разработка Windows-приложения на языке С++ является одним из базовых умений программистов. Ее актуальность обосновывается именно приобретением базовых навыков, без которых дальнейшая работа невозможна.
1. Теоретическая часть
C++ - компилируемый строго типизированный язык программирования общего назначения. Поддерживает разные парадигмы программирования: процедурную, обобщённую, функциональную; наибольшее внимание уделено поддержке объектно-ориентированного программирования.
Язык программирования С++ относится к классу универсальных языков, так как с его помощью можно решить очень широкий круг задач, выполняемых на ЭВМ. Среди современных алгоритмических языков язык С++ является одним из самых популярных и распространенных, но наиболее эффективно его применение в написании системных программ-трансляторов, операционных систем, экранных интерфейсов, в обслуживании инструментальных средств.
В большинстве случаев программы, выполненные на языке С++, по быстродействию сравнимы с программами, написанными на Ассемблере. С++ является языком высокого уровня, поэтому программы, подготовленные на нем, более наглядны и просты в сопровождении [1].
Программы на языке С++ легко переносимы с одного типа компьютера на другой.
Основные особенности языка С++:
1) в нем реализованы некоторые операции низкого уровня;
2) его базовые типы данных совпадают с типами данных языка Ассемблера;
3) несмотря на присутствие таких составных объектов, как массивы и структуры, язык не допускает обращения с ними как с единым циклом;
4) широко использует указатели на переменные и функции;
5) удобным средством для передачи параметров являются ссылки;
6) считается языком для профессионалов, поэтому многое "доверяет" программисту: даже на такие важные действия, как преобразование типов, налагаются лишь незначительные ограничения;
7) несмотря на широкие возможности, невелик по объему за счет того, что практически все выполняемые функции оформлены в виде подключаемых библиотек.
История создания C++ начинается с языка С. C++ и в самом деле представляет собой супермножество языка С. C++ можно назвать расширенной и улучшенной версией языка С, в которой реализованы принципы объектно-ориентированного программирования. C++ также включает ряд других усовершенствований языка C, например расширенный набор библиотечных функций. Чтобы до конца понять и оценить достоинства C++, необходимо понять все "как" и "почему" в отношении языка C [2].
Язык программирования C - универсальный язык программирования, который завоевал особую популярность у программистов, благодаря сочетанию возможностей языков программирования высокого и низкого уровней. Большинство программистов предпочитают использовать язык C для серьезных разработок потому, что их привлекают такие особенности языка, как свобода выражения мыслей, мобильность и чрезвычайная доступность.
Язык C даёт возможность программисту осуществлять непосредственный доступ к ячейкам памяти и регистрам компьютера, требуя при этом знания особенностей функционирования ЭВМ. В этом C схож с языком низкого уровня - ассемблером, хотя на самом деле он представляет собой гораздо более мощное средство решения трудных задач и создания сложных программных систем.
Язык C был разработан американцем Деннисом Ритчи в исследовательском центре Computer Science Research Center of Bell Laboratories корпорации AT&T в 1972 г. Первоначальная реализация C была выполнена на ЭВМ PDP-11 фирмы DEC для создания операционной системы UNIX. Позже он был перенесен в среду многих операционных систем и существует независимо от любой из них. Программы, написанные на языке C, как правило, можно перенести в любую другую операционную систему или на другой компьютер либо с минимальными изменениями, либо вовсе без них [3].
Язык C также используется при составлении программ для микроконтроллеров.
Язык C оказал существенное влияние на развитие индустрии программного обеспечения, а его синтаксис стал основой для таких языков программирования как C++, C#, Java, PHP и др. Язык C служит базовой платформой для изучения языка C++.
C++ появился как ответ на необходимость преодолеть еще большую сложность программ. Он был создан Бьерном Страуструпом в 1979 году в компании Bell Laboratories (г. Муррей-Хилл, шт. Нью-Джерси). Сначала новый язык получил имя "C с классами" (Сwith Classes), но в 1983 году он стал называться C++.
C++ полностью включает язык С. Как упоминалось выше, С - это фундамент, на котором был построен C++. Язык C++ содержит все средства и атрибуты С и обладает всеми его достоинствами. Для него также остается в силе принцип C, согласно которому программист, а не язык, несет ответственность за результаты работы своей программы. Именно этот момент позволяет понять, что изобретение C++ не было попыткой создать новый язык программирования. Это было скорее усовершенствование уже существующего языка.
К 1983 году в язык были добавлены новые возможности, такие как виртуальные функции, перегрузка функций и операторов, ссылки, константы, пользовательский контроль над управлением свободной памятью, улучшенная проверка типов и новый стиль комментариев (//). Первый коммерческий выпуск C++ состоялся в октябре 1985 года.
В 1985 году вышло первое издание "Языка программирования C++", обеспечивающее первое описание этого языка, что было чрезвычайно важно из-за отсутствия официального стандарта.
В 1989 году состоялся выход C++ версии 2.0. Его новые возможности включали множественное наследование, абстрактные классы, статические функции-члены, функции-константы и защищённые члены. В 1990 году вышло "Комментированное справочное руководство по C++", положенное впоследствии в основу стандарта. Последние обновления включали шаблоны, исключения, пространства имён, новые способы приведения типов и булевский тип.
Стандартная библиотека C++ также развивалась вместе с ним. Первым добавлением к стандартной библиотеке C++ стали потоки ввода-вывода, обеспечивающие средства для замены традиционных функций Cprintf и scanf. Позднее самым значительным развитием стандартной библиотеки стало включение в неё "Стандартной библиотеки шаблонов".
В 1998 году был опубликован стандарт языка ISO/IEC 14882:1998 (известный как C++98), разработанный комитетом по стандартизации C++. Стандарт C++ не описывает способы именования объектов, некоторые детали обработки исключений и другие возможности, связанные с деталями реализации, что делает несовместимым объектный код, созданный различными компиляторами. Однако для этого третьими лицами создано множество стандартов для конкретных архитектур и операционных систем.
В 2003 году был опубликован стандарт языка ISO/IEC 14882:2003, где были исправлены выявленные ошибки и недочёты предыдущей версии стандарта.
В 2005 году был выпущен отчёт Library Technical Report 1 (кратко называемый TR1). Не являясь официально частью стандарта, отчёт описывает расширения стандартной библиотеки, которые, как ожидалось авторами, должны быть включены в следующую версию языка C++. Степень поддержки TR1 улучшается почти во всех поддерживаемых компиляторах языка C++.
С 2009 года велась работа по обновлению предыдущего стандарта, предварительной версией нового стандарта сперва был C++09, а спустя год C++0x, сегодня - C++11, куда были включены дополнения в ядро языка и расширение стандартной библиотеки, в том числе большую часть TR1.
Никто не обладает правами на язык C++, он является свободным. Однако сам документ стандарта языка (за исключением черновиков) не доступен бесплатно.
Несмотря на то что C++ изначально был нацелен на поддержку очень больших программ, этим, конечно же, его использование не ограничивалось. И в самом деле, объектно-ориентированные средства C++ можно эффективно применять практически к любой задаче программирования. Неудивительно, что C++ используется для создания компиляторов, редакторов, компьютерных игр и программ сетевого обслуживания. Поскольку C++ обладает эффективностью языка С, то программное обеспечение многих высокоэффективных систем построено с использованием C++. Кроме того, C++ - это язык, который чаще всего выбирается для Windows-программирования.
Важно также помнить следующее. Поскольку C++ является супермножеством языка C, то, научившись программировать на C++, можно также программировать и на C [4].
Что такое объектно-ориентированное программирование.
Поскольку именно принципы объектно-ориентированного программирования были основополагающими для разработки C++, важно точно определить, что они собой представляют. Объектно-ориентированное программирование объединило лучшие идеи структурированного с рядом мощных концепций, которые способствуют более эффективной организации программ. Объектно-ориентированный подход к программированию позволяет разложить задачу на составные части таким образом, что каждая составная часть будет представлять собой самостоятельный объект, который содержит собственные инструкции и данные. При таком подходе существенно понижается общий уровень сложности программ, что позволяет программисту справляться с более сложными программами, чем раньше (т.е. написанными при использовании структурированного программирования).
Все языки объектно-ориентированного программирования характеризуются тремя общими признаками: инкапсуляцией, полиморфизмом и наследованием. Рассмотрим кратко каждый из них.
Инкапсуляция. Все программы, как правило, состоят из двух основных элементов: инструкций (кода) и данных. Код - это часть программы, которая выполняет действия, а данные представляют собой информацию, на которую направлены эти действия. Инкапсуляция - это такой механизм программирования, который связывает воедино код и данные, которые он обрабатывает, чтобы обезопасить их как от внешнего вмешательства, так и от неправильного использования.
В объектно-ориентированном языке код и данные могут быть связаны способом, при котором создается самостоятельный черный ящик. В этом "ящике" содержатся все необходимые (для обеспечения самостоятельности) данные и код. При таком связывании кода и данных создается объект, т.е. объект - это конструкция, которая поддерживает инкапсуляцию.
Внутри объекта, код, данные или обе эти составляющие могут быть закрытыми в "рамках" этого объекта или открытыми. Закрытый код (или данные) известен и доступен только другим частям того же объекта. Другими словами, к закрытому коду или данным не может получить доступ та часть программы, которая существует вне этого объекта. Открытый код (или данные) доступен любым другим частям программы, даже если они определены в других объектах. Обычно открытые части объекта используются для предоставления управляемого интерфейса с закрытыми элементами объекта.
Полиморфизм - это свойство, позволяющее использовать один интерфейс для целого класса действий. Конкретное действие определяется характерными признаками ситуации. Рассмотрим, например, стек, или список, добавление и удаление элементов к которому осуществляется по принципу "последним прибыл - первым обслужен". У вас может быть программа, в которой используются три различных типа стека. Один стек предназначен для целочисленных значений, второй - для значений с плавающей точкой и третий - для символов. Алгоритм реализации всех стеков - один и тот же, несмотря на то, что в них хранятся данные различных типов. В необъектно-ориентированном языке программисту пришлось бы создать три различных набора подпрограмм обслуживания стека, причем подпрограммы должны были бы иметь различные имена, а каждый набор - собственный интерфейс. Но благодаря полиморфизму в C++ можно создать один общий набор подпрограмм (один интерфейс), который подходит для всех трех конкретных ситуаций. Таким образом, зная, как использовать один стек, вы можете использовать все остальные.
В более общем виде концепция полиморфизма выражается фразой "один интерфейс - много методов". Это означает, что для группы связанных действий можно использовать один обобщенный интерфейс. Полиморфизм позволяет понизить уровень сложности за счет возможности применения одного и того же интерфейса для задания целого класса действий. Выбор же конкретного действия (т.е. функции) применительно к той или иной ситуации ложится "на плечи" компилятора.
Первые языки объектно-ориентированного программирования были реализованы в виде интерпретаторов, поэтому полиморфизм поддерживался во время выполнения программ. Однако C++ - это транслируемый язык (в отличие от интерпретируемого). Следовательно, в C++ полиморфизм поддерживается на уровне компиляции программы и ее выполнения.
Наследование - это процесс, благодаря которому один объект может приобретать свойства другого. Благодаря наследованию поддерживается концепция иерархической классификации. В виде управляемой иерархической (нисходящей) классификации организуется большинство областей знаний.
Если не использовать иерархическое представление признаков, для каждого объекта пришлось бы в явной форме определить все присущие ему характеристики. Но благодаря наследованию объекту нужно доопределить только те качества, которые делают его уникальным внутри его класса, поскольку он (объект) наследует общие атрибуты своего родителя. Следовательно, именно механизм наследования позволяет одному объекту представлять конкретный экземпляр более общего класса [5].
Достоинства. C++ - чрезвычайно мощный язык, содержащий средства создания эффективных программ практически любого назначения, от низкоуровневых утилит и драйверов до сложных программных комплексов самого различного назначения. В частности:
Высокая совместимость с языком С, позволяющая использовать весь существующий С-код (код С может быть с минимальными переделками скомпилирован компилятором С++; библиотеки, написанные на С, обычно могут быть вызваны из С++ непосредственно без каких-либо дополнительных затрат, в том числе и на уровне функций обратного вызова, позволяя библиотекам, написанным на С, вызывать код, написанный на С++).
Поддерживаются различные стили и технологии программирования, включая традиционное директивное программирование, ООП, обобщенное программирование, метапрограммирование (шаблоны, макросы).
Имеется возможность работы на низком уровне с памятью, адресами, портами.
Возможность создания обобщённых контейнеров и алгоритмов для разных типов данных, их специализация и вычисления на этапе компиляции, используя шаблоны.
Кроссплатформенность. Доступны компиляторы для большого количества платформ, на языке C++ разрабатывают программы для самых различных платформ и систем.
Эффективность. Язык спроектирован так, чтобы дать программисту максимальный контроль над всеми аспектами структуры и порядка исполнения программы.
Недостатки C++ унаследованы от языка-предка - C, и вызваны изначально заданным требованием возможно большей совместимости с C. Это такие недостатки, как:
Синтаксис, провоцирующий ошибки.
Препроцессор, унаследованный от С, очень примитивен.
Плохая поддержка модульности.
C++ позволяет разрабатывать оконные приложения. Для этого можно использовать Microsoft Visual Studio.
Microsoft Visual Studio - линейка продуктов компании Microsoft, включающих интегрированную среду разработки программного обеспечения и ряд других инструментов. Данные продукты позволяют разрабатывать как консольные приложения, так и игры и приложения с графическим интерфейсом, в том числе с поддержкой технологии Windows Forms, а также веб-сайты, веб-приложения, веб-службы как в родном, так и в управляемом кодах для всех платформ, поддерживаемых Windows, Windows Mobile, Windows CE, .NET Framework, Xbox, Windows Phone .NET Compact Framework и Silver light.
Visual Studio включает в себя редактор исходного кода с поддержкой технологии Intelli Sense и возможностью простейшего рефакторинга кода. Встроенный отладчик может работать как отладчик уровня исходного кода, так и отладчик машинного уровня. Остальные встраиваемые инструменты включают в себя редактор форм для упрощения создания графического интерфейса приложения, веб-редактор, дизайнер классов и дизайнер схемы базы данных. Visual Studio позволяет создавать и подключать сторонние дополнения (плагины) для расширения функциональности практически на каждом уровне, включая добавление поддержки систем контроля версий исходного кода (как, например, Subversion и Visual Source Safe), добавление новых наборов инструментов (например, для редактирования и визуального проектирования кода на предметно-ориентированных языках программирования) или инструментов для прочих аспектов процесса разработки программного обеспечения (например, клиент Team Explorer для работы с Team Foundation Server).
Интегрированная среда разработки (IDE) (Рисунок 1.1) - это многофункциональная программа, которая поддерживает многие аспекты разработки программного обеспечения. Интегрированная среда разработки Visual Studio - это стартовая площадка для написания, отладки и сборки кода, а также последующей публикации приложений. Помимо стандартного редактора и отладчика, которые есть в большинстве сред IDE, Visual Studio включает в себя компиляторы, средства автозавершения кода, графические конструкторы и многие другие функции для улучшения процесса разработки.
Рисунок 1.1 Интегрированная среда разработки (IDE)
На рисунке 1.1 представлена среда Visual Studio с открытым проектом и подсказки по основным окнам и функциональных возможностях.
Справа в верхнем углу окна Обозревателя решений можно просматривать файлы кода, перемещаться по ним и управлять ими. Обозреватель решений позволяет упорядочить код путем объединения файлов в решения и проекты.
В центральном окне редактора отображается содержимое файла. В окне редактора можно вносить изменения в код или разрабатывать пользовательский интерфейс, например окно с кнопками или текстовые поля.
Окно изменений Git в нижнем углу справа позволяет отслеживать рабочие элементы и предоставлять общий доступ к коду, используя Git, GitHub или другие технологии управления версиями.
Основные преимущества IDE-среды Visual Studio:
- возможности отладки. Предлагаемые в Visual Studio инструменты отладки являются наилучшим средством для отслеживания загадочных ошибок и диагностирования странного поведения. Разработчик может выполнять свой код по строке за раз, устанавливать интеллектуальные точки прерывания, при желании сохраняя их для использования в будущем, и в любое время просматривать текущую информацию из памяти.
- более высокая скорость разработки. Многие из функциональных возможностей Visual Studio направлены на то, чтобы помогать разработчику делать свою работу как можно быстрее. Удобные функции, вроде функции Intelli Sense (которая умеет перехватывать ошибки и предлагать правильные варианты), функции поиска и замены (которая позволяет отыскивать ключевые слова как в одном файле, так и во всем проекте) и функции автоматического добавления и удаления комментариев (которая может временно скрывать блоки кода), позволяют разработчику работать быстро и эффективно;
- встроенный Web-сервер. Для обслуживания Web-приложения ASP.NET необходим Web-сервер, который будет ожидать Web-запросы и обрабатывать соответствующие страницы. Наличие в Visual Studio интегрированного Web-сервера позволяет запускать Web-сайт прямо из среды проектирования, а также повышает безопасность, исключая вероятность получения доступа к тестовому Web-сайту с какого-нибудь внешнего компьютера, поскольку тестовый сервер может принимать соединения только с локального компьютера;
- меньше кода для написания. Для создания большинства приложений требуется приличное количество стандартного стереотипного кода, и Web-страницы ASP. NET тому не исключение. Например, добавление Web-элемента управления, присоединение обработчиков событий и корректировка форматирования требует установки в разметке страницы ряда деталей. В Visual Studio такие детали устанавливаются автоматически;
- интуитивный стиль кодирования. По умолчанию Visual Studio форматирует код по мере его ввода, автоматически вставляя необходимые отступы и применяя цветовое кодирование для выделения элементов типа комментариев. Такие незначительные отличия делают код более удобным для чтения и менее подверженным ошибкам. Применяемые Visual Studio автоматически параметры форматирования можно даже настраивать, что очень удобно в случаях, когда разработчик предпочитает другой стиль размещения скобок (например, стиль K&R, при котором открывающая скобка размещается на той же строке, что и объявление, которому она предшествует);
- поддержка множества языков при разработке. Visual Studio позволяет писать код на своем языке или любых других предпочитаемых языках, используя все время один и тот же интерфейс (IDE). Более того, Visual Studio также еще позволяет создавать Web-страницы на разных языках, но помещать их все в одно и то же Web-приложение. Единственным ограничением является то, что в каждой Web-странице можно использовать только какой-то один язык (очевидно, что в противном случае проблем при компиляции было бы просто не избежать);
У Visual Studio также есть недостатки, хоть и их можно назвать условными.
Во-первых, программа достаточно массивная.
Вторая причина, по которой Visual Studio еще не стоит на всех в мире компьютерах - это цена.
Ну и третьим, существенным недостатком является ограниченность платформ, способных взаимодействовать с Visual Studio. На данный момент это только Windows и Mac.
2. Описание программного продукта
2.1 Общие сведения
Приложение называется Калькулятор, написано на языке C++ в компиляторе Visual Studio 2019.Тип приложения - Windows Forms. Этот тип приложений позволяет легко реализовать графический интерфейс пользователя.
2.2 Функциональное назначение
Данное приложение предназначено для нахождения НОД двух целых чисел с помощью алгоритма Евклида.
Алгоритм Евклида для нахождения НОД(A, B) выглядит следующим образом:
- Если A = 0, тогда НОД(A, B) = B, поскольку НОД(0, B) = B, и алгоритм останавливается.
- Если B = 0, тогда НОД(A, B) = A, поскольку GCD(A, 0) = A, и алгоритм останавливается.
- Делим A на B с остатком (A = B?Q + R)
- Находим НОД(B, R) при помощи алгоритма Евклида, поскольку НОД(A,B) = НОД(B, R)
Алгоритм Евклида основан на следующих свойствах:
НОД(A,0) = A
НОД(0,B) = B
Если A = BЕQ + R и B?0, то НОД(A, B) = НОД(B, R), где Q - целое число, а R - целое число от 0 до B-1
Программа получает исходные данные из двух текстовых полей, вычисляет НОД и затем выводит его в окно отображения результата.
Также была обработана возможная ошибка пользователя - если в поле ввода пользователь вводит отрицательное число. В этом случае программа выведет в соответствующее поле для комментариев сообщение с просьбой ввести положительное число.
2.3 Описание логической структуры и реализации
Ниже на рисунке 2.1 представлена логическая структура программы:
Рисунок 2.1 Логическая структура программы
Для большей наглядности на рисунке 2.2 обозначим элементы формы так, как они названы в программном коде (Приложение 1):
Рисунок 2.2 Форма и ее элементы
В программе один обработчик события - нажатия на кнопку Вычислить (button1), которая запускает действие программы. Этовидно в заголовке функции:
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^e)
Затем в программе описаны переменные:
floata, b;
Вводятся переменные для каждого из коэффициентов (a, b). Так как значения коэффициентов вводятся через текстовые поля, необходимо преобразовать их из строки в числовые значения. Это выполнено в следующем фрагменте кода:
a = System::Double::Parse(this->textBox1->Text);
b = System::Double::Parse(this->textBox2->Text);
Производится вычисление НОД приведенных значений. Для этого используется простая арифметическая операция - вычитание. Вычисления можно увидеть на следующем фрагменте кода:
if ((a>= 0) && (b>= 0)) {
while (a != b) {
if (a > b) a = a - b;
else b = b - a;
После числовое значение преобразуется в текст и выводится в соответствующее поле. В поле Комментарии выводится сообщение о том, что ошибок при вычислении не возникло.
Это видно в данном фрагменте кода:
textBox3->Text = a.ToString();
textBox4->Text = "Ошибок нет";
Если же значение, введенное пользователем, отрицательное, то вычисление не производится и в окне Комментарии выводится сообщение с требованием ввести положительные числа.
Это показано в данном фрагменте кода:
else {
textBox3->Text = " ";
textBox4->Text = "Введите положительные числа";
2.4 Требования к техническому обеспечению
Требования к системе: для функционирования Visual Studio 2019 необходимы для запуска приложения, поэтому следует указать их:
- процессор с тактовой частотой не ниже 1,8 ГГц. Рекомендуется использовать как минимум двухъядерный процессор;
- 2 Гбайт ОЗУ; рекомендуется 8 Гбайт ОЗУ (минимум 2,5 Гбайт при выполнении на виртуальной машине);
- место на жестком диске: до 210 Гбайт (минимум 800 Мбайт) свободного места в зависимости от установленных компонентов; обычно для установки требуется от 20 до 50 Гбайт свободного места;
- скорость жесткого диска: для повышения производительности установите Windows и Visual Studio на твердотельный накопитель (SSD);
- видеоадаптер с минимальным разрешением 720p (1280 на 720 пикселей); для оптимальной работы Visual Studio рекомендуется разрешение WXGA (1366 на 768 пикселей) или более высокое.
2.5 Вызов программы
Вызов программы осуществляется через стандартный запуск программ в Visual Studio 2019 - Локальный отладчик Windows. При запуске открывается окно формы. В полях коэффициентов заданы начальные нули, остальные поля пусты.
2.6 Входные данные
Входные данные вводятся при помощи текстовых полей, затем программа преобразует эти данные из строки в число. Название формы располагается сверху. Первые два текстовых поля подписаны ярлыками в соответствии с коэффициентами - a =, b=. Кнопка называется Вычислить, она запускает процесс вычислений. Текстовое поле для вывода результата вычисления подписано НОД =. Текстовое поле для вывода комментариев подписано Комментарии.
2.7 Выходные данные
Выходные данные выводятся в текстовом поле НОД = и Комментарии. В первом выводится значение вычисленного НОД. Во втором выводятся сообщения "Ошибок нет", "Введите положительные числа" в зависимости от введенных значений.
2.8 Описание тестовых прогонов
Описание контрольных примеров приведено в таблице 2.1:
Таблица 2.1 - Контрольные примеры
Входные данные |
Выходные данные |
|
1) 18, 30 |
6, Ошибок нет |
|
2) 255, 15 |
15, Ошибок нет |
|
3) 500, 150 |
50, Ошибок нет |
|
4) -18, 30 |
" ", Введите положительные числа |
|
5) 255, -15 |
" ", Введите положительные числа |
|
6) -500, -150 |
" ", Введите положительные числа |
Результаты тестовых прогонов на контрольных примерах 1 - 6 (таблица 2.1) представлены на рисунках 2.3 - 2.8.
Вывод результата в примерах 1 - 3:
Рисунок 2.3 Проверка работы программы на контрольном примере 1
Рисунок 2.4 Проверка работы программы на контрольном примере 2
Рисунок 2.5 Проверка работы программы на контрольном примере 3
Вывод сообщения о введенном отрицательном числе 4 - 6:
Рисунок 2.6 Проверка работы программы на контрольном примере 4
Рисунок 2.7 Проверка работы программы на контрольном примере 5
Рисунок 2.8 Проверка работы программы на контрольном примере 6
2.9 Инструкция по использованию программы
В первых двух текстовых полях, подписанных "a=", "b=" вводятся значения для вычисления НОД. Затем следует нажать кнопку "Вычислить". Ответ будет выведен в текстовом поле. Если введено отрицательное число, в поле "НОД" не будет ничего выведено, а в поле "Комментарии" будет выведено сообщение "Введите положительные числа".
Кнопка "Вычислить" запускает процесс вычисления. Ее следует нажимать только в том случае, когда поля ввода заполнены корректно. Если в них останутся нули, то программа не будет работать, пока не будут введены числа.
Заключение
В результате выполнения курсовой работы было создано приложение, позволяющее вычислять НОД двух целых чисел с помощью алгоритма Евклида.
При его создании были использованы функция sqrt(), Text, ToString().
Приложение реализовано при помощи Windows Forms.
Подобное приложение актуально и полезно, так как оно позволяет быстро решить одну из элементарных математических задач, которая очень часто встречается при выполнении вычислений. Это приложение может значительно увеличить скорость выполнения вычислений и при этом увеличит их точность: оно не позволит совершить вычислительную ошибку или использовать неправильную формулу, все вычисления выполняет машина.
Таким образом, в процессе выполнения курсовой работы был глубже изучен язык программирования C++ и его возможности, возможности Microsoft Visual Studio, надлежащим образом было изучено создание и предназначение Windows-приложений.
Список использованных источников
1. Программирование на языке высокого уровня. Программирование на языке C++: учебное пособие / Т.И. Немцова, С.Ю. Голова, А.И. Терентьев; под ред. Л.Г. Гагариной. - М.: ИД ФОРУМ: ИНФРА-М, 2021. - 512 с. - Текст: электронный. - URL: https://znanium.com/catalog/product/1172261
2. Основы программирования на языке С: учебное пособие / В.Г. Дорогов, Е.Г. Дорогова, Л.Г. Гагарина - М.: ИД ФОРУМ: ИНФРА-М, 2021. - 224 с. - Текст: электронный. - URL: https://znanium.com/catalog/document?id=369664
3. Программирование графики наС++. Теория и примеры: учебное пособие / В.И. Корнеев, Л.Г. Гагарина, М.В. Корнеева. - М.: ФОРУМ: ИНФРА-М, 2019. - 517 с. - Текст: электронный. - URL: https://znanium.com/catalog/product/1018909
4. Язык С++ и объектно-ориентированное программирование в С++. Лабораторный практикум: Учебное пособие для вузов / Ашарина И.В., Крупская Ж.Ф. - М.: Гор. линия - Телеком, 2018. - 232 с. - Текст: электронный. - URL: http://new.znanium.com/catalog/product/973780
5. Объектно-ориентированное программирование на С++: учебник / И.В. Баранова, С.Н. Баранов, И.В. Баженова [и др.]. - К.: Сиб. федер. ун-т, 2019. - 288 с. - Текст: электронный. - URL: https://znanium.com/catalog/product/1819676
Приложение 1
Листинг программы Калькулятор
#pragma once
namespace Project2
{
using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;
/// <summary>
/// Сводка для MyForm
/// </summary>
public ref class MyForm : public System::Windows::Forms::Form
{
public:
MyForm(void)
{
InitializeComponent();
//
//TODO: добавьте код конструктора
//
}
protected:
/// <summary>
/// Освободить все используемые ресурсы.
/// </summary>
~MyForm()
{
if (components)
{
delete components;
}
}
private: System::Windows::Forms::Label^ label1;
protected:
private: System::Windows::Forms::Label^ label2;
private: System::Windows::Forms::Label^ label3;
private: System::Windows::Forms::Label^ label4;
private: System::Windows::Forms::Button^ button1;
private: System::Windows::Forms::TextBox^ textBox1;
private: System::Windows::Forms::TextBox^ textBox2;
private: System::Windows::Forms::TextBox^ textBox3;
private: System::Windows::Forms::TextBox^ textBox4;
private:
/// <summary>
/// Обязательная переменная конструктора.
/// </summary>
System::ComponentModel::Container ^components;
#pragma region Windows Form Designer generated code
/// <summary>
/// Требуемый метод для поддержки конструктора - не изменяйте
/// содержимое этого метода с помощью редактора кода.
/// </summary>
void InitializeComponent(void)
{
this->label1 = (gcnew System::Windows::Forms::Label());
this->label2 = (gcnew System::Windows::Forms::Label());
this->label3 = (gcnew System::Windows::Forms::Label());
this->label4 = (gcnew System::Windows::Forms::Label());
this->button1 = (gcnew System::Windows::Forms::Button());
this->textBox1 = (gcnew System::Windows::Forms::TextBox());
this->textBox2 = (gcnew System::Windows::Forms::TextBox());
this->textBox3 = (gcnew System::Windows::Forms::TextBox());
this->textBox4 = (gcnew System::Windows::Forms::TextBox());
this->SuspendLayout();
//
// label1
//
this->label1->AutoSize = true;
this->label1->Location = System::Drawing::Point(73, 27);
this->label1->Name = L"label1";
this->label1->Size = System::Drawing::Size(25, 16);
this->label1->TabIndex = 0;
this->label1->Text = L"a =";
this->label1->Click += gcnew System::EventHandler(this, &MyForm::label1_Click);
//
// label2
//
this->label2->AutoSize = true;
this->label2->Location = System::Drawing::Point(21, 70);
this->label2->Name = L"label2";
this->label2->Size = System::Drawing::Size(25, 16);
this->label2->TabIndex = 1;
this->label2->Text = L"b =";
//
// label3
//
this->label3->AutoSize = true;
this->label3->Location = System::Drawing::Point(49, 209);
this->label3->Name = L"label3";
this->label3->Size = System::Drawing::Size(36, 16);
this->label3->TabIndex = 2;
this->label3->Text = L"НОД";
//
// label4
//
this->label4->AutoSize = true;
this->label4->Location = System::Drawing::Point(84, 311);
this->label4->Name = L"label4";
this->label4->Size = System::Drawing::Size(96, 16);
this->label4->TabIndex = 3;
this->label4->Text = L"Комментарии";
//
// button1
//
this->button1->Location = System::Drawing::Point(229, 63);
this->button1->Name = L"button1";
this->button1->Size = System::Drawing::Size(75, 23);
this->button1->TabIndex = 4;
this->button1->Text = L"Вычислить";
this->button1->UseVisualStyleBackColor = true;
//
// textBox1
//
this->textBox1->Location = System::Drawing::Point(373, 108);
this->textBox1->Name = L"textBox1";
this->textBox1->Size = System::Drawing::Size(100, 22);
this->textBox1->TabIndex = 5;
//
// textBox2
//
this->textBox2->Location = System::Drawing::Point(52, 126);
this->textBox2->Name = L"textBox2";
this->textBox2->Size = System::Drawing::Size(100, 22);
this->textBox2->TabIndex = 6;
//
// textBox3
//
this->textBox3->Location = System::Drawing::Point(266, 143);
this->textBox3->Name = L"textBox3";
this->textBox3->Size = System::Drawing::Size(100, 22);
this->textBox3->TabIndex = 7;
//
// textBox4
//
this->textBox4->Location = System::Drawing::Point(161, 181);
this->textBox4->Name = L"textBox4";
this->textBox4->Size = System::Drawing::Size(100, 22);
this->textBox4->TabIndex = 8;
//
// MyForm
//
this->AutoScaleDimensions = System::Drawing::SizeF(8, 16);
this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
this->ClientSize = System::Drawing::Size(753, 398);
this->Controls->Add(this->textBox4);
this->Controls->Add(this->textBox3);
this->Controls->Add(this->textBox2);
this->Controls->Add(this->textBox1);
this->Controls->Add(this->button1);
this->Controls->Add(this->label4);
this->Controls->Add(this->label3);
this->Controls->Add(this->label2);
this->Controls->Add(this->label1);
this->Name = L"MyForm";
this->Text = L"MyForm";
this->ResumeLayout(false);
this->PerformLayout();
}
#pragma endregion
private: System::Void MyForm_Load(System::Object^ sender, System::EventArgs^ e) {
}
private: System::Void label1_Click(System::Object^ sender, System::EventArgs^ e)
{
}
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
float a, b;
a = System::Double::Parse(this->textBox1->Text);
b = System::Double::Parse(this->textBox2->Text);
if ((a >= 0) && (b >= 0))
{
while (a != b)
{
if (a > b) a = a - b;
else b = b - a;
}
textBox3->Text = a.ToString();
textBox4->Text = "Ошибок нет";
}
else
{
textBox3->Text = " ";
textBox4->Text = "Введите положительные числа";
}
}
Размещено на Allbest.ru
Подобные документы
Особенности дистанционного образования. Разработка электронного практикума по дисциплине "Методы и средства проектирования информационных систем и технологий". Предметная область, выделение информационных объектов. Разработка программного обеспечения.
дипломная работа [2,1 M], добавлен 27.10.2017Выбор инструментальных средств для разработки лабораторного практикума по работе с операционной системой Windows ХР. Рекомендации по установке виртуальной машины. Подключение жесткого диска, его разделение на разделы. Управление пользователями и группами.
дипломная работа [4,7 M], добавлен 17.08.2013Концепция построения виртуальной лаборатории (ВЛ) "Программирование микроконтроллерных систем". Принцип построения лабораторного практикума. Архитектура аппаратного обеспечения ВЛ. Аппаратные способы реализации генератора сигналов произвольной формы.
магистерская работа [669,4 K], добавлен 29.06.2009Обзор систем дистанционного образования. Функционально-ориентированное проектирование электронного практикума по дисциплине "Мультимедиа технологии". Разработка информационного и программного обеспечения системы. Построение логической модели данных.
дипломная работа [2,7 M], добавлен 27.10.2017Система дистанционного обучения Distance Learning Belarus. Разработка лабораторного практикума по курсу "Разработка трансляторов для языков программирования". Базовые концепции разработки приложений для Интернет. Схема диалога пользователя с системой.
курсовая работа [1,3 M], добавлен 03.11.2012Методы разработки автоматизированных систем. Характеристика языка программирования Delphi и операционной системы Windows. Разработка автоматизированной системы контроля знаний на примере дисциплины "История мира". Этапы разработки программного продукта.
курсовая работа [3,8 M], добавлен 18.05.2014История развития и классификация информационных систем. Применение информационных систем в образовании. Практические аспекты использования прикладного программного обеспечения при разработке сайта. Функциональные возможности программного приложения.
курсовая работа [47,9 K], добавлен 19.01.2017Pascal - высокоуровневый язык программирования общего назначения и интегрированная среда разработки программного обеспечения для платформ DOS и Windows. Входная информация, требуемая для решения задачи и принятые обозначения; описание алгоритма.
курсовая работа [259,6 K], добавлен 18.01.2011Изучение языка низкого уровня ассемблер для написания примера программы для 16 битного приложения. Разработка и реализация алгоритма поднесения чисел к степени чисел над полем за основанием 2 (mod 2). Иллюстрация техники создания DOS приложения.
курсовая работа [33,3 K], добавлен 08.11.2011Методы разработки автоматизированных систем. Характеристика языка программирования Delphi и операционной системы Windows. Назначение и область применение, принцип действия идентификаторов. Этапы разработки программного продукта, требования к нему.
курсовая работа [903,9 K], добавлен 14.02.2015