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

 


Споріднені теми