Алгоритмический язык Pascal

Типы переменных


Типы переменных, используемых в Delphi Pascal, приводятся на рисунке:

 

Используются стандартные имена типов, либо имя типа задается в разделе описания программы, например:

 
TYPE A = array [1..1000] of real; 

Тип переменной объявляется после служебного слова VAR, например:

 
VAR a1, a2: A;   { массивы из 1000 элементов вещественных чисел типа "A" }

Если не использовать служебное слово TYPE, то можно записать:

 
VAR a1, a2 : array[1..1000 ] of real;

Рассмотрим подробнее описание некоторых стандартных типов и допустимые диапазоны изменения значений переменных.

Вещественные типы

Название

Длина, байт

Кол-во (десятичных) значащих цифр

Диапазон ЗНАЧЕНИЙ

Real

8

15...16

±5.0·10-324…±1.7·10308

Real48

6

11…12

±2.9·10-39…±1.7·1038

Single

4

7...8

±1.5·10-45…±3.4·1038

Double

8

15...16

±5.0·10-324…±1.7·10308

Extended

10

19...20

±3.6·10-4932…±1.1·104392

Comp

8

19...20

–263…262

Currency

8

19…20

–922 337 203 685 477.5808…

922 337 203 685 477.5807

 

Примеры описания:

 
VAR
  c, d, e : real;
  d1, d2: double;


Примеры присвоения значения:

 
  с := -125.6;
  e := 10;
  d := 1.e02;
  d1 := 1.2e-257; { 1.2*10-257 }

 

Целые типы

Название

Длина, байт

Диапазон ЗНАЧЕНИЙ

Byte

1

0..255

ShortInt

1

-128..+127

Word

2

0..65535

SmallInt

2

-32768..+32767   (216-1 – 1)

Cardinal (LongWord)

4

0..4 294 967 295   (232 – 1)

Integer (LongInt)

4

-2 147 483 648..+2 147 483 647 (232-1 – 1)

Int64

8

-263..+263-1

 

Пример описания:

 
VAR
  i, j, k : byte;
  h, m, n : integer;
  l1, l2, l3 : int64;


Примеры присвоения значения:

 
i := 222;
j := 10;
m := -23000;
l1 := 280000;
h := $A7; (шестнадцатеричный формат числа 167)

 

Логический тип - Boolean

Переменные логического типа могут принимать значения: False(ложь) или True (истина).

Примеры описания:

 
VAR
  b1, b2, b3, b4 : boolean;

 

Примеры присвоения значения:

 
b1 := True; b2 := False; b3 := not b1;

 

В Delphi Pascal определены и другие логические типы: ByteBool (1 байт), WordBool (2 байта), LongBool (4 байта).

 

Символьный тип - Char

Переменные символьного типа могут принимать значения одного из символов с кодами от #0 до #255, т. е. допускаются буквы русского алфавита и символы псевдографики. Символы с кодами от #0 до #31 (управляющие) в тексте воспринимаются как пробел, а в операторах вывода как символ или команда.

Примеры описания:

 
VAR
  с, ch, e: char;

 

Примеры присвоения значения:

 
c := 'A';
c := '!';
c := #33;  { символ "!" задается значением кода }
ch := #13; { код клавиши Enter }
e := #27;  { код клавиши Esc }

 

