Создание программы-приложения «Римские цифры», разработанная в среде визуального проектирования Delphi

 
 

Министерство по образованию Российской Федерации

      государственного  образовательного учреждения

      высшего профессионального образования

      Чайковский  филиал

      «Пермский государственный технический университет»

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

      Курсовая  работа 

      по  дисциплине

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

      Тема: Создание программы-приложения «Римские цифры», разработанная в среде визуального проектирования Delphi 
 
 

              Выполнил: студент гр.: БИ-09дн.

              Марченко  И.В.

                  Принял: ст. преподаватель

                                      Русских Т.И. 
                     
                     
                     
                     
                     
                     
                     

2010

Содержание 
 
 

Введение……………………………………………………………….…………..3

1 Задание на курсовую работу……………………………………………..….....5

2 Разработка программы……...………………………………..………………....6

3 Описание данных ...………………………………………………..…………....7

4 Разбиение задачи на подзадачи (структуризация)……………………..……..8

5 Блок схемы………………………………………………………………..……..9

6 Текст программы………………………………………………………………11

Рекомендуемая литература..…………………..………………………….….….23 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Введение

     Данная  курсовая работа выполнена в среде  программирования Delphi. Delphi — результат  развития языка Турбо Паскаль, который, в свою очередь, развился из языка  Паскаль. Паскаль был полностью  процедурным языком, Турбо Паскаль  начиная с версии 5.5 добавил в  Паскаль объектно-ориентированные  свойства, а Delphi — объектно-ориентированный  язык программирования с возможностью доступа к метаданным классов (то есть к описанию классов и их членов) в компилируемом коде, также называемом интроспекцией. Так как все классы наследуют функции базового класса TObject, то любой указатель на объект можно преобразовать к нему, после  чего воспользоваться методом ClassType и функцией TypeInfo, которые и обеспечат  интроспекцию. Также отличительным  свойством Дельфи от С++ является то, что объекты по умолчанию располагаются  в динамической памяти. Однако можно  переопределить виртуальные методы NewInstance и FreeInstance класса TObject. Таким образом, абсолютно любой класс может  осуществить "желание" "где  хочу - там и буду лежать". Соответственно организуется и "многокучность".

     Де-факто Object Pascal, а затем и язык Delphi являются функциональными наращиваниями Turbo Pascal. Об этом говорят обозначения  версий компилятора. Так, в Delphi 7 компилятор имеет номер версии 15.0 (Последняя  версия Borland Pascal / Turbo Pascal обозначалась 7.0, в Delphi 1 компилятор имеет версию 8.0, в Delphi 2 — 9.0, и т. д. Номер версии 11.0 носит компилятор Pascal, входивший  в состав среды C++ Builder). Delphi оказал огромное влияние на создание концепции языка C# для платформы .NET. Многие его элементы и концептуальные решения вошли  в состав С#. Одной из причин называют переход Андерса Хейлсберга, одного из ведущих разработчиков Дельфи, из компании Borland Ltd. в Microsoft Corp.

     Версия 1 была предназначена для разработки под 16-ти разрядную платформу Win16. Версии со второй компилируют программы  под 32-х разрядную платформу Win32. Вместе с 6-й версией Delphi вышла совместимая с ним по языку и библиотекам среда Kylix, предназначенная для компиляции программ под операционную систему GNU/Linux. Версия 8 способна генерировать байт-код исключительно для платформы .NET. Это первая среда, ориентированная на разработку мультиязычных приложений (лишь для платформы .NET). Последующие версии (обозначаемые годами выхода, а не порядковыми номерами, как это было ранее) могут создавать как приложения Win32, так и байт-код для платформы .NET. Delphi for .NET — среда разработки Delphi, а также язык Delphi (Object Pascal), ориентированные на разработку приложений для .NET. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

  1. Задание на курсовую работу
 

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

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

  1.  Разработка программы
 

            Задачей данной курсовой является разработка программы, которая позволяет производить различные операции с римскими числами. Такие как перевод в в десятичную систему счисления, сложение, вычитание, умножение, деление на цело. Сами арифметические операции заключаются в кнопке «=», кнопки с изображениями умножения, деления, сложения и вычитания лишь определяют первое из двух чисел операции и указывают, какая именно операция должна быть выполнена. Для математических вычислений существует множество различных программных продуктов. Это известные всем пакеты MathCad, MathLab, Mathematika, Axum. Есть и более простые: всевозможные программы – калькуляторы (имитирующие работу обычного калькулятора).

Описание  основных функций

Функция get_token() – функция синтаксического  разбора введенного выражения.

Функция get_number() – функция ввода числа.

Функция get_name() – функция ввода имени  постоянной или функции.

Функция expr() – функция вычисление полного  выражения.

Функция term() – функция вычисление слагаемого.

Функция prim() – функция вычисление первичной  части выражения.

Функция function_value() – функция вычисление значения функции.

 Вывод  сообщения об ошибке 

Функция error() – функция вывод сообщения  об ошибке.

Функция term_sym() – функция проверка на терминальный символ.

Функция void back_space() – функция исправление  ошибки ввода клавишей BACKSPACE.

Функция dupl_oper_verify() – функция проверка дублирования знака операции.  
 

  1. Описание  данных
 

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

Схема функциональной структуры

 

 
 

 

 

                                     

 
 

 
 

 
 

 

 
 
 

 

 
 
 

  1. Разбиение задачи на подзадачи (структуризация)
 
 
  1. Разработка  проекта.
  2. Введение римских цифр и их сохранение.
  3. Выполнение программы.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
  1. Блок–схема  обработчика события к кнопке «=»
 

    Рис 1.

     Пользователь  водит какую-либо задачу, а программа, в свою очередь,

делает  вычисления и выводит ответ, либо ошибку.

Обработчик  события кнопки «=» сохраняет  первое введенное пользователем число в Edit1.Text=X. Если выполняются условия X>1+e16 or X<-1+e16, то на экран выводится ошибка «Слишком большое число», и процедура введения данных начинается сначала.

Если  условия не выполняются, то пользователь выбирает функцию сложение, вычитание, деление или умножение и вводит второе число, которое сохраняется  в Edit.Text:=Y. программа вычисляет введенное выражение и выводит ответ на экран Z:=Edit.Text

   

