Помощничек
Главная | Обратная связь


Археология
Архитектура
Астрономия
Аудит
Биология
Ботаника
Бухгалтерский учёт
Войное дело
Генетика
География
Геология
Дизайн
Искусство
История
Кино
Кулинария
Культура
Литература
Математика
Медицина
Металлургия
Мифология
Музыка
Психология
Религия
Спорт
Строительство
Техника
Транспорт
Туризм
Усадьба
Физика
Фотография
Химия
Экология
Электричество
Электроника
Энергетика

File – типизированные файлы

Integer – целое число со знаком

Форма Бэкуса-Наура:

<целое без знака> ::= <цифра> {<цифра>}

Например: 9 234

<целое> ::= <целое без знака> | + <целое без знака> | – <целое без знака>

Например: -234 -5 +3586

Диапазон значений:

-32768..32767

Константы:

MaxInt = 32767

Допустимые операции:

Арифметические: +, -, *, /

Арифметические дополнительные: div, mod

Сравнения: =, <, >, <>, >=, <=, in (присутствие в множестве)

Логические: и (and), или (or), не (not), исключающее или (xor)

Процедуры и функции:

Математические

abs(x) - модуль

sqr(x) – возведение в квадрат

sqrt(x) – квадратный корень (результат: real)

ln(x) – натуральный логарифм (результат: real)

randon(x) – случайное число от 0 до x

random – случайное число от 0 до 1

Тригонометрические:

sin(x) – синус (результат: real)

cos(x) – косинус (результат: real)

arctan(x) – арктангенс (результат: real)

Прочие:

pred(x) – предыдущее число

succ(x) – следующее число

odd(x) – выдает true если x нечетно

Ввод/вывод:

Допустимы (read/readln/write/writeln)

Допустимо изменение ширины поля печати – write(x:5);

Представление в памяти:

Занимает 2 байта

Число = 5

Число = -5

 


Real – вещественное число

Форма Бэкуса-Наура:

<число с фиксированной точкой> ::= <целое> . <целое без знака>

Например: 0.003 -2.71828 48.8900 +2.0

<число с плавающей точкой> ::= <целое> E <целое> | <число с фикс. точкой> E <целое>

Например: -5.4E-3 3E5 9.43E-03 3E+2

Диапазон значенией:

~ 2.9*10-39 – 1.7*1038

Константы:

Pi = 3.14159265358979

MaxReal = 1.7E308

MinReal = 4.94065645841247E-324

Допустимые операции:

Арифметические: +, -, *, /

Сравнения: =, <, >, <>, >=, <=

Процедуры и функции:

Математические

abs(x) - модуль

sqr(x) – возведение в квадрат

sqrt(x) – квадратный корень

ln(x) – натуральный логарифм

int(x) – целая часть числа x, получаемая путем округления до ближайшего меньшего целого

frac(x) – дробная числа часть числа x

Тригонометрические:

sin(x) – синус

cos(x) – косинус

arctan(x) – арктангенс

Ввод/вывод:

Допустимы (read/readln/write/writeln)

Допустим вывод в экспоненциальной форме – write(x:5);

Допустим вывод определенного числа символов после запятой – write(x:5:5);

Представление в памяти:

Занимает 6 байт

Число = 5.3


Char - символ

Формы Бэкуса-Наура:

<буква> ::= A | B | C | … X | Y | Z | a | b | c | … x | y | z

<цифра> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

<знак> ::= ~ | ! | @ |#| $| %| ^| & | *| ( | - | + | ) | = | \ | : | ; | : | ? | № | . | ,

<char> ::= ‘ <буква> | <цифра> | <знак> ‘

Диапазон значений:

Byte: 0..255

Константы:

нет

Допустимые операции:

Сравнения: =, <, >, <>, >=, <=

Процедуры и функции:

Succ(x) - возвращает следующий символ литерного множества;

Pred(x) - возвращает предыдущий символ литерного множества;

Ord(x) - возвращает значение кода литеры;

Chr(x) - возвращает значение литеры по ее коду, является обратной по отношению к функции Ord.

UpCase(x) – преобразование символа x из строчных букв латинского алфавита в прописные

Ввод/вывод:

Допустимы (read/readln/write/writeln)

Представление в памяти:

Занимает 1 байт

Значение = ‘*’

 


Boolean - логичесткий

Форма Бэкуса-Наура:

<boolean> ::= True | False

Диапазон значений:

True/False

Константы:

Нет

Допустимые операции:

