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

ЛИЧНЫЙ КАБИНЕТ 

 

Здравствуйте гость!

 

Логин:

Пароль:

 

Запомнить

 

 

Забыли пароль? Регистрация

Повышение уникальности

Предлагаем нашим посетителям воспользоваться бесплатным программным обеспечением «StudentHelp», которое позволит вам всего за несколько минут, выполнить повышение уникальности любого файла в формате MS Word. После такого повышения уникальности, ваша работа легко пройдете проверку в системах антиплагиат вуз, antiplagiat.ru, etxt.ru или advego.ru. Программа «StudentHelp» работает по уникальной технологии и при повышении уникальности не вставляет в текст скрытых символов, и даже если препод скопирует текст в блокнот – не увидит ни каких отличий от текста в Word файле.

Результат поиска


Наименование:


курсовая работа Разработка приложения «Двоичный калькулятор» средствами Borland Delphi

Информация:

Тип работы: курсовая работа. Добавлен: 30.11.2012. Сдан: 2011. Страниц: 43. Уникальность по antiplagiat.ru: < 30%

Описание (план):


Автономное  образовательное учреждение
высшего профессионального  образования
«Ленинградский  государственный университет имени  А.С.Пушкина»
Кафедра информатики  и вычислительной математики
КУРСОВАЯ  РАБОТА
на тему: «Разработка приложения «Двоичный калькулятор» средствами Borland Delphi»
Специальность: 080801.65 — прикладная информатика в экономике
            Выполнила:
            студентка III курса Д.В.Алёхина
            Руководитель:
            канд. пед. наук, доцент Е.В.Федоркевич
Пушкин 2010 

Оглавление
Введение 2
Глава1. Двоичная система счисления. 2
§ 1История 2
§ 2 Целочисленные и вещественные типы данных языка Object Pascal 2
Глава 2. Приложение для реализации алгоритмов над данными целочисленных типов 2
§ 1 Система программирования Borland Delphi 2
§ 2 Описание компонентов Delphi 2
    Компонент TButton 2
    Компонент TEdit 2
    Компонент TLabel 2
    Компонент RadioButton 2
    Компонент TMainMenu 2
    Компонент TSaveDialog 2
§ 3 Инструкция пользователя 2
Заключение 2
Список источников 2
Приложение 1. Текст программных модулей 2
Приложение 2. Система тестов 2
 
 


Введение

      Человеку  достаточно сложно произвести в уме  математические операции над двоичными  числами. Для облегчения расчетов люди создают специальные приложения, выполняющие функции калькулятора. Одним из средств разработки таких  программ является Borland Delphi.
      В данной курсовой работе предложено создать Windows-приложение на языке Object Pascal в среде  визуального программирования Borland Delphi, которое должно обеспечивать выполнение операций по вводу, обработке и выводу информации, содержащей двоичные числа.
      При выполнении поставленной задачи разработчику понадобятся навыки по алгоритмизации, программированию и решению в  интегрированной визуальной среде  программирования Delphi задач по математике.
 

Глава1. Двоичная система  счисления.

§ 1История

    Современная двоичная система была полностью  описана Лейбницем в XVII веке в работе Explication de l’Arithmetique Binaire[8]. В системе счисления Лейбница были использованы цифры 0 и 1, как и в современной двоичной системе.
    В 1854 году английский математик Джордж Буль опубликовал знаковую работу, описывающую алгебраические системы применительно к логике, которая в настоящее время известна как Булева алгебра или алгебра логики. Его логическому исчислению было суждено сыграть важную роль в разработке современных цифровых электронных схем.
    В 1937 году Клод Шеннон предствил к защите кандидатскую диссертацию Символический анализ релейных и переключательных схем в MIT, в которой булева алгебра и двоичная арифметика были использованы применительно к электронным реле и переключателям. На диссертации Шеннона по существу основана вся современная цифровая техника.
    В ноябре 1937 года Джордж Штибиц, впоследствии работавший в Bell Labs, создал на базе реле компьютер «Model K» (от англ. «Kitchen», кухня, где производилась сборка), который выполнял двоичное сложение. В конце 1938 года Bell Labs развернула исследовательскую программу во главе со Штибицом. Созданный под его руководством компьютер, завершённый 8 января 1940 года, умел выполнять операции с комплексными числами. Во время демонстрации на конференции American Mathematical Society в Дармутском колледже 11 сентября 1940 года Штибиц продемонстрировал возможность посылки команд удалённому калькулятору комплексных чисел по телефонной линии с использованием телетайпа. Это была первая попытка использования удалённой вычислительной машины посредством телефонной линии. Среди участников конференции, бывших свидетелями демонстрации, были Джон фон Нейман, Джон Мокли и Норберт Винер, впоследствии писавшие об этом в своих мемуарах.

