Основные типы данных языка Pascal 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Основные типы данных языка Pascal



Тип Размер Диапазон Дополнительная информация
integer (целое) 4 байта (2 байта в Turbo Pascal) -2*109...2*109 максимальному значению переменной данного типа соответствует типизированная константа MaxInt=231. Операции: + - / * (бинарные), + - (унарные), > < >= <= = <> (отношения), and or xor not (побитовые), div mod (целочисленное деление), shl shr (сдвига)
byte (целое без знака) 1 байт 0...255 Операции: те же, что и для integer
real (вещественный) 8 байт 5.0*10-324...1.7*10308 Операции: + - / * (бинарные), + - (унарные), > < >= <= = <> (отношения)
char (символьный) 1 байт   'c' ' ' операция + (слияние); char+char=string
string (строковый)     'hello' операция + (слияние); string+char=string
boolean (логический) 1 байт   переменные этого типа могут принимать всего два значения: True и False. Операции: and or not xor

Основные типы образуют естественную иерархию "меньше"-"больше": byte < integer < real; char < string. Эта иерархия используется в правилах неявного преобразования типов. В Delphi имеется также ряд дополнительных целых и вещественных типов, различающихся объемом занимаемой памяти, наличием знака (для целых), диапазоном возможных значений и количеством значащих цифр (для вещественных): это целые типы word, longword, smallint, shortint, int64 и вещественные типы single, extended, comp, currency (они также "встраиваются" в указанную выше иерархию).

Раздел описаний

Любой объект в программе (переменная, константа, именованный тип, подпрограмма, метка) перед использованием должен быть описан в разделе описаний. Он состоит из разделов описания переменных, констант, типов, меток, подпрограмм, чередующихся в произвольном порядке.

Раздел описания переменных

var i,j: integer;
s: string;
b: boolean;
r1,r2: real;
c: char;

Раздел описания именованных констант

const Pi = 3.141592;
Space = ' ';
ProcName = 'Athlon';
r:real = 2; // типизированная константа

Тип нетипизированной константы определяется типом присваиваемого ей значения.

Раздел описания типов

type int = integer;
IArr = array [1..100] of real;

Операторы, обеспечивающие линейную структуру программы

Оператор присваивания

Оператор присваивания имеет вид:

имя переменной:= выражение

Пример 1. Вычислить x16.

x:=x*x; // x^2
x:=x*x; // x^4
x:=x*x; // x^8
x:=x*x; // x^16

Пример 2. Вычислить x15=(x5)3.

y:=x*x; // x^2
z:=y*x; // x^3
a:=y*z; // x^5
a:=a*a*a; // x^15

Присваивание переменной некоторого начального значения называется инициализацией этой переменной.

Если переменной можно присвоить выражение, то говорят, что они совместимы по присваиванию. Переменная и выражение совместимы по присваиванию:

  • если они имеют один тип;
  • если переменная и выражение имеют целый тип (например, выражение имеет тип byte, а переменная - тип integer или наоборот);
  • если выражение имеет целый, а переменная - вещественный тип;
  • если выражение имеет символьный, а переменная - строковый тип.

Во всех случаях, кроме первого, происходит неявное преобразование типов, в процессе которого может меняться внутреннее представление данных. Заметим также, что при присваивании типа integer типу byte может произойти выход за границы диапазона меньшего типа byte.

Пример.

var i: integer;
...
i:=2.0; // неверно!

Для преобразования вещественного в целое следует использовать функции round и trunc.

i:=round(2.0);
i:=trunc(2.0);

Операторы ввода/вывода

Оператор вызова процедуры ввода имеет одну из следующих форм:

read(список переменных);
readln(список переменных);
readln;

Оператор вызова процедуры вывода имеет одну из следующих форм:

write(список выражений);
writeln(список выражений);
writeln;

Для перехода на новую строку в процессе вывода можно использовать следующий прием:

const newline = #10;
...
writeln(x, newline, y);

или

writeln('Hello'+newline+'world');

Форматы вывода

Для любых типов:

write(x:а); // а - ширина поля вывода

