45741 (Трансляция кода Delphi в код C++Builder), страница 2
Описание файла
Документ из архива "Трансляция кода Delphi в код C++Builder", который расположен в категории "". Всё это находится в предмете "информатика" из , которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "остальное", в предмете "информатика, программирование" в общих файлах.
Онлайн просмотр документа "45741"
Текст 2 страницы из документа "45741"
end;
исключением из правил в OP является приравнивание переменной к константе. В этом случае применяется одиночное равно (=)
Объявление констант
Константы - значения, которые не изменяются . Идентификатор может быть объявлен как константа, и в C ++ и OP. И C ++ и OP константам должны быть назначены значения при их объявлении.
С++
При объявлении константы перед типом данных используется ключевое слово const
const int iMax = 2000;
const double dMaxValue = 1234.75;
В С++ константы также можно определять через директиву препроцессора #define
#define MAXA 1000
но на практике это устарело. Так как компилятор не может выполнить контроля соответствия типов(он не может определить что это ini или double)
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 ;
Список литературы
Для подготовки данной работы были использованы материалы с сайта http://www.realcoding.net/