- •1.1 Оформление программы
- •1.2 Переменные и константы
- •1.2.1 Типы
- •1.2.2 Записи (структуры)
- •V: real; // 2-я переменная, скорость
- •Var // Служебное слово для обозначения
- •1.2.3 Массивы
- •Implementation // Определяет внешнюю видимость этого
- •I: integer; // объявление локальной внутри процедуры
- •Int s[10]; // Определение массива с
- •1.2.4 Локальные и глобальные переменные
- •I:integer; // переменных, в том числе «I»
- •Void __fastcall tForm1::Button1Click(tObject *Sender)
- •Int I; // объявление локальной внутри процедуры
- •1.3 Указатели
- •I:integer;
- •Inc(k,2); // перемещение указателя вперед на 2 длины
- •1.4 Команды
- •1.5 Пользовательские процедуры и функции
- •Void __fastcall tForm1::Button1Click(tObject *Sender)
- •Int n1,n2; // объявление локальных переменных
- •1.6 Объекты программы
- •Void __fastcall tForm1::Button1Click(tObject *Sender)
- •1.7 Пример программы пользователя
- •1.7.1 Постановка задачи
- •1.7.2 Подготовка формы
- •1.7.3 Алгоритм программы
- •1.7.4 Последовательность разработки программы
- •1.7.5 Программа в Delphi
- •Interface // Определяет внешнюю видимость этого модуля
- •Implementation
- •2Перемещение объектов по форме
- •2.1 Общие сведения
- •2.1.1 Изменение положения объектов на форме
- •2.1.1.1Подготовка формы
- •2.1.1.2Блок-схема программы
- •2.1.1.3Листинг программы в среде Delphi:
- •Interface
- •Implementation
- •Void __fastcall tForm1::Button1Click(tObject *Sender)
- •Void __fastcall tForm1::Timer1Timer(tObject *Sender)
- •2.1.2 Расчет положения объекта на форме по физическим координатам моделируемого объекта
- •2.1.3 Расчет координат связанных объектов
- •2.2 Дифференциальные уравнения
- •2.2.1 Дифференциальные уравнения движения
- •2.2.2 Методика решения дифференциальных уравнений движения
- •2.2.3 Алгоритмы управления движущимся объектом
- •Xmax, Ymax, Dx, Dy: real;
I:integer; // переменных, в том числе «I»
begin // начало функции
end; // конец функции
На языке C++
TForm1 *Form1; // Объявление глобальной переменной
// Form1 – текущая форма программы
bool Revers; // Объявление глоб. переменной Revers
// логического типа
const double Pi = 3.14159265; // Объявление глобальной константы
// типа с плавающей запятой
//--------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//--------------------------------------------------------------
// Процедура, вызываемая при нажатии кнопки Button1 на форме
Void __fastcall tForm1::Button1Click(tObject *Sender)
{ // начало функции
Int I; // объявление локальной внутри процедуры
// переменной «i»
// объявление локального массива констант
const char A[10] = {'0','1','2','3','4','5','6','7','8','9'};
...
} // конец функции
//--------------------------------------------------------------
double Polozenie (void)
{ // начало функции
double a,b,c;
int i;
} // конец функции
1.3 Указатели
Существует определенный класс переменных, называемых указателями. Аналогом указателя можно назвать оглавление в книге. Для того, чтобы найти определенную информацию сначала читатель по оглавлению находит название главы, параграфа, подпункта. Затем по номеру страницы переходит непосредственно к тексту.
Указатель есть переменная, которая указывает, в каком месте памяти искать информацию. По другому, указатель хранит адрес в памяти, по которому находится начало информации. Таким образом, указателями удобно пользоваться для доступа к массивам однотипных данных.
На языке Pascal работа с указателями осуществляется следующим образом:
type MyIntPointer = ^Integer; // Объявление пользов. типа
// указатель на переменную
// целого типа
function Polozenie ():real;
var
I:integer;
k:MyIntPointer; // объявление указателя
P: ^TButton; // объявление указателя на объект «TButton»
begin
P:=@Form1.Button1; // определение адреса объекта «Button1»
P^.Visible := True; // изменение свойства «Button1» с помощью
// указателя
k:=@i; // Определение адреса переменной «i»
k^:=10; // доступ к переменной «i» через указатель «k»
Inc(k,2); // перемещение указателя вперед на 2 длины
// переменной целого типа, то есть доступ к
// другой переменной через указатель «k»
end;
Необходимо отметить, что при выполнении последней команды указатель указывает на несуществующую переменную. Если же выполнить операцию записи (присвоения) через указатель (например, k^:=5;), то это может привести к ошибке выполнения программы, или к порче информации.
На языке C++:
typedef int *MyIntPointer; // Объявление пользов. типа
// указатель на переменную
// целого типа
double Polozenie (void)
{
int i;
MyIntPointer k; // объявление указателя
TButton *P; // объявление указателя на объект «TButton»
P = Form1->Button1; // определение адреса объекта «Button1»
P->Visible = True; // изменение свойства «Button1» с помощью
// указателя
k = &i; // Определение адреса переменной «i»
*k = 10; // доступ к переменной «i» через указатель «k»
k += 2; // перемещение указателя вперед на 2 длины
// переменной целого типа, то есть доступ к
// другой переменной через указатель «k»
};
Необходимо отметить, что команда «P = Form1->Button1;» фактически копирует адрес объекта «Button1» в указатель «P». Дело в том, что на языке C++ доступ к объектам, помещаемым на форме, осуществляется только через указатели.
