Материал: Программная реализация механизма перевода чисел в различные системы счисления

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

= dnqn+dn-1qn-1+…+d1q1+d0q0+d-1q-1+d-2q-2+…+d-(m-1)q-(m-1)+d-mq-m;

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

Для того, чтобы выполнить преобразование двоичного числа в шестнадцатеричное в MS Excel необходимо использовать функцию ДВ.В.ШЕСТ. На рисунке 1 представлены расчеты и формулы в MS Excel числа 101010 в различные системы счисления.

Рисунок 1 - Перевод числа в различные системы счисления и наоборот

3. Разработка алгоритмов и структур данных


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

Рисунок 2 - Блок-схема программы для перевода числе в различные системы счисления и обратно

4. Программная реализация алгоритмов перевода в различные системы счисления на языке программирования С#


C# - объектно-ориентированный <https://ru.wikipedia.org/wiki/%D0%9E%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%BD%D0%BE-%D0%BE%D1%80%D0%B8%D0%B5%D0%BD%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5> язык программирования <https://ru.wikipedia.org/wiki/%D0%AF%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F>. Разработан в 1998 <https://ru.wikipedia.org/wiki/1998>-2001 годах <https://ru.wikipedia.org/wiki/2001_%D0%B3%D0%BE%D0%B4> группой инженеров под руководством Андерса Хейлсберга <https://ru.wikipedia.org/wiki/%D0%A5%D0%B5%D0%B9%D0%BB%D1%81%D0%B1%D0%B5%D1%80%D0%B3,_%D0%90%D0%BD%D0%B4%D0%B5%D1%80%D1%81> в компании Microsoft <https://ru.wikipedia.org/wiki/Microsoft> как язык разработки приложений для платформы Microsoft .NET Framework <https://ru.wikipedia.org/wiki/.NET_Framework> и впоследствии был стандартизирован как ECMA <https://ru.wikipedia.org/wiki/ECMA>-334 и ISO <https://ru.wikipedia.org/wiki/ISO>/IEC <https://ru.wikipedia.org/wiki/IEC> 23270.# относится к семье языков с C-подобным синтаксисом <https://ru.wikipedia.org/w/index.php?title=C-%D0%BF%D0%BE%D0%B4%D0%BE%D0%B1%D0%BD%D1%8B%D0%B9_%D1%81%D0%B8%D0%BD%D1%82%D0%B0%D0%BA%D1%81%D0%B8%D1%81&action=edit&redlink=1>, из них его синтаксис наиболее близок к C++ <https://ru.wikipedia.org/wiki/C%2B%2B> и Java <https://ru.wikipedia.org/wiki/Java>. Язык имеет статическую типизацию <https://ru.wikipedia.org/wiki/%D0%A1%D1%82%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F_%D1%82%D0%B8%D0%BF%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F>, поддерживает полиморфизм, перегрузку операторов <https://ru.wikipedia.org/wiki/%D0%9F%D0%B5%D1%80%D0%B5%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B0_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%BE%D0%B2> (в том числе операторов явного и неявного приведения типа), делегаты <https://ru.wikipedia.org/wiki/%D0%94%D0%B5%D0%BB%D0%B5%D0%B3%D0%B0%D1%82_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)>, атрибуты, события <https://ru.wikipedia.org/wiki/%D0%A1%D0%BE%D0%B1%D1%8B%D1%82%D0%B8%D0%B9%D0%BD%D0%BE-%D0%BE%D1%80%D0%B8%D0%B5%D0%BD%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5>, свойства <https://ru.wikipedia.org/wiki/%D0%A1%D0%B2%D0%BE%D0%B9%D1%81%D1%82%D0%B2%D0%BE_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)>, обобщённые <https://ru.wikipedia.org/wiki/%D0%9E%D0%B1%D0%BE%D0%B1%D1%89%D1%91%D0%BD%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5> типы и методы, итераторы <https://ru.wikipedia.org/wiki/%D0%98%D1%82%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)>, анонимные функции <https://ru.wikipedia.org/wiki/%D0%90%D0%BD%D0%BE%D0%BD%D0%B8%D0%BC%D0%BD%D0%B0%D1%8F_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D1%8F> с поддержкой замыканий <https://ru.wikipedia.org/wiki/%D0%97%D0%B0%D0%BC%D1%8B%D0%BA%D0%B0%D0%BD%D0%B8%D0%B5_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)>, LINQ <https://ru.wikipedia.org/wiki/Language_Integrated_Query>, исключения <https://ru.wikipedia.org/wiki/%D0%9E%D0%B1%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0_%D0%B8%D1%81%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B9>, комментарии <https://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BC%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%80%D0%B8%D0%B8_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)> в формате XML <https://ru.wikipedia.org/wiki/XML>.

