Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курс лекцый для 1 курса-1 семестр.doc
Скачиваний:
3
Добавлен:
09.11.2019
Размер:
2.95 Mб
Скачать

Аператар выкліку працэдуры

Аператар выкліку працэдуры не мае ніякага службовага слова. Слу­жыць для актывізацыі папярэдне вызначанай працэдуры.

Пусты аператар

Пусты аператар не змяшчае ніякіх сімвалаў і не выконвае ніякіх дзе­ян­няў. Прыклад: ;;; – два пустых аператара; M:; – памечаны пусты апе­ра­тар.

Гэта аператар-невідзімка. Ён можа быць размешчаны ў любым мес­цы праграмы, дзе сінтаксіс мовы дазваляе прысутнасць аператара.

Хутчэй за ўсё мы яго ўжываем выпадкова, калі ставім лішнія «;».

Састаўны аператар

Даволі часта ў праграме ўзнікае неабходнасць аб’яднаць групу апе­ра­та­раў у адзін аператар. Падобна таму як любы выраз, узяты ў дужкі, ста­но­віц­ца аперандам, састаўны аператар утвараецца з паслядоўнасці апе­ра­та­раў, якія заключаны ў дужкі, але не круглыя, а спецыяльныя апе­ра­тар­ныя – BEGIN і END. Паміж гэтымі дужкамі можна напісаць любы лік апе­ра­та­раў, якія аддзяляюцца адзін ад аднаго «;» – кропкай з коскай (па­колькі «;» ставіцца паміж аператарамі, то перад дужкай END кропка з кос­кай фактычна непатрэбна, аднак калі яна ставіцца, то тут проста з’я­віў­ся пусты аператар).

Састаўны аператар успрымаецца як адзінае цэлае і можа знаходзіцца ў любым месцы праграмы, дзе сінтаксіс мовы дапускае наяўнасць апе­ра­та­ра. Звычайна састаўны аператар выкарыстоўваецца як цела цыклаў ці пры напісанні ўмоўных аператараў.

Аператары выбару

Аператары выбару дазваляюць падзяліць вылічальны працэс на дзве ці больш галін, выконваючы кожны раз (у залежнасці ад умовы) пат­рэб­ны аператар.

У мове існуюць два віды аператараў выбару – умоўны аператар (IF) і аператар варыянта (CASE).

Умоўны аператар

Умоўны аператар мае наступны выгляд:

Аператар IF працуе так: падлічваецца значэнне булеўскага выразу і, ка­лі яно праўдзівае, выконваецца аператар, які стаіць пасля THEN, калі лжы­вае – аператар, які стаіць пасля ELSE. Калі ж частка з ELSE адсутнічае, то ў гэтым выпадку ніякіх дзеянняў не выконваецца. Потым выконваецца нас­туп­ны аператар, калі ў IF не было аператара GOTO ці аператараў за­вяр­шэн­ня.

Заўвага. Можа стацца, што значэнне булеўскага вы­ра­зу будзе вя­до­мым яшчэ да канца вылічэння ўсяго выразу. Правілы мо­вы не па­тра­буюць вылічэння яго да канца, калі вынік атрымаўся «датэрмінова». Таму лагічны выраз пішацца так, каб ён стаў вядомым як ма­га хутчэй.

Напрыклад: (...) AND A, дзе А – простая булеўская пераменная, лепш запісаць: A AND (...). Гэта вынікае з таго факта, што калі адзін з апе­ран­даў аперацыі AND мае значэнне false, то і вынік – false.

Калі ж выраз утрымлівае зварот да функцыі з пабочным эфектам, та­ды выраз трэба выканаць да канца, і таму яго або трэба структураваць так, каб значэнне атрымалася толькі ў канцы, або задаць адпаведную оп­цыю кампілятару $B+.

Метады і прыёмы праграміравання

Схематычна працэс, які разгаліноўваецца, можа быць адлюстраваны пры дапамозе структуры выбару.

