Простые типы данных. Pascal. Типы данных

Федеральное агентство по образованию

Реферат

«ТИПЫ ДАННЫХ В ПАСКАЛЕ»

1. Типы данных

Любые данные, т.е. константы, переменные, свойства, значения функций или выражения характеризуются своими типами. Тип определяет множество допустимых значений, которые может иметь тот или иной объект, а также множество допустимых операций, которые применимы к нему. Кроме того, тип определяет также и формат внутреннего представления данных в памяти ПК.

Вообще язык Object Pascal характеризуется разветвленной структурой типов данных (рис. 1.1). В языке предусмотрен механизм создания новых типов, благодаря чему общее количество используемых в программе типов может быть сколь угодно большим.

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

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

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

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

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

В этой и четырех последующих главах приводится подробное описание всех типов.

1.1 Простые типы

К простым типам относятся порядковые, вещественные типы и тип дата-время.

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

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

Тип дата-время предназначен для хранения даты и времени. Фактически для этих целей он использует вещественный формат.

1.1.1 Порядковые типы

К порядковым типам относятся (см. рис. 1.1) целые, логические, символьный, перечисляемый и тип-диапазон. К любому из них применима функция Ord(x), которая возвращает порядковый номер значения выражения X.


Рис. 1.1 - Структура типов данных

Для целых типов функция ord(x) возвращает само значение х, т. е. Ord(X) = х для х, принадлежащего любому целому типу. Применение Ord(x) к логическому , символьному и перечисляемому типам дает положительное целое число в диапазоне от 0 до 1 (логический тип ), от 0 до 255 (символьный ), от 0 до 65535 (перечисляемый ). Тип-диапазон сохраняет все свойства базового порядкового типа, поэтому результат применения к нему функции ord(х) зависит от свойств этого типа.

К порядковым типам можно также применять функции:

pred(x) - возвращает предыдущее значение порядкового типа (значение, которое соответствует порядковому номеру ord (х) -1, т. е. оrd(рred(х)) = оrd(х) - 1;

succ (х) - возвращает следующее значение порядкового типа, которое соответствует порядковому номеру ord (х) +1, т. е. оrd(Succ(х)) = оrd(х) + 1.

Например, если в программе определена переменная

то функция PRED(с) вернет символ "4", а функция SUCC(с) - символ "6".

Если представить себе любой порядковый тип как упорядоченное множество значений, возрастающих слева направо и занимающих на числовой оси некоторый отрезок, то функция pred(x) не определена для левого, a succ (х) - для правого конца этого отрезка.

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

Таблица 1.1 - Целые типы

Название Длина, байт Диапазон значений
Cardinal 4 0. .. 2 147 483 647
Byte 1 0...255
Shortint 1 -128...+127
Smallint 2 -32 768...+32 767
Word 2 0...65 535
Integer 4
Longint 4 -2 147 483 648...+2 147 483 647
Int64 8 -9*1018...+9*1018
LongWord 4 0. . .4 294 967 295

Типы LongWord и Int64 впервые введены в версии 4, а типы Smallint и Cardinal отсутствуют в Delphi 1. Тип integer для этой версии занимает 2 байта и имеет диапазон значений от -32768 до +32767, т. е. совпадает с Smallint .

При использовании процедур и функций с целочисленными параметрами следует руководствоваться “вложенностью” типов, т.е. везде, где может использоваться word , допускается использование Byte (но не наоборот), в Longint “входит” Smallint , который, в свою очередь, включает в себя Shortint .

Перечень процедур и функций, применимых к целочисленным типам, приведен в табл. 1.2. Буквами b, s, w, i, l обозначены выражения соответственно типа Byte , Shortint, Word, Integer и Longint ,

х - выражение любого из этих типов; буквы vb, vs, vw, vi, vl, vx обозначают переменные соответствующих типов. В квадратных скобках указывается необязательный параметр.

Таблица 1.2 - Стандартные процедуры и функции, применимые к целым типам

Обращение Тип результата Действие
abs (x) x Возвращает модуль x
chr(b) Char Возвращает символ по его коду
dec (vx [, i]) - Уменьшает значение vx на i, а при отсутствии i - на 1
inc(vx[,i]) - Увеличивает значение vx на i, а при отсутствии i -на 1
Hi(w) Byte Возвращает старший бант аргумента
Hi(I) То же Возвращает третий по счету байт
Lo(i) Возвращает младший байт аргумента
Lo(w) То же
odd(l) Boolean Возвращает True, если аргумент-нечетное число
Random(w) Как у параметра Возвращает псевдослучайное число, равномерно распределенное в диапазоне 0...(w-l)
sqr(x) X Возвращает квадрат аргумента
swap(i) Integer Меняет местами байты в слове
swap (w) Word Тоже

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

Логические типы . К логическим относятся типы Boolean, ByteBool, Bool, wordBool и LongBool . В стандартном Паскале определен только тип Boolean , остальные логические типы введены в Object Pascal для совместимости с Windows: типы Boolean и ByteBool занимают по одному байту каждый, Bool и WordBool - по 2 байта, LongBool - 4 байта. Значениями логического типа может быть одна из предварительно объявленных констант False (ложь) или True (истина).

Поскольку логический тип относится к порядковым типам, его можно использовать в операторе цикла счетного типа. В Delphi 32 для Boolean значение

Ord (True) = +1, в то время как для других типов (Bool, WordBool и т.д.)

Ord (True) = -1, поэтому такого рода операторы следует использовать с осторожностью! Например, для версии Delphi 6 исполняемый оператор showMessage (" --- ") в следующем цикле for не будет выполнен ни разу:

for L:= False to True do

ShowMessage ("--);

Если заменить тип параметра цикла L в предыдущем примере на Boolean , цикл будет работать и сообщение дважды появится на экране. [Для Delphi версии 1 и 2 ord (True) =+1 для любого логического типа.]

Символьный тип . Значениями символьного типа является множество всех символов ПК. Каждому символу приписывается целое число в диапазоне 0...255. Это число служит кодом внутреннего представления символа, его возвращает функция ord.

Для кодировки в Windows используется код ANSI (назван по имени American National Standard Institute - американского института стандартизации, предложившего этот код). Первая половина символов ПК с кодами 0... 127 соответствует таблице 1.3. Вторая половина символов с кодами 128...255 меняется для различных шрифтов. Стандартные Windows-шрифты Arial Cyr, Courier New Cyr и Times New Roman для представления символов кириллицы (без букв “ё” и “Ё”) используют последние 64 кода (от 192 до 256): “А”... “Я” кодируются значениями 192..223, “а”... “я” - 224...255. Символы “Ё” и “ё” имеют соответственно коды 168 и 184.

Таблица 1.3 - Кодировка символов в соответствии со стандартом ANSI

Код Символ Код. Символ Код. Символ Код Символ
0 NUL 32 BL 64 @ 96 "
1 ЗОН 33 ! 65 А 97 а
2 STX 34 66 В 98 b
3 ЕТХ 35 # 67 С 99 с
4 EOT 36 $ 68 D 100 d
5 ENQ 37 % 69 Е 101 е
6 ACK 38 & 70 F 102 f
7 BEL 39 " 71 G 103 д
8" BS 40 ( 72 Н 104 h
9 HT 41 ) 73 I 105 i
10 LF 42 * 74 J 106 j
11 VT 43 + 75 К 107 k
12 FF 44 F 76 L 108 1
13 CR 45 - 77 М 109 m
14 SO 46 78 N 110 n
15 SI 47 / 79 0 111 о
16 DEL 48 0 80 Р 112 P
17 DC1 49 1 81 Q 113 q
18 DC2 50 2 82 R 114 r
19 DC3 51 3 83 S 115 s
20 DC 4 52 4 84 Т 116 t
21 NAK 53 5 85 U 117 u
22 SYN 54 6 86 V 118 v
23 ETB 55 7 87 W 119 W
24 CAN 56 8 88 х 120 x
25 EM 57 9 89 Y 121 У
26 SUB 58 : 90 Z .122 z
27 ESC 59 ; 91 t 123 {
28 FS 60 < 92 \ 124 1
29 GS 61 = 93 ] 125 }
30 RS 62 > 94 Л 126 ~
31 US 63 F 95 127 r

