Здравствуйте! Нужна помощь понимающих людей.
Есть программка, но не могу разобраться с функциями и процедурами, хотелось бы понять как они работают и зачем они вообще нужны в данной программе.
Текст программы:
Код:
program FromDecTo6;
{$APPTYPE CONSOLE}
uses
SysUtils,
Windows;
function FromDecInt(intPart:Integer):string;
var
s: String;
const
digit:string[16]='0123456';
begin
s:='';
repeat
s:=digit[(intPart mod 6)+1]+s;
intPart:=intPart div 6;
until intPart=0;
FromDecInt := s;
end;
function FromDecDecimal(floatPart:Real):string;
var
s: String;
j,a: Integer;
begin
s := s + '.';
for j := 0 to 5 do begin
floatPart := floatPart * 6;
a := Trunc(floatPart);
s := s + IntToStr(a);
floatPart := Frac(floatPart);
if (floatPart = 0) then break;
end;
FromDecDecimal := s;
end;
function FromDec(n:Real):string;
var
s:String;
const
digit:string[16]='0123456';
begin
s := FromDecInt(Abs(Trunc(n)));
if (Frac(n) <> 0.0) then begin
s := s + FromDecDecimal(Abs(Frac(n)));
end;
FromDec:=s;
end;
function checkErrorEmpty(value:String): Boolean;
begin
if (length(value) < 1) then begin
Writeln(' Ошибка ввода: Ничего не введено');
checkErrorEmpty := true;
end else begin
checkErrorEmpty := false;
end;
end;
function checkErrorFirstCharacter(value:String):Boolean;
begin
if (((Ord(value[1]) < 48) OR (Ord(value[1]) > 57)) AND (value[1] <> '-')) then begin
Writeln(' Ошибка ввода исходного числа: позиция номер 1');
checkErrorFirstCharacter := true;
end else begin
checkErrorFirstCharacter := false
end;
end;
function checkErrorCharacters(value:String):Boolean;
var
isDecimalPart: Boolean;
i: Integer;
begin
isDecimalPart := false;
checkErrorCharacters := false;
for i:= 2 to Length(value) do begin
if (((Ord(value[i]) < 48) OR (Ord(value[i]) > 57)) AND (value[i] <> '.')) then begin
Writeln(' Ошибка ввода исходного числа: позиция номер ',i);
checkErrorCharacters := true;
Break;
end;
if (value[i] = '.') then begin
if (isDecimalPart = false) then begin
isDecimalPart := true;
Continue;
end else begin
Writeln(' Ошибка ввода исходного числа: позиция номер ',i);
checkErrorCharacters := true;
Break;
end;
end;
end;
end;
function checkErrors(value:String):Boolean;
var
isError: Boolean;
begin
isError := checkErrorEmpty(value);
if (isError = false) then
isError := checkErrorFirstCharacter(value);
if (isError = false) then
isError := checkErrorCharacters(value);
checkErrors := isError;
end;
procedure InputValue(var value:String; var isError:Boolean);
begin
Write(' Введите действительное 10-ичное число: ');
Readln(value);
Writeln('//-----------------------------------------------------------------------------');
isError := checkErrors(value);
end;
procedure OutputResult(oldValue:String; newValue: String; isError:Boolean);
begin
if (oldValue[1] = '-') then
newValue := '-' + newValue;
if (isError = false) then
Writeln(' 6-ое представление: ', newValue, ' десятичного числа: ',oldValue);
Writeln('//-----------------------------------------------------------------------------');
end;
var
DEC: String;
error: Boolean;
result: String = '';
begin
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
DecimalSeparator := '.';
Writeln('//-----------------------------------------------------------------------------');
Writeln(' Приложение для перевода 10-ых действительных чисел в 6-ую систему счисления');
Writeln('//-----------------------------------------------------------------------------');
InputValue(DEC, error);
if (error = false) then
result := FromDec(StrToFloat(DEC));
OutputResult(DEC, result, error);
Readln;
end.
Как я понял функция
FromDecInt определяет значение числа и возвращает полученный результат в основную программу.
FromDecDecimal - Выводит разряды шестеричного представления. Верно? И что делают другие функции?