Лекция 37.pptx
- Количество слайдов: 25
ЛЕКЦИЯ 37 Т. 7 ПРОГРАММИРОВАНИЕ В RADСИСТЕМАХ
Типы данных, определенных в Delphi Физические целые типы Тип Shortint Smallint Longint Byte Word Диапазон значений Физический формат -128 – 127 8 бит, со знаком -32 768 - 32 767 16 бит, со знаком -2 147 483 648 - 2 147 483 32 бит, со знаком 647 0 – 255 8 бит, без знака 0 – 65535 16 бит, без знака Логические целые типы Тип Integer Cardinal Диапазон значений -32768 – 32767 Физический формат 16 бит, со знаком (Small Int) – при 16 разр. DOS -2 147 483 648 - 2 147 483 32 бит, со знаком 647 (Longint) 0 - 65 535 16 бит, без знака (Word) 0 - 2 147 483 647 32 бит, без знака (Longint) по умолчанию задано 32 -разрядное представление чисел
ОПЕРАЦИИ С ЦЕЛЫМИ §Арифметические операции Операция Знак операции сложение + вычитание - умножение * деление остаток от деления div mod §Операции отношения §Поразрядные операции: and, or, xor, not §Операции сдвига: shl, shr 3
Операция Приори тет Побитовые операции Тип А Тип B Тип результата not A 5 - Целое A and B 3 Целое A or B 2 Целое A xor B 2 Целое A chl B 4 Целое A chr B 4 Целое Результат инверсия битов в А: 0 меняется на 1, а 1 меняется на 0 Побитовое И. А and В возвращает значение, в котором установлены в 1 только биты, равные 1 одновременно в А и В Побитовое ИЛИ. А or В возвращает значение, в котором сброшены в 0 только биты, равные 0 одновременно в А и В Побитовое исключающее ИЛИ. А and В возвращает значение, в котором установлены в 1 биты, значения которых в А и В различны Смещение побитовое влево. А shi В возвращает значение А, смещенное на В бит влево. Аналогично умножению на 2 В раз Смещение побитовое вправо. А shi В возвращает значение А, смещенное на В бит вправо. Аналогично делению на 2 В раз
СТАНДАРТНЫЕ ФУНКЦИИ ДЛЯ ЦЕЛЫХ Имя abs Описание модуль arctan арктангенс угла Результат целый Пояснения |x| записывается abs(x) вещественный arctg x записывается arctan(x) cos косинус угла вещественный cos x записывается cos(x) exp экспонента вещественный ex записывается exp(x) ln натуральный логарифм вещественный logex записывается ln(x) odd проверка на четность логический odd(3) даст в результате true pred предыдущее значение целый pred(3) даст в результате 2 sin синус угла вещественный sin x записывается sin(x) sqr квадрат целый sqrt квадратный корень вещественный √x записывается sqrt(x) succ следующее значение целый x 2 записывается sqr(x) succ(3) даст в результате 4 5
СТАНДАРТНЫЕ ПРОЦЕДУРЫ Имя Описание Пояснения inc инкремент inc(x) — увеличить х на 1 inc(x, 3) — увеличить х на 3 dec декремент dec(x) — уменьшить х на 1 dec (x, 3) — уменьшить х на 3 6 Павловская Т. А. (СПб. ГУИТМО)
Физические символьные типы Тип Ansi. Char Wide. Char Описание Однобайтовые символы, упорядоченные в соответствии с расширенным набором символов ANSI Двух байтовые символы (одно 16 бит слово), упорядоченные в соответствии с международным набором символов UNICODE. Первые 256 символов совпадают с символами ANSI Логический символьный тип именуется char. В классическом языке Pascal char - единственный символьный тип. В Delphi char всегда соответствует физическому типу данных Ansi. Char. Имя Описание Результат ord порядковый номер символа целый chr преобразование в символьный pred предыдущий символьный succ последующий символьный перевод в верхний регистр символьный upcase 7
Булевы типы Тип Boolean Byte. Bool Word. Bool Long. Bool Размер 1 байт (предпочтителен в Delphi) 1 байт 2 байт (объем Word) 4 байт (объем Longint) Для совместимости с другими языками определены типы Byte. Bool, Word. Bool и Long. Bool длиной 1, 2 и 4 байта соответственно. Истинным в них считается любое отличное от нуля значение. Логические операции a b a and b a or b a xor b not a 0 0 1 1 0 1 0 0 0 1 1 1 0 0
ОПЕРАЦИИ ОТНОШЕНИЯ Операция Знак операции больше > больше или равно >= меньше < меньше или равно <= равно = не равно <> 9
Вещественные типы Тип Порог 2. 9 Е-39 1. 5 E-45 3. 4 E 38 7 -8 4 5. 0 Е-324 3. 4 Е-4932 1. 0 0. 0001 Real (нежелателен) Single (предпочтит. ) Double Extended Comp Currency Максимальное Количество Объем значение значащих цифр (байт) 1. 7 Е 38 11 -12 6 1. 7 Е 308 1. 1 Е 4932 9. 2 Е 18 9. 2 Е 14 15 -16 19 -20 8 10 8 8 Цветом выделены логические действительные типы Арифметические + - * / Операции отношения < = <= > >= <>
ФУНКЦИИ ДЛЯ ВЕЩЕСТВЕННЫХ ЧИСЕЛ Имя abs arctan Описание модуль арктангенс угла Имя Описание ln натуральный логарифм pi значение числа π round округление до целого cos косинус угла exp экспонента sin синус угла frac дробная часть аргумента sqr квадрат целая часть аргумента sqrt квадратный корень trunc целая часть аргумента int 11
Физические строковые типы Тип Short. String (короткий) Ansi. String (длинный) Wide. String (широкий) Описание Массив (Array [0. . 255] of char) – строка, с максимальной длинной до 255 символов. Код нулевого символа строки равен числу символов строки. Динамически распределяемый массив символов, максимальная длина которых ограничивается только наличием памяти. Знаки записываются в формате Ansi. Char. Код нулевого символа строки равен числу символов строки. Динамически распределяемый массив символов, максимальная длина которых ограничивается только наличием памяти. Знаки записываются в формате Wide. Char. Код нулевого символа строки равен числу символов строки. Логический строковый тип именуется просто String. Отнесение его к типу Ansi. String или Short. String задается командой $Н. По умолчанию задается {$Н+}, и String совпадает с Ansi. String. Для совместимости с другими языками программирования в Delphi поддерживается класс строк с конечным нулем. Зарезервированных слов или идентификаторов для этого класса не существует. Строки с конечным нулем состоят из ненулевых символов и оканчиваются символом с порядковым номером 0 (#0). В отличие от типов Ansi. String, Short. String и Wide. String, строки с нулевым окончанием не имеют указателя длины: Конец в этих строках обозначается нулем.
Строковые функции Функция Concat(sl, s 2, s 3) Описание Возвращает последовательное соединение строк. Эквивалентна оператору sl+s 2+s 3 Copy(s, pos, len) Возвращает подстроку длиной максимум len символов, начинающуюся в позиции роз строки s Delete(s, pos, len) Удаляет максимум len символов из строки s, начиная с позиции pos Insert (sourse, target, Вставляет строку source в строковую переменную target, pos) начиная с позиции pos Length (s) Возвращает динамическую длину строки. Pos (substring, s) Возвращает место первого вхождения подстроки substring в строку s. Set. Length(s, newlen) Задает новую динамическую длину newlen строковой переменной s Set. String Задает содержимое и длину строки Str(x, s) Преобразует численное значение х в строковую переменную s String. Of. Chars Возвращает строку с конкретным числом символов. Unique. String Делает данную строку уникальной со счетом обращений 1. Val (s, v, code) Преобразует строку s в соответствующее численное представление v
Функции работы со строками Функция Результат Adjust. Line. Breaks (S) Возвращает строку, оканчивающуюся символами CR/LF (возврат каретки/новая строка), а не CR, LF или LF/CR Ansi. Lower. Case (S) Возвращает строку строчных символов, определяемых с помощью установленного языкового драйвера Ansi. Upper. Case (S) Возвращает строку прописных символов, определяемых с помощью установленного языкового драйвера Lower. Case (S) Возвращает строку, в которой все прописные буквы заменены строчными Trim (S) Возвращает строку, из которой удалены все пробелы в начале и конце, а также управляющие символы Trim. Left (S) Возвращает строку, из которой удалены все пробелы в начале и управляющие символы Trim. Right (S) Возвращает строку, из которой удалены все пробелы в конце и управляющие символы Uppercase (S) Возвращает строку, в которой все строчные буквы заменены прописными
Функции сравнения строк Функция Ansi. Compare. Str(S 1, S 2) Ansi. Compare. Text (S 1, S 2) Compare. Str(SI, S 2) Compare. Text (S 1, S 2) Результат Возвращает сравнение, выполненное языковым драйвером с учетом регистра Возвращает сравнение, выполненное языковым драйвером без учета регистра Сравнение с учетом регистра Сравнение без учета регистра установленным
ТИП ДАТА-ВРЕМЯ Этот тип служит для одновременного хранения даты и времени и определяется с помощью ключевого слова TDate. Time. Он занимает 8 байтов и представляет собой вещественное число с фиксированной дробной частью, в которой хранится время как доля суток, прошедшая с 0 часов. В целой части хранится дата как количество суток, прошедшее с 30 декабря 1899 года. Над величинами этого типа можно выполнять те же операции, что и над вещественными числами. Кроме того, для работы с датой и временем определены стандартные подпрограммы. 16
ФУНКЦИИ: Now – возвращает сегодняшнее число и время; Date – возвращает сегодняшнюю дату; Time – возвращает время; Date. Time. To. Str – переводит дату и время в строку; Date. To. Str – переводит дату в строку; Time. To. Str – переводит время в строку.
ПРОЦЕДУРЫ Format. Date. Time - преобразует дату и время в заданный формат. Str. To. Date (S) - преобразует строку в формат даты. Str. To. Date. Time (S) - преобразует строку в формат даты/времени. Str. To. Time (S) - преобразует строку в формат времени. Day. Of. Wee k (DT) - Возвращает целое значение, соответствующее дню недели в параметре типа Tdate. Time: 1="Воскресенье, 2=Понедельник, . . . , 7=Суббота
FUNCTION NOW: TDATETIME; Возвращает текущую дату и время Writeln( Now); Writeln( Date. To. Str(Now));
ПРОЦЕДУРА DECODETIME Выделяет из переменной TDate. Time часы минуты, секунды и миллисекунды Decode. Time(Time, Hour, Min, Sec, MSec); Hour, Min, Sec, MSec типа Word Time типа TDate. Time
var Present: TDate. Time; Year, Month, Day, Hour, Min, Sec, MSec: Word; Begin Present: = Now; Decode. Date(Present, Year, Month, Day); end.
ДИНАМИЧЕСКИЕ МАССИВЫ type mas 2 = array of real; var a, b : mas; c : mas 2; Распределение памяти выполняется с помощью процедуры Set. Length, например: Set. Length(a, 3); { В массиве а – три элемента } Set. Length(c, 3); { В массиве c – три столбца } Set. Length(c[0], 5); { В столбце 0 – пять элементов } Set. Length(c[1], 5); { В столбце 1 – пять элементов } Set. Length(c[2], 6); { В столбце 2 – шесть элементов } 22
Преобразование типов или приведение типов Преобразователи типов напоминают стандартные функции Паскаля с именами, совпадающими с именами базовых типов (Byte, Integer и другие). Результат, возвращаемый таким преобразователем, гарантированно лежит в диапазоне указанного типа. При этом, конечно, возможна потеря значащих цифр: берется остаток от деления значения аргумента на максимально допустимое значение соответствующего типа. Например, значение Byte(300) равно 44 var X: Integer; L: Longint; begin X : = Integer (L * 1234567); Однако подобным способом невозможно преобразовать число типа Real в число типа Integer или любое число в строку. Для таких, более сложных, преобразований типов в Delphi имеется набор стандартных функций, упрощающих процесс преобразования.
Подпрограммы преобразования значений с плавающей запятой Подпрограмма Float. To. Decimal Float. To. Str. F Float. To. Str (X) Float. To. Text. Fmt Format. Float Str. To. Float (S) Text. To. Float Int. To. Str (X) Str. To. Int (S) Результат Преобразует значение с плавающей запятой в десятичное представление Преобразует значение с плавающей запятой в строковое представление Преобразует значение с плавающей запятой в десятичное представление Форматирует значение с плавающей запятой с помощью строки формата, заданной подпрограммой Format Преобразует строку в значение с плавающей запятой Преобразует строку с нуль-окончанием в значение с плавающей запятой Преобразует целое значение в строку Преобразует строку в целое значение
Помимо стандартных функций, в Паскале имеется еще одна возможность явно указывать, в какой тип должны быть приведены конкретные данные. Эта возможность используется в операторе присваивания, когда переменная, стоящая в левой части, «охватывается» названием типа, соответствующего типу выражения правой части оператора. Например: var С: Byte; . . . Char(C): = 'А'; Переменной С будет присвоен код ASCII символа 'А'. При этом необходимо, чтобы длины (в байтах) переменной и присваиваемого значения совпадали. Другая форма записи этого оператора: С : = Byte('А') ;