Символы с кодами 0...31 относятся к служебным кодам. Если эти коды используются в символьном тексте программы, они считаются пробелами.

3.2. Простые типы данныхв Turbo Pascal 7

Простой тип определяет упорядоченное множество значений параметра. В Turbo Pascal имеются следующие группы простых типов:

  • целые типы;
  • логический тип;
  • символьный тип;
  • перечисляемый тип;
  • тип-диапазон;
  • вещественные типы.

Все простые типы, за исключением вещественных, называются порядковыми типами. Для величин порядковых типов определены стандартные процедуры и функции: Dec, Inc, Ord, Pred, Succ (см. п. 13.1).

3.2.1. Целые типы

В отличие от языка Паскаль, где определен единственный целый тип Integer, в Turbo Pascal имеется пять стандартных типов целых чисел: Shortint, Integer, Longint, Byte, Word. Характеристики этих типов приведены в табл. 2.

Таблица 2. Целые типы данных

Тип Диапазон Формат Размер в байтах
Shortint -128 .. 127 Знаковый 1
Integer -32768 .. 32767 Знаковый 2
Longint -2147483648 .. 2147483647 Знаковый 4
Byte 0 .. 255 Беззнаковый 1
Word 0 .. 65535 Беззнаковый 2

3.2.2. Логический тип

Стандартный логический тип Boolean (размер - 1 байт) представляет собой тип данных, любой элемент которого может принимать лишь два значения: True и False. При этом справедливы следующие условия:
False Ord (False) = 0
Ord (True) = 1
Succ (False) = True
Pred (True) = False

В Turbo Pascal 7.0 добавлено еще три логических типа ByteBool (размер - 1 байт), WordBool (размер - 2 байта) и LongBool (размер - 4 байта). Они введены для унификации с другими языками программирования и со средой Windows. Отличие их от стандартного типа Boolean заключается в фактической величине параметра этого типа, соответствующей значению True. Для вех логических типов значению False соответствует число 0, записанное в соответствующее количество байтов. Значению же True для типа Boolean соответствует число 1, записанное в его байт, а для других типов значению True соответствует любое число, отличное от нуля (хотя функция Ord в этом случае дает значение 1).

3.2.3. Символьный тип

Стандартный символьный тип Char определяет полный набор ASCII-символов. Функция Ord от величины типа Char дает код соответствующего символа. Сравниваются величины символьного типа по своим кодам.

3.2.4. Перечисляемый тип

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

type
= ();)

Важно, в каком порядке перечислены идентификаторы при определении типа, т. к. первому идентификатору присваивается порядковый номер 0, второму - 1 и т. д. Один и тот же идентификатор можно использовать в определении только одного перечисляемого типа. Функция Ord от величины перечисляемого типа дает порядковый номер ее значения.

Пример. Перечисляемый тип.

type Operat = (Plus, Minus, Mult, Divide);

Логический тип является частным случаем перечисляемого типа:

type Boolean = (False, True);

3.2.5. Тип-диапазон

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

type = . . ;

Минимальное значение при определении такого типа не должно быть больше максимального.

Пример. Определение типов-диапазонов.

type
Dozen = 1..12; {числа от 1 до 12}
AddSub = Plus..Minus; {операции сложения и вычитания}

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

В отличие от стандарта языка Паскаль, где определен только один вещественный тип Real, в Turbo Pascal имеется пять стандартных вещественных типов: Real, Single, Double, Extended, Соmр. Характеристики этих типов см. в табл. 3. Таблица 3. Вещественные типы данных

Тип Диапазон Число значащих цифр Размер в байтах
Real 2.9*10-39..1.7*1038 11-12 6
Single 1.5*10-45..3.4*1038 7-8 4
Double 5.0*10-324.-1.7*10308 15-16 8
Extended 3.4*10-4932..1.1*104932 19-20 10
Comp -263+1..263-1 19-20 8

Тип Comp фактически является типом целых чисел увеличенного диапазона, однако порядковым не считается.

Типы Single, Double, Extended и Comp можно использовать в программах только при наличии арифметического сопроцессора или при включенном эмуляторе сопроцессора (см. пп. 17.5.8 и 17.7.1).

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

Константы – это данные, значения которых в процессе выполнения программы не могут изменяться. Вводятся в блоке const.

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

Const имя_константы = выражение;

Типизированные константы описываются в виде:

Const имя_константы: тип = выражение;

В выражениях могут быть использованы:

· числа или набор символов в апострофах;

