АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция
|
Текст приложения на языке Object Pascal
↑ Наверх
Приложение состоит из головной программы POOP и модуля UOOP. В головной программе описан класс TInOut, который отвечает за ввод исходных данных и вывод результата. В модуле UOOP описан класс TConvertPtoDec, который отвечает за преобразования числа, представленного в системе счисления с основанием p в десятичное представление.
Класс TInOut инкапсулирует в себе поля p, Np, mistake для хранения данных и методы, предназначенные для обработки полей. Методы в классе представлены заголовками трёх процедур по именам: OutPutResult, CheckInputFormat, Input и заголовком специального метода конструктора по имени Create. Интерфейс класса – это те поля и методы, к которым могут обращаться объекты этого класса, представлен разделом с уровнем доступа public.Реализация класса - это те поля и методы, которые недоступны объектам этого класса, представлена разделом с уровнем доступа private. В случае класса TInOut все методы составляют интерфейс класса, а поля – его реализацию.
Класс TConvertPtoDec не содержит полей в его состав входят лишь методы. Раздел интерфейса класса представлен одним методом Convert. Три другие метода помещены в раздел реализации класса. Объекты этого класса могут вызывать только метод Convert, который обеспечивает преобразование числа в десятичную систему счисления. Остальные методы являются вспомогательными и вызываются внутри метода Convert. Объекты класса доступа к ним не имеют.
Текст головной программы. //----------------------------------------------------- program POOP; //----------------------------------------------------- //Перевод р - ичного числа представленного строкой в //число. р от 2 до 16. //Технология ООП {$APPTYPE CONSOLE} //----------------------------------------------------- uses SysUtils, UOOP in 'UOOP.pas';
//----------------------------------------------------- type //----------------------------------------------------- TInOut = Class //------------------------------------------------- public //------------------------------------------------- procedure OutPutResult(r: TConvertPtoDec); //Вывод десятичное представление р - ичного числа //------------------------------------------------- procedure CheckInputFormat(); //Контроль формата ввода //------------------------------------------------- procedure Input(); //Ввод р-ичного числа //------------------------------------------------- constructor Create(p: integer = 16); //------------------------------------------------- private //------------------------------------------------- p: integer;//Основание системы счисления //------------------------------------------------- Np:String;//исходное р-ичное число //------------------------------------------------- mistake: integer;//Номер ошибочной позиции в р-ичном числе //------------------------------------------------- end; //----------------------------------------------------- const FirstS =['0'..'9','A'..'F','a'..'f','-','+']; Another = FirstS + [',']; //----------------------------------------------------- constructor TInOut.Create(p: integer = 16); begin self.p:= p; mistake:= 0; end; //----------------------------------------------------- procedure TInOut.Input; //Ввод р-ичного числа begin write('p = '); Readln(p); write('Str',p,' = '); readln(Np); end;
//----------------------------------------------------- procedure TInOut.CheckInputFormat; //Контроль формата ввода var i: integer; begin for i:= 1 to Length(Np) do begin if (i = 1) and not (Np[1] in FirstS) then begin mistake:= 1; exit; end; if (i <> 1) and not (Np[i] in Another) then begin mistake:= i; exit; end; end; end; //----------------------------------------------------- procedure TInOut.OutPutResult; //Вывод десятичное представление р - ичного числа begin if mistake = 0 then begin //Формирование и вывод строки результата writeln('number = ',r.Convert(Np,p):8:4); end else //вывод сообщения об ошибке writeln('input mistake position ', mistake); end; //----------------------------------------------------- var c: TInOut; f: TConvertPtoDec; //----------------------------------------------------- begin c:= TInOut.Create(16);//Создание объекта класса TInOut. f:= TConvertPtoDec.Create; //Создание объекта класса //TConvertPtoDec. c.Input();//Ввод исходных данных c.CheckInputFormat;//Контроль формата исходных данных c.OutPutResult(f);//Преобразование и вывод результата readln; end.
Текст модуля. //----------------------------------------------------- unit UOOP;
//----------------------------------------------------- interface //----------------------------------------------------- type //----------------------------------------------------- TConvertPtoDec = class//отвечает за преобразование числа //------------------------------------------------- public //------------------------------------------------- function Convert(Np: String;p: integer):real; //Формирование результата private //------------------------------------------------- function PCharToInt(d: Char):integer; //переводит символ, изображающий цифру в её //числовое представление в системах счисления с //основаниями от 2 до 16 //------------------------------------------------- function PStrToInt(r: String; b:integer):integer; //перевод целого - строка r в её числовое //представление в с. сч. с основанием b //------------------------------------------------- function PStrToFrac(f: String; b:integer): Real; //перевод дроби - строка f в её числовое //представление в с. сч. с основанием b end; //----------------------------------------------------- implementation //----------------------------------------------------- function TConvertPtoDec.PCharToInt(d: Char):integer; //переводит символ, изображающий цифру, в её числовое //представление в системах счисления с основаниями от 2 //до 16 begin result:= 0; case d of '0'..'9': Result:= Ord(d)- Ord('0'); 'A'..'F': Result:= Ord(d)- Ord('A') + 10; 'a'..'f': Result:= Ord(d)- Ord('a') + 10; end; end; //----------------------------------------------------- function TConvertPtoDec.PStrToInt(r: String; b:integer):integer; //перевод целое строка s в её числовое //представление в с. сч. с основанием b var n: integer; w: integer; begin result:= 0; n:= Length(r); w:= 1; while n <> 0 do begin Result:= Result + PCharToInt(r[n])*w; w:= w*b; Delete(r,n,1); n:= Length(r); end; end; //----------------------------------------------------- function TConvertPtoDec.PStrToFrac(f: String; b:integer): Real; //перевод дробь строка f в её числовое //представление в с. сч. с основанием b var n: integer; w: Real; begin result:= 0; n:= Length(f); w:= 1/b; while n <> 0 do begin Result:= Result + PCharToInt(f[1])*w; w:= w/b; Delete(f,1,1); n:= Length(f); end; end; //----------------------------------------------------- function TConvertPtoDec.Convert(Np: String;p: integer):real; //Формирование результата p-основание системы счисления var Ip: String;//целая часть исходного р-ичного числа Fp: String;//дробная часть исходного р-ичного числа signe: integer;//Знак числа z: integer;//позиция разделителя в р-ичном числе begin Ip:='';//целая часть исходного р-ичного числа Fp:='';//дробная часть исходного р-ичного числа signe:= 1;//Знак числа if Np[1]='-' then begin signe:= -1; delete(Np,1,1) end else signe:= 1; z:= Pos(',',Np); if z <> 0 then begin Ip:= Copy(Np,1,z - 1); Fp:= Copy(Np,z + 1,Length(Np) - z); result:= PStrToInt(Ip, p) + PStrToFrac(Fp, p) end else begin Ip:= Np; result:= PStrToInt(Ip, p); end; if signe < 0 then result:= result*signe; end;
end. //-----------------------------------------------------
← 34.4. Основные элементы объектной модели
| 35.0. Введение →
| ↑ Наверх 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | Поиск по сайту:
|