- •Оглавление
- •Введение
- •Основные этапы решения задач на эвм
- •Анализ постановки задачи и ее предметной области
- •Формальное решение задачи
- •Алгоритмизация
- •Основные средства представления алгоритмов
- •Визуальные алгоритмы
- •Процесс программирования
- •Языки программирования
- •Язык программирования Pascal
- •Среда программирования Delphi
- •Событийная модель ос Windows
- •Концепция объектно-ориентированного программирования
- •Delphi. Основные характеристики продукта
- •Высокопроизводительный компилятор в машинный код
- •Быстрая разработка приложения из прототипов
- •Структурное объектно-ориентированное программирование
- •Создание приложения в Delphi
- •Свойства в Delphi
- •События в Delphi
- •Основные понятия алгоритмического языка Состав языка
- •Основные символы
- •Элементарные конструкции
- •Выражения
- •Комментарии
- •Директивы компилятора
- •Тип данных
- •Приведение типов
- •Простые типы данных Целые типы данных
- •Битовая арифметика
- •Вещественные типы данных
- •Логический тип данных
- •Символьный тип данных
- •Структура программы
- •Константы
- •Переменные
- •Операторы Оператор присваивания
- •Оператор перехода
- •Структурные операторы
- •Операторы управления выполнением цикла
- •Оператор варианта
- •Подпрограммы
- •Перечисляемый тип данных
- •Интервальный тип данных
- •Структурированные типы данных Массивы
- •Строковой тип данных (строки)
- •Множества
- •Файлы. Файловый тип
- •Текстовые файлы
- •Типизированные файлы
- •Нетипизированные файлы
- •Последовательный и прямой доступ к компонентам файла
- •Процедурный тип
- •Вариантный тип
- •Адресный тип. Указатели
- •Динамические переменные
- •Динамические структуры данных
- •Динамические массивы
- •Очереди
- •Статические методы
- •Виртуальные методы
- •Динамические методы
- •Методы обработки сообщений
- •Конструкторы и деструкторы
- •Замещенные методы
- •Абстрактные методы
- •Свойства
- •Обработчики событий
- •Список рекомендуемой литературы
Приведение типов
В языке Object Pascal существуют понятия эквивалентности и совместимости типов. Эти понятия необходимы для определения как данные одного типа они могут быть преобразованы в другой тип.
Два типа Т1 и Т2 являются эквивалентными (идентичными), если выполняется одно из двух условий:
- Т1 и Т2 представляют собой одно и то же имя типа;
- тип Т2 описан с использованием типа Т1 с помощью равенства или последовательности равенств. Например:
type
T1 = Integer;
T2 = T1;
T3 = T2;
Типы T1,T2,T3 эквивалентны.
Данные эквивалентных типов могут быть автоматически преобразованы один в другой.
Менее строгие ограничения определены совместимостью типов. Например, типы T1 и T2 являются совместимыми, если:
- они эквивалентны;
- являются оба либо целыми, либо действительными;
- T1 - действительный, T2 - целый;
- T1 - интервальный, T2 - его базовый;
- оба интервальные с общим базовым;
- T1 - строковый, T2 – символьный;
- T1 - тип Variant, T2 - целый, вещественный, логический, символьный или строковой;
- T1 - класс, T2 – класс-наследник первого;
- оба указатели одного типа;
- оба процедурные с параметрами и возвращаемым результатом совместимого типа.
Данные типа T2 совместимого с типом T1 могут быть также автоматически преобразованы в тип T1, но возможна потеря части данных.
В Object Pascal ограничения на совместимость типов можно обойти с помощью приведения типов. Приведение типов позволяет рассматривать одну и ту же величину в памяти ЭВМ как принадлежащую разным типам. При приведении типа возможна потеря части данных.
Для приведения типа используется конструкция
<имя_типа>(<имя_переменной>|<значение>)
Например
integer('A')
представляет собой значение кода символа 'A' – целое число 65 в двухбайтном представлении,
byte(534)
даст значение 22, поскольку целое число 534 имеет тип word и занимает два байта, а тип byte занимает один байт, и в процессе приведения старший байт будет потерян.
Простые типы данных Целые типы данных
Целые типы определяют данные, которые реализуются подмножеством целых чисел, допустимых в ЭВМ.
Целые типы в TurboPascal
Тип |
Диапазон значений |
Требуемая память, байт |
Shortint |
-128 .. 127 |
1 |
Integer |
-32768 .. 32767 |
2 |
Longint |
-2147483648 .. 2147483647 |
4 |
Byte |
0 .. 255 |
1 |
Word |
0 .. 65535 |
2 |
Целые типы в ObjectPascal
Тип |
Диапазон |
Требуемая память,байт |
Integer |
–2147483648..2147483647 |
4 |
Cardinal |
0..4294967295 |
4 |
Shortint |
–128..127 |
1 |
Smallint |
–32768..32767 |
2 |
Longint |
–2147483648..2147483647 |
4 |
Int64 |
–2^63..2^63–1 |
8 |
Byte |
0..255 |
1 |
Word |
0..65535 |
2 |
Longword |
0..4294967295 |
4 |
Над целыми операндами можно выполнять следующие арифметические операции: сложение, вычитание, умножение, деление, получение остатка от деления. Знаки этих операций:
+ - * div mod
Результат арифметической операции над целыми операндами есть величина целого типа. Результат выполнения операции деления целых величин есть целая часть частного. Результат выполнения операции получения остатка от деления - остаток от деления целых. Например:
17 div 2 = 8, 3 div 5 = 0.
17 mod 2 = 1, 3 mod 5 = 3.
Операции отношения, примененные к целым операндам, дают результат логического типа TRUE или FALSE ( истина или ложь ).
В языке ObjectPascal имеются следующие операции отношения: равенство =, неравенство <>, больше или равно >=, меньше или равно <=, больше >,меньше <.
К аргументам целого типа применимы следующие стандартные функции, результат выполнения которых имеет целый тип:
Abs(X), Sqr(X), Succ(X), Pred(X),
и которые определяют соответственно абсолютное значение Х, Х в квадрате, Х+1, Х-1.
Следующая группа стандартных функций для аргумента целого типа дает вещественный результат:
Sin(X), Cos(X), ArcTan(X), Ln(X), Exp(X), Sqrt(X).
Эти функции вычисляют синус, косинус и арктангенс угла, заданного в радианах, логарифм натуральный, экспоненту и корень квадратный соответственно.
Результат выполнения функции проверки целой величины на нечетность Odd(X) имеет значение истина, если аргумент нечетный, и значение ложь, если аргумент четный:
X=5 Odd(X)=TRUE , X=4 Odd(X)=FALSE.
Для быстрой работы с целыми числами определены процедуры:
Inc(X) X:=X+1
Inc(X,N) X:=X+N
Dec(X) X:=X-1
Dec(X,N) X:=X-N