· математические операции;

· операции отношения и логические операции;

· функции abs(x), round(x),trunc(x);

· функции chr(x), ord(x), pred(x), succ(x) и другие.

Формат описания констант:

идентификатор=значение;

1. Целочисленные – определяются посредством чисел, записанных в десятичном или шестнадцатеричном формате, не содержащих десятичной точки.

2. Вещественные – определяются посредством чисел, записанных в десятичном формате данных.

3. Символьные – это любой символ персонального компьютера, заключенный в апострофы.

4. Строковые – определяются последовательностью произвольных символов, заключенных в апострофы.

5. Логические – это либо False, либо True.

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

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

Имя переменной – должно начинаться обязательно с буквы, не может содержать пробелы, и может содержать только:

· буквы латинского алфавита;

· знак подчеркивания.

Примеры: A, A_1, AА, i, j, x, y и т.п. Неверные имена: My 1, 1A. Длина имени переменной может быть до 126 символов, поэтому старайтесь подбирать осмысленные имена переменных. Однако, компилятор различает в именах первые 63 символов. Зато он не различает строчные и прописные буквы, как в именах переменных, так и в написании служебных идентификаторов.

Тип переменной – должен быть обязательно определён в блоке описания переменных VAR. Значением переменной является константа того же типа.

Каждая программа работает с данными. Данные – это в широком смысле слова объекты, которые обрабатывает программа. Тип данного – это его характеристика. От типа зависит:

· в каком виде будет храниться это данное,

· сколько ячеек памяти на его хранение будет отведено,

· какое минимальное и максимальное значение оно может принимать,

· какие операции с ним можно выполнять.

Некоторые простые типы данных Pascal:

1. Целые типы (ShortInt, Integer, LongInt, Byte, Word).

2. Вещественные типы (Real, Single, Double, Extended, Comp).

3. Логический (Boolean).

4. Символьный (Char).

5. Строковые типы (String, String [n]).

9. Безусловные операторы в Паскале. Описание и использование.

Вид оператора

goto <метка>;

Назначение – передача управления в программе на оператор, помеченный меткой <метка>. Меткой может выступать имя (написанное по правилам для имен языка) или целое число без знака, описанное в операторе описания метокLabel, и стоящее перед помеченным оператором, но только в одном месте программы. Метка отделяется от оператора символом «:».Переход на метку может встречаться в блоке несколько раз, но сама метка - только один раз. Если на какую-то метку нет передачи управления, ошибки не будет.

Оператор безусловного перехода, вообще говоря, не разрешен в структурном программировании. Хотя он позволяет сократить текст программы, его использование в паскале ограничено рядом правил и рекомендаций. Запрещается переходить внутрь составного оператора, внутрь или на начало подпрограммы и выходить из подпрограммы в вызвавшую ее программу. Не рекомендуется выполнять переход за пределы страницы (экрана) текста программы, кроме перехода на завершающие операторы программы. Все это связано с возможностью пропуска важных операторов для правильного функционирования программы. Обычно оператор безусловного перехода используется только для возврата на начало тела цикла, если цикл конструируется с помощью условного и безусловного операторов.

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

10. Операторы ветвления в Паскале. Описание и использование.

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

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

if <условие> then < оператор 1 >

else <оператор 2> ;

if a>=b then Max:=a else Max:=b;

В операторе if по обеим ветвям (then и else) может выполняться только один оператор!

Пример задачи на операторы ветвления в паскале. Ввести два целых числа и вывести на экран наибольшее из них.

Идея решения: надо вывести на экран первое число, если оно больше второго, или второе, если оно больше первого.

Особенность: действия исполнителя зависят от некоторых условий (если … иначе …).

var a, b, max: integer;

writeln("Введите два целых числа");

if a > b then max:=a else max:=b;

writeln ("Наибольшее число ", max);

Сложные условия

Сложное условие – это условие, состоящее из нескольких простых условий (отношений), связанных с помощью логических

операций:

Not – НЕ (отрицание, инверсия)

And – И (логическое умножение, конъюнкция,

одновременное выполнение условий)

Or – ИЛИ (логическое сложение, дизъюнкция,

выполнение хотя бы одного из условий)

Xor – исключающее ИЛИ (выполнение только

одного из двух условий, но не обоих)

Простые условия (отношения)

< <= > >= = <>

Порядок выполнения (приоритет = старшинство)

Выражения в скобках

<, <=, >, >=, =, <>

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

Оператор выбора case

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

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

Øиз выражения, называемого селектором,

Øи списка операторов, каждый из которых отмечен константой того же типа, что и селектор.

Селектор должен относиться только к порядковому типу данных, но не к типу longint.

Селектор может быть переменной или выражением.

Список констант может задаваться как явным перечислением, так и интервалом или их объединением. Повторение констант не

допускается.

Тип переключателя и типы всех констант должны быть совместимыми.

Case < выражение {селектор}> of

<список констант 1> : < оператор 1>;

< список констант K> : < оператор K>;

Выполнение оператора case происходит следующим образом:

1)вычисляется значение селектора;

2)полученный результат проверяется на принадлежность к тому или иному списку констант;

3)если такой список найден, то дальнейшие проверки уже не производятся, а выполняется оператор, соответствующий

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

конструкцию case;

4)если подходящего списка констант нет, то выполняется оператор, стоящий за ключевым словом else; если else-ветви нет,

то не выполняется ничего.

В операторе ветвления case по всем ветвям может выполняться только один оператор!

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

case Index mod 4 of

1: x:= y*y – 2*y;

11.Оператор варианта (выбора) в Паскале. Описание и использование.

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

Формат записи:

Case – выбор, вариант;

S – селектор, выражение порядкового типа;

Ki – константы выбора, константа, тип которой совпадает с типом селектора;

OPi – любой оператор в том числе пустой;

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

Работа оператора выбора в Паскале: Вычисляется выражение селектора. Вычисленное значение последовательно сравнивается с константами альтернатив и передается управление оператору константа выбора, которого совпадает с вычисленным значением селектора. Выполняется оператор и передается управление за пределы оператора выбора. Если вычисленное значение селектора не совпадает ни с одной из констант, то управление передается на ветвь Else, наличие которой, не обязательно в этом случае управление передается за пределы оператора выбора.

Структурная схема оператора выбора.

