Конвертер десятичных чисел

Автор работы: Пользователь скрыл имя, 14 Декабря 2017 в 00:01, курсовая работа

Описание работы

Целью работы является разработка конвертера, переводящего числа из десятичной системы счисления в шестнадцатеричную и двоичную системы, на языке программирования высокого уровня С в среде программирования Borland C++ 3.1

Для достижения поставленной цели требуется осуществить следующие задачи:

1 Провести обзор языков программирования
2 Выполнить анализ предметной области
3 Разработать алгоритм и программу

Содержание работы

Введение
1 Обзор языков программирования
1.1 История языков программирования
1.2 Обзор языка С
2 Анализ предметной области
2.1 Проектирование программы
2.2 Процедуры и функции программы
3 Разработка алгоритма и программы
3.1 Спецификации программы
3.2 Описание программы
3.3 Тестирование программы
Заключение
Список использованной литературы

Файлы: 1 файл

Kursovaya.docx

— 116.89 Кб (Скачать файл)

ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ МОСКОВСКОЙ ОБЛАСТИ

Университет “Дубна” Филиал “Угреша”

 

 

Кафедра новых материалов и технологий

 

 

 

 

КУРСОВАЯ РАБОТА

ПО ДИСЦИПЛИНЕ

Программирование на языке высокого уровня


 

 

ТЕМА: Конвертер десятичных чисел

                                                        

 

       Выполнил:студент                                                                                                            I курса  , группы  ИС-16      

Круглов Михаил Дмитриевич                                                                                                                           

                                                                                                     Руководитель: 

к.т.н., доцент Давидсон Г.И.                           

                                                                                                       Дата  защиты:________

                                                                                                          Оценка: ___________

                                                                                                        ___________________

 

 

 

 

 

 

 

 

СОДЕРЖАНИЕ

Введение

1 Обзор языков программирования

1.1 История языков программирования

1.2 Обзор языка С

2 Анализ предметной области

2.1 Проектирование программы

2.2 Процедуры и функции программы

3 Разработка алгоритма и программы

3.1 Спецификации программы

3.2 Описание программы

3.3 Тестирование программы

Заключение

Список использованной литературы  
      Введение

 

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

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

 

 

Целью работы является разработка конвертера, переводящего числа из десятичной системы счисления в шестнадцатеричную и двоичную системы, на языке программирования высокого уровня С в среде программирования Borland C++ 3.1

 

Для достижения поставленной цели требуется осуществить следующие задачи:

 

1 Провести обзор языков программирования

2 Выполнить анализ предметной  области

3 Разработать алгоритм и программу

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1  Обзор языков программирования

 

1.1 История языков программирования

 

Развитие новых языков программирования началось сразу же после появления первых компьютеров на электронных лампах. В то время компьютеры стоили немало. Приобретение единственного экземпляра обходилось в десятки, а то и сотни раз дороже, чем стоимость разработки любой программы. Для такой машины требовался высокоэффективный код, который вручную составлялся на Ассемблере. В 50-е годы, для личных нужд фирмы IBM был разработан первый алгоритмический язык. Его назвали FORTRAN. Разумеется, к тому времени уже было несколько наработок языков, преобразующих в машинных код арифметические выражения, но именно создание FORTRAN'а считается отсчетом новой эры - переходом на парадигму алгоритмических языков. Он позволял проводить расчеты только при помощи записи алгоритма с применением операторов ввода/вывода и условных. Первоначально язык создавался специально для вычислительной системы IBM 407. Но популярность FORTRAN'а привела к тому, что даже производители других архитектур стали выпускать собственные трансляторы. Вследствие этого, в 1966 году был выпущен общий стандарт FORTRAN 66. В конце 50-х гг. появилась хорошая альтернатива FORTRAN'у. Питер Наур разработал алгоритмический язык, независимый от архитектуры. Его назвали ALGOL. В данном случае, разработчики также постарались расширить возможности языка, максимально приблизив систему обозначений к математической.В начале 60-х гг. производители IBM представили не особо популярный язык PL/I. Он работал с архитектурой IBM 360 и служил своеобразным расширением FORTRAN'а при помощи некоторых средств языка COBOL. 
Первый язык, в котором было введено понятие класса - Simula-67. Его создали   Дал  и  Найард   в  конце  60-х. 
70-е гг. произвели на свет Pascal. Он быстро завоевал массовую популярность. Чуть позже миноборона США начала разработку языка высокого уровня. Проект разрабатывали 4 независимые группы, причем выработка требований и спецификаций проводилась на основе языка Pascal. Получившийся продукт был выпущен уже в начале 80-х, он получил название Ada.Язык С создан в начале 70х годов, когда Кен Томпсон и Дэннис Ритчи из Bell Labs разрабатывали операционную систему UNDC. Сначала они создали часть компилятора С, затем использовали ее для компиляции остальной части компилятора С и, наконец, применили полученный в результате компилятор для компиляции UNIX. Операционная система UNIX первоначально распространялась в исходных кодах на С среди университетов и лабораторий, а получатель мог откомпилировать исходный код на С в машинный код с помощью подходящего компилятора С.

Распространение исходного кода сделало операционную систему UNIX уникальной; программист мог изменить операционную систему, а исходный код мог быть перенесен с одной аппаратной платформы на другую. Сегодня стандарт POSIX определяет стандартный набор системных вызовов UNIX, доступных в С, которые должны быть реализованы в версиях UNIX, являющихся POSIX-совместимыми. С был третьим языком, который разработали Томсон и Ритчи в процессе создания UNIX; первыми двумя были, разумеется, А и В.

По сравнению с более ранним языком — BCPL, С был улучшен путем добавления типов данных определенной длины. Например, тип данных int мог применяться для создания переменной с определенным числом битов (обычно 16), в то время как тип данных long мог использоваться для создания целой переменной с большим числом битов (обычно 32). В отличие от других языков высокого уровня, С мог работать с адресами памяти напрямую с помощью указателей и ссылок. Поскольку С сохранил способность прямого доступа к аппаратному обеспечению, его часто относят к языкам среднего уровня

 

1.2 Обзор языка С

 

Сейчас невозможно найти в мире специалиста в IT-области, который бы не слышал о языке Си. Этот язык приобрёл огромную популярность во всём мире и оказал значительное влияние на многие другие языки программирования. Именно он является предшественником таких языков, как C++, C#, Java. Язык Си серьезно изменил жизнь программистов прошлого века и стал основой в области низкоуровневого программирования, оставив ассемблеру только те места, где производительность имела критическое значение.

С- универсальный язык ,его используют практически во всех сферах. Он достаточно структурирован, чтобы поддерживать хороший стиль программирования и вместе с тем не связан жесткими ограничениямиПрограмма, написанная на языке Си, состоит из операторов. Каждый оператор вызывает выполнение некоторых действий на соответствующем шаге выполнения программы. Язык Си предоставляет исключительные возможности для переноса программ. Компиляторы с данного языка реализованы почти на 40 типах вычислительных систем, начиная от- 8-разрядных микропроцессоров и кончая CRAY-1 одним из самых мощных в настоящее время суперкомпьютеров. 
Язык Си очень удобен для изучения .Познав его,вы сможете выучить другие языки программирования за короткий период времени и понять как реализована  ЭВМ. 
Несмотря на то ,что языку Си около сорока лет,он продолжает пользоваться большим спросом

 

 

Особенности языка C

 

 

Язык Си имеет свои существенные особенности, перечислим некоторые из них.

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

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

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

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

 

 

 

Недостатки языка С

 

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

Язык Си предъявляет достаточно высокие требования к квалификации использующего его программиста. При изучении Си желательно иметь представление о структуре и работе компьютера. Большую помощь и более глубокое понимание идей Си, как языка системного программирования, обеспечат хотя бы минимальное знание языка ассемблер. Уровень старшинства некоторых операторов не является общепринятым, некоторые синтаксические конструкции могли бы быть лучше. Тем не менее, как оказалось Си – чрезвычайно эффективный и выразительный язык, пригодный для широкого класса задач.

 

  1. Анализ предметной области

 

2.1 Проектирование программы

 

 

Конвертер должен принимать на входе число и уметь выполнять с ним 2 операции:

1. Перевод  числа в 16 с.с

2. Перевод  числа в 2 с.с.

 

Для того, чтобы реализовать эти возможности по отдельности мы должны будем написать 2 функции. Но, если мы будем писать функции непосредственно после main(), то при проходе программы, в main() эти функции будут неизвестны компилятору, потому зададим их прототипы:

void toBin(int);

void toHex(int);

 

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

 

 

 

Для вывода чисел в 16 с.с. нам понадобятся как цифры, так и буквы. И предоставить эту возможность нам может строка символов, именуемая как СИ-строка. Она представляет собою массив из элементов типа char (единичный символ), например, char string[256].

Но зачастую используется и передается массив динамически – по указателю (char*) на первый элемент массива, концом которого в СИ-строке является нулевой символ (0 или ‘\0’). Благодаря этому символу, компилятор может найти «конец» строки, и отделить строку от других ячеек памяти.

Для нашей конкретной задачи мы будем использовать строку с 256 символами, поскольку не знаем заранее длины числа в полученной с.с.

char n_new[256];

Но, чтобы четко разграничивать наше число и пустую память, в конце строки мы будем устанавливать нуль-символ: n_new[cur] = 0;

 

2.2 Процедуры  и функции программы

 

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

Процедура – это та же самая функция, только она не возвращает значение.

 

 

Используемые процедуры

 

Процедура перевода числа в 2 с.с. и вывод его на экран, алгоритм:

Записываем остатки от деления числа на 2 в строку, затем повторяем операцию с целой частью от деления числа на 2 и так, пока не получим 0 в целой части; далее инвертируем порядок символов и выводим число в консоль.

 

void toBin(int d)

{

char temp[256], n_new[256];

int cur = 0;

while (d > 0)

{

temp[cur] = '0' + d % 2;

cur++;

d /= 2;

}

for (int i = 0; i < cur; i++)

n_new[i] = temp[cur - 1 - i];

n_new[cur] = 0;

printf("Bin: %s\n", nnew);

}

 

 

 

 

 

 

Блок-схема процедуры:

 

 

 

 

 

 

 

 

 

Процедура перевода числа в 16 с.с. и вывод его на экран, алгоритм:

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

 

void toHex(int d)

{

char n_new[256]; 

int s = 1, div, cur = 0;

while (s < d)

s *= 16;

if (s >= 16)

s /= 16;

while (d > 0)

{

div = d / s;

if (div >= 10 && div <= 15)

n_new[cur] = (char)('A' - 10 + div);

else

n_new[cur] = '0'+div;

cur++;

d = d % s;

s /= 16;

}

n_new[cur] = 0;

printf("Hex: %s\n", n_new);

}

 

Блок-схема  процедуры: 

Информация о работе Конвертер десятичных чисел