Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






fife' < 'tree' {себебі 'f'<'t'}; 4 > '237' {себебі '4' > '2'}.




Жолдық типтегі шамалар үшін логикалық <, >, = операциялардан басқа коммутативті емес біріктіру операциясы анықталған, ол плюс таңбасы арқылы белгіленеді:

а:='кол ' + 'о'+'кол'; {нәтижедеа='колокол'}

Жолдық шамалар үшін келесі төрт стандартты функциялар анықталған:

· біріктіру - concat(s1,s2,..,sk); функцияның мәні - s1,s2,...,sk жолдарды біріктіру нәтижесі, егер ол қамтыған символдар саны 255-тен аспайтын болса;

· ерекшелеу - copy(s,i,k); s жолдан i-ші символдан бастап k символдар ерекшелінеді: а:=сору('крокодил',4,3) ; {нәтижеде а='код'};

· жолдың ұзындығын анықтау - length(s); s жолдың ағымдағы мәнін құрайтын символдар саны есептеледі: b:=length('автоматика'); {b=10};

· позицияны анықтау - pos(s,t); s жол t жолға бірінші рет кірген позиция нөмірі есептеледі; егер s жол t жол құрамына кірмеген болса, онда нәтиже 0-ге тең: с:=pos('ом','компьютер'); {с=2}.

Сонымен қатар, Паскальда жолдық шамаларды өндеуге арналған төрт стандартты процедуралар анықталған:

· жою - delete(s,i,k); s жолдан i-ші символдан бастап k символдар жойылады: s:='таракан'; delete(s,5,2); {нәтижедеs='таран'};

· кірістіру - insert(s,t,i); i-ші позициядан бастап s жол t жолға кірістіріледі t:='Tapaн’; insert('ка',t,5); {t='таракан'};

· санды символдар жолына түрлендіру - str(k,s). k санына апострофтарды қосу арқылы s жолы пайда болады: str(564,s); {s='564'};

· цифрлардан тұратын жолды санға түрлендіру - val(s,k,i); егер s жолда цифрлардан өзге символдар болмаса і саны i=0, керісінше жағдайда i цифрдан өзге бірінші символдың позициясына тең: val('780',k,i); {k=780; i=0}.

Р24 программасындажолдықшамаларды пайдаланып 100 символдан аспайтын мәтіндегі дауысты әріптер саны анықталады. Бұл жерде 18 кіші және үлкен әріптерден тұратын тұрақты-жолды анықтап, берілген мәтіннің кезекті символы тұрақты-жолдың элементі болатындығын цикл ішінде тексерген ыңғайлы. Р25 программасындаsqr функциясы ехр функцияға алмастырылады, оған delete және insert процедураларын ретімен қолдану арқылы қол жеткізеді. Р26 программасында 10 латын сөздері енгізіліп алфавит бойынша реттеледі. 10 элемент-жолдардан тұратын массив анықталған және оның элементтері көпіршік әдісі арқылы реттелген.



 

 

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 және кілттік сөздердің арасындағы х нұсқағыш типтегі айнымалыға қатысты, ал құрама операторда 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;

 


mylektsii.ru - Мои Лекции - 2015-2019 год. (0.014 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал