Согласие на обработку персональных данных.



04.09.2017
Новая задача Программа вычисления суммы.

03.09.2017
Новое видео Стековый калькулятор и обратная польская запись.

26.08.2017
Новая статья Версии Делфи.

23.08.2017
Новая статья Для кого пишется программа.

13.08.2017
Новая статья Стандарт C++: общие сведения.

Раздел: Стандартные функции Паскаля

Функция High

Как стать программистом 2.0 Как стать программистом 2.0

Эта книга для тех, кто хочет стать программистом. На самом деле хочет, а не просто мечтает. И хочет именно стать программистом с большой буквы, а не просто научиться кулебякать какие-то примитивные программки… Подробнее...

Функция High в Паскале возвращает наибольший индекс открытого массива, перечисления или наибольшее значение порядкового типа. Синтаксис:

function High(Arg : TypeOrVariable) : TOrdinal;

Значение, возвращаемое функцией High, зависит от параметра, передаваемого в функцию:

  1. Если это порядковый тип, то функция High возвращает наибольшее значение в диапазоне этого порядкового типа.
  2. Если это массив или переменная типа массива, то функция High возвращает наибольший индекс массива.
  3. Если это идентификатор массива в функции или процедуре, то функция High возвращает наибольший индекс массива, считая что индексация массива начинается с нуля.
  4. Если это множество или перечисление, то функция High возвращает наибольшее значение перечисления или множества, относительно начального значения данного типа.

ВАЖНО!
Возвращаемый тип всегда совпадает с типом аргумента (это может привести к некоторым неприятным сюрпризам).

Наибольшее значение типа

Наибольшее значение стандартного типа можно получить из справочных материалов. Для таких типов, как, например, byte, это будет однозначное значение.

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

Ну а сейчас пример программы, где показаны возможные применения функции High.

program highfunc;
 
type TEnum = (North, East, South, West);
     TRange = 14..55;
     TArray = array [2..10] of Longint;
 
//****************************************************************
// Вычисляет среднее значение элементов массива Row
//****************************************************************
function Average (Row : array of Longint) : Real;
var i     : Longint;
    Temp  : Real;
begin
  Temp := Row[0];
  for i := 1 to High(Row) do
     Temp := Temp + Row[i];
  Average := Temp / (High(Row)+1);
end;
 
var A   : TEnum;
    B   : TRange;
    C   : TArray;
    I   : Longint;
    S   : Char;
    M   : set of TEnum;
 
begin
  Writeln('The maximum value of TEnum : ', High(TEnum));   //Для типа
  Writeln('The maximum value of A : ', High(A));        //Для переменной
  Writeln('The maximum value of M : ', High(M));        //Для множества
 
  Writeln('The maximum value of TRange : ', High(TRange)); //Для типа
  Writeln('The maximum value of B : ', High(B));        //Для переменной
 
  Writeln('The maximum index of TArray : ', High(TArray)); //Для типа
  Writeln('The maximum index of C : ', High(C));        //Для переменной
 
  Writeln('The maximum value of S : ', Ord(High(S)));
 
  for i := 2 to High(C) do C[i] := i;     //Заполнить массив
  Writeln('Average : ', Average(C):0:2);  //Вычислить среднее значение
 
  WriteLn('Type of return value is always same as type of argument: ');
  Writeln(High(word));          //Выведет 65535
  Writeln(High(High(word)));    //Тоже выведет 65535
  WriteLn(High(65535));         //Выведет 65535 (так тоже можно, 
                                //хотя и смысла в этом нет)
 
  //Writeln(High(Real));        //А так нельзя, потому что тип Real 
                                //не является порядковым
  Writeln(High(Int64));         //А так можно, хотя тип Int64 тоже 
                                //не является порядковым
 
  ReadLn;
end.

Директивы компилятора Директивы компилятора
Как это ни странно, но даже многие опытные программисты не используют директивы компилятора, считая их чем-то ненужным и бесполезным. А между тем, директивы компилятора - это очень классная штука. Если их умело применять в своих программах, то можно существенно сократить время на разработку и уменьшить количество рутинных операций. Подробнее...
Инфо-МАСТЕР ®
Все права защищены ©
e-mail: mail@info-master.su

Яндекс.Метрика