Битовые сдвиги

Автор работы: Пользователь скрыл имя, 30 Октября 2013 в 20:56, курсовая работа

Краткое описание

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

Содержание

Введение………………………………………………………………………….3
1. Техническое задание на проектирование……………………………………4
1.1. Основание и назначение…………………………………………………4
1.2. Назначение………………………………………………………………..4
1.3. Требование к программе…………………………………………………4
1.3.1 Общие требования………………………………………………….4
1.3.2. Требования к функциональным характеристикам……………….4
1.3.3. Требования к надежности…………………………………………5
1.3.4. Требования к параметрам технических средств…………………5
1.3.5. Требования к программной совместимости………………………5
1.3.6. Требование к технической документации………………………..5
2. Разработка программного приложения…………………………………….6
2.1. Алгоритм решения задачи……………………………………………….6
2.2. Пользовательский интерфейс…………………………………………….6
2.3. Ввод и вывод данных………………………………………………….….7
2.4. Операции сдвигов………………………………………………………..8
2.5. Завершение работы и закрытие приложения……………………………9
3. Реализация проекта………………………………………………………….10
3.1. Интерфейсная часть……………………………………………………..11
3.2. Кодовая часть…………………………………………………………….12
4. Компиляция, компоновка и тестирование программы……………………17
4.1. Компиляция………………………………………………………………17
4.2. Компоновка………………………………………………………………18
4.3. Тестирование…………………………………………………………….19
5. Руководство пользователя…………………………………………………………21
Список литературы……………………………………………………………………22
Приложение 1………………………………………………………………………….23
Приложение 2………………………………………………………………………….24

Прикрепленные файлы: 1 файл

Курсовая.doc

— 347.50 Кб (Скачать документ)

 

                                   Рисунок 2. Программный модуль

 

3.1. Интерфейсная часть

 

Приступим к созданию интерфейсной части программы при  помощи окна формы Form1, представляющая собой проект Windows-окна программы. Форма является одним из важнейших элементов приложения C++ Builder. Процесс редактирования формы происходит при добавлении к форме компонентов, изменении их свойств, создании обработчиков событий. При добавлении компонента к форме заголовочный файл и файл формы модифицируются. При редактировании свойств компонента в Инспекторе объектов эти изменения сохраняются в файле формы. Каждый компонент C++ Builder имеет три характеристики: свойства, события и методы. Инспектор объектов автоматически показывает свойства и события, которые могут быть использованы с компонентом. Свойства являются атрибутами компонента, определяющими его внешний вид и поведение.

Для ввода/вывода данных использован визуальный компонент  – однострочный редактор Edit. Очевидно, что пользователь должен иметь подсказку, какое из окон однострочных редакторов соответствует конкретному входному и выходному значению. Для отображения поясняющего статического текста использован компонент Label. Программа должна быть функциональной и принимать от пользователя, по крайней мере, две команды:

– произвести вычисления;

– прекратить выполнения программы.

Для того чтобы пользователь мог задать эти команды воспользуемся  компонентами-кнопками Button (событие OnClick).

Все перечисленные компоненты расположим на одной форме и в Инспекторе объектов изменим размеры, шрифты и надписи  внесенных компонентов и формы Form1 (Рисунок 3).

Свойства компонентов и формы

●  Форма Form1 (окно программы): Caption (заголовок программы) – «Битовые сдвиги»;

●  Компонент Label1 (статический текст): Caption (заголовок метки) – «Ввод числа»;

●  Компонент Label2: Caption– «Ввод числа битов»;

●  Компонент Label3: Caption  – «Вывод результата»;

●  Компонент Edit1 (однострочный редактор): Text (поле ввода) – " ";

●  Компонент Edit2: Text (поле ввода) – " ";

●  Компонент Edit3: Text (поле вывода) – " ";

● Компонент Button1 (кнопка): Caption (текст на кнопке) – «Сдвиг влево»;

●  Компонент Button2: Caption – «Сдвиг вправо»;

●  Компонент Button3 : Caption – «Выход»;

     

                                 а)                                                       б)

Рисунок 3. Окно приложения: а) до редактирования; б) после редактирования

 

3.2. Кодовая часть

 

После установки свойств  следующим шагом будет подготовка текстов

для обработчиков событий:

– FormCreate для создания окна приложения с ограниченными размерами в форме Form1;

– OnKeyPress для ввода только целых чисел в однострочном редакторе Edit;   