§ 2 Целочисленные и вещественные типы данных языка Object Pascal

     В языке Pascal любые объекты, т.е. константы, переменные, значения функций или выражения,  характеризуются своими типами. Тип определяет множество допустимых значений того или иного объекта, а также множество операций, которые к нему применимы.
     Иерархия типов в языке Паскаль:
    Простые
      Порядковые
        Целые
        Логические
        Символьные
        Перечисляемые
        Интервальные
      Вещественные
    Структурированные
      Массивы
      Строки
      Множества
      Записи
      Файлы
    Указатели
     Целочисленные типы - обозначают множества целых чисел в различных диапазонах. Имеется пять целочисленных типов, различающихся диапазоном допустимых значений и размером занимаемой оперативной памяти. Целочисленные типы обозначаются идентификаторами: Byte, ShortInt, Word, Integer, LongInt; их характеристики приведены в Таблице 1.
 
 
 
Идентификатор
Длина (байт) Диапазон  значений Операции
Byte 1 0..255 + , - / , *
Div , Mod
>= , <= , < , >
=  , <>
Shortint 1 -128..127
Integer 2 -32768..32767
Word 2 0..65535
Longint 4 -2147483648..2147483647
 
Таблица 1. Целочисленные типы данных.
 
     Вещественные типы данных представляют собой вещественные значения. Обычно они используются в вычислениях по формулам, в арифметических выражениях, в командах присвоения и занимают от 4 до 6 байт памяти персонального компьютера.
       Сведения  о диапазоне разных типов вещественных чисел и их формате в языке Паскаль представлены в нижеследующей таблице.
Идентификатор типа Диапазон  значений чисел Значащие  цифры мантиссы Требуемая память в байтах
real от 2.9e-39 до 1.7e38 11-12 6 байт
single от 1.5e-45 до 3.4e38 7-8 4 байта
double от 5.0e-324 до 1.7e308 15-16 8 байт
extended от 3.4e-4932 до 1.1e4932 19-20 10 байт
comp от -2e63 + 1 до 2e63 - 1 10-20 8 байт
Таблица 2. Целочисленные типы данных.
 

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

§ 1 Система программирования Borland Delphi

     Borland Delphi представляет собой средство разработки приложений для Microsoft Windows, в основе которого лежит язык Object Pascal. Delphi является мощным и простым в использовании инструментом для создания автономных программ, обладающих графическим интерфейсом. В основе данной системы лежит технологии событийного программирования и визуального проектирования, применение которых позволяет существенно сократить время разработки и облегчить процесс создания приложений.
     При технологии событийного программирования выполнение кода программы не следует  по заранее определенному пути, т.к. оно зависит от реакции программы  на различные события. События могут  быть пользовательскими, возникшими в  результате действий пользователя (например, щелчок мыши), системными, возникающими в операционной системе (например, сообщения от таймера), и программными (например, если обнаружена ошибка и ее надо обработать).
     Визуальное  проектирование позволяет создать  видимую часть приложения из готовых  компонентов Delphi. Технология заключается  в том, что среда разработки берет  на себя большую часть рутинной работы, оставляя программисту работу по конструированию  диалоговых окон и функций обработки  событий. В процессе проектирования автоматически формируется часть  кода программы, при этом учитываются  выбранные разработчиком размеры, положения, цвет и другие свойства компонентов.
 


§ 2 Описание компонентов Delphi

     В Delphi поля ввода, отображения и редактирования информации, кнопки, индикаторы и прочие элементы управления, находящиеся в форме, называются компонентами. Они могут быть визуальными, т.е. доступны пользователю после запуска приложения, и не визуальными  доступны только для разработчика, и при запуске приложения не отображаются на форме.
     Форма и компоненты, использованные для  разработки приложения «Двоичный калькулятор», изображены на Рисунке 1.
      5.
 
      6.   2.
 
       1. 
     4. 
      3.
     Рисунок 1. Форма разработанного приложения «Двоичный калькулятор».
    1 –  TButton
    2 –  TEdit
    3 –  TLabel
    4. –RadioButton
    5 – TMainMenu
    6 – TSaveDialog
 


Основные  свойства, общие для всех компонентов:
      Name — имя компонента в программе;
      Caption  текст, появляющийся на компоненте;
      Font — определяет атрибуты шрифта;
      Hint — всплывающая подсказка, которая появляется при наведении курсора на компонент;
      ShowHint — (если true) всплывающая подсказка появится при наведении курсора;
      Visible — (если true) видимость компонента на форме;
      Enabled — (если true) компонент реагирует на события
      Heigth — высота компонента;
      Width — ширина компонента.

Компонент TButton

     Страница  библиотеки «Standard». Обычная кнопка Windows. Двойной щелчок не предусмотрен.
Свойства:
      Default — (если true) определяет, что нажатие пользователем клавиши ввода Enter будет эквивалентно нажатию на данную кнопку.
События:
      OnClick — наступает при щелчке пользователя на кнопку.

Компонент TEdit

     Страница  библиотеки «Standard». Однострочное окно редактирования, используемое для ввода и вывода однострочного текста.
Свойства:
      Text — текст в окне редактирования;
      ReadOnly — (true) запрещает ввод и редактирование текста;
      Color — цвет компонента;
      MaxLength — определяет максимальную длину текста редактора в символах.
Методы:
      Clear — удаляет весь текст из окна;
      SetFocus — устанавливает фокус на компонент (в поле редактирования);
      Sellect All — Выделяет весь текст в окне редактирования.
События:
    OnChange — наступает при изменении текста в окне редактирования.

Компонент TLabel

     Страница  библиотеки «Standard». Компонент представляет собой статический текст, недоступный для редактирования пользователю. С помощью этого компонента на рабочей поверхности формы можно отобразить информацию, сделать пояснения и показать названия других компонентов.
Свойства:
    AutoSize — (true) автоматическое приведение размеров компонента к размерам текста и высоте шрифта;
    WordMrap — определяет возможность разрыва слов в случае, если длина выводимого текста превышает ширину компонента
    Alignment — выравнивание текста.

Компонент RadioButton

Страница  библиотеки «Standard». RadioButton представляют собой кнопки, автоматически объеденяемые в группы. В каждой группе, одновременно может быть включена только одна кнопка
Свойства:
    Alignment — определяет, с какой стороны от кнопки появится надпись.
    Checked — определяет, выбрана ли данная кнопка пользователем, или нет. Поскольку в начале выполнения приложения обычно надо, чтобы одна из кнопок группы была выбрана по умолчанию, ее свойство Checked надо установить в true в процессе проектирования.
    Items — Управлением числом и названиями переключателей
    ItemIndex—Доступ к отдельному переключателю (позиция переключателя).
    Columns — задает число столбцов, на которое разбиваются переключатели при расположении в группе.

Компонент TMainMenu

     Страница  библиотеки «Standard». Это невизуальный компонент, т.е. место его размещения на форме в процессе проектирования не имеет никакого значения для пользователя — он все равно увидит не сам компонент, а только меню, сгенерированное им.
Основное  свойство компонента:
    Items — позволяет спроектировать все меню; заполнение производится с помощью Конструктора Меню, вызываемого двойным щелчком на компоненте MainMenu или нажатием кнопки с многоточием рядом со свойством Items в окне Инспектора Объектов. В результате откроется окно:

Рисунок 2. Окно редактирования компонента TMainMenu.
Пункты  меню имееют событие:
      OnClick — наступает при щелчке пользователя на пункт.

Компонент TSaveDialog

     Страница  библиотеки «Dialogs». Эти компоненты-диалоги предназначены для выбора имени файла, который будет в дальнейшем использован для чтения или записи. Диалог может быть настроен на представление имен файлов какого-нибудь одного типа или нескольких типов.
     TSaveDialog  — диалоговое окно сохранния файла.
Свойства:
    Filter — список, в котором отображаются типы;

Рисунок 3. Свойство Filter для диалогов
    FilterIndex — номер фильтра, который будет показан в момент открытия диалога;
    DefaultExt — расширение файла по умолчанию;
    FileName — указанное пользователем имя файла.
 
 
Метод:
    Execute — вызывает диалог, возвращает true, если пользователь произвел выбор в диалоге.
    Опции:
    ofFileMustExist — в случае, если пользователь написал имя несуществующего файла, появляется сообщение об ошибке, и пользователю будет предоставлена возможность сновь указать требуемый файл;
    ofEnableSizing — разрешает пользователю изменять размер диалогового окна;
    ofNoValidate — не позволяет писать в именах файлов неразрешенные символы, но не мешает выбирать файлы с неразрешенными символами в имени;
    ofOverwritePrompt — в случае, если при сохранении файла пользователь написал имя существующего файла, появляется замечание, что файл с таким именем существует, и запрашивается желание пользователя переписать существующий файл.
 


§ 3 Инструкция пользователя

Ввод  чисел
      После запуска приложения появляется окно (рис.4).
Рисунок 4. Окно приложения.
Доступны кнопки действий над числами и кнопка СБ(сброс)
После нажатия на любую из кнопок появляется подсказка в виде сообщения (рис.5).

Рисунок 5. Окно сообщения.
     После нажатия на «Файл». Перед Вами откроется  список, в котором можете выбрать  «Вставить из файла» (рис.6).

Рисунок 6. Список источников данных.
     Таким образом данные загружаются из текстового файла, содержащего числа, с которыми будет работать приложение. Если выбранный файл пуст, появится соответсвующее сообщение (рис.7).

Рисунок 7. Окно приложения.
     Нажмите «ОК» и заполните текстовый файл данными.
      Если же вы вводите числа вручную  с клавиатуры в верхнее поле «Число 1» (в нем мигает курсор) введи  первое число, с которым хотите работать. Оно указано стрелкой на рис.8
. Рисунок 8.
      Далее введите второе число, с которым  хотите работать в поле «Число 2». Оно  указано стрелкой на рис.9.
. Рисунок 9.
     Если  вы не ввели какое-либо из чисел, то появятся подсказки (рис.10,11)

Рисунок 10. Окно сообщения.
 