Структуру оператора выбора можно реализовать с помощью вложенных условных операторов, но это ухудшает наглядность программы. Рекомендуется не более 2-3 уровней вложений.

12. Виды операторов цикла в Паскале, их назначение.

5. Алгоритмические конструкции циклов. Виды циклов.

Существует три типа циклических алгоритмов: цикл с параметром (который называют арифметическим циклом), цикл с предусловием и цикл с постусловием (их называют итерационными).

12.13 Арифметический цикл. В арифметическом цикле число его шагов (повторений) однозначно определяется правилом изменения параметра, которое задается с помощью начального (N) и конечного (К) значений параметра и шагом (h) его изменения. Т.е., на первом шаге цикла значение параметра равно N, на втором - N + h, на третьем - N + 2h и т.д. На последнем шаге цикла значение параметра не больше К, но такое, что дальнейшее его изменение приведет к значению, большему, чем К.

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

Если необходимо, чтобы фрагмент программы повторился заданное число раз, то используется конструкция:

FOR <имя счетчика цикла> = <начальное значение> ТО <конечное значение> DO <оператор>;

FOR, TO, DO - зарезервированные слова (англ.: для, до, выполнить);

<счетчик (параметр) цикла> - переменная типа INTEGER, которая изменяется на отрезке от <начального значения>, увеличиваясь на единицу в конце каждого шага цикла;

<оператор> - любой (чаще составной) оператор.

Существует другая форма этого оператора:

FOR <имя счетчика цикла>:= <начальное значение> DOWNTO <конечное значение> DO <оператор> :

Замена ТО на DOWNTO (англ.: вниз до) означает, что шаг изменения параметра цикла равен - 1 , т. е. происходит пошаговое уменьшение счетчика на единицу.

12.14 Цикл с предусловием. Количество шагов цикла заранее не определено и зависит от входных данных задачи. В данной циклической структуре сначала проверяется значение условного выражения (условие) перед выполнением очередного шага цикла. Если значение условного выражения истинно, исполняется тело цикла. После чего управление вновь передается проверке условия и т.д. Эти действия повторяются до тех пор, пока условное выражение не примет значение ЛОЖЬ. При первом же несоблюдении условия цикл завершается.

Этот наиболее часто используемый оператор повторения имеет вид:

WHILE <условие> DO <оператор>;

WHILE, DO - резервированные слова (англ.: пока, делать);

<условие> - выражение логического типа;

<оператор> - произвольный (возможно составной) оператор.

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

Циклы с предусловием используются тогда, когда выполнение цикла связано с некоторым логическим условием. Оператор цикла с предусловием имеет две части: условие выполнения цикла и тело цикла.

12.15 Цикл с постусловием (итерационный цикл). Как и в цикле с предусловием, в циклической конструкции с постусловием заранее не определено число повторений тела цикла, оно зависит от входных данных задачи. В отличие от цикла с предусловием, тело цикла с постусловием всегда будет выполнено хотя бы один раз, после чего проверяется условие. В этой конструкции тело цикла будет выполняться до тех пор, пока значение условного выражения ложно. Как только оно становится истинным, выполнение команды прекращается.

Этот оператор имеет вид:

REPEAT <тело цикла> UNTIL <условие>:

REPEAT, UNTIL - резервированные слова (англ.: повторять, пока не);

<условие> - выражение логического типа, если его значение истинно, то происходит выход из цикла.

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

Циклы с постусловием похожи на циклы с предусловием, но в них условие находится после тела цикла.

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

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

Если условие истинно, то происходит выход из цикла, иначе операторы цикла повторяются.

16. Массив - это множество однотипных элементов, объединённых общим именем и занимающих в компьютере определённую область памяти. Количество элементов в массиве всегда конечно. В общем случае массив - это структурированный тип данных, состоящий из фиксированного числа элементов, имеющих один и тот же тип. Название регулярный тип (или ряды) массивы получили за то, что в них объединены однотипные (логически однородные) элементы, упорядоченные (урегулированные) по индексам, определяющим положение каждого элемента в массиве. В качестве элементов массива можно использовать любой тип данных, поэтому вполне правомерно существование массивов записей, массивов указателей, массивов строк, массивов и т.д.Элементами массива могут быть данные любого типа, включая структурированные.Тип элементов массива называется базовым. Особенностью языка Паскаль является то, что число элементов массива фиксируется при описании и в процессе выполнения программы не меняется. Элементы, образующие массив, упорядочены таким образом, что каждому элементу соответствует совокупность номеров (индексов), определяющих его местоположение в общей последовательности. Доступ к каждому отдельному элементу осуществляется путем индексирования элементов массива. Индексы представляют собой выражения любого скалярного типа (чаще целого), кроме вещественного. Тип индекса определяет границы изменения значений индекса. Для описания массива предназначено словосочетание array of (массив из).

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

17. Одномерный массив – это фиксированное количество элементов одного типа, объединенных одним именем, причем каждый элемент имеет свой уникальный номер, и номера элементов идут подряд.

Для описания подобных объектов в программировании предварительно следует ввести соответствующий тип в разделе описания типов.

Тип массив описывается следующим образом:

Имя типа = Array [тип индекса (ов)] Of тип элементов;

Имя переменной: имя типа;

Переменную типа массив можно описать сразу в разделе описания переменных Var:

Var Имя переменной: array [тип индекса (ов)] Of тип элементов;

Array – служебное слово (в переводе с английского означает «массив»);

Of – служебное слово (в переводе с английского означает «из»).

Тип индекса – любой порядковый тип, кроме типов integer, longint.

Тип же самих элементов может быть любым, кроме файлового типа.

Количество элементов массива называется его размерностью. Несложно подсчитать, что при последнем способе описания множества индексов размерность массива равна: максимальное значение индекса – минимальное значение индекса + 1.

Например:

mas = array of real;

Массив Х – одномерный, состоящий из двадцати элементов вещественного типа. Элементы массива хранятся в памяти компьютера последовательно друг за другом.

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

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

Type bb = Array [-5..3] Of Boolean;

Массивы данного типа будут содержать 9 логических переменных, пронумерованных от -5 до 3.

18. Двумерный массив в Паскале трактуется как одномерный массив, тип элементов которого также является массивом (массив массивов). Положение элементов в двумерных массивах Паскаля описывается двумя индексами. Их можно представить в виде прямоугольной таблицы или матрицы.