Если число не помещается в указанные позиции, то формат игнорируется. Вещественные числа в этом формате выводятся в экспоненциальной форме.

Для вещественного типа:

write(x:а:b); // a - ширина поля вывода, b - количество цифр в дробной части

Вещественные числа в этом формате выводятся в виде с фиксированной точкой.

Неправильный формат вывода игнорируется. Например, если x=14.457, то после

write(x:0:2)

будет выведено 14.46.

Выражения и операции

Выражения

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

Каждое выражение имеет тип, зависящий от типов входящих в него операндов. Выражение называют арифметическим, если его значением является число. Выражение называют логическим, если его значение имеет логический тип.

Логическое выражение всегда имеет тип boolean.

Тип арифметического выражения определяется типом операнда "старшего" типа: если в выражении есть хотя бы один операнд типа real, то выражение имеет тип real, если нет операндов типа real, но есть операнды типа integer, то выражение имеет тип integer. Исключение составляет операция деления: результатом деления целого на целое является вещественное.

Не все типы совместимы в выражении: к примеру, нельзя сложить целое и строку, нельзя из строки вычесть символ.

При вычислениях выражений со смешанными типами также происходит неявное преобразование типов. Например, если i имеет тип integer, а bt - тип byte, то при вычислении выражения i+bt происходит вначале преобразование значения bt к "старшему" типу integer и только после этого выполняется операция сложения.

Операции

Операции в выражении вычисляются в порядке приоритетов: вначале операции с большим приоритетом, затем - с меньшим. Операции с одинаковым приоритетом вычисляются слева направо. Операции в скобках выполняются в первую очередь.

Таблица приоритетов операций языка Pascal

  1. +&nbsp- (унарные)
  2. * / div mod shl shr and
  3. + -(бинарные) or xor
  4. < > <= >= = <> in

Примеры.

2-1+3=(2-1)+3
4/2*2=(4/2)*2
4/2/2=(4/2)/2
1*2+3*4 - операции умножения вычисляются в непредсказуемом порядке.

Операции div и mod для целых

x div y - результат целочисленного деления x на y. Точнее, x div y = x/y, округленное до ближайшего целого по направлению к 0.

x mod y - остаток при целочисленном делении x на y. Точнее, x mod y = x-(x div y)*y.

Примеры.

5 div 3 = 1
5 mod 3 = 2
x mod 2 = 0 <=> х - четное
x mod 2 <>0 <=> х - нечетное

Пример. Выделение цифр из числа.

х:=345;
a1:= x mod 10; // = 5
x:= x div 10; // = 34
a2:= x mod 10; // = 4
a3:= x div 10; // = 3

Таким способом можно разбить число на цифры.

Операции shl и shr для целых

x shl y - число, получаемое в результате сдвига на y позиций влево двоичного представления x.

x shr y - число, получаемое в результате сдвига на y позиций вправо двоичного представления x. Старшие биты при этом обнуляются.

Примеры.

x shl 2 = 001010002 = 1*25+0*24+1*23+0*22

x shl y = x*2y

x shr 2 = 000010102 = 1*23+0*22+1*21+0*20

x shr y = x div 2y

Логические операции

Простые: x>0 или 2*2=4

Составные: состоят из простых + логические операции (and, or, not, xor)

(x>=3) and (x<=5)
(x<3) or (x>5) = not ((x>=3) or (x<=5))

Таблица истинности

A B A or B A and B A xor B not A
           
           
           
           

Пример. A находится между B и С.

или

Решение.

(A>B) and (A<C) or (A>C) and (A<B)

Пример. Написать условие, при котором точка с координатами (х, у) лежит внутри, вне, на границе прямоугольника с вершинами (x1,y1) и (x2,y2) и сторонами, параллельными осям координат.

var Inside, Outside, OnTheBoundary: boolean;
...
Inside:=(x>x1) and (x<x2) and (y>y1) and (y<y2);
Outside:=(x<x1) or (x>x2) or (y<y1) or (y>y2);
OnTheBoundary:= not Inside and not Outside;



Поделиться:


Последнее изменение этой страницы: 2016-09-20; просмотров: 430; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.117.183.150 (0.016 с.)