Смекни!
smekni.com

Трансляция кода Delphi в код C++Builder (стр. 2 из 2)

OP

Константы, подобно переменным, должны быть объявлены в блоке кода "const" в начале определения процедуры или функции ,определения или в декларации объекта .

function PayBack_d(var dAmount: double): double;

const iMAX = 2000; dMAXVALUE = 1234.75;

var iCount, iLoop, iValToReach: integer;

dMaxLoan, dTotal, dMaxRate: double;

begin

dMaxRate := dMAXVALUE;

{...}

Функции и процедуры

Блоки Кода, которые исполняют определенную задачу в C ++, называются "функциями" независимо от того, действительно ли они возвращают значение. В OP, функции должны возвращать значение, процедуры не возвращают значение. В C ++, все функции должны иметь прототип, объявленный перед применением (так что транслятор может сравнивать обе функции , чтобы гарантировать соответствие). В OP, однако, функция или определение процедуры могут опустить (но это не желательно) параметры и опускать тип возвращения.Декларация функции в C ++ и определений требует фигурных скобок () независимо от того, действительно ли передаются любые параметры. OP функции и процедуры не нуждаются в фигурных скобках () при их объявлении или определении , если не передается никаких параметров,для вызова функции или процедуры.

С++

Декларации

void Foo(double X);

int Foo2();

Реализация

void Foo(double X)

{

int Y=X;

}

int Foo2()

{

return 0;

}

OP

Каждая функция и процедура должны быть идентифицированы включением ключевого слова "function" или "procedure" в начале каждого определения .

function IntSinceLastAddDate_d(var dAvailCash: double): double;

procedure SetNewIntRate; {нет параметров и возвращаемого значения}

...

function LoanC.IntSinceLastAddDate_d(var dAvailCash: double): double;

var dSomething: double;

begin

...

result := dSomething; {глобальнаяпеременная "result" назанчаетсявозвращаемымзначением!}

end;

procedure LoanC.SetNewIntRate;

begin

...

end;

И C ++ и OP могут передавать параметры по значению или по ссылке или передавать константы...

C++ позначению ... double IntSinceLastAddDate_d(double dAvailCash);

OP позначению ... function IntSinceLastAddDate_d(dAvailCash: double): double;

C++ поссылке ... double IntSinceLastAddDate_d(double &dAvailCash);

OP поссылке ... function IntSinceLastAddDate_d(var dAvailCash: double): double;

C++ константы... double IntSinceLastAddDate_d(const double dAvailCash);

OP константы... function IntSinceLastAddDate_d(const dAvailCash: double): double;

Конструкция with ... do

Вообще, C ++ более компактен чем OP. Но, C ++ не имеет инструкцию with ... do с... Это неудачно, потому что это действительно - большая особенность OP. C ++ код будет более подробным по сравнению с OP.

В C ++, когда Вы должны обратиться к членам данных, вы заканчиваете оператор подобно этому...

poC.oStock.aoTradesLast130Days[0].lVol = 0;

poC.oStock.aoTradesLast130Days[0].dHigh = 0;

poC.oStock.aoTradesLast130Days[0].dLow = 0;

poC.oStock.aoTradesLast130Days[0].dClose = 0;

Но в OP, Вы можете делать это гораздо менее читаемым, делая так...

with poC.oStock.aoTradesLast130Days[0] do begin

lVol := 0;

dHigh := 0;

dLow := 0;

dClose := 0;

end;

В принципе в данный момент это выглядит довольно коротко и ясно по стравнению с С++. Но в случае многочисленных вложеных операторов порой возникает путаница что с чем взаимодействует. Хотя... как говорят программисты, которые пишут на OP, им гораздо легче ориентироваться именно в таком типе записи (OP) чем в типе С++.

Комментарии

C++ поддерживает 2 вида комментариев:

Однострочный комментарий

//Это комментарий

И многострочный комментарий

/*

А я многострочный комментарий, хотя и нахожусь всего на одной строке. Зато занял места на 3 строки.

*/

OP в отличие от С++ поддерживает 3 вида комментариев. Это связано с тем, что Borland при написании Delphi внес в язык Pascal очень много элементов из C++.В часности добавился однострочный комментарий как в С++

Однострочный комментарий

//Это комментарий

И многострочный комментарий

(*

А я многострочный комментарий, хотя и нахожусь всего на одной строке. Зато занял места на 3 строки.

*)

{

И я многострочный комментарий, но работаю только в OP

}

Управляющие конструкции (if, else, switch...)

Существует пять структур управления на обоих языках, и они весьма подобны. Этот обзор займет много места .

1. Конструкция if ... else

C++

if(<логическое выражение>) // в скобках единственное выражение

{

...

}

else if(<логическое выражение>)

{

...

}

else

{

...

}

OP

if <логическое выражение> then

begin

{единственное выражение не должно находиться в скобках}

...

end

else if <логическоевыражение> then

begin

....

end

else

begin

...

end; {только самый последний "end" в выражении терминируется точкой с запятой}

2. Конструкция switch/case

C++

switch(<целочисленная константа>)

{

case iX: ... break;

case iY: ... break;

default: ...

}

OP

case <целочисленная выражение переменная или константа> of

{здесь "begin" не нужен}

iX:

begin

...

end; {точка с запятой после каждого "end";}

iY:

begin

...

end;

else {двоеточие не требуется}

begin

...

end;

end;{вотздесь "end;" }

3. Цикл for

C++

for(iCount = 0; iCount <= 10; iCount++)

{

// инкреметн нужен для цикла, iCount++,может быть увеличен

// на любое значние не только на 1

...

break; // для выхода из цикла

continue; // для продолжения цикла

...

}

OP

for iCount := 1 to 10 do

begin

... {цикл for может увеличивать счетчик только на 1}

break; { для выхода из цикла }

continue; { для продолжения цикла }

...

end ;

Есть одно различие между выполнением "break" и "continue" в языках. В C ++, break, и continue - ключевые слова - часть языка;

В OP это библиотечные процедуры.Хотя используются также.

4. Цикл while

C++

while(<логическое выражение>)

{

// выражение проверяется в самом начале цикла,так что код может никогда не использоваться

// если выражение вернет false

...

break; // для выхода из цикла

continue; // для продолжения цикла

...

}

OP

while <логическое выражение> do

begin

{ выражение проверяется в самом начале цикла,так что код может никогда не использоваться

если выражение вернет false }

...

break; { для выхода из цикла }

continue; { для продолжения цикла }

...

end;

5. Цикл do ... while

5) The do/repeat ... loop construct:

C++

do

{

// выполняется некий код, затем проверяется выражение. В этом случае код выполнится хотябы один раз

...

break; // для выхода из цикла

continue; // для продолжения цикла

...

}while(<логическое выражение>);

OP

repeat

{ eвыполняется некий код, затем проверяется выражение. В этом случае код выполнится хотябы один раз

заметьте что в цикле нет ключевых слов begin ... end }

...

break; { для выхода из цикла }

continue; { для продолжения цикла }

...

until <логическое выражение>;