Рассмотрим двумерный массив Паскаля размерностью 3*3, то есть в ней будет три строки, а в каждой строке по три элемента:

Каждый элемент имеет свой номер, как у одномерных массивов, но сейчас номер уже состоит из двух чисел – номера строки, в которой находится элемент, и номера столбца. Таким образом, номер элемента определяется пересечением строки и столбца. Например, a 21 – это элемент, стоящий во второй строке и в первом столбце.

Описание двумерного массива Паскаля.

Существует несколько способов объявления двумерного массива Паскаля.

Мы уже умеем описывать одномерные массивы, элементы которых могут иметь любой тип, а, следовательно, и сами элементы могут быть массивами. Рассмотрим следующее описание типов и переменных:

Основные действия с двумерными массивами Паскаля

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

matrix= array of integer;

то в ходе выполнения программы можно присвоить матрице a значение матрицы b (a:= b). Все остальные действия выполняются поэлементно, при этом над элементами можно выполнять все допустимые операции, которые определены для типа данных элементов массива. Это означает, что если массив состоит из целых чисел, то над его элементами можно выполнять операции, определенные для целых чисел, если же массив состоит из символов, то к ним применимы операции, определенные для работы с символами.

21.Технологии работы с текстовыми документами. Текстовые редакторы и процессоры: назначение и возможности.

олее совершенные текстовые редакторы (например, Microsoft Word и OpenOffice.org Writer), которые называют иногда текстовыми процессорами, имеют широкий спектр возможностей по созданию документов (вставка списков и таблиц, средства проверки орфографии, сохранение исправлений и др.).

Для подготовки к изданию книг, журналов и газет в процессе макетирования издания используются мощные программы обработки текста - настольные издательские системы (например, Adobe PageMaker, Microsoft Office Publisher).

Для подготовки к публикации в Интернете Web-страниц и Web-сайтов используются специализированные приложения (например, Microsoft FrontPage).

Текстовые редакторы - это программы для создания, редактирования, форматирования, сохранения и печати документов. Современный документ может содержать, кроме текста, и другие объекты (таблицы, диаграммы, рисунки и т. д.).

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

Форматирование - это оформление текста. Кроме текстовых символов форматированный текст содержит специальные невидимые коды, которые сообщают программе, как надо его отображать на экране и печатать на принтере: какой шрифт использовать, каким должно быть начертание и размер символов, как оформляются абзацы и заголовки.

Форматированные и неформатированные тексты несколько различаются по своей природе. Это различие надо понимать. В форматированном тексте важно все: и размеры букв, и их образ, и то, где заканчивается одна строка и начинается другая. То есть форматированный текст неразрывно связан с параметрами листа бумаги, на котором напечатан.

При оформлении текстовых документов часто требуется добавлять в документ не текстовые элементы или объекты. Продвинутые текстовые редакторы позволяют это делать – они имеют широкие возможности по вставке в текст рисунков, диаграмм, формул и так далее.

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

Форматирование бумажных и электронных документов может существенно различаться. Для бумажных документов принято так называемое абсолютное форматирование. Печатный документ всегда форматируется под печатный лист известного размера (формата). Например, ширина строки документа зависит от ширины листа бумаги. Если документ был оформлен для печати на листах большого формата, то его нельзя напечатать на маленьких листочках - часть документа на них не поместится. Одним словом, форматирование печатного документа всегда требует предварительного выбора листа бумаги с последующей привязкой к этому листу. Для печатного документа всегда можно точно назвать (в любых единицах измерения) размеры шрифтов, полей, расстояний между строками или абзацами и т. п.

Для электронных документов принято так называемое относительное форматирование. Автор документа не может заранее предсказать, на каком компьютере, с каким размером экрана документ будут просматривать. Более того, даже если бы размеры экранов и были известны заранее, все равно невозможно предсказать, каков будет размер окна, в котором читатель увидит документ. Поэтому электронные документы делают так, чтобы они подстраивались под текущий размер окна и форматировались «на лету».

Автор электронного документа не знает также, какие шрифты имеются на компьютере будущего читателя, и потому не может жестко указать, каким шрифтом должны изображаться текст и заголовки. Но он может задать такое форматирование, при котором на любом компьютере заголовки будут выглядеть крупнее, чем текст.

Относительное форматирование используют для создания электронных документов Интернета (так называемых Web-страниц), а абсолютное - для создания печатных документов в текстовых процессорах.

22.Основные структурные элементы текстового документа. Шрифты, стили, форматы.

Форматирование шрифта (символов).

Символы – это буквы, цифры, пробелы, знаки пунктуации, специальные символы. Символы можно форматировать (изменять их внешний вид). Среди основных свойств символов можно выделить следующие: шрифт, размер, начертание и цвет.

Шрифт – это полный набор символов определенного начертания. Каждый шрифт имеет своё название, например Times New Roman, Arial, Comic Sans MS. Единицей измерения шрифта является пункт (1 пт = 0,367 мм). Размеры шрифтов можно изменять в больших пределах. Кроме нормального (обычного) начертания символов обычно применяют полужирное, курсивное, полужирное курсивное.

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

В векторных шрифтах символы описываются математическими формулами и возможно произвольное их масштабирование. Среди векторных шрифтов наибольшее распространение получили шрифты типа TrueType.

Можно также установить дополнительные параметры форматирования символов: подчеркивание символов различными типами линий, изменение вида символов (верхний и нижний индекс, зачеркнутый), изменение расстояний между символами.

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

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

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

Существует несколько различных типов баз данных: табличные (реляционные), иерархические и сетевые.

Табличные базы данных.

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

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

Главное достоинство таблиц - в их понятности. С табличной информацией мы имеем дело практически каждый день. Загляните, например, в свой дневник: расписание занятий там представлено в виде таблицы. Когда мы приходим на вокзал, смотрим расписание электричек. Какой вид оно имеет? Это таблица! А еще есть таблица футбольного чемпионата. И журнал учителя, куда он выставляет вам оценки, - тоже таблица.

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

1.Данные хранятся в таблицах, состоящих из столбцов («атрибутов», «полей») и строк («записей»);

2.На пересечении каждого столбца и строчки стоит в точности одно значение;

3.У каждого столбца есть своё имя, которое служит его названием, и все значения в одном столбце имеют один тип.

4.Запросы к базе данных возвращают результат в виде таблиц, которые тоже могут выступать как объект запросов.

5.Строки в реляционной базе данных неупорядочены - упорядочивание производится в момент формирования ответа на запрос.

6.Обычно информация в базах данных хранится не в одной таблице, а в нескольких взаимосвязанных.

В реляционных БД строка таблицы называется записью , а столбец - полем . Каждое поле таблицы имеет имя.

Поля - это различные характеристики (иногда говорят – атрибуты) объекта. Значения полей в одной строке относятся к одному объекту.

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

С каждым полем связано еще одно очень важное свойство – тип поля . Тип поля определяет множество значений, которые может принимать данное поле в различных записях.

В реляционных базах данных используются четыре основных типа поля:

Числовой;

Символьный;

Логический.

25. Системы управления базами данных и принципы работы с ними. Поиск, удаление и сортировка данных в БД. Условия поиска (логические выражения); порядок и ключи сортировки.

Системы управления базами данных (СУБД).

Для создания баз данных, а также выполнения операции поиска и сортировки данных предназначены специальные программы - системы управления базами данных (СУБД).

Таким образом, необходимо различать собственно базы данных (БД) - упорядоченные наборы данных, и системы управления базами данных (СУБД) - программы, управляющие хранением и обработкой данных. Например, приложение Access, входящее в офисный пакет программ Microsoft Office, является СУБД, позволяющей пользователю создавать и обрабатывать табличные базы данных.

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

Работа с СУБД начинается с создания структуры базы данных, т. е. с определения:

количества столбцов;

названий столбцов;

типов столбцов (текст/число/дата);

ширины столбцов.

Основные функции СУБД:

Управление данными во внешней памяти (на дисках);

Управление данными в оперативной памяти;

Журнализация изменений и восстановление базы данных после сбоев;

Поддержание языков БД (язык определения данных, язык манипулирования данными).

В командах СУБД условие выбора записывается в форме логического выражения.

Логическое выражение, подобно математическому выражению, выполняется (вычисляется), но в результате получается не число, а логическое значение: истина (true) или ложь (false).

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

Часто встречаются задачи, в которых используются не отдельные условия, а совокупность связанных между собой условий (отношений). Например, нужно выбрать учеников у которых вес больше 60 и рост меньше 168.

Выражение, содержащие логические операции, будем называть сложным логическим выражением.

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

В результате логического умножения (конъюнкции) получается истина, если истинны все логические выражения.

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

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

Присоединение частицы «не» к высказыванию называется операцией логического отрицания или инверсией.

27. Электронные таблицы, назначение и основные функции.

Электронная таблица - это программа обработки числовых данных, хранящая и обрабатывающая данные в прямоугольных таблицах.

Электронная таблица состоит из столбцов и строк. Заголовки столбцов обозначаются буквами или сочетаниями букв (A, G, АВ и т. п.), заголовки строк - числами (1, 16, 278 и т. п.). Ячейка - место пересечения столбца и строки.

Каждая ячейка таблицы имеет свой собственный адрес. Адрес ячейки электронной таблицы составляется из заголовка столбца и заголовка строки, например: А1, F123, R1. Ячейка, с которой производятся какие-то действия, выделяется рамкой и называется активной.

Типы данных. Электронные таблицы позволяют работать с тремя основными типами данных: число, текст и формула.

Числа в электронных таблицах Excel могут быть записаны в обычном числовом или экспоненциальном формате, например: 195,2 или 1,952Е + 02. По умолчанию числа выравниваются в ячейке по правому краю. Это объясняется тем, что при размещении чисел друг под другом (в столбце таблицы) удобно иметь выравнивание по разрядам (единицы под единицами, десятки под десятками и т. д.).

Формула должна начинаться со знака равенства и может включать в себя числа, имена ячеек, функции (Математические, Статистические, Финансовые, Дата и время и т. д.) и знаки математических операций. Например, формула «=А1+B2» обеспечивает сложение чисел, хранящихся в ячейках А1 и B2, а формула «=А1*B» - умножение числа, хранящегося в ячейке А1, на 5. При вводе формулы в ячейке отображается не сама формула, а результат вычислений по этой формуле. При изменении исходных значений, входящих в формулу, результат пересчитывается немедленно.

Абсолютные и относительные ссылки. В формулах используются ссылки на адреса ячеек. Существуют два основных типа ссылок: относительные и абсолютные. Различия между ними проявляются при копировании формулы из активной ячейки в другую ячейку.

Относительная ссылка в формуле используется для указания адреса ячейки, вычисляемого относительно ячейки, в которой находится формула. При перемещении или копировании формулы из активной ячейки относительные ссылки автоматически обновляются в зависимости от нового положения формулы. Относительные ссылки имеют следующий вид: А1, BЗ.

Если символ доллара стоит перед буквой (например: $A1), то координата столбца абсолютная, а строки - относительная. Если символ доллара стоит перед числом (например, А$1), то, наоборот, координата столбца относительная, а строки - абсолютная. Такие ссылки называются смешанными.

Пусть, например, в ячейке С1 записана формула =A$1+$J31, которая при копировании в ячейку D2 приобретает вид =В$1+$B2. Относительные ссылки при копировании изменились, а абсолютные - нет.

Сортировка и поиск данных. Электронные таблицы позволяют осуществлять сортировку данных. Данные в электронных таблицах сортируются по возрастанию или убыванию. При сортировке данные выстраивают - ся в определенном порядке. Можно проводить вложенные сортировки, т. е. сортировать данные по нескольким столбцам, при этом назначается последовательность сортировки столбцов.

В электронных таблицах возможен поиск данных в соответствии с указанными условиями - фильтрами. Фильтры определяются с помощью условий поиска (больше, меньше, равно и т. д.) и значений (100, 10 и т. д.). Например, больше 100. В результате поиска будут найдены те ячейки, в которых содержатся данные, удовлетворяющие заданному фильтру.

Построение диаграмм и графиков. Электронные таблицы позволяют представлять числовые данные в виде диаграмм или графиков. Диаграммы бывают различных типов (столбчатые, круговые и т. д.); выбор типа диаграммы зависит от характера данных.

28. Технология обработки информации в электронных таблицах (ЭТ). Структура электронной таблицы.