Рисунок 11. Окно сообщения.
     После ввода данных нажмите на кнопку, обозначающую то действие которое вы хотите совершить. Приложение проверит, правильно ли Вы ввели числа. Если были введены символы, буквы или  не двоичные числа, появится сообщение  об ошибке (рис.12,13), указывающее на число в котором допущена ошибка

Рисунок 12.
Рисунок 13.
      Если данные введены корректно, то в поле «Ответ» (рис.14) вы увидите  результат выбранного вами действия.
Рисунок 14
      Если отмечена кнопка «Показать  результат в 10сс» (рис.15), то приложение выдаст результат, помимо двоичной системы  счисления еще и в десятичной системе счисления (рис.16).
Рисунок 15
Рисунок16
 


      Если вы попробуете разделить число 1 на 0, то приложение выдаст сообщение  об ошибке (рис.17)
Рисунок17
     После выполнения выбранного вами действия, доступными будут кнопка сброса (СБ) и пункты меню Файл: «Сохранить в  файл», «Вставить из файла», «Выход»  и пункты меню Справка «О программе».
      Кнопка сброса (рис.18) очистит поля «Число 1» и «Число 2» и снова сделает доступными кнопки действия.
Рисунок18
     Пункт меню Файл «Сохранить в файл» позволяет  пользователю сохранить в файл информацию о последней, осуществленной им операцию.
     В файл сохраняются операнды(Число 1 и  Число 2), действие выбранное пользователем  и результат выполнения.
     После выбора этого пункта из меню появится диалоговое окно (рис.19), в котором вы можете дать имя файлу и выбрать место его сохранения. Файл будет иметь расширение «.txt».
     

Рисунок 19. Диалоговое окно сохранения файла.
     Чтобы закрыть приложение, выберите в меню «Выход». Приложение будет закрыто  без сохранения данных.
 
 


Заключение

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

Список  источников

    http://www.cyberguru.ru/programming/delphi/
    Архангельский А.Я. 100 компонентов общего назначения библиотеки Delphi 5 — 2002 г.
    Тюканов А.С., Васильев Н.А. РГПУ им. А.И. Герцена.  Практикум по программированию: Электронный задачник — СПб, 1997-2004гг.
 

Приложение 1. Текст программных  модулей

unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Menus;
 
type
  TForm1 = class(TForm)
    EdParametr1: TEdit;
    EdParametr2: TEdit;
    BtPlus: TButton;
    BtMinus: TButton;
    BtUmn: TButton;
    Btdel: TButton;
    EdOtv: TEdit;
    BtOch: TButton;
    Label1: TLabel;
    Label2: TLabel;
    BtDiv: TButton;
    BtMod: TButton;
    Label3: TLabel;
    MainMenu1: TMainMenu;
    Fail: TMenuItem;
    Spr: TMenuItem;
    Save: TMenuItem;
    Past: TMenuItem;
    Raz: TMenuItem;
    Vuxod: TMenuItem;
    Spravka: TMenuItem;
    Edit1: TEdit;
    RBt1: TRadioButton;
    Lb10cc: TLabel;
    sdMyCalc: TSaveDialog;
    Memo1: TMemo;
    Edit2: TEdit;
    procedure BtPlusClick(Sender: TObject);
    procedure BtMinusClick(Sender: TObject);
    procedure BtUmnClick(Sender: TObject);
    procedure BtdelClick(Sender: TObject);
    procedure VuxodClick(Sender: TObject);
    procedure SpravkaClick(Sender: TObject);
    procedure BtDivClick(Sender: TObject);
    procedure BtModClick(Sender: TObject);
    procedure BtOchClick(Sender: TObject);
    procedure RBt1Click(Sender: TObject);
     procedure SaveClick(Sender: TObject);
    procedure PastClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
var
parametr1,parametr2,otvet1:string;
prmtr1,prmtr2:integer;
otvet:real;
code1,code2,code3,code4:integer;
i,k,k1,V:integer;  {дополнительные  переменные}
n,n1:integer;    {запоминает  длину строки}
y,y1,y2,y3,y4,st,st1,st2:string;
x,x1,x2,x3,x4:real; {дополнительные  переменные для перевода}
otvet2,x5,x6,x7,otvet3:integer;
otvet4:real;
F:file;
var fFile: TextFile;
 
implementation
 
