Учебно-методическое пособие для студентов специальности 1-08 01 01 «Профессиональное обучение


Download 0.99 Mb.
Pdf ko'rish
bet87/103
Sana05.05.2023
Hajmi0.99 Mb.
#1432201
TuriУчебно-методическое пособие
1   ...   83   84   85   86   87   88   89   90   ...   103
Bog'liq
Osnovy algoritmizacii i programmirovaniya

Массивы записей 
Из записей можно составлять массивы. Когда составляются 
массивы из записей, сначала объявляется тип записи, а уже потом 
объявляется тип массив, у которого базовым типом является тип 
запись. Например,
Type student=Record 
Fio:String; 


155 
o1,o2,o3,o4:Integer; 
End; 
Mas=array [1..30] of student; 
Var a:mas; 
Здесь объявлен массив, который содержит не более 30 записей 
со следующими полями fio (фамилия студента), о1, о2, о3, о4 – это 
поля, которые содержат оценки каждого студента по четырем экза-
менам во время сессии. 
Оператор над записями 
Обращение к полям записи имеет громозкий вид. Это не всегда 
удобно, особенно, если имя записи длинное слово. Чтобы сократить 
такую запись, введен специальный оператор, который называется 
оператор над записями или оператор присоединения. Синтаксис 
такого оператора следующий 
 
With Имя записи do Begin операторы End; 
Один раз указав в этом операторе имя записи, далее с названиями 
полей этой записи можно работать как с простыми переменными. 
 
Примеры выполнения заданий 
 
Пример 1. Напишите программу решения следующей задачи: 
даны две простые дроби a/b и c/d. Представьте их в виде записи и 
найдите сумму. Если можно, сократите полученную простую дробь. 
Решение. Простую дробь можно представить в виде записи,
у которой будет два поля: одно – это числитель простой дроби, вто-
рое поле – это знаменатель простой дроби. Оба поля будут иметь 
целый тип. 
Program Primer_1; 
Type dr = Record 
ch,zn: Integer; 
End; 
Var x,y,s:dr; n:Integer; 


156 
{Процедура нахождения наибольшего общего делителя двух чи-
сел. Такая процедура нам понадобится для сокращения полученной 
дроби} 
Procedure NOD(a,b:Integer; Var d:Integer); 
Begin 
While a<>b do If a>b Then a:=a-b Else b:=b-a; 
d:=a; 
End;
Begin 
{Ввод исходных данных} 
Writeln(‘Ввести числитель и знаменатель первой дроби х’); 
Readln(x.ch, x.zn); 
Writeln('Ввести числитель и знаменатель второй дроби y'); 
Readln(y.ch, y.zn); 
{Нахождение суммы двух дробей s=x+y – это тоже дробь со 
своим числителем и знаменателем} 
s.ch:=x.ch*y.zn+y.ch*x.zn; 
s.zn:=x.zn*y.zn; 
{Вывод полученной дроби без сокращения} 
Writeln(x.ch,’/’, x.zn, ’+’, y.ch, ’/’, y.zn, ’=’, s.ch, ’/’, s.zn,
’=’); 
Nod(s.ch,s.zn,n); {Обращение к процедуре} 
{Делим отдельно числитель и знаменатель полученной дроби на 
наибольший общий делитель} 
s.ch:=s.ch div n; 
s.zn:=s.zn div n; 
{Вывод сокращенной дроби с той же строке} 
Write(s.ch, ’/’, s,zn); 
Writeln;
Еnd. 

Download 0.99 Mb.

Do'stlaringiz bilan baham:
1   ...   83   84   85   86   87   88   89   90   ...   103




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling