- •2.2. Основные элементы и конструкции языка
- •2.2.2. Алфавит, слова, комментарии
- •Данные
- •Целочисленные типы
- •Логические типы
- •Вещественные типы
- •Массивы
- •Совместимость типов
- •Выражения и операции
- •Арифметические выражения и операции
- •Поразрядные операции
- •Логические операции и выражения
- •Операции со строками
- •Приоритеты операций
- •Операторы
- •Простые операторы
- •Операторы ввода и вывода.
- •Структурные операторы
- •Условные операторы
- •Операторы цикла
- •Структура Паскаль программы
- •Функции и процедуры
- •Процедуры
- •Функции
- •Параметры процедур и функций
- •Модули
- •Общая структура модуля
- •Компиляция и использование модулей
- •Стандартные модули
- •Работа с файлами
- •Общие правила работы с файлами.
- •Текстовые файлы
- •Примеры задач
Mark |
Pred |
Seek |
True |
MaxInt |
Ptr |
SeekEof |
Trunc |
Mem |
Random |
SeekEoln |
UpCase |
MemAvail |
Randomize |
Sin |
Usr |
Move |
Read |
SizeOf |
UsrInPtr |
New |
ReadLn |
Sqr |
UsrOutPut |
NormVideo |
Real |
Sqrt |
Val |
Odd |
Release |
Str |
Write |
Ord |
Rename |
Succ |
WriteLn |
Output |
Reset |
Swap |
|
Pi |
Rewrite |
Text |
|
Pos |
Round |
Trm |
|
По мере подключения к программе модулей список зарезервированных имен может быть расширен.
Комментарии. Для пояснения хода выполнения программы и смысла переменных в Паскаль программе используются комментарии. Они могут находится в любом месте программы где возможен пробел и никак не влияют на ее исполнение. Единственным условием для комментария является то, что он не может разрывать слова. Комментарии заключаются в фигурные скобки или в специальные скобки комментариев. Следующие конструкции представляют собой комментарии и поэтому игнорируются компилятором:
{любой текст, не содержащий правую фигурную скобку} (* любой текст, не содержащий звездочку/правую круглую скобку *)
Комментарий, содержащий знак доллара $ сразу после открывающей скобки { или (*, является директивой компилятора. За символом $ следует текст команды
компилятора. Например:
{$F+} {$N+,E-} (*$F+*) (*$N+,E-*)
Строки программы. В Borland Pascal строки программы могут иметь максимальную длину в 126 символов. Однако, рекомендуется не использовать в Паскаль программе строки длиной более 80 символов. Каждый оператор или объявление желательно писать с новой строки, т.к. это повышает читаемость программы. Если запись оператора длиннее, то необходимо сделать перенос оператора на следующую строку. Переносить можно в любом месте, где по синтаксису возможен пробел.
Некоторые рекомендации по оформлению программы:
для каждого блока операторов рекомендуется делать отступ глубиной в 2 пробела;
служебные слова следует записывать с маленькой буквы;
имена пользователя (зарезервированные слова, имена переменных, констант, функций и процедур) удобнее записывать с большой буквы;
каждый раздел описания желательно начинать с новой строки;
описание каждой переменной или группы сходных по смыслу переменных рекомендуется записывать в отдельной строке;
каждый оператор желательно записывать в отдельной строке.
Данные
В математике принято классифицировать данные в соответствии с некоторыми важными характеристиками. Так например, производится строгое разграничение между
35
вещественными, комплексными и логическими величинами, между данными, представляющими отдельные значения и множество значений (массивы) и так далее.
При обработке данных на ЭВМ такая классификация еще более важна. При этом, понятие типа данных в языке Паскаль является ключевым. Тип данных характеризует внутреннее представление данного в ЭВМ, множество допустимых значений для этих данных, а также совокупность возможных машинных операций над ними. Среди типов данных различают стандартные, определенные разработчиками языка и пользовательские, определяемые программистом в своей программе.
Каждое представляемое в ЭВМ данное имеет набор характеристик:
имя (идентификатор);
тип;
значение (или значения для массивов);
адрес в памяти ЭВМ.
В зависимости от того изменяется ли значение данного при выполнении программы, данные разделяют на:
переменные (значение может изменяться);
константы (значение не может изменяться). Типичной константой является число π.
В языке ПАСКАЛЬ существует правило: тип явно задается в описании перемен-
ной или функции, которое предшествует их использованию. Транслятор использует информацию о типах для проверки вычислимости и правильности различных конструкций. Обязательное описание типа приводит к избыточности в тексте программ, но такая избыточность является важным вспомогательным средством разработки программ и рассматривается как необходимое свойство современных алгоритмических языков высокого уровня.
Хотя в языке данные могут иметь довольно сложную структуру, строятся они на основе простых типов, значениями которых являются отдельные данные (например, числа, символы и т.д.). Сложные (структурные) типы, представляемые наборами данных, интерпретируются по специальным правилам.
Иерархия типов в Паскале представлена на следующей диаграмме
Типы переменных
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
порядковый |
|
|
вещественный |
|
|
|
структурный |
|
|
строковый |
||||
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
Real |
|
|
|
|
|
|
|
|
string |
||
|
|
целочисленный |
|
Single |
|
|
|
множества |
|
|
|
|||||
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
Double |
|
|
|
|
|
|
|
|
|||
|
|
Shortint |
|
[..] |
|
|
ссылочный |
|||||||||
|
|
|
|
|
|
|
|
|||||||||
|
|
Integer |
|
Extended |
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
Pointer |
|||||||
|
|
|
|
|
|
массивы |
||||||||||
|
|
Longint |
|
Comp |
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
array of |
|
|
|
|||||||
|
|
Byte |
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
процедурный |
|||||
|
|
|
|
|
|
|
|
|
||||||||
|
|
Word |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
запись |
procedure |
||||||
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function |
|
|
|
|
|
|
|
|
|
|
|
record |
|||||
|
|
логический |
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
Boolean |
|
|
|
|
|
|
|
файловый |
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
File of |
|
|
|
||
|
|
символьный |
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
Text |
|
|
|
||
|
|
Char |
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
объектный |
|
|
|
||
|
|
перечислимый |
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
отрезки типа |
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
В настоящем руководстве рассмотрены следующие стандартные типы: целые, логические, символьные, вещественные, строковые и массивы.
36
Целочисленные типы
В Borland Pascal имеется пять предопределенных, т.е. описанных разработчиками компилятора, целочисленных типов: Shortint (короткое целое), Integer (целое), Longint (длинное целое), Byte (длиной в байт) и Word (длиной в слово). Каждый тип обозначает определенное подмножество целых чисел, как это показано в следующей таблице.
Тип |
Диапазон |
Формат |
||
Shortint |
-128 .. 127 |
8 бит со знаком |
||
Integer |
-32768 .. 32767 |
16 |
бит со знаком |
|
Longint |
-2147483648 .. 2147483647 |
32 |
бита со знаком |
|
Byte |
0 |
.. 255 |
8 бит без знака |
|
Word |
0 |
.. 65535 |
16 |
бит без знака |
Целые константы. Целыми константами называют постоянные целочисленные значения, указываемые пользователем при составлении программы и не изменяющиеся при ее выполнении. Они задаются в программах в десятичной и шестнадцатеричной системе счисления. В качестве признака целой шестнадцатеричной константы перед символами, изображающими такую константу (как префикс) указывается знак $. Например, $A2C воспринимается компилятором как шестнадцатеричная константа (эквивалентно десятичному числу 2704). Допустимый диапазон для констант: целые от - 2147483648 до 2147483647, шестнадцатеричные - от $00000000 до $FFFFFFFF.
Примеры:
123 -56 $123 $АВС
$34G - недопустимо, поскольку символ G не определен в качестве шестнадцатеричной цифры;
1.23 - недопустимо, поскольку точка не является цифрой.
Логические типы
Существует четыре предопределенных логических (булевских) типа, из которых, в Паскаль программах, используется только тип Boolean, остальные обеспечивают совместимость с другими языками и средой Windows.
Значения булевского типа обозначаются встроенными идентификаторами констант False (ложь) и True (правда). При обработке этим константам соответствуют следующие значения False = 0 и True = 1. Имеет место следующее отношение:
False<True.
Можно объявить переменную логического типа, и присвоить ей значение True или False, или же, что более важно, присвоить ей значение логического выражения, которое при вычислении принимает одно из этих значений. Вычисленные значения таких переменных обычно содержат признак выполнения/невыполнения какого-либо условия и играют очень важную роль в программах.
Символьный тип (char)
Константы и переменные символьного типа могут принимать значения из расширенного набора символов кода таблицы ASCII. Порядковый номер символа по таблице ASCII можно определить с помощью функции Ord. Любое значение символьного типа может быть определено по его порядковому номеру с помощью стандартной функции
Chr.
Символьная константа в тексте программы представляется одиночным символом,
37
заключенным в одинарные кавычки, например: 'A', 'a', 'F', 'f', 'Д', 'д', '2', '0', '*', '/', '-', '+'.
В Паскале существуют два дополнительных способа описания символьных констант: с помощью символа "^" в сочетании с буквой или символа "#" в сочетании с числом. Это позволяет вводить управляющие символы в тексты программ - символы которые соответствуют кодам от 0 до 31 и обычно вводятся с клавиатуры с помощью специальных клавиш, например: Enter вводит два символа Cr − возврат каретки (#13) и Lf − перевод строки (#10), Esc − выход (#27) и т.д., либо с помощью комбинации двух клавиш, одна из которых Ctrl, а вторая соответствующая буква.
Вещественные типы
Областью значений вещественного типа является множество всех вещественных чисел. Вещественные числа в памяти представляются в форме с плавающей точкой,
т.е. число представляется в форме совокупности значащей части (мантиссы) и порядка N = ±мантиса ×10 ± ПОРЯДОК.
Количество разрядов, отводимых на изображение порядка, определяет диапазон допустимых чисел. В отличие от целого типа этот диапазон содержит бесконечное подмножество вещественных чисел. Однако в действительности фиксированное количество разрядов, отводимых для изображения мантиссы, приводит к тому, что в машине точно может быть представлено лишь ограниченное множество вещественных чисел.
Переполнение разрядной сетки в арифметических операциях со значениями вещественного типа приводит к остановке программы и вывода на экран сообщения об ошибке. Если результат арифметической операции над вещественными числами настолько мал, что не может быть представлен в виде значения вещественного типа, то он считается нулем (машинным нулем).
Имеется пять видов вещественных типов: вещественное (Real), с одинарной точностью (Single), с двойной точностью (Double), с повышенной точностью (Extended) и сложное (Comp), характеристики, которых приведены в следующей таблице.
Вещественные типы данных
Тип |
Диапазон |
Значащие |
Размер данного в байтах |
|
цифры |
||||
|
|
|
||
Real |
2.9×10Е-39 .. |
11-12 |
6 (вещественный) |
|
1.7×10Е38 |
||||
|
|
|
||
Single |
1.6×10Е-45 .. |
7-8 |
4 (с одинарной точностью) |
|
3.4×10Е38 |
||||
|
|
|
||
Double |
5.0×10Е324 .. |
15-16 |
8 (с двойной точностью) |
|
1.7×10Е308 |
||||
|
|
|
||
Extended |
1.9×10Е-4951 .. |
19-20 |
10 (повышенной точности) |
|
|
1.1×10Е4932 |
|
|
|
Comp |
-2^63 + 1 .. |
- |
4 (Сложный) |
|
2^63 - 1 |
||||
|
|
|
Примечание: Сложный тип содержит только целочисленные значения в диапазоне от -
2^63+1 до 2^63-1, что приблизительно равно -9.2×10^18 и 9.2×10^18.
Вещественные константы. Вещественные константы задаваемые, пользователем, представляются в программах числами в десятичной системе счисления. Допускаются две формы представления - с фиксированной и плавающей (в экспоненциальной форме mEp, где m-мантисса, E-основание десятичной системы счисления, p-порядок)
38