{$R *.dfm}
 
 
procedure TForm1.BtPlusClick(Sender: TObject);
begin
edit2.Text:='Сложение';
y:='';
y1:='';
y2:='';
y3:='';
y4:='';
  {проверяем числовое ли значение у параметров}
{////////////// число1   }
parametr1:=EdParametr1.Text;
if parametr1='' then
 begin
beep;
    showmessage('Вы  не ввели первое число!');
    edParametr1.SetFocus;
    edParametr1.SelectAll;
end;
if parametr1<>'' then begin
{//////////////число2}
parametr2:=EdParametr2.Text;
if parametr2='' then
 begin
beep;
    showmessage('Вы  не ввели второе число!');
    edParametr2.SetFocus;
    edParametr2.SelectAll;
end
else
   begin
    k:=0;
  val(parametr1,prmtr1,code1);
  for i:=1 to length(parametr1) do
  if (parametr1[i]<>'0') and (parametr1[i]<>'1') and (parametr1[i]<>',') then
  k:=k+1;
  if k<>0 then
  begin
  beep;
  showmessage('Вы некорректно  ввели число1!');
  edparametr1.SetFocus;
  edparametr1.SelectAll;
  end
else
   begin
   k:=0;
  val(parametr2,prmtr2,code2);
  for i:=1 to length(parametr2) do
  if (parametr2[i]<>'0') and (parametr2[i]<>'1') and (parametr2[i]<>',') then
  k:=k+1;
  if k<>0 then
  begin
  beep;
  showmessage('Вы некорректно  ввели число2!');
  edparametr2.SetFocus;
  edparametr2.SelectAll;
  end
else
begin
btPlus.Enabled:=false;
btMinus.Enabled:=false;
btMod.Enabled:=false;
btDiv.Enabled:=false;
btUmn.Enabled:=false;
btDel.Enabled:=false;
 save.Enabled:=true;
{///////////// Проверяем  вещественные ли числа???}
k:=0;
k1:=0;
for i:=1 to length(parametr1) do
if parametr1[i]=',' then   {Число 1 вещественное!}
  begin
  k:=k+1;
  y1:=copy(parametr1,i+1,length(parametr1));
  y:=copy(parametr1,1,i-1);
{cчитаем целую часть числа 1}
  n:=length(y);
  n1:=length(y1);
  x1:=0;
  x2:=0;
  for i:=1 to n do
  begin
    val(y[i],x,code1);
    x1:=x1+x*(exp((n-i)*ln(2)));
    end;
    str(x1:0:0,y);
{cчитаем дробную  часть числа 1}
    for i:=1 to n1 do
    begin
    val(y1[i],x,code2);
    x2:=x2+x*(exp((-i)*ln(2)));
    end;
    str(x2:0:5,y1);
    {y1:=copy(y1,3,n1); }
 {Cтрока у хранит вещественное число 1 в 10сс}
     {y:=y+','+y1; }
{////Проверка}
     {edit1.Text:=y; }
     end;
if k=0 then
    begin
{Число 1 не вещественное}
{перевод числа  1 в десятичную систему счисления}
       n:=length(parametr1);
        x1:=0;
        for i:=1 to n do
        begin
         val(parametr1[i],x,code1);
         x1:=x1+x*(exp((n-i)*ln(2)));
          end;
        str(x1:0:0,y);
     end;
end;
{Проверяем вещественное  ли Число 2 }
 for i:=1 to length(parametr2) do
if parametr2[i]=',' then  begin {Число 2 вещественное!}
k1:=k1+1;
y3:=copy(parametr2,i+1,length(parametr2));
y2:=copy(parametr2,1,i-1);
{cчитаем целую часть числа 2}
n:=length(y2);
n1:=length(y3);
x1:=0;
x2:=0;
for i:=1 to n do
  begin
    val(y2[i],x,code1);
    x1:=x1+x*(exp((n-i)*ln(2)));
    end;
    str(x1:0:0,y2);
 
{cчитаем дробную  часть числа 2}
 for i:=1 to n1 do
  begin
    val(y3[i],x,code2);
    x2:=x2+x*(exp((-i)*ln(2)));
    end;
    str(x2:0:5,y3);
    {y3:=copy(y3,3,n1); }
 
  {Cтрока у1 хранит вещественное число 2 в 10сс}
{ y1:=y1+','+y2; }
     {////Проверка}
 {edit3.Text:=y1;}
end;
if k1=0 then begin
{\\\\\Число 2 не вещественное}
{перевод числа  2 в десятичную систему счисления}
n:=length(parametr2);
x2:=0;
for i:=1 to n do
  begin
    val(parametr2[i],x,code2);
    x2:=x2+x*(exp((n-i)*ln(2)));
    end;
    str(x2:0:0,y3);   {/////Проверка}
{edit4.Text:=y1; }
end;
 
begin
{y-целая часть числа 1
 y1-дробная часть числа 1
y2-целая часть  числа 2
y3-дробная часть  числа 2}
val(y,x1,code1);
val(y1,x2,code2);
val(y2,x3,code3);
val(y3,x4,code4);
x2:=x2+x4; {дробные части}
x1:=x1+x3;  {целые части}
otvet:=x1+x2;
str(otvet:0:5,otvet1);
begin
{/////////////Переводим  ответ в двоичную систему счисления}
{если ответ вещественное  число}
{k:=0;
for i:=1 to length(otvet1) do
if  otvet1[i]='.' then
begin
  k:=k+1;
  y:=copy(otvet1,1,i-1);
  y1:=copy(otvet1,i+1,length(otvet1));
    {Переведем дробную часть}
{    y1:='0,'+y1;
     val(y1,otvet4,code2);
     edit2.Text:=y1;
     for i:=1 to length(y1) do
     begin
     x1:=otvet4*2;
     otvet4:=x1;
     str(x1:4:4,y3);
   {edit4.Text:=y3;}
  {   y4:=y4+y3[1];
 
     end;
     edit3.Text:=y4;
 
{Переведем целую часть}
   { val(y,otvet3,code1);
    while otvet3>0 do
    begin
    x5:=otvet3 div 2;
    x1:=otvet3 mod 2;
    otvet3:=x5;
    str(x1:0:0,y);
    y2:=y2+y;
    end;    }
 
 {Получаем ответ в двоичной сс,но записанный справа налево}
{///////Запишем ответ  слева направо}
{for i:=length(y2)-1 downto 1 do
y:=y+y2[i]; }
 
{end
else}
begin
if k=0 then begin
val(otvet1,otvet2,code1);
while otvet2>0 do
    begin
    x5:=otvet2 div 2;
    x1:=otvet2 mod 2;
    otvet2:=x5;
    str(x1:0:0,y);
    y1:=y1+y;   {Получаем ответ в двоичной  сс,но записанный справа налево}
{///////Запишем ответ слева направо}
for i:=length(y1)-1 downto 1 do
y:=y+y1[i];
edotv.Text:=y
end;
end;
end;
end;
end;
end;
end;
end;
end;
 
 
procedure TForm1.BtMinusClick(Sender: TObject);
begin
edit2.Text:='Вычитание';
y:='';
y1:='';
y2:='';
y3:='';
y4:='';
 {проверяем числовое ли значение у параметров}
{////////////// число1   }
parametr1:=EdParametr1.Text;
if parametr1='' then
 begin
beep;
    showmessage('Вы  не ввели первое число!');
    edParametr1.SetFocus;
    edParametr1.SelectAll;
end;
if parametr1<>'' then begin
{//////////////число2}
parametr2:=EdParametr2.Text;
if parametr2='' then
 begin
beep;
    showmessage('Вы  не ввели второе число!');
    edParametr2.SetFocus;
    edParametr2.SelectAll;
end
else
   begin
    k:=0;
  val(parametr1,prmtr1,code1);
  for i:=1 to length(parametr1) do
  if (parametr1[i]<>'0') and (parametr1[i]<>'1') and (parametr1[i]<>',') then
  k:=k+1;
  if k<>0 then
  begin
  beep;
  showmessage('Вы некорректно  ввели число1!');
  edparametr1.SetFocus;
  edparametr1.SelectAll;
  end
else
   begin
   k:=0;
  val(parametr2,prmtr2,code2);
  for i:=1 to length(parametr2) do
  if (parametr2[i]<>'0') and (parametr2[i]<>'1') and (parametr2[i]<>',') then
  k:=k+1;
  if k<>0 then
  begin
  beep;
  showmessage('Вы некорректно  ввели число2!');
  edparametr2.SetFocus;
  edparametr2.SelectAll;
  end
else
begin
btPlus.Enabled:=false;
btMinus.Enabled:=false;
btMod.Enabled:=false;
btDiv.Enabled:=false;
btUmn.Enabled:=false;
btDel.Enabled:=false;
 save.Enabled:=true;
{///////////// Проверяем  вещественные ли числа???}
k:=0;
k1:=0;
for i:=1 to length(parametr1) do
if parametr1[i]=',' then   {Число 1 вещественное!}
  begin
  k:=k+1;
  y1:=copy(parametr1,i+1,length(parametr1));
  y:=copy(parametr1,1,i-1);
{cчитаем целую часть числа 1}
  n:=length(y);
  n1:=length(y1);
  x1:=0;
  x2:=0;
  for i:=1 to n do
  begin
    val(y[i],x,code1);
    x1:=x1+x*(exp((n-i)*ln(2)));
    end;
    str(x1:0:0,y);
{cчитаем дробную  часть числа 1}
    for i:=1 to n1 do
    begin
    val(y1[i],x,code2);
    x2:=x2+x*(exp((-i)*ln(2)));
    end;
    str(x2:0:5,y1);
    {y1:=copy(y1,3,n1); }
 {Cтрока у хранит вещественное число 1 в 10сс}
     {y:=y+','+y1; }
{////Проверка}
     {edit1.Text:=y; }
     end;
if k=0 then
    begin
{Число 1 не вещественное}
{перевод числа  1 в десятичную систему счисления}
       n:=length(parametr1);
        x1:=0;
        for i:=1 to n do
        begin
         val(parametr1[i],x,code1);
         x1:=x1+x*(exp((n-i)*ln(2)));
          end;
        str(x1:0:0,y);
     end;
end;
{Проверяем вещественное  ли Число 2 }
 for i:=1 to length(parametr2) do
if parametr2[i]=',' then  begin {Число 2 вещественное!}
k1:=k1+1;
y3:=copy(parametr2,i+1,length(parametr2));
y2:=copy(parametr2,1,i-1);
{cчитаем целую часть числа 2}
n:=length(y2);
n1:=length(y3);
x1:=0;
x2:=0;
for i:=1 to n do
  begin
    val(y2[i],x,code1);
    x1:=x1+x*(exp((n-i)*ln(2)));
    end;
    str(x1:0:0,y2);
 
{cчитаем дробную  часть числа 2}
 for i:=1 to n1 do
  begin
    val(y3[i],x,code2);
    x2:=x2+x*(exp((-i)*ln(2)));
    end;
    str(x2:0:5,y3);
    {y3:=copy(y3,3,n1); }
 
  {Cтрока у1 хранит вещественное число 2 в 10сс}
{ y1:=y1+','+y2; }
     {////Проверка}
 {edit3.Text:=y1;}
end;
if k1=0 then begin
{\\\\\Число 2 не вещественное}
{перевод числа  2 в десятичную систему счисления}
n:=length(parametr2);
x2:=0;
for i:=1 to n do
  begin
    val(parametr2[i],x,code2);
    x2:=x2+x*(exp((n-i)*ln(2)));
    end;
    str(x2:0:0,y3);   {/////Проверка}
{edit4.Text:=y1; }
end;
 
begin
{y-целая часть числа 1
 y1-дробная часть числа 1
y2-целая часть  числа 2
y3-дробная часть  числа 2}
val(y,x1,code1);
val(y1,x2,code2);
val(y2,x3,code3);
val(y3,x4,code4);
x2:=x2+x4; {дробные части}
x1:=x1+x3;  {целые части}
otvet:=x1-x2;
if otvet=0 then edotv.Text:='0'
else
begin
str(otvet:0:5,otvet1);
begin
{/////////////Переводим  ответ в двоичную систему счисления}
if k=0 then begin
val(otvet1,otvet2,code1);
while otvet2>0 do
    begin
    x5:=otvet2 div 2;
    x1:=otvet2 mod 2;
    otvet2:=x5;
    str(x1:0:0,y);
    y1:=y1+y;   {Получаем ответ в двоичной  сс,но записанный справа налево}
{///////Запишем ответ слева направо}
for i:=length(y1)-1 downto 1 do
y:=y+y1[i];
edotv.Text:=y;
end;
end;
end;
end;
end;
end;
end;
end;
end;
 
 
procedure TForm1.BtUmnClick(Sender: TObject);
begin
edit2.Text:='Умножение';
y:='';
y1:='';
y2:='';
y3:='';
y4:='';
 {проверяем числовое ли значение у параметров}
{////////////// число1   }
parametr1:=EdParametr1.Text;
if parametr1='' then
 begin
beep;
    showmessage('Вы  не ввели первое число!');
    edParametr1.SetFocus;
    edParametr1.SelectAll;
end;
if parametr1<>'' then begin
{//////////////число2}
parametr2:=EdParametr2.Text;
if parametr2='' then
 begin
beep;
    showmessage('Вы  не ввели второе число!');
    edParametr2.SetFocus;
    edParametr2.SelectAll;
end
else
   begin
    k:=0;
  val(parametr1,prmtr1,code1);
  for i:=1 to length(parametr1) do
  if (parametr1[i]<>'0') and (parametr1[i]<>'1') and (parametr1[i]<>',') then
  k:=k+1;
  if k<>0 then
  begin
  beep;
  showmessage('Вы некорректно  ввели число1!');
  edparametr1.SetFocus;
  edparametr1.SelectAll;
  end
else
   begin
   k:=0;
  val(parametr2,prmtr2,code2);
  for i:=1 to length(parametr2) do
  if (parametr2[i]<>'0') and (parametr2[i]<>'1') and (parametr2[i]<>',') then
  k:=k+1;
  if k<>0 then
  begin
  beep;
  showmessage('Вы некорректно  ввели число2!');
  edparametr2.SetFocus;
  edparametr2.SelectAll;
  end
else
begin
btPlus.Enabled:=false;
btMinus.Enabled:=false;
btMod.Enabled:=false;
btDiv.Enabled:=false;
btUmn.Enabled:=false;
btDel.Enabled:=false;
 save.Enabled:=true;
{///////////// Проверяем  вещественные ли числа???}
k:=0;
k1:=0;
for i:=1 to length(parametr1) do
if parametr1[i]=',' then   {Число 1 вещественное!}
  begin
  k:=k+1;
  y1:=copy(parametr1,i+1,length(parametr1));
  y:=copy(parametr1,1,i-1);
{cчитаем целую часть числа 1}
  n:=length(y);
  n1:=length(y1);
  x1:=0;
  x2:=0;
  for i:=1 to n do
  begin
    val(y[i],x,code1);
    x1:=x1+x*(exp((n-i)*ln(2)));
    end;
    str(x1:0:0,y);
{cчитаем дробную  часть числа 1}
    for i:=1 to n1 do
    begin
    val(y1[i],x,code2);
    x2:=x2+x*(exp((-i)*ln(2)));
    end;
    str(x2:0:5,y1);
    {y1:=copy(y1,3,n1); }
 {Cтрока у хранит вещественное число 1 в 10сс}
     {y:=y+','+y1; }
{////Проверка}
     {edit1.Text:=y; }
     end;
if k=0 then
    begin
{Число 1 не вещественное}
{перевод числа  1 в десятичную систему счисления}
       n:=length(parametr1);
        x1:=0;
        for i:=1 to n do
        begin
         val(parametr1[i],x,code1);
         x1:=x1+x*(exp((n-i)*ln(2)));
          end;
        str(x1:0:0,y);
     end;
end;
{Проверяем вещественное  ли Число 2 }
 for i:=1 to length(parametr2) do
if parametr2[i]=',' then  begin {Число 2 вещественное!}
k1:=k1+1;
y3:=copy(parametr2,i+1,length(parametr2));
y2:=copy(parametr2,1,i-1);
{cчитаем целую часть числа 2}
n:=length(y2);
n1:=length(y3);
x1:=0;
x2:=0;
for i:=1 to n do
  begin
    val(y2[i],x,code1);
    x1:=x1+x*(exp((n-i)*ln(2)));
    end;
    str(x1:0:0,y2);
 
{cчитаем дробную  часть числа 2}
 for i:=1 to n1 do
  begin
    val(y3[i],x,code2);
    x2:=x2+x*(exp((-i)*ln(2)));
    end;
    str(x2:0:5,y3);
    {y3:=copy(y3,3,n1); }
 
  {Cтрока у1 хранит вещественное число 2 в 10сс}
{ y1:=y1+','+y2; }
     {////Проверка}
 {edit3.Text:=y1;}
end;
if k1=0 then begin
{\\\\\Число 2 не вещественное}
{перевод числа  2 в десятичную систему счисления}
n:=length(parametr2);
x2:=0;
for i:=1 to n do
  begin
    val(parametr2[i],x,code2);
    x2:=x2+x*(exp((n-i)*ln(2)));
    end;
    str(x2:0:0,y3);   {/////Проверка}
{edit4.Text:=y1; }
end;
 
begin
{y-целая часть числа 1
 y1-дробная часть числа 1
y2-целая часть  числа 2
y3-дробная часть  числа 2}
val(y,x1,code1);
val(y1,x2,code2);
val(y2,x3,code3);
val(y3,x4,code4);
x2:=x2+x4; {дробные части}
x1:=x1+x3;  {целые части}
otvet:=x1*x2;
if otvet=0 then edotv.Text:='0'
else
begin
str(otvet:0:5,otvet1);
begin
{/////////////Переводим  ответ в двоичную систему счисления}
if k=0 then begin
val(otvet1,otvet2,code1);
while otvet2>0 do
    begin
    x5:=otvet2 div 2;
    x1:=otvet2 mod 2;
    otvet2:=x5;
    str(x1:0:0,y);
    y1:=y1+y;   {Получаем ответ в двоичной  сс,но записанный справа налево}
{///////Запишем ответ слева направо}
for i:=length(y1)-1 downto 1 do
y:=y+y1[i];
edotv.Text:=y
end;
end;
end;
end;
end;
end;
end;
end;
end;
 
 
procedure TForm1.BtdelClick(Sender: TObject);
begin
edit2.Text:='Деление';
y:='';
y1:='';
y2:='';
y3:='';
y4:='';
 {проверяем числовое ли значение у параметров}
{////////////// число1   }
val(parametr2,prmtr2,code1);
parametr1:=EdParametr1.Text;
if parametr1='' then
 begin
beep;
    showmessage('Вы  не ввели первое число!');
    edParametr1.SetFocus;
    edParametr1.SelectAll;
end;
if parametr1<>'' then begin
{//////////////число2}
parametr2:=EdParametr2.Text;
if parametr2='' then
 begin
beep;
    showmessage('Вы  не ввели второе число!');
    edParametr2.SetFocus;
    edParametr2.SelectAll;
end
else
begin
if (parametr2<>'') and (prmtr2=0) then
 begin
beep;
showmessage('На ноль  делить нельзя!');
  edparametr2.SetFocus;
  edparametr2.SelectAll;
end
else
   begin
    k:=0;
  val(parametr1,prmtr1,code1);
  for i:=1 to length(parametr1) do
  if (parametr1[i]<>'0') and (parametr1[i]<>'1') and (parametr1[i]<>',') then
  k:=k+1;
  if k<>0 then
  begin
  beep;
  showmessage('Вы некорректно  ввели число1!');
  edparametr1.SetFocus;
  edparametr1.SelectAll;
  end
else
   begin
   k:=0;
  val(parametr2,prmtr2,code2);
  for i:=1 to length(parametr2) do
и т.д.................


Перейти к полному тексту работы


Скачать работу с онлайн повышением уникальности до 90% по antiplagiat.ru, etxt.ru или advego.ru


Смотреть полный текст работы бесплатно


Смотреть похожие работы


* Примечание. Уникальность работы указана на дату публикации, текущее значение может отличаться от указанного.