– OnClick под кнопки Button1, Button2 и Button3 предназначенные обеспечить функциональность приложения.

Выделяется соответствующий  компонент, в окне Object Inspector открывается страница Events. В свободном поле строки FormCreate, OnKeyPress и onClick производится двойной щелчок левой кнопкой мыши. После этого активизируется окно Code Editor. В него вставляем заготовку кода программы для соответствующей процедуры.

 

1. Текст программы для создания окна приложения с ограниченными размерами в форме Form1:

//---------------------------------------------------------------------------

void __fastcall TForm1::FormCreate(TObject *Sender)

{

Form1->BorderStyle = bsToolWindow;

}

 

2. Текст программы для ввода только целых чисел в Edit 1:

//---------------------------------------------------------------------------

void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)

{

if(IsCharAlpha(Key) || Key == '!' || Key == '"' || Key == ';' || Key == '%' ||

  Key == ':' || Key == '?' || Key == '*' || Key == '(' || Key == ')'  ||

  Key == '=' || Key == '+' || Key == '_' || Key == '@' || Key == '#' ||

  Key == '$' || Key == '^' || Key == '&')

         Key = 0;

}

 

3. Текст программы для ввода только целых чисел в Edit 2:

//---------------------------------------------------------------------------

void __fastcall TForm1::Edit2KeyPress(TObject *Sender, char &Key)

{

if(IsCharAlpha(Key) || Key == '!' || Key == '"' || Key == ';' || Key == '%' ||

  Key == ':' || Key == '?' || Key == '*' || Key == '(' || Key == ')'  ||

  Key == '=' || Key == '+' || Key == '_' || Key == '@' || Key == '#' ||

  Key == '$' || Key == '^' || Key == '&')

         Key = 0;

}

 

Алгоритм решения  задачи (событие «Сдвиг влево» или  «Сдвиг вправо») сводится к следующим  шагам:

•  В окнах однострочных редакторов проводится проверка введенных исходных данных.

•  Из окон однострочных редакторов (свойство Text) читаются исходные данные. При чтении необходимо преобразование информации из типа AnsiString в тип int.

•  Производится операции сдвига.

         • После операции сдвига производится запись результата в поле Text соответствующего редактора с предварительным преобразованием в тип AnsiString из типа int.

 

4. Текст программы для кнопки Button1(«Сдвиг влево»)

//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)

{

if (Edit1->Text = =" " || Edit2->Text = =" ") // проверяем введены ли 

числа

   {

     ShowMessage ("Числа не введены!"); // если нет  выводим сообщение

   }

     else // если введены то

         {

            int a; // переменная для числа a

            int b; // переменная для числа b

            int result; // переменная для результата

            a = StrToInt (Edit1->Text); // берем из Edit1 строку и переводим

            ее в число

            b = StrToInt (Edit2->Text); // берем из Edit2 строку и переводим

            ее в число

            result = a << b; // сдвигаем число а на b-битов влево и помещаем

            в переменную для результата

            Edit3->Text = IntToStr (result); // выводим значение переменной

          }

}

 

5. Текст программы для кнопки Button2(«Сдвиг вправо»)

//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)

{

if (Edit1->Text = =" " || Edit2->Text = =" ") // проверяем введены ли 

числа

   {

     ShowMessage ("Числа не введены!"); // если нет  выводим сообщение

   }

     else // если введены то

         {

            int a; // переменная для числа a

            int b; // переменная для числа b

            int result; // переменная для результата

            a = StrToInt (Edit1->Text); // берем из Edit1 строку и переводим

            ее в число

            b = StrToInt (Edit2->Text); // берем из Edit2 строку и переводим

            ее в число

            result = a >> b; // сдвигаем число а на b-битов влево и помещаем

            в переменную для результата

            Edit3->Text = IntToStr (result); // выводим значение переменной

          }

}

 

Для выхода из приложения предназначена кнопка «Выход» (Button3).

 

6. Текст программы для кнопки Button3(«Выход»)

//---------------------------------------------------------------------------

void __fastcall TForm1::Button5Click(TObject *Sender)

{

Close(); // закрываем приложение

}

 

Листинг программной  реализации приложения «Битовые сдвиги приведено в приложение 2.

 

 

 

 

 

 

 

 

 

 

 

       4. Компиляция, компоновка и тестирование программы

 

