Автор работы: Пользователь скрыл имя, 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
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
Алгоритм выполняемых операций