Pascal. Логические типы. Символьные типы. Строчные типы

Логические типы. Символьные типы. Строчные типы

Данная тема является продолжением темы:


Содержание


Поиск на других ресурсах:

1. Логические типы

Логические типы еще называют булевыми типами. В языке Паскаль используются 4 булевых типа:

  • Boolean – переменная этого типа занимает 1 байт памяти;
  • ByteBool – занимает 1 байт памяти;
  • WordBool – занимает 2 байта памяти;
  • LongBool – занимает 4 байта памяти.

Элементы булевых типов могут принимать только два логических значения: True (истина) и False (ложь). В булевых типах значению False соответствует значение 0 во всех байтах (нулевое значение). Значению True соответствует любое ненулевое значение.

Булевые типы являются порядковыми типами, поэтому для них могут быть использованы стандартные функции Ord, Pred, Succ.

 

2. Пример использования констант и переменных булевых типов

Ниже приводится пример объявления и использования констант и переменных булевых типов для приложения типа Console Application системы программирования Delphi.

program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

// Объявление константы булевого типа
const
  OK = True;

var
  // Объявить переменные логических типов
  b:Boolean;
  bb:ByteBool;
  wb:WordBool;
  lb:LongBool;

begin
  // Присваивание значений переменным логических типов
  b:=True;
  bb:=False;
  wb:=True and False;
  lb:=(10>8) and True;

  Writeln('b = ', b);
  Writeln('bb = ', bb);
  Writeln('wb = ', wb);
  Writeln('lb = ', lb);
  Writeln('OK = ', OK);
  ReadLn;
end.

Результат выполнения программы

b = TRUE
bb = FALSE
wb = FALSE
lb = TRUE
OK = TRUE

 

3. Пример использования функций Ord, Succ, Pred для булевых типов

В примере демонстрируется использование функций Ord, Succ, Pred для типов Boolean и LongBool.

program TestBoolTypes;

uses
  crt;

var
  // Объявление переменных логических типов
  b:Boolean;
  lb:LongBool;

begin
  // Примеры использования функций Ord, Pred, Succ для некоторых булевых типов
  // Тип Boolean
  b := True;
  Writeln('b = ', b);
  Writeln('Ord(b) = ', Ord(b));
  Writeln('Pred(b) = ', Pred(b));
  Writeln('Succ(b) = ', Succ(b));

  // Тип LongBool
  lb := False;
  Writeln('lb = ', lb);
  Writeln('Ord(lb) = ', Ord(lb));
  Writeln('Pred(lb) = ', Pred(lb));
  Writeln('Succ(lb) = ', Succ(lb));
end.

Результат выполнения программы

b = TRUE
Ord(b) = 1
Pred(b) = FALSE
Succ(b) = TRUE
lb = FALSE
Ord(lb) = 0
Pred(lb) = TRUE
Succ(lb) = TRUE

 

4. Символьные типы. Пример

В Free Pascal и Delphi реализованы следующие символьные типы:

  • Char, WideChar – представляют тип, использующий кодировку Unicode. Переменные такого типа занимают 2 байта памяти. В ранних версиях языка Паскаль тип Char занимал 1 байт;
  • AnsiChar – тип, определяющий символьные значения, которые занимают в памяти 1 байт.

Пример. В примере объявляются и используются константы и переменные символьного типа Char, WideChar, AnsiChar.

program TestOrdinalTypes;

uses
  crt;

// Примеры объявления констант символьного типа
const
  SpaceKey = #32; // Клавиша пробел
  FirstLetter = 'A';

// Объявление переменных символьных типов
var
  c : Char;
  wc : WideChar;
  ac : AnsiChar;
  code : Integer;

begin
  // Присвоить переменным символьных типов значения
  c := '+';
  wc := '5'; // цифра 5
  ac := '~';

  // Вывести значения переменных символьного типа
  Writeln('c = ', c);
  Writeln('wc = ', wc);
  Writeln('ac = ', ac);

  // Использовать функции Ord, Chr, Pred, Succ
  // Получить код цифры '5'
  code := Ord('5'); // code = 53
  Writeln('Ord(''5'') = ', code);

  // Получить символ, который имеет код 48
  c := Chr(48);
  Writeln('Chr(48) = ', c);

  // Присвоить символ с кодом 50 переменной wc, другой способ
  wc := #50;
  Writeln('#50 = ', wc);
end.

Результат выполнения программы

c = +
wc = 5
ac = ~
Ord('5') = 53
Chr(48) = 0
#50 = 2

 

5. Строковые типы

В классическом Паскале к строчным типам относятся два базовых стандартных типа:

  • String. Строки типа String реализуются во всех модификациях языка Паскаль;
  • PChar – этот тип строк введен начиная с версии Turbo Pascal – 7.0. Тип PChar представляет формат строк, в котором каждая строка заканчивается символом ‘\0’. Такие строки еще называются ASCIIZ-строками.

Тип PChar фактически является указательным типом, который имеет описание.

type
  PChar = ^Char;

Кроме вышеуказанных строчных типов в новых системах Delphi, Free Pascal (Lazarus) были введены ряд дополнительных типов:

  • ShortString – определен как массив символов типа String[255];
  • UnicodeString – определен как String. Одиночные символы этого типа поддерживают кодировку Unicode и занимают 2 байта;
  • WideString – массив символов. Каждый символ занимает память 2 байта;
  • AnsiString – массив символов. Каждый символ занимает память в 1 байт.

 

6. Пример объявления и использование переменных строковых типов

 

program TestOrdinalTypes;

uses
  crt;

// Объявить константы типа String
const
  HelloStr = 'Hello, world!';
  Yes = 'Yes';
  Cancel = 'Cancel';

var
  pC : PChar;
  s : String;
  ss : ShortString;
  us : UnicodeString;
  ws : WideString;
  ast : AnsiString;

begin
  // Строки, которые завершаются нуль-терминатором (ASCIIZ-строки)
  pC := 'PChar';
  Writeln(pC);

  // Строки, которые не завершаются нуль-терминатором
  s := 'String';
  Writeln(s);

  ss := 'ShortString';
  Writeln(ss);

  us := 'UnicodeString';
  Writeln(us);

  ws := 'WideString';
  Writeln(ws);

  ast := 'AnsiString';
  Writeln(ast);

  Readln;
end.

Результат выполнения программы

PChar
String
ShortString
UnicodeString
WideString
AnsiString

 


Связанные темы