Электронная таблица - это программа обработки числовых данных, хранящая и обрабатывающая данные в прямоугольных таблицах. Электронная таблица состоит из столбцов и строк. Заголовки столбцов обозначаются буквами или сочетаниями букв (A, G, АВ и т. п.), заголовки строк - числами (1, 16, 278 и т. п.). Ячейка - место пересечения столбца и строки. Каждая ячейка таблицы имеет свой собственный адрес. Адрес ячейки электронной таблицы составляется из заголовка столбца и заголовка строки, например: Al, B5, E7. Ячейка, с которой производятся какие-то действия, выделяется рамкой и называется активной. Электронные таблицы, с которыми работает пользователь в приложении, называются рабочими листами. Можно вводить и изменять данные одновременно на нескольких рабочих листах, а также выполнять вычисления на основе данных из нескольких листов. Документы электронных таблиц могут включать несколько рабочих листов и называются рабочими книгами.

29. Типы данных в электронных таблицах (ЭТ): числа, формулы, текст. Правила записи формул.

Типы данных.

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

Числа в электронных таблицах Excel могут быть записаны в обычном числовом или экспоненциальном формате, например: 195,2 или 1.952Ё + 02. По умолчанию числа выравниваются в ячейке по правому краю. Это объясняется тем, что при размещении чисел друг под другом (в столбце таблицы) удобно иметь выравнивание по разрядам (единицы под единицами, десятки под десятками и т. д.).

Текстом в электронных таблицах Excel является последовательность символов, состоящая из букв, цифр и пробелов, например запись «32 Мбайт» является текстовой. По умолчанию текст выравнивается в ячейке по левому краю. Это объясняется традиционным способом письма (слева направо).

Формула должна начинаться со знака равенства и может включать в себя числа, Имена ячеек, функции (Математические, Статистические, Финансовые, Дата и время и т.д.) и знаки математических: операций. Например, формула «=А1+В2» обеспечивает сложение чисел, хранящихся в ячейках А1 и В2, а формула «=А1*5» - умножение числа, хранящегося в ячейке А1, на 5. При вводе формулы в ячейке отображается не сама формула, а результат вычислений по этой формуле. При изменении исходных значений, входящих в формулу, результат пересчитывается немедленно.

Правила записи формул в электронных таблицах

1. Формулы содержат числа, имена ячеек, знаки операций, круглые скобки, имена функций

2. Арифметические операции и их знаки:

Название операции Знак Комбинация клавиш

сложение + {Shift + +=}или {+} на дополнительной клавиатуре

вычитание – {-}

умножение * {Shift + 8} или {*}на дополнительной клавиатуре

деление / {Shift + | \} или {/}на дополнительной клавиатуре

возведение в степень ^ {Shift + 6} на английском

3. Формула пишется в строку, символы последовательно выстраиваются друг за другом, проставляются все знаки операций; используются круглые скобки.

4. В первую очередь выполняются операции в скобках, если нет скобок, то порядок выполнения определяется старшинством операций. По убыванию старшинства операции располагаются в таком порядке:

1. возведение в степень

2. умножение, деление

3. сложение, вычитание

Операции одинакового старшинства выполняются в порядке их записи слева направо.

5. Формулы можно вводить в режиме отображения расчетов, т.е. запись формулы в текущую ячейку пользователь начинает со знака = и в ячейке после нажатия клавиши Enter отображается результат вычисления по формуле.

6. Формулы можно вводить в режиме отображения формул, т.е. пользователь в текущую ячейку записывает формулу без знака = и в ячейке после нажатия клавиши Enter отображается формула.

30.Основные встроенные функции. Абсолютные и относительные ссылки в элект-ронных таблицах (ЭТ).

Относительная ссылка в формуле используется для указания адреса ячейки, вычисляемого относительно ячейки, в которой находится формула. При перемещении или копировании формулы из активной ячейки относительные ссылки автоматически обновляются в зависимости от нового положения формулы. Относительные ссылки имеют следующий вид: А1, ВЗ.

Абсолютная ссылка в формуле используется для указания фиксированного адреса ячейки. При перемещении или копировании формулы абсолютные ссылки не изменяются. В абсолютных ссылках перед неизменяемым значением адреса ячейки ставится знак доллара (например, $А$1).

Если символ доллара стоит перед буквой (например: $А1), то координата столбца абсолютная, а строки - относительная. Если символ доллара стоит перед числом (например, А$1), то, наоборот, координата столбца относительная, а строки - абсолютная. Такие ссылки называются смешанными. Пусть, например, в ячейке С1 записана формула =А$1+$В1, которая при копировании в ячейку D2 приобретает вид =В$1+$В2. Относительные ссылки при копировании изменились, а абсолютные - нет.

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

Тип - это множество значений, которые могут принимать объекты программы, и совокупность операций, допустимых над этими значениями .

Например , значения 1 и 2 относятся к целочисленному типу , их можно складывать, умножать и выполнять другие арифметические операции . Значения «монитор» и «Паскаль» носят лингвистический характер, они имеют свой набор допустимых операций. В большинстве широкоупотребительных языков могут использоваться только строго определенные, заранее известные типы. Pascal , наряду со стандартными типами, имеющимися в других языках высокого уровня, позволяет программисту образовывать собственные типы.

Все допустимые в языке Паскаль типы подразделяются на две большие группы: простые и сложные (структурированные).

Тип Диапазон Мантисса, знаков Требуемая память (байт)
REAL 2.9*10Е-39..1.7*10Е38 11-12
SINGLE 1.5*10Е-45..3.4*10Е38 7-8
DOUBLE 5.0*10Е-324..1.7*10Е308 15-16
EXTENDED 1.9*10Е-4951..1.1*10Е4932 19-20
COMP -2Е+63+1..2Е+63-1 10-20

Эффективное использование типов SINGLE, DOUBLE, EXTEND, COMP возможно только при включенной директиве {$N+}. По умолчанию она находится в выключенном состоянии. Для решения инженерно-экономических задач достаточно значений типа REAL.

Пример

Var Res, Summa, Itog: real;

Булевский тип данных описывается идентификатором BOOLEAN. Переменные и константы этого типа могут принимать только одно из двух значений: TRUE (истина) или FALSE (ложь).

Пример

Var Sel1, Sel2: boolean;

A,B,C,D: boolean;

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

Литерный (символьный) тип описывается стандартным идентификатором CHAR. Константы и переменные этого типа могут принимать одно из значений кодовой таблицы ASCII. Значение константы или переменной этого типа заключается в апострофы.

