- •2. Понятие класса в Делфи. Взаимосвязь класса и объекта. Дерево классов в Делфи.
- •5. Понятие и достоинства подхода объектно-ориентированного программирования.
- •21. Что такое событийное программирование? Понятие события и его роль в современном программировании. 22. События в Делфи программах, их назначения, средства реализации, примеры разнообразных событий.
- •23. Примеры событий в конкретных программах на Делфи.
- •24. Составные имена в программах – когда они возникают, как формируются и с помощью каких средств можно сократить длину таких имен. (например, оператор With)
- •25. Запись как тип данных, их определение, назначение, структура. Обращение к полям записей: составные имена, оператор With. Примеры применения в программах.
- •26. Условный оператор, его назначение, структура. Варианты условных операторов. Вложенные условные операторы. Примеры.
- •27. Массив как тип данных, определение, назначение, структура. Объявление и программирование ввода-вывода одномерного, двух и многомерного массивов. Примеры применения в программах.
- •Имя: array [нижний_индекс. .Верхний_индекс] of тип
- •Имя: array[НижняяГраница1..ВерхняяГраница1, НижняяГраница2..ВерхняяГраница2] of Тип
- •29. Файлы как типы данных. Определения и свойства файлов, типы файлов: текстовые, типированные и нетипированные файлы. Операторы чтения из файла и записи в файл.
- •30. Применение логических переменных, логических функций, логических выражений при программировании в системе Делфи. Логические операции, разрешенные в Делфи.
- •1. Отрицание: not ("не")
- •2. Логическое умножение (конъюнкция) - and ("и")
- •3. Логическое сложение (дизъюнкция) - or ("или")
- •4. Исключающее "или" - xor
- •31. Конструкторы и деструкторы – средства порождения и уничтожения объектов в системе Делфи. Их необходимость и область применения в программах.
24. Составные имена в программах – когда они возникают, как формируются и с помощью каких средств можно сократить длину таких имен. (например, оператор With)
Инструкция доступа служит для удобной и быстрой работы с составными частями объектов, в том числе с полями записей. Напомним, что для обращения к полю записи необходимо указывать имя записи и имя этого поля, разделенные точкой. Аналогичным путем образуется имя составной части какого-либо объекта, например, формы или кнопки.
Инструкция доступа имеет следующий основной формат:
Формат инструкции доступа |
|
with < Имя объекта> do <Инструкция>
В Инструкции, расположенной после слова do, для обращения к составной части объекта можно не указывать имя этого объекта, которое уже задано после слова with.
Вот пример двух вариантов обращения к составным частям объекта:
Формат инструкции доступа |
|
// Составные имена пишутся полностью
Form1.Canvas.Pen.Color := clRed;
Form1.Canvas.Pen.Width := 5;
Form1.Canvas.Rectangle(10, 10, 100, 100);
// ИЛИ
// Использование инструкции доступа
with Form1. Canvas do
begin
Pen.Color := clRed;
Pen.Width := 5;
Rectangle(10, 10, 100, 100);
end;
В обоих вариантах в форме красным карандашом толщиной в пять пикселов рисуется прямоугольник. Для обращения к свойствам и методу (процедуре) поверхности рисования формы удобно использовать инструкцию доступа (второй вариант).
В инструкции доступа допускается указывать несколько имен объектов.
Формат инструкции доступа |
|
with < Имя объекта1>,..., < Имя объектаЫ> do <Инструкция>
// Такой формат эквивалентен следующей конструкции:
with < Имя объекта1> do
with < Имя объекта2> do
...
with < Имя объектаN> do
<Инструкция>
В этом случае для составной части имени объекта, если возможно, применяется < имя объектаN>, иначе — < Имя объектаN-1> и т. д. до < Имя объекта1>.
ПРИМЕР ИСПОЛЬЗОВАНИЯ СОСТАВНЫХ ИМЕН В ПРОГРАММЕ:
Begin Memo1.Text:=’Учиться в МГУПИ мне интересно’;
Memo1.Lines.Add(t2); Memo1.Lines.Add(t1); Memo1.Lines.Add(t3);
Edit1.Text:=IntToStr(Memo2.Lines.Count)
ПРИМЕР ИСПОЛЬЗОВАНИЯ ИНСТРУКЦИИ ДОСТУПА:
With Memo2.Lines do
Begin
Add(t2); Add(t1); Add(t3);
Edit1.Text(Count)
End;
25. Запись как тип данных, их определение, назначение, структура. Обращение к полям записей: составные имена, оператор With. Примеры применения в программах.
Запись (англ. record) - это сложный тип данных, позволяющие объединить данные разных типов. Запись можно назвать наиболее общим сложным типом данных. Название "запись" появилось из тех соображений, что данные разного типа можно встретить в таблицах: в каждой строке записаны сразу несколько разных значений. Таким образом, одна запись соответствует одной строке данных: она имеет несколько полей, каждое из которых хранит своё значение.
Допустим, мы хотим хранить информацию о людях, заполнивших анкету на поступление на работу. Нас интересуют: ФИО человека, возраст, образование (среднее/высшее), владение компьютером, владение иностранными языками. Все эти данные мы можем объединить в запись. Дальнейшее повествование будет основываться на этом примере.
Чтобы работать в программе с записями, нужно сначала описать соответствующий тип данных. Запись описывается следующим образом:
type
имя_типа_записи = record
{поля записи}
end;
В блоке полей описание идёт точно так же, как описание переменных: указывается имя поля, далее через двоеточие тип данных этого поля. Сами поля разделяются точкой с запятой.
Для нашего примера:
type
TPerson = record
Name: String;
Age: Byte;
Education,PC: Boolean;
Foreign: set of TForeignLanguages;
end;
Итак, общая форма записи:
with запись do
{обращение к полям записи}
А теперь на нашем примере:
with L do
begin
X:=StrToFloat(X1Edit.Text);
Y:=StrToFloat(Y1Edit.Text);
X2:=StrToFloat(X2Edit.Text);
Y2:=StrToFloat(Y2Edit.Text);
end;
Что же мы имеем? А вот что: мы нашу запись "вынесли за скобку", и далее напрямую обращаемся к её полям. Удобно, не правда ли? Этот код абсолютно эквивалентен тому, что был написан нами ранее, только он более эффективен.
Несложно догадаться, что использование with для единичного обращения к записи бессмысленно/
Записи объединяют фиксированное число элементов данных других типов. Отдельные элементы записи имеют имена и называются полями. Имя поля должно быть уникальным в пределах записи. Различают фиксированные и вариантные записи.
Фиксированная запись состоит из конечного числа полей, ее объявление имеет формат:
Фиксированная запись |
|
Record
<Имя поля1> : <Тип поля1>;
...
<Имя поляN> : <Тип поляN>;
end;
Вариантная запись, как и фиксированная, имеет конечное число полей, однако предоставляет возможность по-разному интерпретировать области памяти, занимаемые полями. Все варианты записи располагаются в одном месте памяти и позволяют обращаться к ним по различным именам. Отметим, что в данном случае термин «вариантный» не имеет ничего общего с вариантным типом (variant). Формат объявления вариантной записи:
Вариантная запись |
|
Record
case <Признак> : <Тип признака> of
<Вариант1> : (<Описание варианта1>);
<ВариантN> : (<Описание вариантаN>);
end;
Для обращения к конкретному полю необходимо указывать имя записи и имя поля, разделенные точкой, т. е. имя поля является составным. С полем можно выполнять все операции, которые допускаются для отдельной переменной этого же типа.
Пример использования записи:
Пример использования записи |
|
var
Man: record
Name: string;
Salary: real;
Note: string;
end;
Man.Name: = 'Иванов M.P.';
Man.Salary:=500;
Переменная Man является фиксированной записью и имеет поля имени (Name), оклада (Salary) и примечания (Note), каждое своего типа.
Система Delphi предоставляет также большое количество уже описанных типов записей, например:
Пример использования записи |
|
type
TPoint = record
X: Longint;
Y: Longint;
end;
TRect = record
case Integer of
0: (Left, Top, Right, Bottom: Integer);
1: (TopLeft, BottomRight: TPoint);
end;
Здесь тип TPoint является фиксированной записью, а тип TRect — вариантной записью.