Примеры вывода:

 
Write);    { выводится символ "!" }
Write(ch);   { команда перевода курсора на новую строчку }
Write);    { выводится специальный символ, соответствующий коду #27 }

 

В Delphi Pascal определены и другие символьные типы: ANSIChar (1 байт), WideChar (2 байта).

Строковый тип String

Переменная строкового типа задается набором символов, заключенных в кавычки.

Примеры описания:

 
VAR
  s : string[25]; { Длина переменной s может изменяться от 1 до 25 символов }
  s1 : string;    { длина переменной s1 не указывается, наибольшее число символов равно 255 }

 

Примеры присвоения значения:

s := 'Привет';
s1 := 'Hello';
 

Типы данных Delphi Pascal, относящиеся к строкам: ShortString, ANSIString, String, WideString, PChar.

 

Массив

Массив - упорядоченные данные одного типа, состоящие из переменных (элементов массива). Элементы массива имеют свой порядковый номер (индекс) и значение. Значение присваивается отдельно каждому элементу массива, либо сразу всем элементам массива (копирование одного массива в другой в случае массивов одинакового типа). Массив может быть многомерным (без ограничения), но занимать не более 2 Гбайт.

 

Примеры описания:

 
VAR
  M1 : array[1..200] of integer;  
  A1 : array[100..200] of real; { М1, A1 - одномерные массивы целых и вещественных чисел }
  ch1 : array['A'..'Z'] of char;  
  ch2 : array[0..255] of char; { сh1, ch2 - одномерные массивы символов }
 

Примеры присвоения значения:

 
M1[1] := 5;
M1[2] := 8;
M1[3]:= M1[1];
M1[100] := 32; 
A1[101] := 0.2; 
A1[102] := 2.31;
ch1['B'] := 'C';
ch2[1] := '!' 

 

Динамические массивы:

 

Var

                       a : array of Real;

                       N,i : byte;

               Begin

                       N := 5;                {a = 0}

                       SetLength(a,N);                {a = (0,0,0,0,0)} 

                       for i := 0 to N-1 do

                          a[i] := i*2;        {a = (0,2,4,6,8)}

                       SetLength(a,N-2);              {a = (0,2,4)}

                       SetLength(a,N+1);              {a = (0,2,4,0,0,0)}

End.

 

Тип диапазон и перечислимый тип

Задаются программистом.

Примеры описания:

 
TYPE
  Date_M = 1..31;
  Rush_b = 'А'..'Я';
  Lat_b  = 'A'..'Z';     {тип диапазон}
  Otmetka = (Two,Three,Four,Five);
  Ball = (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10); {перечислимый тип}
 
VAR
  t1, t2 : Date_M;
  c1 : Ruch_b;
  s1 : Lat_b;
  a1, a2 : Otmetka;
  b : Ball;
 

Примеры присвоения значения:

 
t1 := 10;
c1 := 'Л';
s1 := 'F';
a1 := Five;
b  := a8;

 

Файлы

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

 

Примеры описания:

 
VAR
  f1, f2 : TextFile;

 

Примеры связывания:

 
Assign(f1, 'file1.in');
Assign(f2, 'C:\PASCAL\WORK\file2.out');

Процедура Assign связывает файловую переменную с файлом на диске. Файл file1.in содержится в текущем каталоге. Для файла file2.out указывается каталог в формате DOS.

Записи

Запись - вводимый программистом тип, определяемый как структура данных разного типа, содержащая названия полей с указанием их типов, расположенных между служебными словами Record и End.

Примеры описания:

Type   
  Сity = Record
           Name_G : String[20];             { название города }
           Numb_G : LongInt;                { число жителей }
           Stol_G : Boolean;                { Столица (Да,  Нет) }
           Shir, Dol : Real;                { Координаты: широта,  долгота }
         End;
 
Var
  St1, St2, St3 : Сity;                     { Переменные типа запись }
 

Примеры присвоения значения:

 
St1.Name_G := 'Уфа';          
St1.Numb_G := 1200000;           {Отдельным полям переменной St1 }
St2.Name_G := 'Москва';    
St2.Numb_G := 8200000;    
St3 := St1;                      { Всем полям переменной St3 }

 

С переменными типа запись может работать оператор присоединения:

 
WITH "имя переменной"  DO "оператор";

 

Например:

 
With St1 do
  begin
    Name_G := 'Уфа';
    Stol_g := True;
    Readln(Shir, Dol);
     z := Numb_G - St2.Numb_G;
    Writeln(Name_G:5,  Numb_G:10);
  end;
Содержание