Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
AEP_LEKTsII.doc
Скачиваний:
90
Добавлен:
28.03.2015
Размер:
1.27 Mб
Скачать

10.4 Жалғау операторы (with)

Жазбаларға қолданылатын операцияларда жазбаның өрістеріне қысқаша сілтеу жасау үшін жалғау операторды (with) пайдаланған ыңғайлы. Жалғау операторда жазба типтегі бір немесе бірнеше нақтылы айнымалылардың өрістеріне тек өрістердің идентификаторларын ғана пайдаланып сілтеу жасауға болады. Жалғау оператордың синтаксисі келесідей: with операторға мысал келтірейік:

with Date do

if month = 12 then

begin

month := 1;

year := year + 1

end else

month := month + 1;

Бұл келесіге эквивалентті:

if Date.month = 12 then

begin

Date.month := 1;

Date.year := Date.year + 1 end else

Date.month := Date.month + 1;

Жалғау операторында алдымен айнымалыға жасалатын әр сілтеуді тексеру орындалады, атап айтқанда: оны жазбаның өрісі ретінде интерпретациялауға болады ма. Егер ол ондай болмаса, онда ол әрдайым дәл солай интерпретацияланады, тіпті егер дәл сондай атаулы айнымалыға қол жеткізу орын алатын болса да.

Келесі айнымалылар жарияланған болсын дейік:

Type Point = record

x,y: integer; end;

var

x: Point;

y: Integer;

Бұл жағдайда х-ке де у-ке де айнымалыға немесе жазбаның өрісіне сияқты сілтеу жасауға болады. Операторда:

with x do

begin

x := 10;

y := 25;

end;

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-нің де өрісі болып табылса, онда ол v1.Vn емес v2.Vn ретінде интерпретацияланады.

Егер жазба типтегі айнымалыны таңдап алу индекстелген массив немесе нұсқағышты есептеумен байланысты болатын болса, онда бұл амалдар құрама операторының орындалуынан бұрын орындалады.

Сонымен, with оператор жазбаның өрістеріне, сонымен қатар, объекттің өрістеріне, әдістеріне және қасиеттеріне сілтеу жасауды қысқартуға мүмкіндік береді. Ол келесі түрге ие:

with жазба немесе объект аталуы do оператор

немесе

with атаулар тізімі do оператор

Оператордың ішінде көрсетілген жазбаның өрісіне сілтеу жасағанда жазба аталуын немесе көрсетілген объекттің өрісіне, әдісіне немесе қасиетіне сілтеу жасаған кезде объект аталуын тастап кетуге болады. Мысалы, келесі айнымалы сипатталған болсын:

var

DateOfBirthday=record

Day: Integer;

Month: Integer;

Year: Integer;

end;

Онда with операторын пайдаланбай оның өрістеріне мәндерді меншіктеу түрі:

DateOfBirthday.Day:=23;

DateOfBirthday.Month:=2;

DateOfBirthday.Year:=1965;

with операторын пайдалану арқылы алдыңғы жазуды қысқартуға болады:

with DateOfBirthday do

begin

Day:=23;

Month:=2;

Year:=1965;

end;

Егер сыртқы айнымалының аталуы өріс (әдіс, қасиет) аталуымен бірдей болатын болса, онда басымдылық өріске (әдіске, қасиетке) беріледі. Бір-бірінің ішіне салынған with операторлар орын алған жағдайда алдымен айнымалыны ең ішкі with оператордың жазбаның немесе объекттің өрісі ретінде қарастыру әрекеті жасалады, одан кейін тікелей оны қоршаған with оператордың және с.с. Егер with оператор объекттердің тізімін қамтитын болса, онда олар оң жақтан сол жаққа қарай қарастырылады. Мысалы, егер келесі сипаттаулар болса:

var

x,y,z: integer;

a: record

x,y: integer;

end;

b: record

x: integer;

end;

онда программаның келесі фрагменті:

with a,b do

begin

x:=1; y:=2; z:=3;

end;

келесі фрагментке эквивалентті:

with a do

with b do

begin

x:=1; y:=2; z:=3;

end;

сонымен қатар және келесі фрагментке эквивалентті

b.x:=1;

a.y:=2;

z:=3;

73

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]