Текст программы

    1. Главная форма:

    object Form1: TForm1

      Left = 312

      Top = 206

      BorderStyle = bsSingle

      Caption = #1050#1072#1083#1100#1082#1091#1083#1103#1090#1086#1088

      ClientHeight = 352

      ClientWidth = 703

      Color = clGray

      Font.Charset = DEFAULT_CHARSET

      Font.Color = clWindowText

      Font.Height = -11

      Font.Name = 'MS Sans Serif'

      Font.Style = []

      OldCreateOrder = False

      Position = poDesktopCenter

      PixelsPerInch = 96

      TextHeight = 13

      object Edit1: TEdit

        Left = 8

        Top = 8

        Width = 689

        Height = 32

        Font.Charset = DEFAULT_CHARSET

        Font.Color = clWindowText

        Font.Height = -19

        Font.Name = 'MS Sans Serif'

        Font.Style = []

        MaxLength = 3

        ParentFont = False

        ReadOnly = True

        TabOrder = 0

      end

      object Button3: TButton

        Left = 8

        Top = 48

        Width = 65

        Height = 33

        Caption = 'Clear'

        Font.Charset = DEFAULT_CHARSET

        Font.Color = clWindowText

        Font.Height = -19

        Font.Name = 'MS Sans Serif'

        Font.Style = []

        ParentFont = False

        TabOrder = 1

        OnClick = Button3Click

      end

      object Button4: TButton

        Left = 224

        Top = 120

        Width = 41

        Height = 25

        Caption = '-'

        Font.Charset = DEFAULT_CHARSET

        Font.Color = clWindowText

        Font.Height = -24

        Font.Name = 'MS Sans Serif'

        Font.Style = []

        ParentFont = False

        TabOrder = 2

        OnClick = Button4Click

      end

      object Button5: TButton

        Left = 152

        Top = 184

        Width = 65

        Height = 33

        Caption = '='

        Font.Charset = DEFAULT_CHARSET

        Font.Color = clWindowText

        Font.Height = -24

        Font.Name = 'MS Sans Serif'

        Font.Style = []

        ParentFont = False

        TabOrder = 3

        OnClick = Button5Click

      end

      object Button14: TButton

        Left = 224

        Top = 152

        Width = 41

        Height = 65

        Caption = '+'

        Font.Charset = DEFAULT_CHARSET

        Font.Color = clWindowText

        Font.Height = -32

        Font.Name = 'MS Sans Serif'

        Font.Style = []

        ParentFont = False

        TabOrder = 4

        OnClick = Button14Click

      end

      object Back: TButton

        Left = 152

        Top = 48

        Width = 113

        Height = 33

        Caption = 'Back Space'

        Font.Charset = DEFAULT_CHARSET

        Font.Color = clWindowText

        Font.Height = -19

        Font.Name = 'MS Sans Serif'

        Font.Style = []

        ParentFont = False

        TabOrder = 5

        OnClick = BackClick

      end

      object Button15: TButton

        Left = 224

        Top = 88

        Width = 41

        Height = 25

        Caption = 'X'

        Font.Charset = DEFAULT_CHARSET

        Font.Color = clWindowText

        Font.Height = -19

        Font.Name = 'MS Sans Serif'

        Font.Style = []

        ParentFont = False

        TabOrder = 6

        OnClick = Button15Click

      end

      object Button16: TButton

        Left = 272

        Top = 48

        Width = 97

        Height = 33

        Caption = '/ '#1053#1072#1094#1077#1083#1086

        Font.Charset = DEFAULT_CHARSET

        Font.Color = clWindowText

        Font.Height = -19

        Font.Name = 'MS Sans Serif'

        Font.Style = []

        ParentFont = False

        TabOrder = 7

        OnClick = Button16Click

      end

      object Button17: TButton

        Left = 152

        Top = 88

        Width = 65

        Height = 25

        Caption = '+/-'

        Font.Charset = DEFAULT_CHARSET

        Font.Color = clWindowText

        Font.Height = -19

        Font.Name = 'MS Sans Serif'

        Font.Style = []

        ParentFont = False

        TabOrder = 8

        OnClick = Button17Click

      end

      object Button1: TButton

        Left = 80

        Top = 48

        Width = 65

        Height = 33

        Caption = 'OFF'

        Font.Charset = DEFAULT_CHARSET

        Font.Color = clWindowText

        Font.Height = -19

        Font.Name = 'MS Sans Serif'

        Font.Style = []

        ParentFont = False

        TabOrder = 9

        OnClick = Button1Click

      end

      object GroupBox1: TGroupBox

        Left = 8

        Top = 83

        Width = 105

        Height = 120

        Caption = #1062#1080#1092#1088#1099

        Font.Charset = DEFAULT_CHARSET

        Font.Color = clWindowText

        Font.Height = -13

        Font.Name = 'MS Sans Serif'

        Font.Style = []

        ParentFont = False

        TabOrder = 10

        object Button8: TButton

          Left = 8

          Top = 56

          Width = 25

          Height = 25

          Caption = 'L'

          Font.Charset = DEFAULT_CHARSET

          Font.Color = clWindowText

          Font.Height = -19

          Font.Name = 'MS Sans Serif'

          Font.Style = []

          ParentFont = False

          TabOrder = 0

          OnClick = Button8Click

        end

        object Button2: TButton

          Left = 8

          Top = 88

          Width = 25

          Height = 25

          Caption = 'I'

          Font.Charset = DEFAULT_CHARSET

          Font.Color = clWindowText

          Font.Height = -19

          Font.Name = 'MS Sans Serif'

          Font.Style = []

          ParentFont = False

          TabOrder = 1

          OnClick = Button2Click

        end

        object Button6: TButton

          Left = 40

          Top = 88

          Width = 25

          Height = 25

          Caption = 'V'

          Font.Charset = DEFAULT_CHARSET

          Font.Color = clWindowText

          Font.Height = -19

          Font.Name = 'MS Sans Serif'

          Font.Style = []

          ParentFont = False

          TabOrder = 2

          OnClick = Button6Click

        end

        object Button7: TButton

          Left = 72

          Top = 88

          Width = 25

          Height = 25

          Caption = 'X'

          Font.Charset = DEFAULT_CHARSET

          Font.Color = clWindowText

          Font.Height = -19

          Font.Name = 'MS Sans Serif'

          Font.Style = []

          ParentFont = False

          TabOrder = 3

          OnClick = Button7Click

        end

        object Button9: TButton

          Left = 40

          Top = 56

          Width = 25

          Height = 25

          Caption = 'C'

          Font.Charset = DEFAULT_CHARSET

          Font.Color = clWindowText

          Font.Height = -19

          Font.Name = 'MS Sans Serif'

          Font.Style = []

          ParentFont = False

          TabOrder = 4

          OnClick = Button9Click

        end

        object Button10: TButton

          Left = 72

          Top = 56

          Width = 25

          Height = 25

          Caption = 'D'

          Font.Charset = DEFAULT_CHARSET

          Font.Color = clWindowText

          Font.Height = -19

          Font.Name = 'MS Sans Serif'

          Font.Style = []

          ParentFont = False

          TabOrder = 5

          OnClick = Button10Click

        end

        object Button11: TButton

          Left = 8

          Top = 24

          Width = 25

          Height = 25

          Caption = 'M'

          Font.Charset = DEFAULT_CHARSET

          Font.Color = clWindowText

          Font.Height = -19

          Font.Name = 'MS Sans Serif'

          Font.Style = []

          ParentFont = False

          TabOrder = 6

          OnClick = Button11Click

        end

      end

      object Edit2: TEdit

        Left = 8

        Top = 312