- •Вопрос 26. Сортировка обменом (так называемая "пузырьковая" сортировка).
- •Вопрос 27. Комбинированный тип данных. Запись. Описание записи. Доступ к полям записи
- •Вопрос 28. Оператор with.
- •Вопрос 29. Модуль crt
- •Вопрос 30. Модуль graph
- •Вопрос 31. Инициализация графики, подготовительные работы, управление цветом, закрытие режима
- •Вопрос 32. Процедуры и функции для работы с "графическими примитивами".
- •Вопрос 33. Процедуры для работы с текстом.
- •Вопрос 34. Типизированные файлы. Процедуры и функции для работы с типизированными файлами
- •Вопрос 35. Процедуры и функции для работы с файлами любого типа
- •Вопрос 36. Текстовые файлы, их описание и основные отличия от типизированных файлов.
- •Вопрос 37. Нетипизированные файлы.
- •Вопрос 38. Модули. Модульное программирование.
- •Вопрос 39. Указатели и динамическая память. Выделение и освобождение динамической памяти.
- •Вопрос 40. Основы объектно-ориентированного программирования.
- •Вопрос 41. Метод хорд
- •Вопрос 42. Метод касательных
- •Вопрос 43. Метод итераций
- •Вопрос 44. Методом средних прямоугольников
- •Вопрос 45. Методом трапеций
- •Вопрос 46. Методом Симпсона
- •Вопрос 47. MathCad. Нахождение корней уравнений.
- •Вопрос 48. MathCad. Нахождение определенных интегралов
- •Вопрос 49. MathCad. Построение графика функций
- •Вопрос 50. MathCad. Работа с матрицами
Вопрос 28. Оператор with.
В операциях над записями оператор with удобно использовать
для краткого обращения к полям записи. В операторе with к полям
одной или более конкретных переменных типа запись можно обращать-
ся, используя только идентификаторы полей. Оперaтор with имеет
следующий синтаксис:
┌────┐ ┌───────────────┐ ┌──┐ ┌────────┐
оператор ──>│with├─────>│ ссылка на ├──┬─>│do├──>│оператор├>
with └────┘ ^ │переменную типа│ │ └──┘ └────────┘
│ │ запись │ │
│ │ или объект │ │
│ └───────────────┘ │
│ ┌───┐ │
└────────┤ , │<────────┘
└───┘
ссылка на переменную ┌────────────────────┐
типа запись или объект ───>│ссылка на переменную├──>
Возьмем следующее описание:
type
TDate = record
Day : Integer:
Month : Integer;
Year : Integer:
end;
var OrderDate: TDate;
С учетом данного описания приведем пример оператора with:
with OrderDate do
if Month = 12 then
begin
Month := 1;
Year := Year + 1
end else
Month := Month + 1;
Это эквивалентно следующему:
if OrderDate.Month = 12 then
begin
OrderDate.Month := 1;
OrderDate.Year := TDate.Year + 1
end
else
Date.month := TDate.Month + 1; В операторе with сначала производится проверка каждой ссылки
на переменную, а именно: можно ли ее интерпретировать, как поле
записи. Если это так, то она всегда интерпретируется именно таким
образом, даже если имеется доступ к переменной с тем же именем.
Допустим описаны следующие переменные:
type
TPoint = record
x,y: Integer;
end;
var
x: Point;
y: Integer;
В этом случае и к x, и к y можно обращаться, как к перемен-
ной или как к полю записи. В операторе:
with x do
begin
x := 10;
y := 25;
end;
x между ключевыми словами with и dо относится к переменной типа
указатель, а в составном операторе x и y ссылаются на x.x и y.y.
Оператор:
with V1,V2,...Vn do s;
эквивалентен операторам:
with V1 do
with V2 do
...
with Vn do
S;
В обоих случаях, если Vn является полем и v1, и v2, то она
интерпретируется как v2.Vn, а не как v1.Vn.
Если выборка переменной типа запись связана с индексировани-
ем массива или разыменованием указателя, то эти действия произво-
дятся до того, как будет выполняться составной оператор.