Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
экзамен / шпора по турбо паскалю.docx
Скачиваний:
285
Добавлен:
10.02.2014
Размер:
385.64 Кб
Скачать

Var a,b,c,s1,s2,s3,k,r,z:real;

{описание процедуры}

procedure step(var x,y,s:real);

begin

s:=exp(y*ln(x));

end;

{блок операторов}

begin

read (a,b,c,); {ввод данных}

step(a,b,S1); {вызов процедуры}

r:=b-c;

step(a,r,S2); {вызов процедуры}

k:= sqr(b)-sqr(c);

step(a,k,S3); {вызов процедуры}

z:=(S1-sqr(S2))/sqrt(S3);

writeln(‘z=’,.z);

end.

В достаточно сложных программах отдельные логические блоки целесообразно оформлять в виде отдельных процедур. Это могут быть процедуры без параметров. Тогда раздел операторов будет выглядеть как перечисление имен процедур.

Пример использования нестандартной функции: Рассчитать

Алгоритм решения: в программе используется нестандартная функция fact типа integer с параметром k, в которой описано вычисление выражения k! При использовании функции в блоке операторов вместо k указывается какой-либо другой параметр, факториал которого при этом рассчитывается.

Текст программы на Паскале:

program sochet;

Var c,n,m,l: integer;

function fact(k: integer): integer;

Var p,I: integer;

begin

p:=1;

for i: =1 to k do

p: = p*i;

fact:=p;

end;

begin

read(n,m);

l:=n-m;

c:=fact(n)/fact(m)/fact(l);

writeln (‘c=’,c);

end.

14. Записи в Паскале.

При организации хранения информации на ЭВМ требуется группировать данные разного типа, относящиеся к одному объекту. Например, целесообразно объединить данные об автомобиле и его владельце (номер, марка машины, год выпуска, цвет, фамилия владельца, его адрес) в одной структуре. Для этого в языке Паскаль предназначен тип, который называется запись. Записи используют в тех случаях, где желательно группировать логически связанные элементы в один блок.

Запись – это структурированный тип данных, состоящий из фиксированного числа компонентов разного типа. Определение записи начинается идентификатором Record и заканчивается ключевым словом end . Между ними заключён список компонентов, называемых полями, с указанием идентификаторов (имён) полей и типа каждого поля.

Формат описания типа запись:

Type

<имя типа> = Record

<идентификатор поля>:<тип компонента>;

.......

<идентификатор поля>:<тип компонента>;

end;

Var

<идентификатор, ...> : <имя типа>;

Например, описание записи, содержащей регистрационный номер автомобиля, его марку, год выпуска, цвет, фамилию и адрес владельца, может выглядеть так:

Type

avto = record

Nomer:string[6]; { Регистрационный номер }

Marka:string[15]; { марка автомобиля }

God:integer; { год выпуска }

Color: string[20]; { цвет }

Fam:string[20]; { фамилия владельца }

Adress:string[40]; { адрес владельца }

end;

Var

m,v:avto;

В данном примере запись avto содержит 6 компонентов: номер, марка машины, год выпуска, цвет, фамилия владельца, его адрес. Доступ к полям записи осуществляется через переменные m и v типа record.

Имя поля должно быть уникальным в пределах записи. Объём памяти, необходимый для хранения записи, складывается из длин полей.

Значения полей записи могут быть использованы в выражениях. Обращение к значению поля осуществляется с помощью составного имени, включающего идентификатор переменной и идентификатор поля, разделённые точкой. Например, чтобы получить доступ к полям записи m типа avto, надо записать: m.nomer, m.marka, m.god, m.color, m.fam, m.adress .

Для присваивания полям записей значений используются оператор присваивания. m.nomer:=’ав345х’; m.marka:=’ВАЗ 2110’; m.god:=1995;

Составные имена можно использовать, в частности, в операторах ввода-вывода, например: Write(’Введите фамилию владельца автомобиля ’,m.nomer, ’ ’); Readln(m.fam);

Допускается применение оператора присваивания к записям в целом, если они имеют один и тот же тип, например, m:=v. После этого значения полей записи m станут равны значениям соответствующих полей записи v.

В ряде задач удобно пользоваться массивами из записей. Их можно описать, например, следующим образом:

Type

Person = record

Fam:string[20]; { фамилия сотрудника }

Pol:char; { Пол сотрудника }

Age:16..60; { возраст сотрудника}

Dolgnost: string[20]; { должность }

end;

Var

otdel:array [1..50] of Person;

Обращение к полям записей имеет несколько громоздкий вид, что особенно заметно при использовании идентификаторов длиной более 5 символов. Чтобы избежать этого,применяется оператор with, который имеет следующий формат:

With <переменная типа record> do <оператор>;

Один раз указав имя переменной типа record в операторе with, далее в пределах блока <оператор> можно работать с именами полей, как с обычными переменными, то есть без указания перед идентификатором поля имени переменной, определяющей запись:

With Otdel[25] do

begin

fam:=’Васильев’;

Pol:=’М’;

Age:=45;

Dolgnost:=’Директор’;

end;

Паскаль допускает вложение записей друг в друга, т.е. поле в записи может в свою очередь быть записью, соответственно оператор with может быть вложенным.

Записи используются обычно для организации файлов с данными на дисках.