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

Целые числа в позиционных системах счисления. Недостатки двоичной системы. Разработка алгоритмов, структур данных. Программная реализация алгоритмов перевода в различные системы счисления на языке программирования С. Тестирование программного обеспечения.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 03.01.2015
Размер файла 593,3 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

ФЕДЕРАЛЬНОЕ Государственное АВТОНОМНОЕ образовательное учреждение Высшего профессионального образования

«БЕЛГОРОДСКИЙ ГОСУДАРСТВЕННЫЙ НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ»

ИНСТИТУТ ИНЖЕНЕРНЫХ ТЕХНОЛОГИЙ И ЕСТЕСТВЕННЫХ НАУК

ФАКУЛЬТЕТ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ И ПРИКЛАДНОЙ МАТЕМАТИКИ

Кафедра прикладной математики и информатики

Курсовая работа

ПРОГРАММНАЯ РЕАЛИЗАЦИЯ МЕХАНИЗМА ПЕРЕВОДА ЧИСЕЛ В РАЗЛИЧНЫЕ СИСТЕМЫ СЧИСЛЕНИЯ

по дисциплине: «Информатика и программирование»

студента Иванова Ивана Ивановича,

Научный руководитель: к.т.н. Смирнова В.В.

БЕЛГОРОД 2014

Содержание

  • Введение
  • 1. Теоретическая часть
  • 2. Разработка задачи средствами прикладных программ
  • 3. Разработка алгоритмов и структур данных
  • 4. Программная реализация алгоритмов перевода в различные системы счисления на языке программирования С#
  • 5. Тестирование разработанного программного обеспечения
  • Заключение
  • Список использованных источников
  • Приложение
  • Введение
  • Программная реализация перевода чисел в различные системы счисления в некоторых сферах деятельности человека является необходимостью. Данный вопрос является основным в данной курсовой работе, основной целью которой будет создание и реализация программного проекта. Основными задачами работы будет анализ теоретического материала по вопросу перевода чисел в различные системы счисления, а так же выбор возможного варианта программной реализации практического задания. Подготовка курсовой работы способствует:
  • - закреплению, углублению и обобщению знаний, полученных студентами в процессе изучения лекционных курсов по дисциплине «Информатика и программирование»;
  • - развитию умений и навыков, полученных при выполнении лабораторных работ;
  • - применению этих знаний, умений и навыков к решению конкретных задач;
  • - развитию навыков работы со специальной литературой и разработки программного обеспечения.
  • Язык программирования С# отличается минимализмом. Программы компилируются с помощью однопроходного компилятора, чтобы каждой элементарной составляющей программы после компиляции соответствовало небольшое число машинных команд, а использование базовых элементов языка не задействовало библиотеку времени выполнения. Однопроходный компилятор компилирует программу, не возвращаясь назад, к уже обработанному тексту. Поэтому использованию функций и переменных должно предшествовать их объявление. Код на Си можно писать на низком уровне абстракции, почти как на ассемблере. Си называют «универсальным ассемблером» или «ассемблером высокого уровня», что отражает различие языков ассемблера для разных платформ и единство стандарта Си, код которого может быть скомпилирован без изменений практически на любой модели компьютера. Си часто называют языком среднего уровня или даже низкого уровня, учитывая то, как близко он работает к реальным устройствам. Однако, в строгой классификации, он является языком высокого уровня. С# имеет массу преимуществ: простота, объектная ориентированность, типовая защищенность, сборка мусора, поддержка совместимости версий и многое другое. Данные возможности позволяют быстро и легко разрабатывать приложения. При создании С# его авторы учитывали достижения многих других языков программирования: C++, С, Java, Visual Basic и т.д. Ввиду высокой объектной ориентированности, язык С# подходит для быстрого конструирования различных компонентов -- от высокоуровневой бизнес-логики до системных приложений, использующих низкоуровневый код. Программа на С# состоит из одного или нескольких файлов. Каждый файл может содержать одно или несколько пространств имен. Каждое пространство имен может содержать вложенные пространства имен и типы, такие как классы, структуры, интерфейсы, перечисления и делегаты-- функциональные типы.
  • C# - это язык программирования, предназначенный для разработки самых разнообразных приложений, предназначенных для выполнения в среде .NET Framework. Язык C# прост, строго типизирован и объектно-ориентирован. Благодаря множеству нововведений C# обеспечивает возможность быстрой разработки приложений.
  • Курсовая работа состоит из трех разделов, введения, заключения и списка использованной литературы.

