Автор работы: Пользователь скрыл имя, 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. Техническое задание на проектирование……………………………………4
1.1. Основание и назначение…………………………………………………4
1.2. Назначение……………………………………………………
1.3. Требование
к программе…………………………………………………
1.3.2. Требования к функциональным характеристикам……………….4
1.3.3. Требования к надежности…………………
1.3.4. Требования к параметрам
1.3.5. Требования к программной совместимости………………………5
1.3.6. Требование к технической документации………………………..5
2. Разработка программного приложения…………………………………….6
2.4. Операции сдвигов………………………………………………………..
2.5. Завершение работы и закрытие приложения……………………………9
3. Реализация проекта………………………………
3.1. Интерфейсная часть……………………………………………………..11
3.2. Кодовая часть…………………………………………………………….
4. Компиляция, компоновка
и тестирование программы………………
4.1. Компиляция……………………………………………………
4.2. Компоновка……………………………………………………
4.3. Тестирование………………………………………………
5. Руководство пользователя………………
Список литературы…………………………………
Приложение 1………………………………………………………………………….
Приложение 2………………………………………………………………………….
Введение
Учитывая разнообразие выполняемых операций и типов обрабатываемых данных, реально можно говорить не о едином устройстве, а о комплексе специализированных операционных устройств, каждое из которых реализует определенное подмножество арифметических или логических операций, предусмотренных системой команд.
Операционное устройство
в ЭВМ – это арифметическо-
Набор операций АЛУ является одной из основных его характеристик, которые должны быть функционально полными, т.е. обеспечивать реализацию любого вычислительного алгоритма. И хотя функциональную полноту можно обеспечить очень узким набором операций, число различных операций, выполняемых в АЛУ, обычно составляет от нескольких десятков до нескольких сотен. Это обеспечивает сокращение длины программ и повышение быстродействия ЭВМ в целом.
Как правило, в любом АЛУ предусмотрена возможность выполнения операций сдвигов.
Операции сдвига могут оказаться весьма полезными для декодирования входной информации, получаемой от внешних устройств (например, цифроаналоговых преобразователей), и обработки информации о состоянии устройств. Поразрядные операторы сдвига можно также использовать для выполнения ускоренных операций умножения и деления целых чисел. С помощью сдвига влево можно эффективно умножать на два, сдвиг вправо позволяет не менее эффективно делить на два.
1. Техническое задания на проектирование
1.1. Основание и назначение
В учебных целях для закрепления и углубления теоретических знаний, а также приобретение практических навыков по разработке и проектированию приложения.
1.2. Назначение
Приложение предназначено для демонстрационного показа операций сдвигов чисел влево и вправо на n-битов и их результатов.
1.3. Требование к программе
К общим требованием в эксплуатации данного приложения можно отнести:
1.3.2. Требования к функциональным характеристикам
Приложение должно обеспечивать выполнения следующих функций:
– ввод исходных данных в полях ввода;
– выполнение операций «Сдвиг влево» и «Сдвиг вправо»;
– вывод результата в поле вывода;
Исходные данные – целые числа.
1.3.3. Требования к надежности
Предусмотреть:
– корректность ввода исходных данных;
– прекращение выполнения задачи и выход из приложения.
1.3.4. Требования к параметрам технических средств
1. Иметь простой и понятный интерфейс.
2. Программа должна работать на IBM совместимых персональных компьютерах. Минимальная конфигурация:
– тип процессора…………………….Pentium и выше;
– объем ОЗУ ………………………..32 Мб и более
1.3.5. Требования к программной совместимости
Система должна работать под управлением семейства операционных систем Win 32 (Windows 95, Windows 98, Windows 2000, Windows NT и т.п.).
1.3.6. Требование к технической документации
1. Разрабатываемые программные модули должны содержать все необходимые комментарии.
2. В состав сопровождающей документации должны входить:
2. Разработка программного приложения
Алгоритм выполняемых операций приведен в приложении 1.
В алгоритме используется пять блоков подпрограмм:
– «вход в приложение» (открытие интерфейса программы);
– «ввод исходных данных» (ввод только целых чисел);
– «сдвиг влево», «сдвиг вправо» (осуществляется проверка введенных
пользователем исходных данных и если по каким то причинам исходные данные не введены выводится сообщение: «Числа не введены», а если введены производится операции сдвигов и вывод результата);
– «выход» (прекращение работы и выход из приложения).
От того, насколько удобен и практичен интерфейс зависит во многом успех программы среди огромной массы уже созданных. Не редко, программы, которые имеют меньше функциональных возможностей, но более приятный и интуитивный интерфейс становятся лидерами среди своих конкурентов. За примером далеко ходит не надо. Всем известная Windows получила такое широкое распространение и монополию, всего лишь тем, что её интерфейс понятен даже ребёнку, ведь до её создания понятие пользователь не существовало, было лишь понятие программист, который должен был днём и ночью помнить кучу команд для выполнения простейших операций.
Пользовательский интерфейс приложения будет выглядеть в виде небольшого окна с ограниченными размерами границ формы. Для этого будет использован следующий метод:
{
Form1->BorderStyle = bsToolWindow; // создание окна с ограниченными размерами
}
Исходные данные и результат вычислений будут отображаться в области редактирования компонента Edit, доступ к которой обеспечивается свойством Text редактора. Это поле представляет собой стандартную строку на языке С++ с классовым типом AnsiString. В С++ Builder тип строк AnsiString реализован как класс, представляющий строки с нулевым символом в конце и память для AnsiString выделяется только по мере необходимости.
Все переменные программы хранятся во внутреннем формате, поэтому использование компонента Edit при вводе данных потребует преобразования строки AnsiString в число, при выводе – преобразования числа в строку AnsiString. Учитывая, что для выполнения операций сдвигов используются только целые числа, можно использовать следующие функции преобразования:
StrToInt(Edit->Text) – преобразует строку в целое число;
IntToStr (result) – преобразует целое число в строку символов.
Для корректности ввода (только целые числа) в свойстве OnKeyPress компонента Edit предусмотрено запрет на ввод алфавитных символов, а также таких символов как "*", "&" и т.д.:
{
if(IsCharAlpha(Key) || Key == '!' || Key == '"' || Key == ';' || Key == '%' || Key == ':' || Key == '?' || Key == '*' || Key == '(' || Key == ')' || Key == '=' || Key == '+' || Key == '_' || Key == '@' || Key == '#' || Key == '$' || Key == '^' || Key == '&')
Key = 0;
}
проверки правильности вводимых данных использован оператор :
Edit->Text = = " "
Для проверки введенны ли числа пользователем использованы операторы сравнения введенных цифр со строковыми символами “= =” и логического ИЛИ “||” – результат операции которого имеет значение "истина", если один или оба операнда истинны, и "ложь" в противном случае.
Edit1->Text = =" " || Edit2->Text = =" "
Для проверки условия использована конструкция:
if (условие)
{
ShowMessade (" Числа не введены ") ; выводится сообщение
}
else
{
a << b ; выполняется операция сдвига
}
2.4. Операции сдвигов
Битовые сдвиги – операции, при
которых значение битов копируется
в соседние по направлению сдвига.
Различают несколько видов
Операторы сдвига, “>>” и “<<”, сдвигают все биты в значении переменной вправо или влево. Общий формат использования оператора сдвига вправо выглядит так.
переменная >> число_битов
А оператор сдвига влево используется так.
переменная << число_битов
Здесь элемент число_битов указывает, на сколько позиций должно быть сдвинуто значение элемента переменная. При каждом сдвиге влево все биты, составляющие значение, сдвигаются влево на одну позицию, а в младший разряд записывается нуль. При каждом сдвиге вправо все биты сдвигаются, соответственно, вправо. При применении операции сдвига происходит потеря старших или младших разрядов (Рисунок 1). Применение операций “>>” и “<<” по очереди к одной и той же переменной может изменить значение этой переменной из-за потери разрядов. Если сдвигу вправо подвергается значение без знака, в старший разряд записывается нуль. Сдвиг целого числа на n разрядов вправо эквивалентен целочисленному делению его на 2n. Сдвиг целого на n разрядов влево эквивалентен умножению его на 2n. Если же сдвигу вправо подвергается значение со знаком, значение знакового разряда сохраняется. Как мы знаем, отрицательные целые числа представляются установкой старшего разряда числа равным единице. Таким образом, если сдвигаемое значение отрицательно, при каждом сдвиге вправо в старший разряд записывается единица, а если положительно — нуль.
а)
Рисунок 1: а) Сдвиг влево; б) Сдвиг вправо
2.5. Завершение работы и закрытие приложения
Для закрытия приложения использован оператор:
{
Close( ); // завершение работы приложения
}
3. Реализация проекта
Программу реализуем в программной среде Borland C++ Builder, в которой есть большой выбор визуальных компонентов для создания графического интерфейса приложений Windows, на языке программирования С++ с набором стандартных процедур ввода-вывода. Для этого:
1. Запускаем программму Borland C++ Builder 6.0.
2. Создаем новый проект с помощью команд File–>New –> Application и сразу же сохраняем его с помощью команд File–>Save Project As, создав для этого отдельную папку с названием «Битовые сдвиги». Программный модуль сохраним с именем b_sdvig.cpp (Рисунок 2), а сам проект — с именем BitSdvig.bpr. В среде разработки Borland C++ Builder файл заголовков с описаниями функций и переменных (интерфейсная часть) и файл с текстами программ (кодовая часть) принято называть модулями. Интерфейсная часть хранится в файле с расширением «h», а кодовая — в файле с расширением «срр» (сокращение от C++). Таких модулей в программе может быть несколько в зависимости от числа форм (окон) в программе и ее сложности.