Программирование на языке Delphi/§2

Материал из Викиверситета

Типы данных[править]

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

Таблица некоторых целочисленных типов данных[править]

В таблице представлены наиболее распространенные целочисленные типы данных. С полным списком вы можете ознакомиться в справке Delphi.

Название Размер(байт) Диапазон значений
Byte 1 0...255
ShortInt 1 -128..127
SmallInt 2 -32 768...32 767
Word 2 0...65 535
Integer 4 - 2 147 483 648... 2 147 483 647
Cardinal 4 0..4294967295
Int64 8 -9223372036854775808..9223372036854775807
UInt64 8 0..18446744073709551615

Все вышеперечисленные типы имеют фиксированный размер, вне зависимости от разрядности целевой платформы. Также,в языке существуют два целых типа, размер которых зависит от разрядности целевой платформы: NativeInt (знаковое целое), и NativeUInt (беззнаковое), размер которых зависит от разрядности и равен 4 и 8 байт для 32- и 64-разрядных платформ. Однако эти типы не являются псевдонимами соответствующих типов фиксированного размера. Так, NativeUInt не является синонимом UInt64 даже при компиляции в 64-разрядный исполняемый код.

Арифметические операции[править]

Для целочисленных типов данных следующие арифметические операции

  • Сложение (+)
  • Вычитание (-)
  • Умножение (*)
  • Целочисленное деление (div)
  • Остаток от деления (mod)

Операция деления (/) не применима к целочисленным типам данных.

Рассмотрим программу:

{$APPTYPE CONSOLE}

var a,b,c:integer;

begin
  a:=10;
  b:=23;
  c:=40;
  a:=c / a;  //Деление
  b:=b+a;   //Сложение
  a:=a*b;   //умножение
  c:=b mod a;  //Остаток от деления
end.

При ее компиляции компилятор выдаст ошибку. Подумайте, почему.

Некоторые функции, применимые к целым типам данных[править]

Название Размер(байт) Диапазон значений
abs(x) Как у параметра Возвращает модуль x
Random(x) Как у параметра Возвращает случайное число в диапазоне 0..(x-1)
sqr(x) Как у параметра Возвращает квадрат x

Пример программы с ипользованием функций:

{$APPTYPE CONSOLE}

var a,b:integer;

begin
  a:=100;
  b:=-40;
  a:=a+abs(b)+random(15);
  writeln(a);
  readln;
end.