1. Теоретическая часть

Система счисления - это совокупность приемов и правил, по которым числа записываются и читаются. Существуют позиционные и непозиционные системы счисления. В непозиционных системах счисления вес цифры (т. е. тот вклад, который она вносит в значение числа) не зависит от ее позиции в записи числа. Так, в римской системе счисления в числе ХХХII (тридцать два) вес цифры Х в любой позиции равен просто десяти.

В позиционных системах счисления вес каждой цифры изменяется в зависимости от ее положения (позиции) в последовательности цифр, изображающих число. Например, в числе 757,7 первая семерка означает 7 сотен, вторая - 7 единиц, а третья - 7 десятых долей единицы. Сама же запись числа 757,7 означает сокращенную запись выражения. Любая позиционная система счисления характеризуется своим основанием.

Основание позиционной системы счисления - количество различных цифр, используемых для изображения чисел в данной системе счисления. За основание системы можно принять любое натуральное число - два, три, четыре и т.д. Следовательно, возможно бесчисленное множество позиционных систем: двоичная, троичная, четверичная и т.д.

Целые числа в позиционных системах счисления. В каждой системе счисления цифры упорядочены в соответствии с их значениями: 1 больше 0, 2 больше 1 и т.д. Продвижением цифры называют замену её следующей по величине. Продвинуть цифру 1 значит заменить её на 2, продвинуть цифру 2 значит заменить её на 3 и т.д. Продвижение старшей цифры (например, цифры 9 в десятичной системе) означает замену её на 0. В двоичной системе, использующей только две цифры - 0 и 1, продвижение 0 означает замену его на 1, а продвижение 1 - замену её на 0.

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

· в двоичной системе: 0, 1, 10, 11, 100, 101, 110, 111, 1000, 1001;

· в восьмеричной системе: 0, 1, 2, 3, 4, 5, 6, 7, 10, 11.

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

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

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

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

- двоичная арифметика намного проще десятичной.

Недостаток двоичной системы - быстрый рост числа разрядов, необходимых для записи чисел.

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

Числа в этих системах читаются почти так же легко, как десятичные, требуют соответственно в три (восьмеричная) и в четыре (шестнадцатеричная) раза меньше разрядов, чем в двоичной системе (ведь числа 8 и 16 - соответственно, третья и четвертая степени числа 2).

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

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

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

Пример. Число перевести в восьмеричную систему счисления.

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

Пример. Число перевести в шестнадцатеричную систему счисления:

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

Пример. Число перевести в двоичную систему счисления:

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

Пример. Число перевести в двоичную систему счисления:

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

Пример 1. Число перевести в восьмеричную систему счисления:

Пример 2. Число перевести в шестнадцатеричную систему счисления:

Обратный перевод числа:

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

.

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

.

2. Решение задачи средствами прикладных программ

счисление двоичный программирование перевод

Microsoft Excel (также иногда называется Microsoft Office Excel) - программа для работы с электронными таблицами, созданная корпорацией Microsoft для Microsoft Windows, Windows NT и Mac OS. Она предоставляет возможности экономико-статистических расчетов, графические инструменты и, за исключением Excel 2008 под Mac OS X, язык макропрограммирования VBA (Visual Basic for Application). Microsoft Excel входит в состав Microsoft Office и на сегодняшний день Excel является одним из наиболее популярных приложений в мире. Ценной возможностью Excel является возможность писать код на основе Visual Basic для приложений (VBA). Этот код пишется с использованием отдельного от таблиц редактора. Управление электронной таблицей осуществляется посредством объектно-ориентированной модели кода и данных. С помощью этого кода данные входных таблиц будут мгновенно обрабатываться и отображаться в таблицах и диаграммах (графиках). Таблица становится интерфейсом кода, позволяя легко работать изменять его и управлять расчётами

