- •Содержание
- •1. PASCAL
- •1.1 Алфавит
- •1.2 Типы данных
- •1.3 Переменные
- •1.4 Константы
- •1.5 Стандартные функции
- •1.6 Выражения
- •1.7 Операторы
- •1.7.1 Оператор присваивания
- •1.7.2 Составной оператор
- •1.7.3 Условный оператор IF
- •1.7.4 Условный оператор CASE
- •1.7.5 Оператор цикла FOR
- •1.7.6 Оператор цикла REPEAT
- •1.7.7 Оператор цикла WHILE
- •1.8 Одномерные массивы
- •1.9 Многомерные массивы
- •1.10 Строки
- •1.11 Записи
- •1.12 Множества
- •1.13 Пользовательские типы
- •1.14 Файлы
- •1.15 Перечисляемый тип
- •1.16 Тип-диапазон
- •1.17 Функции и процедуры
- •1.18 Локализация имен
- •1.19 Модули
- •1.20 Операторы прерывания
- •1.21 Комментарии
- •1.22 Указатели
- •1.23 Динамические массивы Delphi
- •2. Основные положения ООП
- •3. Базовые классы Delphi
- •3.1 TObject
- •3.2 Exception
- •3.3 TList
- •3.4 TPersistent
- •3.5 TCollection
- •3.6 TCollectionItem
- •3.7 TStrings
- •3.8 TStringList
- •3.9 TGraphicsObject
- •3.10 TPen
- •3.11 TBrush
- •3.12 TCanvas
- •3.13 TGraphics
- •3.14 TPicture
- •3.15 TComponent
- •3.16 TControl
- •3.17 TWinControl
- •3.18 TGraphicControl
- •3.19 TTimer
- •3.20 TThread
- •3.21 TTreeView
- •3.22 TTreeNodes
- •3.23 TTreeNode
- •3.24 TForm
- •3.25 TMainMenu
- •3.26 TMenuItem
- •3.27 TStatusBar
- •3.28 TStatusPanels
- •3.29 TStatusPanel
- •3.30 TToolBar
- •3.31 TToolButton
- •3.32 TActionList
- •3.33 TAction
26
Average := Temp/CountPositive; Result := True;
end else
Result := False;
end;
begin
Count1 := ???;
for i := 1 to Count1 do Mas1[i] := ???;
Count2 := ???;
for i := 1 to Count2 do Mas2[i] := ???;
Sum := Summa(Mas1,Count1);
<вывод 'Сумма элементов первого массива: '+IntToStr(Sum)>; Sum := Summa(Mas2,Count2);
<вывод 'Сумма элементов второго массива: '+IntToStr(Sum)>; if AveragePositive(Mas1,Count1,Average) then
<вывод 'Среднее из положительных элементов первого массива: '+ FloatToStr(Average)>
else
<вывод 'В первом массиве положительных элементов нет'>; if AveragePositive(Mas2,Count2,Average) then
<вывод 'Среднее из положительных элементов второго массива: '+ FloatToStr(Average)>
else
<вывод 'Во втором массиве положительных элементов нет'>;
end;
1.18 Локализация имен
При использовании подпрограмм возникает возможность использования в них идентификаторов, которые уже используются в основной программе. Однако при этом требуется четкое представление того, какой из идентификаторов будет использоваться в том или ином фрагменте программы.
Общим правилом для определения доступности идентификаторов является следующее: доступны всегда идентификаторы, расположенные выше по описанию и находящиеся в цепочки вложенности процедур и функций. Таким образом, возможно, например, обращение из процедуры к глобальным переменным основной программы, описанным выше, к переменным других процедур, в которые вложена данная, но невозможно обращение из основной программы к переменным любой из процедур.
Рассмотрим пример:
unit Main; interface
...
27
implementation var
A,B : integer;
procedure P1; var
A,B : integer;
procedure P1_1; var
A,C : integer; begin
{Доступные переменные}
A := 1; {переменная процедуры P1_1} C := 2; {переменная процедуры P1_1} B := 3; {переменная процедуры P1}
Main.A := 4; {переменная модуля Main} Main.B := 5; {переменная модуля Main} {Недоступные переменный}
A из процедуры P1 A,D из процедуры P1_2 E,F из модуля Main
end; {P1_1}
procedure P1_2; var
A,D : integer; begin
{Доступные переменные}
A := 1; {переменная процедуры P1_2} D := 2; {переменная процедуры P1_2} B := 3; {переменная процедуры P1}
Main.A := 4; {переменная модуля Main} Main.B := 5; {переменная модуля Main} {Недоступные переменный}
A из процедуры P1 A,С из процедуры P1_1 E,F из модуля Main
end; {P1_2} begin
{Доступные переменные}
A := 1; {переменная процедуры P1} B := 2; {переменная процедуры P1}
Main.A := 3; {переменная модуля Main} Main.B := 4; {переменная модуля Main} {Недоступные переменный}
A,С из процедуры P1_1
A,D из процедуры P1_2 E,F из модуля Main
end; {P1}
var
E,F : integer;
28
begin
{Доступные переменные}
A := 1; {переменная модуля Main} B := 2; {переменная модуля Main} E := 3; {переменная модуля Main} F := 4; {переменная модуля Main} {Недоступные переменный}
A,B из процедуры P1
A,С из процедуры P1_1
A,D из процедуры P1_2 end. {модуля Main}
Таким образом, в передах видимости оказываются только переменные, описанные выше в основной программе, либо в текущей процедуре.
1.19 Модули
Во многих случаях, при разработке программ, размещение некоторой части переменных, констант, функций целесообразно проводить в модулях (например, библиотека функций).
Модуль – это автономно компилируемая программная единица, включающая в себя различные компоненты интерфейсного раздела, и, возможно, некоторые исполняемые операторы инициирующего раздела. Реализация процедур и функций модуля описывается в исполняемом разделе.
Каждый модуль описывается в отдельном файле. Формат модуля:
unit <идентификатор модуля>; interface
<описание типов, констант, переменных, подпрограмм> implementation
<реализация предоставляемых модулем подпрограмм, описание локальных типов, констант, переменных, подпрограмм>
[begin
<раздел инициализации>] end.
<идентификатор модуля> должен совпадать с именем файла, в котором хранится данный модуль.
Все компоненты, описанные в разделе interface, являются доступными для всех программ и модулей, использующих данный модуль.
При описании подпрограмм, в разделе interface приводится только заголовок подпрограммы. В разделе implementation заголовок каждой из подпрограмм повторяется, после чего происходит описание ее реализации. При повторении заголовка допускается опускание параметров подпрограммы. Если параметры не опускаются, то заголовок должен в точности соответствовать заголовку раздела interface.
29
Раздел инициализации, чаще всего, используется для задания начальных значений переменных, описанных в модуле. Выполнение данного раздела производится только один раз, даже если в разрабатываемой программе имеется несколько ссылок на данный модуль.
Примечание: в среде Delphi раздел инициализации можно начать используя ключевое слово initialization. Кроме того, после данного раздела может идти раздел завершения (ключевое слово finalization).
Для подключения модуля к основной программе, а также для использования одним модулем другого, применяется ключевое слово uses, после которого указывается список идентификаторов подключаемых модулей.
При использовании одного модуля другим, подключение модулей с использованием ключевого слова uses может производиться как в разделе interface, так и в разделе implementation. Однако не допускается взаимное подключение модулей через разделы interface. При необходимости взаимного подключения модулей, как минимум одно из подключений должно располагаться в разделе implementation. Выбор вариантов подключения производится на основе того, в каком из модулей необходим доступ к ресурсам другого модуля в разделе interface. В случае, когда обоим модулям требуется подключение в разделе interface, создается третий модуль, в который переносятся взаимно-зависимые части.
Являясь независимой программной единицей, модуль имеет свое пространство идентификаторов. Если в программе или модуле, использующем другой модуль, имеется одноименный идентификатор, то ему отдается предпочтение. Для обращения к идентификатору подключаемого модуля, в этом случае, требуется уточнение, записываемое как:
<идентификатор модуля>.<идентификатор компонента>
Пример:
unit Modul1; interface type
Mas : array[1..100] of integer; var
X : integer;
procedure InputMas(var A : Mas; n : integer); implementation
procedure InputMas(var A : Mas; n : integer); begin
...
end; begin
X := 1; end.
program Program1; uses Modul1;