Сравнения: =, <>

Процедуры и функции:

Нет

Ввод/вывод:

Только вывод (write/writeln)

Представление в памяти:

Занимает 1 байт

Значение = true

Значение = false


Array - массив

Формы Бэкуса-Наура:

!бнф

Диапазон значений:

Определяется только для каждого элемента непосредственно, обусловлен базовым типом (зависит от того, массив чего задается)

Константы:

нет

Допустимые операции:

Работа с каждым элементом как с обычной переменной базового типа

Обращение к элементу – в квадратных скобках, например : a[1] – обращение к первому элементу массива a.

Процедуры и функции:

Для всего массива целиком не определяются

Определяются для каждого элемента непосредственно как для объекта базового типа

Ввод/вывод:

Допустимы поэлементно (read[i]/readln[i]/write[i]/writeln[i])

Представление в памяти:

Последовательно все элементы, размер каждого – размер базового типа


Record - запись

Формы Бэкуса-Наура:

!бнф

Диапазон значений:

Определяется только для каждого поля

Обусловлен базовым типом каждого поля непосредственно

Константы:

нет

Допустимые операции:

Для всей записи – оператор with

with <record> do

Begin

end;

Для каждого поля записи – соответствуют операциям базового типа этого поля

Процедуры и функции:

Sizeof(record) – объем занимаемого пространства в памяти

Для каждого поля записи – соответствуют процедурам и функциям базового типа этого поля

Ввод/вывод:

Допустимы по полям

(read(record1.variable)/readln(record1.variable)/write(record1.variable)/writeln(record1.variable))

или через «with» -

with record1 do

begin

readln(variable); // и т.п.

end;

Представление в памяти:

Все поля располагаются последовательно, размер каждого поля соответствует размерности его базового типа. При этом происходит «выравнивание». Также записи дополняются, для гарантии, что они закончены, 4-х байтовой границей.


Set

Формы Бэкуса-Наура:

!бнф

Диапазон значений:

Любой порядковый тип с элементами, для которых функция Ord возвращает значения в диапазоне от 0 до 255

Пример:

type
CharSet = set of char;
Digits = set of '0'..'9';
SeasonSet = set of(Winter,Spring,Summer,Autumn);

Константы:

Нет

Допустимые операции:

+ объединение

- разность

* пересечение

Операция in проверяет принадлежность элемента множеству

Процедуры и функции:

нет

Ввод/вывод:

Чтобы вывести значения элементов множества, необходимо перебрать всевозможные значения в цикле и проверить их на принадлежность множеству с помощью операции in:

for i:=0 to 255 do
if i in st then write(i,' ');

Представление в памяти:

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

Например, если множество определяется как ‘0’..’9’ (т.е. содержит десять элементов), в памяти будет выделено под него два байта. Один байт = 8 бит, а нам нужно разместить 10 бит, т.е. округляем «вверх» до шестнадцати и получаем два байта. Для пустого множества все биты равны нулям. Далее, в памяти все биты нумеруются и если элемент с определенным номером добавляется в множество, то каждый соответствующий бит (с этим же номером) принимает значение 1.


4. Перечислимый !описание

Пример:

type
Season = (Winter,Spring,Summer,Autumn);
DayOfWeek = (Mon,Tue,Wed,Thi,Thr,Sat,Sun);

Представление в памяти:

Значения перечислимого типа занимают 4 байта.

5. Ограниченный !описание

Интервальный тип представляет собой подмножество значений целого, символьного или перечислимого типа и описывается в виде a..b, где a - нижняя, b - верхняя граница интервального типа:

var
a: 0..10;
c: 'a'..'z';
d: Mon..Thr;

Тип, на основе которого строится интервальный тип, называется базовым для этого интервального типа. Значения интервального типа занимают 4 байта.


File – типизированные файлы

Формы Бэкуса-Наура:

!бнф

Диапазон значений:

нет

Константы:

Input, output – зарезервированные переменные для ввода/вывода

Процедуры и функции:

Assign(f, ‘путь’) – ассоциация файловой переменной с файлом

Reset(f) – открытие файла на чтение

Rewrite(f) – открытие файла на запись

Close(f) – закрытие файла

EoF(f) – проверка, достигнут ли конец файла (результат – boolean)

Seek(f, физический номер) – смещение на позицию в файле

FileSize(f) – получает размер файла

FilePos(f) – получает текущую позицию в файле (физический номер «предыдущего» элемента)

Truncate(f) – удаляет все элементы типизированного файла с текущей позиции файлового указателя до конца файла

