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

Функция High

Основы программирования 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.

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

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

Помощь студентам. Курсовые, дипломы, чертежи (КОМПАС), задачи по программированию: Pascal/Delphi/Lazarus; С/С++; Ассемблер; языки программирования ПЛК; JavaScript; VBScript; Fortran; Python и др. Разработка (доработка) ПО ПЛК (предпочтение - ОВЕН, CoDeSys 2 и 3), а также программирование панелей оператора, программируемых реле и других приборов систем автоматизации. Подробнее...

Инфо-МАСТЕР ®
Все права защищены ©
e-mail: mail@info-master.su

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