Система счисления -- это метод представления чисел символическими знаками, в котором для удобной и компактной группировки чисел используется значение, называемое основанием. Наиболее распространенной является десятичная система с основанием 10 и набором знаков 0, 1, 2, 3, 4, 5, 6, 7, 8 и 9. Однако в определенных случаях использование других систем счисления может быть более целесообразным. Например, в компьютерах, применяющих для выполнения вычислений и операций булеву логику, используется двоичная система счисления с основанием 2 (таблица 1).

Таблица 1 - Наборы знаков в различных системах счисления

Система счисления

Основание

Набор знаков

Двоичная

2

0,1

Восьмеричная

8

0, 1, 2, 3, 4, 5, 6, 7

Десятичная

10

0, 1, 2, 3, 4, 5, 6, 7, 8, 9

Шестнадцатеричная

16

0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F

Перевод из десятичной системы счисления в двоичную систему счисления и обратно. Двоичная система счисления -- это система, в которой для записи чисел используются две цифры 0 и 1. Основанием двоичной системы счисления является число 2. Для получения записи числа в двоичной системе используется представление этого числа с помощью степеней числа 2. В общем виде представление целого неотрицательного числа с помощью степеней двойки записывается так же, как и представление (1) с заменой числа 10 на число 2

(1)

Здесь каждый из коэффициентов аn, an-1 ,···,a1, a0 является одной из двух двоичных цифр 0 или 1, причем an=1. Запись числа в двоичной системе строится так же, как и в десятичной: первой записывается цифра ап, второй - цифра ап -1 и т.д., последней - цифра а0. Двоичный код числа - запись этого числа в двоичной системе счисления.

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

Перевод из шестнадцатеричной системы счисления в двоичную систему счисления

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

Перевод из шестнадцатеричной системы в двоичную осуществляется методом представления каждого разряда исходного числа в виде четверки цифр двоичной системы по определенному принципу. Каждой цифре или букве шестнадцатеричного числа соответствует последовательность из четырех комбинаций чисел 0 и 1: 0 = 0000; 1 = 0001; 2 = 0100; 3 = 0011; 4 = 0100; 5 = 1001; 6 = 0110; 7 = 0111; 8 = 1000; 9 = 1001; А = 1010; B = 1011; C = 1100; D = 1101; E = 1110; F = 1111.

Пронумеруем разряды целой части некоторого шестнадцатеричного числа, справа налево, как 0,1,2…n (нумерация начинается с нуля). А разряды дробной части, слева направо, как -1,-2,-3…-m, то значение некоторого шестнадцатеричного числа может быть вычислено по формуле:

N = dn16n+dn-116n-1+…+d1161+d0160+d-116-1+d-216-2+…+d-(m-1)16-(m-1)+d-m16-m

Где: n - количество разрядов в целой части числа минус единица; m -количество разрядов в дробной части числа di - цифра стоящая в i-м разряде

Эта формула называется формулой поразрядного разложения шестнадцатеричного числа, т.е. числа записанного в шестнадцатиричной системе счисления. Если мы в этой формуле заменим число шестнадцать на некоторое произвольное число q, то получим формулу разложения для числа записанного в q-й системе счисления, т.е. с основанием q:

N = 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# - объектно-ориентированный язык программирования. Разработан в 1998--2001 годах группой инженеров под руководством Андерса Хейлсберга в компании Microsoft как язык разработки приложений для платформы Microsoft .NET Framework и впоследствии был стандартизирован как ECMA-334 и ISO/IEC 23270.

C# относится к семье языков с C-подобным синтаксисом, из них его синтаксис наиболее близок к C++ и Java. Язык имеет статическую типизацию, поддерживает полиморфизм, перегрузку операторов (в том числе операторов явного и неявного приведения типа), делегаты, атрибуты, события, свойства, обобщённые типы и методы, итераторы, анонимные функции с поддержкой замыканий, LINQ, исключения, комментарии в формате XML.

Переняв многое от своих предшественников - языков C++, Pascal, Модула, Smalltalk и, в особенности, Java - С#, опираясь на практику их использования, исключает некоторые модели, зарекомендовавшие себя как проблематичные при разработке программных систем, например, C# в отличие от C++ не поддерживает множественное наследование классов (между тем допускается множественное наследование интерфейсов).

Синтаксис 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 представлена работа программы в десятичной системе счисления, число 101010 переведено в двоичную, восьмеричную и шестнадцатеричную системы соответственно.

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

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

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

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

Заключение

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

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

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

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

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

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

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

2. А. Хейлсберг, М. Торгерсен, С. Вилтамут, П. Голд Язык программирования C#. Классика Computers Science. 4-е издание = C# Programming Language (Covering C# 4.0), 4th Ed. -- СПб.: «Питер», 2012. -- 784 с. -- ISBN 978-5-459-00283-6.

3. Герберт Шилдт. C# 4.0: полное руководство = C# 4.0 The Complete Reference. -- М.: «Вильямс», 2010. -- С. 1056. -- ISBN 978-5-8459-1684-6.

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

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

6. Джозеф Албахари, Бен Албахари C# 5.0. Справочник. Полное описание языка = C# 5.0 in a Nutshell: The Definitive Reference. -- М.: «Вильямс», 2013. -- 1008 с. --ISBN 978-5-8459-1819-2.

7. Джон Скит C# для профессионалов: тонкости программирования, 3-е издание, новый перевод = C# in Depth, 3rd ed.. -- М.: «Вильямс», 2014. -- 608 с. -- ISBN 978-5-8459-1909-0.

8. Кристиан Нейгел и др. C# 5.0 и платформа .NET 4.5 для профессионалов = Professional C# 5.0 and .NET 4.5. -- М.: «Диалектика», 2013. -- 1440 с. -- ISBN 978-5-8459-1850-5.

9. Кристиан Нейгел, Карли Уотсон и др. Visual C# 2010: полный курс = Beginning Microsoft Visual C# 2010. -- М.: Диалектика, 2010. -- ISBN 978-5-8459-1699-0.

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

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

12. Официальная конференция по языку C#: news://msnews.microsoft.com/ microsoft.public.dotnet.languages.csharp.

13. Полный справочник по С#. : Пер. с англ. -- М. : Издательский дом

14. Си Шарп: Создание приложений для Windows/ В. В. Лабор.-- Мн.: Харвест, 384 с.,2003.

15. Шатрова, Т. И. Языковая игра в текстах комической направленности: процессы кодирования и декодирования [Текст] : дис. … канд. филол. наук / Т. И. Шатрова ; Тульский гос. пед. ун-т им. Л. Н. Толстого. - Белгород, 2006. - 159 с.

16. Э. Стиллмен, Дж. Грин Изучаем C#. 2-е издание = Head First C#, 2ed. -- СПб.: «Питер», 2012. -- 704 с. -- ISBN 978-5-4461-0105-4.

17. Эндрю Троелсен Язык программирования C# 5.0 и платформа .NET 4.5, 6-е издание = Pro C# 5.0 and the .NET 4.5 Framework, 6th edition. -- М.: «Вильямс», 2013. -- 1312 с. -- ISBN 978-5-8459-1814-7.

Приложение

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

namespace перевод_в_различные_системы_счисления