Ввод/вывод:

Read(f, значение) – если файл открыт для чтения

Write(f, значение) – если файл открыт для записи

Представление в памяти:

Как на жестком диске


Pointer

Формы Бэкуса-Наура:

!бнф

Описание:

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

Тип указателя на тип T имеет форму ^T, например:

type pinteger=^integer;
var p: ^record r,i: real end;

Бестиповой указатель описывается с помощью слова pointer.

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

var
i: integer;
pi: ^integer;
...
pi:=@i; // указателю присвоили адрес переменной i
pi^:=5; // переменной i присвоили 5

Операция разыменования не может быть применена к бестиповому указателю.

Типизированный указатель может быть неявно преобразован к бестиповому:

typepreal=^real;
var
p: pointer;
pr: ^real;
...
p:=pr;

Обратное преобразование может быть выполнено только явно:

pr:=preal(p);
pr^:=3.14;

Константы:

Nil – «указатель, который никуда не указывает»

Допустимые операции:

Указатели можно сравнивать на равенство (=) и неравенство (<>). В дополнение к этому типизированные указатели можно сравнивать, используя операции <, >, <=, >=.

Процедуры и функции:

New(p) - процедура; p - типизированный указатель; выделяет динамическую память размера, равного размеру типа, на который указывает p, и возвращает указатель на нее в переменной p

Dispose(p) - процедура; p - типизированный указатель; освобождает динамическую память по указателю p, ранее выделенную процедурой New

GetMem(p,n) - процедура; p - указатель любого типа, n - integer; выделяет динамическую память размера n байт и возвращает указатель на нее в переменной p

FreeMem(p) - процедура; p - указатель любого типа; освобождает динамическую память по указателю p, ранее выделенную процедурой GetMem

FillMem(v,count,x) - процедура; v - переменная любого типа, count - integer,

x - byte; заполняет count значениями x область памяти, занимаемую переменной v. Контроль выхода за границы не производится

CopyMem(src,dest,count) - процедура; src, dest - pointer, count - integer; копирует count байт из памяти, расположенной по адресу src, в память, расположенную по адресу dest. Допускается использовать перекрывающиеся диапазоны памяти.

Ввод/вывод:

нет

String – строки

Формы Бэкуса-Наура:

!бнф

Диапазон значений:

Длина строки: 1..255

Константы:

нет

Допустимые операции:

Сравнения: =, <, >, <>

Происходит «посимвольное» сравнение

Процедуры и функции:

Length(s) - функция; s - string; результат - integer; возвращает длину строки s.

Copy(s,index,count) - функция; s - string, index и count - integer; результат - string; возвращает подстроку строки s длины count, начиная с позиции index.

Delete(s,index,count) - процедура; s - string, index и count - integer; удаляет в строке s count символов начиная с позиции index.

Insert(subs,s,index) - процедура; s, subs - string, index - integer; вставляет подстроку subs в строку s с позиции index.

Pos(subs,s) - функция; s, subs - string; результат - integer; возвращает позицию первой подстроки subs в строке s (или 0 если подстрока не найдена).

SetLength(s,n) - процедура; s - string, n - integer; устанавливает длину строки s равной n.

Str(x,s), Str(x:n,s), Str(x:n:m,s) - процедура; s - string, x - integer, real и n, m - integer; преобразует x к строковому представлению (во втором и третьем случаях согласно формату вывода, устанавливаемому n и m) и записывает результат в строку s.

Val(s,v,code) - процедура; s - string, v - integer, real, и code - integer; преобразует строку s к числовому представлению и записывает результат в переменную v. Если преобразование возможно, то в переменной code возвращается 0, если невозможно, то в code возвращается ненулевое значение.

Concat(s1,...,sn) - функция; s1,..., sn - string; результат - string; возвращает строку, являющуюся результатом слияния строк s1,..., sn. Результат тот же, что у выражения s1+s2+...+sn .

 

Также можно работать с каждым символом непосредственно как с переменной символьного типа, обращаясь к нему как к элементу массива (нумеруются начиная с единицы, обращение к нулевому символу считается ошибочным).

Ввод/вывод:

Допустимы (read/readln/write/writeln)

Представление в памяти:

Де-факто строка – это массив символов. Занимает число байт, равное размерности строки + 1, т.е.первый байт отводится под значение размерности.


 




Поиск по сайту:

©2015-2020 studopedya.ru Все права принадлежат авторам размещенных материалов.