Delphi типы данных.ppt
- Количество слайдов: 39
Delphi. Типы данных и работа с ними Информатика и программирование
Программа в процессе выполнения всегда обрабатывает какие-либо данные. Данные могут представлять собой целые и дробные числа, символы, строки, массивы, множества и др. Так компьютер всего лишь машина, для которой данные - это последовательность нулей и единиц, он должен абсолютно точно "знать", как их интерпретировать. По этой причине все данные в языке Delphi подразделены на типы. Для описания каждого типа данных существует свой стандартный идентификатор: для целых - Integer, для дробных - Real, для строк - string и т. д. Программист может образовывать собственные типы данных и давать им произвольные имена Понятие типа данных
Тип данных показывает, какие значения принимают данные и какие операции можно с ними выполнять. Каждому типу данных соответствует определенный объем памяти, который требуется для размещения данных. Например, в языке Delphi существует тип данных Byte. Данные этого типа принимают значения в целочисленном диапазоне от 0 до 255, могут участвовать в операциях сложения, вычитания, умножения, деления, и занимают 1 байт памяти. Понятие типа данных
Все типы данных в языке Delphi можно расклассифицировать следующим образом: простые типы данных. Они в свою очередь подразделяются на порядковые и вещественные типы данных. К порядковым типам относятся целочисленные, символьные, булевские, перечисляемые и интервальные типы данных; временной тип данных. Служит для представления значений даты и времени; строковые типы данных. Служат для представления последовательностей из символов, например текста; составные типы данных (в некоторых источниках - структурированные типы данных). Формируются на основе всех остальных типов. К ним относятся массивы, множества, записи, файлы, классы и ссылки на классы; процедурные типы данных. Позволяют манипулировать процедурами и функциями как данными программы; указательные типы данных. Данные этих типов хранят адреса других данных, с их помощью организуются различные динамические структуры: списки, деревья и т. д. ; тип данных с непостоянным типом значений. Служит для представления значений, тип которых заранее неизвестен; с его помощью легко организуется работа со списком разнотипных значений Понятие типа данных
Данные, независимо от типа, имеют некоторое значение и в программе предстают как константы или переменные. Данные, которые получили значение в начале программы и по своей природе изменяться не могут, называются константами. Константы описываются с помощью зарезервированного слова const. За ним идет список имен констант, каждому из которых с помощью знака равенства присваивается значение. Одно присваивание отделяется от другого с помощью точки с запятой. Тип константы распознается компилятором автоматически, поэтому его не надо указывать при описании. Константы
Значение константы можно задавать и выражением. Например, временной промежуток, равный одному месяцу, можно задать так: const Seconds. In. Minute = 60; Seconds. In. Hour = Seconds. In. Minute * 60; Seconds. In. Day = Seconds. In. Hour * 24; При объявлении константы можно указать ее тип: const Percent: Double = 0. 15; File. Name: string = 'HELP. TXT'; Константы
Переменные описываются с помощью зарезервированного слова var. За ним перечисляются идентификаторы переменных, и через двоеточие указывается их тип. Каждая группа переменных отделяется от другой группы точкой с запятой. Например: var Index: Integer; // переменная целого типа данных File. Name: string; // переменная строкового типа данных Sum, Profit: Double; // группа переменных вещественного типа данных Переменные
Тип данных Диапазон значений Объем памяти (байт) Byte 0. . 255 1 Word 0. . 65535 2 Shortint -128. . 127 1 Smallint -32768. . 32767 2 Longint -2147483648. . 2147483647 4 Longword 0. . 4294967295 4 Int 64 -2^63. . 2^63 -1 8 Cardinal 0. . 4294967295 4 Integer -2147483648. . 2147483647 4 Целочисленные типы данных
В переменных целых типов информация представляется в виде целых чисел, т. е. чисел не имеющих дробной части. Основными являются Integer и Cardinal, и в большинстве случаев желательно использовать эти типы. Целочисленные типы данных
Операции над целыми типами Операция Результат Abs (X) Возвращает абсолютное целое значение Х Х Div Y Возвращает целую часть частного деления Х на Y Х Mod Y Возвращает остаток частного деления Х на Y Odd (X) Возвращает булево True (истина), если Х - нечетное целое, и False (ложь) - в противном случае Целочисленные типы данных
В переменных действительных (вещественных) типов содержатся числа, состоящие из целой и дробной частей. Вещественные типы данных применяются для описания вещественных данных с плавающей или с фиксированной точкой. Вещественные типы данных
Тип данных Диапазон значений Мантисса Объем памяти (байт) Real 5. 0*10^-324. . 1. 7*10^308 15 -16 8 Real 48 2. 9*10^-39. . 1. 7*10^38 11 -12 6 Single 1. 5*10^-45. . 3. 4*10^38 7 -8 4 Double 5. 0*10^-324. . 1. 7*10^308 15 -16 8 Extended 3. 4*10 -^4932. . 1. 1*10^4932 19 -20 10 Comp -9223372036854775808. . 9223372036854775807 19 -20 8 Currency -922337203685477. 5808. . 922337203685477. 5807 19 -20 8 Вещественные типы данных
Функция Возвращаемое значение Abs (x) Абсолютная величина х Агс. Таn(х) Арктангенс х Cos (х) Косинус х (х выражается в радианах, а не в градусах) Sin(x) Синус х Ln (х) Натуральный логарифм от х Frac(x) Дробная часть х Int (х) Целая часть х. Несмотря на название, возвращает действительное значение (с плавающей запятой), т. е. просто устанавливает нуль в дробной части Round (х) Ближайшее к х целое значение. Возвращает значение целого типа. Sqr(x) Квадрат х, т. е. X*X Sqrt (х) Квадратный корень от х Вещественные типы данных
Символьные типы применяются для описания данных, значением которых является буква, цифра, знак препинания и другие символы. Существуют два фундаментальных символьных типа данных: Ansi. Char и Wide. Char. Они соответствуют двум различным системам кодировки символов. Данные типа Ansi. Char занимают один байт памяти и кодируют один из 256 возможных символов расширенной кодовой таблицы ANSI, в то время как данные типа Wide. Char занимают два байта памяти и кодируют один из 65536 символов кодовой таблицы Unicode. Кодовая таблица Unicode - это стандарт двухбайтовой кодировки символов. Первые 256 символов таблицы Unicode соответствуют таблице ANSI, поэтому тип данных Ansi. Char можно рассматривать как подмножество Wide. Char Тип данных Char является обобщенным и соответствует типу Ansi. Char. Символьные типы данных
Булевские типы данных названы так в честь Георга Буля (George Boole), одного из авторов формальной логики. Диапазон значений данных булевских типов представлен двумя предопределенными константами: True - истина и False – ложь Булевские типы данных широко применяются в логических выражениях и в выражениях отношения. Переменные типа Boolean используются для хранения результатов логических выражений и могут принимать только два значения: False и True (стандартные идентификаторы). Булевские типы данных Byte. Bool, Word. Bool и Long. Bool введены в язык Delphi специально для совместимости с другими языками, в частности с языками C и C++. Все булевские типы данных совместимы друг с другом и могут одновременно использоваться в одном выражении. Булевские типы данных
Тип данных Диапазон значений Объем памяти (байт) Boolean False (0), True (1) 1 Byte. Bool False (0), True (не равно 0) 1 Word. Bool False (0), True (не равно 0) 2 Long. Bool False (0), True (не равно 0) 4 Булевские типы данных
Кроме стандартных типов данных язык Delphi поддерживает типы, определенные программистом. Новый тип данных определяется с помощью зарезервированного слова type, за которым следует идентификатор типа, знак равенства и описание. Описание завершается точкой с запятой. Например, можно определить тип, тождественный существующему типу: type TUnicode = Wide. Char; // TUnicode тождественен типу Wide. Char TFloat = Double; // TFloat тождественен типу Double Определение новых типов данных
Идентификаторы новых типов в примере начинаются заглавной буквой T (первая буква слова type). Такое соглашение о типах программиста принято разработчиками среды Delphi, но оно не является строгим. Синтаксическая конструкция type позволяет создавать новые порядковые типы: перечисляемые типы и интервальные типы. Определение новых типов данных
Перечисляемый тип данных представляет собой список значений, которые может принимать переменная этого типа. Каждому значению поставлен в соответствие идентификатор, используемый в программе для указания этого значения. type TDirection = (North, South, East, West); Перечисляемые типы данных
Интервальный тип данных задается двумя константами, ограничивающими диапазон значений для переменных данного типа. Обе константы должны принадлежать одному из стандартных порядковых типов (но не вещественному и не строковому). Значение первой константы должно быть обязательно меньше значения второй. Например, определим интервальный тип TDigit: type TDigit = 0. . 9; var Digit: TDigit; begin Digit : = 5; Digit : = 10; // Ошибка! Выход за границы диапазона end. Интервальные типы данных
Выражения Переменные и константы всех типов могут использоваться в выражениях. Выражение задает порядок выполнения действий над данными и состоит из операндов, круглых скобок и знаков операций. Операнды представляют собой константы, переменные и вызовы функций. Операции - это действия, выполняемые над операндами. Например, в выражении (X + Y) / 2; X, Y, 2 - операнды; '+', '/' - знаки операций; скобки говорят о том, что сначала выполняется операция сложения, потом - деления. Операции над данными
Операции в языке Delphi подразделяются на арифметические, операции отношения, логические (булевские), строковые, операцию получения адреса и другие. Выражения соответственно называются арифметическими, отношения, булевскими, строковыми и т. д. в зависимости от того, какого типа операнды и операции в них используются. Операции над данными
Арифметические операции Операция Действие Тип операндов Тип результата + Сложение Целый, вещественный - Вычитание Целый, вещественный * Умножение Целый, вещественный / Деление Целый, вещественный Вещественный div Целочисленное деление Целый mod Остаток от деления Целый Операции над данными
Арифметические операции Выражение Результат 6. 8 - 2 4. 8 7. 3 * 17 124. 1 -(5 + 9) -14 -13. 5 / 5 -2. 7 -10 div 4 -2 27 div 5 5 5 div 10 0 5 mod 2 1 11 mod 4 3 -20 mod 7 -6 Операции над данными
Операции отношения выполняют сравнение двух операндов и определяют, истинно значение выражения или ложно. Сравниваемые величины могут принадлежать к любому порядковому типу данных. Результат всегда имеет булевский тип. Эта группа операций специально разработана для реализации алгоритмических элементов типа "больше", "больше или равно" и т. п. , которые имеются практически в каждой программе. Операции над данными
Операции отношения Операция Действие Выражение Результат = Равно A = B True, если A = B <> Не равно A <> B True, если A < B или A > B < Меньше A < B True, если A < B > Больше A > B True, если A > B <= Меньше или равно A <= B True, если A < B или A = B >= Больше или равно A >= B True, если A > B или A = B Операции над данными
Операции отношения Выражение Результат 123 = 132 False 123 <> 132 False 17 <= 19 True 17 > 19 False 7 >= 7 True Операции над данными
Очередность выполнения операций Операция Приоритет Описание -, not Первый Унарный минус, отрицаиие *, /, div, mod, and Второй Операции типа умножение +, -, or, xor Третий Операции типа сложение =, <>, <, >, <=, >= Четвертый Операции отношения Операции над данными
Несоответствие типов данных - частая ошибка. Преобразовывать одни типы данных в другие требуется очень часто. Чтобы работать с числом, мы должны введённый текст (именно текст) преобразовать в число. Преобразования могут выполняться разными способами. Основной из них - применение специальных функций. Функции принимают один из несколько параметров (аргументов), одним из которых является переменная или значение, подлежащее преобразованию. Функция выполняет какие-то операции и возвращает значение нужного типа. Преобразование типов данных
Для преобразования текста (строки) в целое число служит функция Str. To. Int(). Название абсолютно точно отражает назначение функции. У функции единственный параметр - строка, а на выходе получается число. Как называется функция для такого перевода, легко догадаться - Int. To. Str() Преобразование типов данных
Функция Значение Str. To. Int( const Value: String ): Integer; Перевод значение типа string в integer Int. To. Str( Value: Integer ): String; Конвертирует значение типа integer в строку Int. To. Hex( Value: DWord; Digits: Integer ): String; Конвертирует значение типа integer в строку составленную из символов цифр в шестеричном исчисление. Параметр Digits определяет минимальное количество цифр Int. To. Ths( I: Integer): String; Конвертирует значение типа integer в строку. Между тремя цифрами ставится символ: ', ' (удобна для вывода цифр больше тысячи). Int. To. Digs( Value, Digits: Integer ): String; Преобразование integer в string. Digits - указывает сколько минимально символов в строке. Если Digits больше количества цифр в значении то недостающие цифры заменяются нулями. Num. To. Bytes( Value: Double ): String; Преобразование значение в строку исходя из того, что значение это количество байт. Если значение достаточно большое, число представляется в виде килобайт (с буквой K в конце), или мегабайт (M), гигабайт (G) или терабайт (T) Hex. To. Int( const Value: String ): Integer; Перевод шестеричного числа в integer. Значение конвертируется до первого символа не входящую в шестеричные цифры. Преобразование типов данных
Следует упомянуть и о дробных числах, ведь иногда без них не обойтись. В целом, их ввод и вывод практически такой же, как и целых чисел, только используются функции Str. To. Float() и Float. To. Str(). Всё просто. Однако с вещественными числами есть одна проблема - разделитель целой и дробной части. Дело в том, что нет определённости, какой символ считать разделителем - точку или запятую. Какой символ выбирается - зависит от настроек операционной системы (в Windows этот знак определяется в Панели управления в разделе Язык и региональные стандарты). Таким образом, если заточить программу под запятую, то на системах, где установлена точка, работать ничего не будет и будут возникать ошибки во время работы. В то же время, под точку тоже нельзя затачивать программу, ведь может стоять и запятая. К счастью, решение есть. Есть переменная, которую нигде не нужно объявлять, но значение которой можно менять - это переменная Decimal. Separator. Она объявлена в модуле Sys. Utils и хранит тот символ, который будет считаться разделителем. Установить нужное значение достаточно один раз - например при запуске программы. Работа с вещественными числами
Для ввода целых чисел есть удобный элемент - TSpin. Edit. Расположен он на вкладке Samples. По внешнему виду похож на TEdit, только в поле ещё находятся две кнопки со стрелками - для изменения значения. Допустимые границы числа задаются свойствами Min. Value и Max. Value, а само значение хранится в свойстве Value. Различные способы вывода
Простое окно с сообщением - Show. Message() Самое примитивное окно содержит указанный текст и кнопку OK для закрытия окна. Вызвать такое окно можно процедурой Show. Message(), параметром которой является текст - он и будет отображён в окне. Различные способы вывода
Диалоговое окно - Message. Dlg() Диалоговые окна - более сложный тип окон. Диалоговые окна часто используются для "общения" с пользователем. Однажды такое окно нами уже использовалось - при закрытии окна программы мы спрашивали у пользователя, действительно ли окно нужно закрыть. Теперь разберём работу с такими окнами подробно. Создаются диалоговые окна функцией Message. Dlg(). Это именно функция, а не процедура. Возвращаемым значением является кнопка, которую нажал пользователь. У функции 4 входных параметра Различные способы вывода
Диалоговое окно - Message. Dlg() Параметры: Текст сообщения (тип данных - String); Тип диалогового окна (специальный тип данных - TMsg. Dlg. Type) - указывает на значок, расположенный в окне и на заголовок окна. Этот параметр задаётся одной из следующих констант: mt. Information - информационное окно (значок в окне - буква "i"); mt. Confirmation - окно с вопросом (значок - воспросительный знак); mt. Warning - предупреждающее окно (значок - восклицательный знак); mt. Error - окно с сообщением об ошибке (значок - крест на красном фоне); mt. Custom - окно без значка, а в заголовке - название исполняемого файла программы (все остальные типы в заголовок помещают соответствующее типу диалога название - Information, Warning и т. д. ) Кнопки, которые будут показаны в окне. индекс раздела в справочной системе, соответствующий данному диалогу. Как правило, не используется и задаётся просто 0 Различные способы вывода
Диалоговое окно - Message. Dlg() Внешний вид окон всех типов: Различные способы вывода
Диалоговые окна Message. Box() C помощью фунции Message. Box() можно также выводить диалоговые окна. По внешнему виду они практически ничем не отличаются от окон Message. Dlg(), однако есть возможность указать и заголовок окна. Для формирования строки кода с использованием Message. Box() есть программа Master Message. Box. C помощью неё можно быстро создать нужное диалоговое окно. Различные способы вывода
Специальные окошки существуют не только для вывода на экран, но и для ввода. Примером такого окна является Input. Box(). Функции передаётся 3 параметра: текст заголовка окна, текст пояснения и значение, находящееся в поле при показе окна на экран. Введённую в поле строку функция возвращает как значение-результат. Пример: Ввод с помощью диалогового окна
Delphi типы данных.ppt