Переняв многое от своих предшественников - языков C++ <https://ru.wikipedia.org/wiki/C%2B%2B>, Pascal <https://ru.wikipedia.org/wiki/Pascal_(%D1%8F%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F)>, Модула <https://ru.wikipedia.org/wiki/%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D0%B0-2>, Smalltalk <https://ru.wikipedia.org/wiki/Smalltalk> и, в особенности, Java <https://ru.wikipedia.org/wiki/Java_(%D1%8F%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F)> - С#, опираясь на практику их использования, исключает некоторые модели, зарекомендовавшие себя как проблематичные при разработке программных систем, например, C# в отличие от C++ не поддерживает множественное наследование <https://ru.wikipedia.org/wiki/%D0%9C%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D0%BE%D0%B5_%D0%BD%D0%B0%D1%81%D0%BB%D0%B5%D0%B4%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5> классов (между тем допускается множественное наследование интерфейсов <https://ru.wikipedia.org/wiki/%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81_(%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%BD%D0%BE-%D0%BE%D1%80%D0%B8%D0%B5%D0%BD%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)>).

Синтаксис C# очень выразителен, но прост в изучении. Все, кто знаком с языками C, C++ или Java с легкостью узнают синтаксис с фигурными скобками, характерный для языка C#. Разработчики, знающие любой из этих языков, как правило, смогут добиться эффективной работы с языком C# за очень короткое время. Синтаксис C# делает проще то, что было сложно в C++, и обеспечивает мощные возможности, такие как типы значений Nullable, перечисления, делегаты, лямбда-выражения и прямой доступ к памяти, чего нет в Java. C# поддерживает универсальные методы и типы, обеспечивая более высокий уровень безопасности и производительности, а также итераторы, позволяющие при реализации коллекций классов определять собственное поведение итерации, которое может легко использоваться в клиентском коде. Выражения LINQ делают строго типизированный запрос очень удобной языковой конструкцией.

Как объектно-ориентированный язык, C# поддерживает понятия инкапсуляции, наследования и полиморфизма. Все переменные и методы, включая метод Main - точку входа приложения - инкапсулируются в определения классов. Класс может наследовать непосредственно из одного родительного класса, но может реализовывать любое число интерфейсов. Для методов, которые переопределяют виртуальные методы в родительском классе, необходимо ключевое слово override, чтобы исключить случайное повторное определение. В языке C# структура похожа на облегченный класс: это тип, распределяемый в стеке, реализующий интерфейсы, но не поддерживающий наследование.

При реализации программы на C# есть ряд преимуществ, а именно:

