Pascal ABC Язык Pascal ABC Эквивалентность типов

  • docx
  • 11.11.2021
Публикация на сайте для учителей

Публикация педагогических разработок

Бесплатное участие. Свидетельство автора сразу.
Мгновенные 10 документов в портфолио.

Иконка файла материала Л2-00358.docx

Pascal ABC Язык Pascal ABC

Эквивалентность типов

В Pascal ABC два типа считаются эквивалентными (равными), если совпадают их описания. Например, после описаний

type Arr=array [1..100] of integer;
var

  a: Arr;
  b: array [1..100] of integer;

можно присваивать массивы друг другу:

a:=b;

В типах записей, помимо типов полей, должны совпадать имена:

type
  rec1 = record i,j: integer end;
  rec2 = record x,y: integer end;
...
var r1: rec1; r2: rec2;
...
r1:=r2; //
ошибка!

В типах формальных параметров процедур и функций имена могут не совпадать:

type
  proc1 = procedure (i: integer); 
  proc2 = procedure (x: integer);
...
var p1: proc1; p2: proc2;
...
p1:=p2; //
все в порядке

Подобная расширенная трактовка эквивалентности (по сравнению с Borland Pascal и Borland Delphi) позволяет передавать параметры составного типа (массивы, записи, процедурный и указательный) в процедуры и функции, не определяя для этих параметров новый тип:

procedure foreach(var a: array [1..100] of real; n: integer; f: function(r: real): real);
var i: integer;
begin
  for i:=1 to n do
    a[i]:=f(a[i]);
end;