Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Вещественные типы




В переменных действительных типов содержатся числа, состоящие из целой и дробной частей. В Object Pascal определено шесть вещественных типов. Все типы могут представлять число 0, однако они различаются пороговым (минимальным положительным) и максимальным значениями, которые могут представлять, а также точностью (количеством значащих цифр) и объемом. Действительные типы описываются в табл. 1.

Таблица 1. Вещественные типы.

Тип Порог Максимальное значение Количество значащих цифр Объем (байт)
Real 2.9E-39 1.7Е38 11-12  
Single 1.5E-45 3.4Е38 7-8  
Double 5.0E-324 1.7Е308 15-16  
Extended 3.4E-4932 1.IE4932 19-20  
Comp 1.0 9.2Е18 19-20  
Currency 0.0001 9.2Е14 19-20  

Целые типы представляют целые числа, т.е. числа, дробная часть которых равна нулю. Разница между двумя неодинаковыми целыми числами не может быть меньше единицы. Именно благодаря этому целые числа применяются для обозначения дискретных величин, независимо от того, имеют ли реальные объекты какое-либо отношение к числам. Действительные типы предназначены для представления чисел, которые могут иметь дробную часть, поэтому они полезны для представления величин, которые могут быть довольно близкими, почти непрерывными.

Заметьте, именно почти. Несмотря на название вещественные, переменные этих типов отличаются от математических вещественных чисел. В Object Pascal вещественный тип — это подмножество математических вещественных чисел, которые можно представить в формате с плавающей запятой и фиксированным числом цифр. Для невнимательных программистов ситуация усугубляется тем, что в стандартных форматах IEEE (Institute of Electrical and Electronic Engi-neers — Институт инженеров- электриков и электронщиков), применяемых в программах Delphi и вообще в большинстве программ для Windows, возможно точное представление только чисел с фиксированным числом бит в дробной части. Удивительно, но такое простое число, как 0,1, записывается в расширенном формате IEEE с некоторой погрешностью, пусть очень небольшой. Из-за этого представление с плавающей запятой оказывается несколько неудобным для программ, в которых сохраняется и выводится фиксированное число десятичных разрядов численных значений. Это относится и к программам, работающим с ''живыми" деньгами.

Для частичного решения этой проблемы в Object Pascal определены два формата с фиксированной запятой. Тип Comp (computational — вычислительный) содержит только целые числа в диапазоне от -263+1 до 263-1, что примерно соответствует диапазону от —9,2х1018 до 9,2х1018. При программировании операций с американской валютой разработчикам обычно приходится искать естественный способ записи денежных сумм, в котором целая часть числа определяет количество долларов, дробная — центов. Если такие значения записывать в переменные типа Comp, придется представлять их в виде целого числа центов. В этом случае следует умножать значение на 100 для обращения центов в доллары, а затем делить на 100, чтобы снова получить центы.

Этих забот можно избежать, если воспользоваться типом Currency. В этом случае задачу выбора масштаба возьмет на себя компилятор. Физически значения Currency записываются в память того же объема, что и Comp, как целые числа, однако компилятор не забывает вовремя разделить значение на 10 000 (не на 100!) для его приведения в соответствие с денежным знаком и умножить на 10 000 перед записью в память. Это обеспечивает абсолютную точность в четыре десятичных знака после запятой.

В Delphi есть модуль System, содержащий ряд процедур обработки данных действительных типов. Наиболее распространенные из них перечислены в табл. 1.6. Много полезных процедур содержится также в модулях SysUtils и Math.

Таблица 2 Функции действительных типов

Функция Возвращаемое значение
Abs (x) Абсолютная величина х
АгсТаn(х) Арктангенс х
Cos (х) Косинус х (х выражается в радианах, а не в градусах)
Ехр (х) Экспоненциальная функция от х
Frac(x) Дробная часть х
Int (х) Целая часть х. Несмотря на название, возвращает действительное значение (с плавающей запятой), т.е. просто устанавливает нуль в дробной части
Ln (х) Натуральный логарифм от х
Pi Число Пи (3.1416...)
Round (х) Ближайшее к х целое значение. Возвращает значение целого типа. Условие "ближайшее к х" не работает, если верхнее и нижнее значения оказываются равноудаленными (например, если дробная часть точно равна 0,5). В этих случаях Delphi перекладывает решение на операционную систему. Обычно процессоры Intel решают эту задачу в соответствии с рекомендацией IEEE округлять в сторону ближайшего четного целого числа. Иногда такой подход называют "банкирским округлением"
Sin(x) Синус х
Sqr(x) Квадрат х, т.е. X*X
Sqrt (х) Квадратный корень от х
Тrunc (х) Целая часть х. В отличие от Int, возвращающей действительное значение, Trunc возвращает целое

 

3. Листинг программы:

 

unit Unit1;

 

{$mode objfpc}{$H+}

 

interface

 

uses

Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,

Menus, StdCtrls;

 

type

 

{ TForm1 }

 

TForm1 = class(TForm)

Button1: TButton;

Edit1: TEdit;

Edit2: TEdit;

Edit3: TEdit;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

MainMenu1: TMainMenu;

MenuItem1: TMenuItem;

MenuItem2: TMenuItem;

MenuItem3: TMenuItem;

MenuItem4: TMenuItem;

MenuItem5: TMenuItem;

procedure Button1Click(Sender: TObject);

procedure MenuItem2Click(Sender: TObject);

procedure MenuItem5Click(Sender: TObject);

private

{ private declarations }

public

{ public declarations }

end;

 

var

Form1: TForm1;

 

implementation

 

{ TForm1 }

 

procedure TForm1.MenuItem2Click(Sender: TObject);

begin

close;

end;

 

procedure TForm1.Button1Click(Sender: TObject);

var

a,b,c: integer;

begin

a:= StrToInt(Edit1.Text);

b:= StrToInt(Edit2.Text);

c:= a + b;

Edit3.Text:= IntToStr(C);

end;

 

procedure TForm1.MenuItem5Click(Sender: TObject);

begin

ShowMessage('Выполнил студент СФ 1-8 Иванов И.И.');

end;

 

initialization

{$I unit1.lrs}

 

end.

4. Блок схема программы:

 

 

5. Пример работы программы:

 

Рисунок 1 – Вид до вычисления результатов.

 

 

Рисунок 2 – Вид программы после вычисления результатов.

 

Рисунок 3 - меню - Помощь.

 

 

6. Вывод: В результате выполнения данной работы я научился работать с компонентами Закладок Standard и Additional. Познакомился с вещественными типами данных и разобрался в функционировании оператора присваивания.

 

Работу выполнил Работу принял Дата/ подпись принятия
Иванов Иван Иванович Савин Артем Петрович  

 

 




Поделиться с друзьями:


Дата добавления: 2015-06-30; Просмотров: 329; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.007 сек.