Разработка 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++ можно создать один общий набор подпрограмм (один интерфейс), который подходит для всех трех конкретных ситуаций. Таким образом, зная, как использовать один стек, вы можете использовать все остальные.