-       расширяемость системы (в С# можно подгружать любые exe, импортировать классы и объекты из других программ);

-       кросплатформенность (mono, концепция NET);

-       сложность разработки и сопровождения (подбор кадров, читаемость кода, документированность языка);

-       степень открытости исходных текстов библиотек, исполняемых программ, количество литературы и помощь (MSDN);

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

-       защищенность и контроль версий подключаемых алгоритмов (концепция NET);

-       трудоемкость написания;

-       скорость работы (распределение процессов, распределение данных скорость работы с данными);

-       удобство разработки (среда разработки по сравнению с Delphi7)

На рисунке 3 предоставлена форма программы перевода чисел в различные системы счисления, код программного обеспечения предоставлен в приложении 1.

Рисунок 3 - Форма программы перевода чисел в различные системы счисления

5. Тестирование разработанного программного обеспечения


Существует несколько видов процедур тестирования программного обеспечения, которые приходится выполнять:

-       модульное тестирование;

-       комплексное тестирование;

-       подтверждение правильности и верификация;

-       тестирование в условиях нехватки ресурсов, ошибки и их исправление;

-       тестирование производительности;

-       тестирование удобства использования.

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

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

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

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

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

Для тестирования разработанного программного обеспечения выбрано число 101010, для того, чтобы была возможность проверить правильность работы программы (расчеты представлены в разделе 2)

На рисунке 4 представлена работа программы в двоичной системы счисления, число 101010 переведено в восьмеричную, десятичную и шестнадцатеричную системы соответственно.

Рисунок 4 - Перевод числа из двоичной системы

На рисунке 5 представлена работа программы в восьмеричной системе счисления, число 101010 переведено в двоичную, десятичную и шестнадцатеричную системы соответственно.

Рисунок 5 - Перевод числа из восьмеричной системы


Рисунок 6 - Перевод числа из десятичной системы

На рисунке 7 представлена работа программы в шестнадцатеричной системе счисления, число 101010 переведено в двоичную, восьмеричную и десятичную системы соответственно.

Рисунок 7 - Перевод числа из шестнадцатеричной системы

Многие проекты стремятся отложить процедуру тестирование на последний момент - тот, где оно будет срезано в преддверии контрольного срока. Нужно начать тестирование намного раньше наступления этого срока. Как только появится какая-либо рабочая программа, ее необходимо протестировать. Большинство процедур тестирования должно выполняться автоматически. Важно заметить, что под термином «автоматически» имеется в виду автоматическая интерпретация результатов теста. Необходимо проводить тестирование как можно чаще и всегда делается перед возвращением исходного текста в библиотеку.

Заключение


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

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

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

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

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

Список использованных источников


1.      C# Language Specification. Microsoft Corporation, 2005.

2.      А. Хейлсберг, М. Торгерсен, С. Вилтамут, П. Голд Язык программирования C#. Классика Computers Science. 4-е издание <http://www.piter.com/book.phtml?978545900283> = C# Programming Language (Covering C# 4.0), 4th Ed. - СПб.: «Питер» <https://ru.wikipedia.org/wiki/%D0%9F%D0%B8%D1%82%D0%B5%D1%80_(%D0%B8%D0%B7%D0%B4%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D1%82%D0%B2%D0%BE)>, 2012. - 784 с. - ISBN 978-5-459-00283-6 <https://ru.wikipedia.org/wiki/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%98%D1%81%D1%82%D0%BE%D1%87%D0%BD%D0%B8%D0%BA%D0%B8_%D0%BA%D0%BD%D0%B8%D0%B3/9785459002836>.

3.      Герберт Шилдт. C# 4.0: полное руководство = C# 4.0 The Complete Reference. - М.: «Вильямс» <https://ru.wikipedia.org/w/index.php?title=%D0%92%D0%B8%D0%BB%D1%8C%D1%8F%D0%BC%D1%81_(%D0%B8%D0%B7%D0%B4%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D1%82%D0%B2%D0%BE)&action=edit&redlink=1>, 2010. - С. 1056. - ISBN 978-5-8459-1684-6 <https://ru.wikipedia.org/wiki/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%98%D1%81%D1%82%D0%BE%D1%87%D0%BD%D0%B8%D0%BA%D0%B8_%D0%BA%D0%BD%D0%B8%D0%B3/9785845916846>.

4.      Гуннерсон Э. Введение в C#. СПб.: Питер, 2005.

.        Джесс Либерти «Программирование на С#» 2-е издание, 456с.,2005г

.        Джозеф Албахари, Бен Албахари C# 5.0. Справочник. Полное описание языка <http://www.williamspublishing.com/Books/978-5-8459-1819-2.html> = C# 5.0 in a Nutshell: The Definitive Reference. - М.: «Вильямс» <https://ru.wikipedia.org/w/index.php?title=%D0%92%D0%B8%D0%BB%D1%8C%D1%8F%D0%BC%D1%81_(%D0%B8%D0%B7%D0%B4%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D1%82%D0%B2%D0%BE)&action=edit&redlink=1>, 2013. - 1008 с. -ISBN 978-5-8459-1819-2 <https://ru.wikipedia.org/wiki/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%98%D1%81%D1%82%D0%BE%D1%87%D0%BD%D0%B8%D0%BA%D0%B8_%D0%BA%D0%BD%D0%B8%D0%B3/9785845918192>.

7.      Джон Скит C# для профессионалов: тонкости программирования, 3-е издание, новый перевод = C# in Depth, 3rd ed.. - М.: «Вильямс» <https://ru.wikipedia.org/w/index.php?title=%D0%92%D0%B8%D0%BB%D1%8C%D1%8F%D0%BC%D1%81_(%D0%B8%D0%B7%D0%B4%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D1%82%D0%B2%D0%BE)&action=edit&redlink=1>, 2014. - 608 с. - ISBN 978-5-8459-1909-0 <https://ru.wikipedia.org/wiki/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%98%D1%81%D1%82%D0%BE%D1%87%D0%BD%D0%B8%D0%BA%D0%B8_%D0%BA%D0%BD%D0%B8%D0%B3/9785845919090>.

.        Кристиан Нейгел и др. C# 5.0 и платформа .NET 4.5 для профессионалов = Professional C# 5.0 and .NET 4.5. - М.: «Диалектика» <https://ru.wikipedia.org/w/index.php?title=%D0%94%D0%B8%D0%B0%D0%BB%D0%B5%D0%BA%D1%82%D0%B8%D0%BA%D0%B0_(%D0%B8%D0%B7%D0%B4%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D1%82%D0%B2%D0%BE)&action=edit&redlink=1>, 2013. - 1440 с. - ISBN 978-5-8459-1850-5 <https://ru.wikipedia.org/wiki/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%98%D1%81%D1%82%D0%BE%D1%87%D0%BD%D0%B8%D0%BA%D0%B8_%D0%BA%D0%BD%D0%B8%D0%B3/9785845918505>.

.        Кристиан Нейгел, Карли Уотсон и др. Visual C# 2010: полный курс = Beginning Microsoft Visual C# 2010. - М.: Диалектика <https://ru.wikipedia.org/w/index.php?title=%D0%94%D0%B8%D0%B0%D0%BB%D0%B5%D0%BA%D1%82%D0%B8%D0%BA%D0%B0_(%D0%B8%D0%B7%D0%B4%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D1%82%D0%B2%D0%BE)&action=edit&redlink=1>, 2010. - ISBN 978-5-8459-1699-0 <https://ru.wikipedia.org/wiki/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%98%D1%81%D1%82%D0%BE%D1%87%D0%BD%D0%B8%D0%BA%D0%B8_%D0%BA%D0%BD%D0%B8%D0%B3/9785845916990>.

10.    Обширнейшая информация по платформе .NET: www.gotdotnet.com.

.        Олливерсон М. Методы высокоуровневого программирования.:Москва,2005.