Поўны аператар IF можна адлюстраваць блок-схемай.

Скарочаны аператар IF:

Фармат аператара IF:

IF умова THEN аператар1

ELSE аператар2;

Або крыху інакш:

IF умова THEN аператар1 ELSE аператар2;

Скарочаная форма аператара IF:

IF умова THEN аператар1;

Адзін аператар IF можа ўваходзіць у састаў другога IF, у гэтым вы­пад­ку гавораць аб укладанні аператараў.

IF умова THEN

IF падумова THEN аператар1

ELSE аператар2

ELSE аператар3;

Пры ўкладанні аператараў кожнае ELSE адпавядае таму THEN, якое не­пас­рэд­на яму папярэднічае.

Заўвага. Аператар, які стаіць пасля THEN ці ELSE, можа быць або про­стым, або састаўным, г. зн. мець выгляд BEGIN ... END.

Калі пры рэалізацыі ўкладзеных умоўных аператараў карыстацца іх поў­най і скарочанай формамі запісу, то можна лёгка дапусціць памылкі. Лепш за ўсё прымяняць поўную форму з выкарыстаннем пустога апе­ра­та­ра пасля ELSE.

1. Напрыклад, не выкарыстоўвайце такую канструкцыю:

IF (a>=b) AND (adznaka>0) THEN пусты аператар

ELSE

IF (a<-5.5) OR (b>7.5) THEN adznaka=0

ELSE пусты аператар

1.1. Лепш запісаць

IF NOT((a>=b) AND (adznaka>0)) AND((a<-5.5) OR (b>7.5))

THEN adznaka=0;

1.2. Яшчэ лепш

d := … {умова};

IF d THEN

2. А вось у наступным аператары ёсць сінтаксічная памылка. Дзе?

IF x > y THEN

BEGIN A := B; C := D; END;

ELSE A := 0;

Транслятар пакажа на ELSE і выдасць паведамленне аб памылцы. Трэ­ба памятаць, што перад ELSE кропка з коскай не ставіцца.

3. Бяссэнсавай, напэўна, з’яўляецца і такая канструкцыя, хоць сін­так­січ­на яна правільная (транслятар на памылку не пакажа).

IF NOT P THEN;

BEGIN

C := Сos(z);

D := x*y-Sqrt(z);

END;

Напэўна, пасля THEN «;» лішняя, таму што наданне пераменным С і D значэнняў будзе выканана незалежна ад значэння P.

4. Бывае, умоўны аператар выкарыстоўваецца там, дзе ён не патрэбен. За­мест IF a > b THEN P := true ELSE P := false; прасцей і эфектыўней запісаць P := a > b.

5. Праграміруючы ўкладзеныя ўмоўныя аператары, трэба памятаць, што ўмо­вы ў іх правяраюцца паслядоўна, і таму першай трэба пісаць умо­ву, верагоднасць выканання якой большая.

Напрыклад, трэба лавіць пападанне пункта x у інтэрвалы (0,1], (1,10], (10,100], (100,500]. Калі ўсе значэнні x роўнаверагодныя, па­ко­ль­кі даў­жыня апошняга інтэрвалу самая большая, то верагоднасць па­па­дан­ня x у яго самая вялікая. Атрымаем такі фрагмент праграмы.

Варыянт 1.

IF (100 < x) AND (x <= 500) THEN p := 1

ELSE

IF (10 < x) AND (x <= 100) THEN p := 2

ELSE

IF (1 < x) AND (x <= 10) THEN p := 3

ELSE

IF (0 < x) AND (x <= 1) THEN p := 4

ELSE p := 0

Аднак наступны варыянт больш эфектыўны, таму што ўтрымлівае менш праверак.

Варыянт 2.

IF x > 500 THEN p := 0

ELSE

IF x > 100 THEN p := 1

ELSE

IF x > 10 THEN p := 2

ELSE

IF x> 1 THEN p := 3

ELSE

IF x > 0 THEN p := 4

ELSE p := 0;