Студопедия

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

Разделы сайта

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






Правило 20.






В подпрограммы пользователя лучше предусмотреть передачу данных в виде переменных или констант вместо передачи значений. Это позволяет передавать не копию данных, создаваемую в стеке и требующую при этом дополнительные память и время, а сами данные, что повышает быстродействие.

 

Function function

Sum(a, b: real): real; sum(VAR a, b: real): real;

Begin begin

Sum: =a+b; sum: =a+b;

end; end;

 

 

Еще пример

const

a: integer=5;

b: integer=7;

procedure Inc2(var c: integer; b: integer);

begin

c: =c+c;

b: =b+b;

Writeln('удвоенные: ', c: 5, b: 5) (2)

end;

begin

Writeln('исходные: ', a: 5, b: 5); (1)

Inc2(a, b);

Writeln('результат: ', a: 5, b: 5) (3)

end.

 

исходные: 5 7

удвоенные: 10 14

результат: 10 7

 

В этой программе задаются два целых числа 5 и 7. Эти числа передаются процедуре Inc2, в которой удваиваются. Один параметр передается как переменная, другой - как параметр значение.

Удвоение второго формального параметра в процедуре не вызвало изменения фактической переменной b, так как этот параметр описан в заголовке процедуры как параметр-значение.

 

При обработке сложных типов данных часто приходится пользоваться записями (RECORD). При этом для обращения к полям записи можно использовать два способа доступа: операцию "." или оператор присоединения WITH.

Правило 21.

Для доступа к полям записи целесообразнее использовать оператор WITH < переменнаая> DO < оператор>, вместо "." что уменьшает объем загрузочного модуля и увеличивает быстродействие.

Например,

 

type

Bi=record

day, month: byte;

year: word

end;

var

a, b: Bi

......

with c.bd do month: =9;

 

вместо c.bd.month: =9;

 

Type

Birthday = record

Day, month: byte;

Year: word;

End;

var a: birthday;

 

if (a.day=16) and with a do

(a.month=6) and if (day=16) and

(a.year=1979) then (month=6) and

write('Hi! '); (year=1979) then

write('Hi! ');

 

Правило 22.

При использовании параметров порядкового типа вместо операций многократного сравнения с граничными значениями следует применять оператор проверки принадлежности IN, если диапазон изменения параметра позволяет использовать множество:

 

If ((ch> ='0')and(ch< ='9')) or

((ch> ='A')and(ch< ='Z')) or

(ch='@') then

write('Yes')

 

 

if ch in ['0'..'9',

'A'..'Z',

'@'] then

write('Yes');

 

Правило 23.

При использовании оператора CASE следует учитывать специфику его работы: проверка условий осуществляется в порядке их задания в операторе. Если проверяемая переменная попадает в какой-либо диапазон, то остальные условия не проверяются, поэтому, если это возможно, следует первыми условиями использовать наиболее вероятные.

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.