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

Працэдуры кіравання праграмай

Для кіравання праграмай у Turbo Pascal выкарыстоўваюць працэдуры Delay, Exit, Halt.

Працэдура Delay(T) забяспечвае затрымку выканання праграмы на T мілісекунд. Уключана ў модуль CRT.

Напрыклад: Delay (1000+2000); {затрымка на 3000 мс (3 с)}

Працэдура Exit (з модуля System) забяспечвае выхад з вы­кон­ва­ема­га блока ў навакольнае асяроддзе. Гэта значыць здзяйсняецца выхад з пад­праграмы або функцыі ў вызыўную праграму, калі Exit выка­ры­ста­ны там ці калі Exit паказаны ў галоўнай праграме, выхад з асноўнай пра­грамы ў сістэму праграміравання (калі выконваецца *.pas-файл) ці DOS (калі выконваецца *.exe-файл).

Працэдура Halt(N) (з модуля System) спыняе выкананне праграмы і перадае кіраванне сістэме праграміравання (калі выконваецца *.pas-файл) ці DOS (калі выконваецца *.exe-файл).

Эфектыўнасць праграм

Асноўнай задачай праграміравання з’яўляецца стварэнне правільных і эфектыўных праграм.

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

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

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

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

Аптымізацыя ў час кампілявання

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

Разгледзім прыклады:

1) x*y і y*x –  для кампілятара розныя выразы;

2) 2.00*x і 2.0*x –  для кампілятара розныя выразы;

3) A:=B*B*C*C –  лепш запісаць як A:=(B*C)*(B*C);

4) A:=B-C; D:=C-B; –  лепш запісаць як D:=-(B-C), бо апты­мі­зуючаму транслятару цяжка выявіць усе паўтаральныя выразы.

Праграмісты павінны запісваць праграму так, каб выключыць, на­коль­кі магчыма, паўтаральныя выразы.

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

Кампілятар можа аптымізаваць наступнае:

K:=I/3.0*B; P:=3+I/3.0*B; A:=B*B-I/3.0*B;

Ён не можа аптымізаваць такі фрагмент, бо сярод аператараў з’явіўся аператар з меткай:

K:=I/3.0*B; BL : P:=3+I/3.0*B; A:=B*B-I/3.0*B;

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

Разгледзім, як аптымізаваць такую частку праграмы:

FOR i := 1 TO 100 DO

IF t THEN x[i] := a[i] + b[i]

ELSE

x[i] := a[i] - b[i];

паколькі пераменная t унутры цыкла не змяняецца, але ж 100 разоў выконваецца праверка IF, то лепш запісаць гэты фрагмент інакш:

IF t THEN

FOR i := 1 TO 100 DO x[i]:=a[i]+b[i]

ELSE

FOR i := 1 TO 100 DO x[i] := a[i] - b[i];