Например , Var Bukva, Znak, Simvol: char;

Bukva:=’A’; Znak:=’+’; Simvol:=’!’

Переменные символьного типа занимают в памяти 1 байт. Использование данных типа char в арифметических выражениях запрещено. К литерным значениям могут применяться операции сравнения, результат при этом зависит от номера литерной переменной или константы в кодовой таблице.

Кроме стандартных типов данных, Паскаль поддерживает скалярные типы, определенные пользователем . К ним относятся перечисляемый и интервальный типы . Данные этих типов занимают в памяти 1 байт, поэтому любой пользовательский тип не может содержать более 255 элементов. Их применение значительно улучшает наглядность программы, делает более легким поиск ошибок и экономит память.

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

Формат

Type <имя типа>=(<значение1, значение2, ..., значениеN>);

Var <идентификатор, ...>: < имя типа>;

Пример

Type Season =(Spring, Summer, Autumn, Winter);

Var S1, S2: Season;

Autumn: (September, October, Nowember);

В данном примере приведен явно описанный тип данных пользователя Season. Определены их значения - обозначения времен года. Переменные S1 и S2 могут принимать только одно из перечисленных значений. Попытка присвоить им любое другое значение вызовет программное прерывание . Третий тип перечисления - анонимный (не имеет имени) и задается перечислением значений в разделе Var. Autumn является переменной этого типа и может принимать значения September, October, Nowember. Таким образом, может быть задан любой тип, но это не всегда приемлемо. Первый способ, безусловно, более понятен и больше соответствует характеру языка Pascal.

Интервальный тип позволяет задавать две константы, определяющие границы диапазона значений для данной переменной. Компилятор при каждой операции с переменной интервального типа генерирует подпрограммы проверки, определяющие, остается ли значение переменной внутри установленного для нее диапазона. Обе константы должны принадлежать одному из стандартных типов, кроме вещественного. Значение первой константы должно быть обязательно меньше значения второй.

Формат

Type <имя типа> = <константа1> .. <константа2>;

Var <идентификатор>: < имя типа>;

Пример

Type Days = 1.. 31;

Var Work_d, Free_d: Days;

В этом примере переменные Work_d, Free_d имеют тип Days и могут принимать любые значения из диапазона 1 . . 31.

Выход из диапазона вызывает программное прерывание.

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

Const Min = 1; Max = 31;

Type Days = Min .. Max;

Var Work_d, Free_d: Days;

Структурированные типы данных базируются на скалярных типах и могут содержать их различные комбинации. Они определяют упорядоченную совокупность скалярных элементов и характеризуются типом своих компонентов . В языке Паскаль представлены следующие структурированные типы данных:

строка - последовательность символов, заключенная в апострофы;

массив - структурированный тип данных, состоящий из фиксированного количества элементов одного и того же типа, доступ к которым осуществляется по индексу;

множество - набор выбранных по какому-либо признаку или группе признаков объектов, которые можно рассматривать как единое целое;

запись - совокупность фиксированного числа компонентов разного типа;

файл - последовательность компонентов одного типа и одной длины.

Еще двум структурированным типам - процедурному и типу object (объектному) - трудно поставить в соответствие данные в обычном представлении.

Рисунок 1 - Набор основных типов языка Паскаль

Простейшим числовым типом данных в Паскале являются целые типы, предназначенные для хранения целых чисел. Целые числа в Паскале принято делить на два типа: со знаком и без знака. Числа со знаком – это целочисленный тип, в который входят как положительные, так и отрицательные числа, без знака – только положительные.

Ниже приведены две таблицы с целочисленными типами. Сначала выпишем типы целых чисел со знаком :


Тип Байт Диапазон значений
shortint 1 -128 ... 127
smallint 2 -32768 ... 32767
integer, longint 4 -2147483648 ... 2147483647
int64 8 -9223372036854775808 ... 9223372036854775807

А это целочисленные типы без знака :


Тип Байт Диапазон значений
byte 1 0 ... 255
word 2 0 ... 65535
longword, cardinal 4 0 ... 4294967295
uint64 8 0 ... 18446744073709551615

Как видно, в первой колонке стоит название типа, во второй – количество байт, занимаемое в памяти числами этого типа, в третьей – соответственно диапазон возможных значений. В числах со знаком есть два типа – integer и longint (буквально «целый» и «длинный целый»), которые являются синонимами. То есть вы можете в разделе описаний использовать как одно название, так и другое.

Аналогично во второй таблице (неотрицательные целые числа в Паскале) есть также два целочисленных типа-синонима размером 4 байта – longword и cardinal , поэтому используйте либо одно, либо другое.

Ещё можно заметить, что если числа первой таблицы условно перенести в правую часть относительно нуля (сдвинуть интервал вправо так, чтобы минимальным числом оказался 0), то мы получим интервалы целых чисел второй таблицы, лежащие в соответствующих строках. Так, если в 1-байтовом типе shortint к левой и правой границам прибавить 128, то получим тип byte (0..255); если в 2-байтовом типе smallint к границам прибавить 32768, то получим соответствующий 2-байтовый тип без знака word (0..65535) и т.д.

Всё это случается потому, что в целочисленных типах без знака числа могут быть разделены ровно надвое: половина чисел – в отрицательную часть, половина – в положительную. А почему тогда в числах со знаком левая граница по абсолютной величине на 1 больше за правую границу? – спросите вы. Например, в типе shortint минимум -128, тогда как максимум всего 127 (по модулю на 1 меньше). А это потому, что в правую часть входит также и 0, и об этом надо знать и помнить.

Так зачем же целые числа в Паскале делить на столько типов? Почему не обойтись, например, наибольшим из целочисленных типов в PascalABC.Net и Free Pascal – int64 – это почти 9 с половиной квинтиллионов (!) как с минусом, так и с плюсом? Да по простой банальной (?) причине – экономия памяти. Если вам надо сложить два небольших однобайтовых положительных числа (0..255), а вы эти числа описали как int64 (8 байт), то на это ушло в 8 раз больше памяти. А если программа большая и переменных много, то экономия памяти встает очень резко. Причем нет смысла использовать целые типы со знаком, если в задаче речь идет о таких величинах, как длина, масса, расстояние, время и т.п.

В разделе сайта Задачник Абрамяна (подраздел Integer) понаблюдайте за использованием различных целочисленных типов в Паскале.