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;
Вообще, 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 <логическое выражение>;