{

public partial class Form1 : Form

{ public Form1()

{ InitializeComponent();

}

private void flowLayoutPanel1_Paint(object sender, PaintEventArgs e)

{ }

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)

{ comboBox1.AutoCompleteCustomSource.Add("двоичная");

comboBox1.AutoCompleteCustomSource.Add("восьмиричная");

comboBox1.AutoCompleteCustomSource.Add("десятичная");

comboBox1.AutoCompleteCustomSource.Add("шестнадцатиричная");

}

private void Form1_Load(object sender, EventArgs e)

{

}

private void button2_Click(object sender, EventArgs e)

{ {

MessageBox.Show("");

} private void (object sender, EventArgs e)

{ MessageBox.Show

private void button1_Click(object sender, EventArgs e)

{ //получает обратную запись двоичного числа из десятичного

private int perevod(int temp)

{ int temp1 = 0;

List<int> s = new List<int>();

while(temp>0)

{ temp1 = temp % 2;

temp = temp / 2;

s.Add(temp1);

}

return obrat(s);

}//переворачивает число и возвращает прямую запись двоичного числа.

private int obrat(List<int> norm)

{ int[] s= new int[norm.Count];

for (int i = norm.Count-1; i >=0 ; i--)

{ s[norm.Count-1-i] = norm[i];

} return Convert.ToInt32(string.Join<int>("",s));

}string n = textBox1.Text;

TextBox1.Text

if (radioButton2.Checked)

{int sum = 0;

for (int i = 0; i < n.Length; i++) {

sum = sum * 2 + Convert.ToInt32(n.Substring(i, 1)); }

textBox2.Text = sum.ToString(); // }

if (radioButton1.Checked)

{string sum = "";

string[] arr8;

arr8 = new string[8] { "" };

if (n.Length % 3 == 0) {

for (int i = 0; i < n.Length; i = i + 3)

{for (int j = 0; j < 8; j++)

{if (n.Substring(i, 3) == arr8[j])

{sum = sum + j.ToString();

}}}

textBox2.Text = sum;

}else

{MessageBox.Show("");

}}if (radioButton3.Checked)

{string sum = "";

string[] arr16;

arr16 = new string[16] { "" };

if (n.Length % 4 == 0)

{for (int i = 0; i < n.Length; i = i + 4)

{for (int j = 0; j < 16; j++)

{if (n.Substring(i, 4) == arr16[j])

{sum = sum + j.ToString();

}}}textBox2.Text = sum;

}else

{MessageBox.Show("");

}} }("");

} private void button1_Click(object sender, EventArgs e)

{ RemoveClickEvent(button2);

button2.Click += new EventHandler(v1);

}

private void button2_Click(object sender, EventArgs e)

{ RemoveClickEvent(button4);

button2.Click += new EventHandler(v2);

}

private void RemoveClickEvent(Button b)

{ FieldInfo f1 = typeof(Control).GetField("EventClick",

BindingFlags.Static | BindingFlags.NonPublic);

object obj = f1.GetValue(b);

PropertyInfo pi = b.GetType().GetProperty("Events",

BindingFlags.NonPublic | BindingFlags.Instance);

EventHandlerList list = (EventHandlerList)pi.GetValue(b, null);

list.RemoveHandler(obj, list[obj]);

}main()

{signed long int b;

int a[70],i,c[70],h,g;

printf("Введите а:");

scanf("%d", &b);

a[1]=b/16;

a[2]=b%16;

for(h=2;h<=64;h+=2)

{a[h+1]=a[h-1]/16;

a[h+2]=a[h-1]%16;

}printf(for(i=64;i>=2;i-=2)

{switch(a[i])

{case 0:printf(%d;i)

}}c[0]=b/2;

c[1]=b%2;

for (g=1;g<=63;g+=2)

{c[g+1]=c[g-1]/2;

c[g+2]=c[g-1]%2;

}printf("for(g=63;g>=1;g-=2)

{printf("%d", c[g]);

}getch();} } }}

namespace перевод_в_различные_системы_счисления

{

partial class Form1

{

/// <summary>

/// Требуется переменная конструктора.

/// </summary>

private System.ComponentModel.IContainer components = null;

/// <summary>

/// Освободить все используемые ресурсы.

/// </summary>

/// <param name="disposing">истинно, если управляемый ресурс должен быть удален; иначе ложно.</param>

protected override void Dispose(bool disposing)

{ if (disposing && (components != null))

{ components.Dispose();

} base.Dispose(disposing);

}

#region Код, автоматически созданный конструктором форм Windows

/// <summary>

/// Обязательный метод для поддержки конструктора - не изменяйте

/// содержимое данного метода при помощи редактора кода.

/// </summary>

private void InitializeComponent()

{ this.button1 = new System.Windows.Forms.Button();

this.button2 = new System.Windows.Forms.Button();

this.comboBox1 = new System.Windows.Forms.ComboBox();

this.label1 = new System.Windows.Forms.Label();

this.label2 = new System.Windows.Forms.Label();

this.maskedTextBox1 = new System.Windows.Forms.MaskedTextBox();

this.label3 = new System.Windows.Forms.Label();

this.label4 = new System.Windows.Forms.Label();

this.label5 = new System.Windows.Forms.Label();

this.label6 = new System.Windows.Forms.Label();

this.maskedTextBox2 = new System.Windows.Forms.MaskedTextBox();

this.maskedTextBox3 = new System.Windows.Forms.MaskedTextBox();

this.maskedTextBox4 = new System.Windows.Forms.MaskedTextBox();

this.maskedTextBox5 = new System.Windows.Forms.MaskedTextBox();

this.SuspendLayout();

// // button1

// this.button1.Location = new System.Drawing.Point(82, 152);

this.button1.Name = "button1";

this.button1.Size = new System.Drawing.Size(104, 35);

this.button1.TabIndex = 0;

this.button1.Text = "ОК";

this.button1.UseVisualStyleBackColor = true;

this.button1.Click += new System.EventHandler(this.button1_Click);

// // button2

// this.button2.Location = new System.Drawing.Point(269, 152);

this.button2.Name = "button2";

this.button2.Size = new System.Drawing.Size(116, 35);

this.button2.TabIndex = 1;

this.button2.Text = "Очистить";

this.button2.UseVisualStyleBackColor = true;

this.button2.Click += new System.EventHandler(this.button2_Click);

//

// comboBox1

// this.comboBox1.FormattingEnabled = true;

this.comboBox1.Items.AddRange(new object[] {

"двоичная",

"восьмиричная",

"десятичная",

"шестнадцатиричная"});

this.comboBox1.Location = new System.Drawing.Point(234, 94);

this.comboBox1.Name = "comboBox1";

this.comboBox1.Size = new System.Drawing.Size(151, 21);

this.comboBox1.TabIndex = 3;

this.comboBox1.SelectedIndexChanged += new System.EventHandler(this.comboBox1_SelectedIndexChanged);

// // label1

// this.label1.AutoSize = true;

this.label1.Location = new System.Drawing.Point(47, 59);

this.label1.Name = "label1";

this.label1.Size = new System.Drawing.Size(81, 13);

this.label1.TabIndex = 4;

this.label1.Text = "Введите число";

// // label2

// this.label2.AutoSize = true;

this.label2.Location = new System.Drawing.Point(47, 94);

this.label2.Name = "label2";

this.label2.Size = new System.Drawing.Size(158, 13);

this.label2.TabIndex = 5;

this.label2.Text = "Выбирите систему счисления";

// // maskedTextBox1

// this.maskedTextBox1.Location = new System.Drawing.Point(234, 65);

this.maskedTextBox1.Name = "maskedTextBox1";

this.maskedTextBox1.Size = new System.Drawing.Size(151, 20);

this.maskedTextBox1.TabIndex = 6;

// // label3

// this.label3.AutoSize = true;

this.label3.Location = new System.Drawing.Point(58, 254);

this.label3.Name = "label3";

this.label3.Size = new System.Drawing.Size(54, 13);

this.label3.TabIndex = 7;

this.label3.Text = "двоичная";

// // label4

// this.label4.AutoSize = true;

this.label4.Location = new System.Drawing.Point(58, 306);

this.label4.Name = "label4";

this.label4.Size = new System.Drawing.Size(80, 13);

this.label4.TabIndex = 8;

this.label4.Text = "восьмиричная";

// // label5

// this.label5.AutoSize = true;

this.label5.Location = new System.Drawing.Point(58, 356);

this.label5.Name = "label5";

this.label5.Size = new System.Drawing.Size(65, 13);

this.label5.TabIndex = 9;

this.label5.Text = "десятичная";

// // label6

// this.label6.AutoSize = true;

this.label6.Location = new System.Drawing.Point(58, 413);

this.label6.Name = "label6";

this.label6.Size = new System.Drawing.Size(108, 13);

this.label6.TabIndex = 10;

this.label6.Text = "шестнадцатиричная";

// // maskedTextBox2

// this.maskedTextBox2.Location = new System.Drawing.Point(192, 251);

this.maskedTextBox2.Name = "maskedTextBox2";

this.maskedTextBox2.Size = new System.Drawing.Size(129, 20);

this.maskedTextBox2.TabIndex = 12;

// // maskedTextBox3

// this.maskedTextBox3.Location = new System.Drawing.Point(192, 353);

this.maskedTextBox3.Name = "maskedTextBox3";

this.maskedTextBox3.Size = new System.Drawing.Size(129, 20);

this.maskedTextBox3.TabIndex = 13;

// // maskedTextBox4

// this.maskedTextBox4.Location = new System.Drawing.Point(192, 299);

this.maskedTextBox4.Name = "maskedTextBox4";

this.maskedTextBox4.Size = new System.Drawing.Size(129, 20);

this.maskedTextBox4.TabIndex = 14;

// // maskedTextBox5

// this.maskedTextBox5.Location = new System.Drawing.Point(192, 406);

this.maskedTextBox5.Name = "maskedTextBox5";

this.maskedTextBox5.Size = new System.Drawing.Size(129, 20);

this.maskedTextBox5.TabIndex = 15;

// // Form1

// this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);

this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;

this.ClientSize = new System.Drawing.Size(560, 456);

this.Controls.Add(this.maskedTextBox5);

this.Controls.Add(this.maskedTextBox4);

this.Controls.Add(this.maskedTextBox3);

this.Controls.Add(this.maskedTextBox2);

this.Controls.Add(this.label6);

this.Controls.Add(this.label5);

this.Controls.Add(this.label4);

this.Controls.Add(this.label3);

this.Controls.Add(this.maskedTextBox1);

this.Controls.Add(this.label2);

this.Controls.Add(this.label1);

this.Controls.Add(this.comboBox1);

this.Controls.Add(this.button2);

this.Controls.Add(this.button1);

this.Name = "Form1";

this.Text = "перевод числа в различных системах счисления";

this.Load += new System.EventHandler(this.Form1_Load);

this.ResumeLayout(false);

this.PerformLayout();

}

#endregion

private System.Windows.Forms.Button button1;

private System.Windows.Forms.Button button2;

private System.Windows.Forms.ComboBox comboBox1;

private System.Windows.Forms.Label label1;

private System.Windows.Forms.Label label2;

private System.Windows.Forms.MaskedTextBox maskedTextBox1;

private System.Windows.Forms.Label label3;

private System.Windows.Forms.Label label4;

private System.Windows.Forms.Label label5;

private System.Windows.Forms.Label label6;

private System.Windows.Forms.MaskedTextBox maskedTextBox2;

private System.Windows.Forms.MaskedTextBox maskedTextBox3;

private System.Windows.Forms.MaskedTextBox maskedTextBox4;

private System.Windows.Forms.MaskedTextBox maskedTextBox5;

}}

Размещено на Allbest.ru


Подобные документы

  • Решение задачи средствами прикладных программ. Разработка алгоритмов и структур данных. Реализация задачи определения статистических данных по успеваемости на факультете на языке программирования C#. Программа перевода чисел в различные системы счисления.

    курсовая работа [519,9 K], добавлен 03.01.2015

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

    контрольная работа [37,3 K], добавлен 13.02.2009

  • Арифметические операции над числами, представленными в позиционных системах счисления. Методы перевода чисел из системы остаточных классов в позиционную систему счисления. Программная реализация и анализ метода Ферма в системе компьютерной алгебры Maple.

    дипломная работа [1,7 M], добавлен 05.06.2014

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

    конспект произведения [971,1 K], добавлен 31.05.2009

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

    курсовая работа [343,1 K], добавлен 11.11.2014

  • Обработка информации и вычислений в вычислительной машине. Непозиционные и позиционные системы счисления. Примеры перевода десятичного целого и дробного числа в двоичную систему счисления. Десятично-шестнадцатеричное и обратное преобразование чисел.

    контрольная работа [41,2 K], добавлен 21.08.2010

  • Факты появления двоичной системы счисления - позиционной системы счисления с основанием 2. Достоинства системы: простота вычислений и организации чисел, возможность сведения всех арифметических действий к одному - сложению. Применение двоичной системы.

    презентация [1,5 M], добавлен 10.12.2014

  • Символы, целые, числа с плавающей точкой в языке Си. Машинное представление значений типа char, double, float, беззнаковых чисел. Представление целых чисел в позиционных системах счисления с произвольным основанием. Алгоритм перевода b-ичной записи.

    презентация [296,3 K], добавлен 05.01.2014

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

    контрольная работа [1,2 M], добавлен 23.10.2009

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

    контрольная работа [138,9 K], добавлен 05.06.2010

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.