- •Некоторые особенности языка TurboPascal
- •Расширения базового синтаксиса
- •Расширения типов данных
- •Объявления переменных
- •Типизированные константы
- •Выражения и операции
- •Операторы
- •Процедуры и функции
- •Модульное программирование в TurboPascal
- •Общие понятия о модулях
- •Структура модуля
- •Заголовок модуля
- •Раздел интерфейса
- •Раздел реализации
- •Раздел инициализации
- •Описание подключаемых модулей (Uses)
- •Локализация (видимость) имен
- •Компиляция и компоновка модулей
- •Пример программы с модулем
- •Библиотеки модулей
- •Стандартные модули TurboPascal
- •Перечень стандартных модулей
- •Ввод-вывод в TurboPascal
- •Понятие об объектно-ориентированном программировании
- •Концепция объектно-ориентированного программирования
- •Синтаксис объектов в TurboPascal
- •Использование объектов в программе
Расширения типов данных
Целочисленные типы данных
Тип |
Диапазон значений |
Формат |
Shortint |
–128..127 |
со знаком, 8 бит (1 байт) |
Integer |
–32 768..32 767 |
со знаком, 16 бит (2 байта) |
Longint |
–2 147 483 648..2 147 483 647 |
со знаком, 32 бита (4 байта) |
Byte |
0..255 |
без знака, 8 бит (1 байт) |
Word |
0..65 535 |
без знака, 16 бит (2 байта) |
Примеры:
Var
A:Shortint; W:Word;
Вещественные типы данных
Тип |
Диапазон значений |
Количество значащих цифр |
Размер (байт) |
Real |
2.910-39..2.71038 |
11-12 |
6 |
Single |
1.510-45..3.41038 |
7-8 |
4 |
Double |
5.010-324..1.710308 |
15-16 |
8 |
Extended |
3.410-4932..1.2104932 |
19-20 |
10 |
Comp |
–263+1..263 |
до 19 |
8 |
Для работы с вещественными типами кроме Real должен быть подключен арифметический сопроцессор (устройство, реализующее операции с плавающей точкой) или его программная эмуляция. При отсутствии сопроцессора или его эмуляции можно использовать только тип Real.
Тип Comp, по сути, является целочисленным, но обрабатывается сопроцессором, поэтому отнесен к вещественным типам.
Примеры:
Var
Accurate:Double; {для вычислений повышенной точности}
Precise:Extended; {для очень точных расчетов}
Small:Single; {для экономии памяти при умеренной
точности}
Строковый тип. В дополнение к строковым константам введен строковый тип. Соответственно, можно объявлять переменные строкового типа. Предусмотрен ряд операций над данными строкового типа, процедур и функции для работы с ними.
<строковый тип>::="String" [ "[" <целое без знака от 1 до 255> "]" ].
Если после слова String в квадратных скобках указано целое без знака, максимальная длина строки будет равна этому значению. В противном случае максимальная длина будет 255 символов.
Примеры:
Type My_string=String[20];
Var
DisplayLine: String[80];
Last_name:My_string;
Default_Line:String;
Размер строковой переменной в байтах – на один байт больше, чем длина строки в символах. Дополнительный (скрытый) байт хранит текущее количество символов в строке.
Переменным строкового типа можно присваивать значения констант строкового типа и выражений, результатом которых являются строки. Переменные строкового типа можно использовать в строковых выражениях и как фактические и формальные параметры в процедурах и функциях.
Сложные типы
* Слово Packed можно использовать со сложными типами, но оно не изменяет способа хранения данных.
* Начиная с версии 5.5 добавлен объектный тип данных (Object).
Тип указателей. Добавлены нетипизированные указатели, то есть, указатели на область памяти любого типа. Добавлена операция вычисления адреса @ и адресные функции и процедуры.
Процедурный тип. Вместо процедурных и функциональных параметров введено понятие процедурного типа. Можно описать переменные определенного процедурного типа, присваивать этим переменным имена процедур и функций (с соответствующей структурой заголовков), передавать имена процедур и функций в другие процедуры и функции в качестве фактических параметров (если в них описаны формальные параметры соответствующих процедурных типов).
<конструкция процедурного типа>::= ("Procedure"|"Function") ["("<список формальных параметров>")"] [":"<тип результата>].
Структура списка формальных параметров такая же, как в заголовках процедур или функций. Тип результата указывается только в конструкциях со словом Function.
Примеры:
Type My_proc=Procedure;{процедурный тип без параметров}
SwapProc=Procedure(var X,Y:integer);
MathFunc=Function(x:Real):Real;
Var
Alpha,Beta:My_Proc;
Procedure BuildGraph(x0,x1:Real; Func:MathFunc);