После разработки любого приложения необходимо выполнить его  компиляцию, компоновку и тестирование. Эти операции выполняются автоматически  каждый раз при выполнении команды Run из главного меню среды разработки Borland C++ Builder 6. Однако данные процедуры можно выполнять по отдельности с целью сокращения времени на отладку всего проекта в целом.

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

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

 

4.1. Компиляция

 

Скомпилируем разработанное приложение выполнив команду Compile из группы Project главного меню или нажатием комбинацию клавиш для компиляции программы Alt+F9. Откроется окно, приведенное на рисунке 4 . В верхней строке этого окна отображается путь размещения и имя проекта программы. В следующей строке вначале отображается процесс компиляции, сменяющийся записью Done, говорящей о завершении данной операции без обнаруженных ошибок. Ниже отображается номер текущей строки программы Current line и общее количество строк программы Total lines. В нижней строке отображается обнаруженное на данный момент число замечаний Hints, предупреждений Warnings и ошибок Errors.

                            

                               Рисунок 4. Результат компиляции

 

4.2. Компоновка 

 

Теперь выполним компоновку проекта с помощью команды Make из группы Project главного меню или нажав комбинацию клавиш для компоновки программы <Ctrl>+<F9>. В результате мы должны получить безошибочную компоновку приложения (Рисунок 5).

                                                         

                               Рисунок 5. Результат компоновки

 

Теперь приложение можно  сохранить и запустить на выполнение с помощью команды Run или воспользоваться горячей кнопкой запуска программы <F9>. На экране появится окно нашей программы (Рисунок 6).

                            

                             Рисунок 6. Окно программы

 

4.3. Тестирование

 

Теперь приступим к  тестированию:

1. Тест на ввод алфавитных  символов и др. – не вводятся.

2. Тест на вывод сообщения если не введены числа в одном из полей ввода или в обоих, при реализации операций сдвигов (Рисунок 7)

 

             Рисунок 7. Вывод сообщения о не введенных числах

 

3. Тест на решение  задач (Рисунок 8).

Пример: двоичное представление  числа а = 9: 00001001, тогда

а = 9 << 3      01001000   – 72

а = 9 >> 3     00000001   – 1

а = 9 >> 5      00000000   – 0

                      

                      Рисунок 8. Результаты решения примера

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5. Руководство  пользователя

 

1. Откройте приложение;

2. Введите число в  поле «Ввод числа»;

3. Введите число битов  в поле «Ввод числа битов»  на какое нужно сдвинуть число  в поле «Ввод числа»;

4. Нажмите кнопку «Сдвиг  влево» или «Сдвиг вправо»;

5. В поле «Вывод результата» получаем результаты сдвигов;

6. Для прекращения  работы и закрытия приложения  нажмите кнопку «Выход».

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Список литературы

 

1. В. С. Романчик, А. Е. Люлькин – Программирование в C++ BUILDER: учебное пособие для студ. механико-матем. фак. – Мн.: БГУ, 2007. –126 с.;

2. Т. А. Павловская – C/C++. Программирование на языке высокого  уровня – СПб.: Питер, 2003. – 461 с.;

3. Иванова Г.С, Ничушкина  Т.Н., Пугачев Е.К. – Объектно-ориентированное программирование: Учеб. для вузов –  М.: Изд-во МГТУ им. Н.Э. Баумана, 2001. - 320 с.;

4. В. Л. Бусько, В. Т. Карцев, Т. М. Кривоносова, А. А. Навроцкий – Основы программирования в среде С++ Builder: лаб.практикум по курсу «Основы алгоритмизации и программирования» для студ. 1 – 2-го курсов БГУИР. В 2 ч. Ч. 1 / Бусько В. Л. [и др.] . – Минск: БГУИР, 2007. – 70 с.;

5. Культин Н. Б. – C/C++ в задачах и примерах. – СПб.: БХВ-Петербург, 2005. – 288 с.;

6. Аленский Н. А. – Визуальное объектно-ориентированное программирование в примерах: пособие для студентов механико-математического факультета – Минск, БГУ, 2008. — 114с.;

7. Рыбалка С.А., Шкатова  Г.И. – С++ Builder. Задачи и решения: учебное пособие – Томск: Изд-во Томского политехнического университета, 2010. – 479с.

 

 

 

 

 

 

 

 

 

Приложение 1

 

Алгоритм выполняемых  операций

 

 

 

Информация о работе Битовые сдвиги