![]() |
|
|
Реферат: Object PascalРезультатом любой из операций будет также множество. Пример: Var S1, S2,S3 : set of Byte; ... S1:= [1, 2 , 3, 4]; {оператор определения множества} S2:= [3, 4, 5, 6, 78]; {оператор определения множества} S3:= S1 + S2; {объединение множеств} {результат S3 = [1, 2, 3, 4, 5, 6, 78] } S3:= S2 - S1; {вычитание множеств} {результат S3 = [1, 2, 5, 6, 78] } S3:= S2 * S1; {пересечение множеств} {результат S3 = [3, 4] } Операции сравнения множеств. Результатом любой из операций будет логическая константа True (истина) или False (ложь). Пример: Var S1, S2, S3 : set of Byte; B: boolean; ... S1:= [3, 4]; {оператор определения множества} S2:= [1, 3, 4]; {оператор определения множества} S3:= [3, 4, 5, 6, 78]; {оператор определения множества} B:= S1 <= S3; {True, т. к. S1 является подмножеством S3} B:= S3 >= S2; {False, т. к. S2 не является подмножеством S2} B:= S3 = S2; {False, т. к. мн-ва S2 и S3 не равны друг другу } B:= S3 <> S2; {True, т. к. мн-ва S2 и S3 не равны друг другу } Проверка вхождения элемента во множество. Результатом операции in будет логическая константа True (истина) или False (ложь). Пример: Var S1 : set of Integer; B: boolean; ... S1:= [3, 4, 18 .. 178, 3101, 4427]; {оператор определения множества} B:= ( 4 in S1); {True, т. к. 4 является элементом множества S1} B:= (200 in S1); {False, т. к. 200 не является элементом S1} 7.4. Файловые типы В языке Object Pascal есть три типа файлов: текстовые файлы, файлы с типом, файлы без типа. Связь с файлом может быть установлена через файловую переменную, которая после описания, но до использования в программе должна быть связана с внешним файлом с помощью процедуры AssignFile. Текстовой файл – это последовательность символьных строк перемен-ной длины. Всякая такая строка завершается маркером конца строки CR/LF. Текстовые файлы можно обрабатывать только последовательно. Ввод и вывод нельзя производить для открытого файла, используя одну файловую переменную. Текстовой файл имеет тип TextFile, или просто Text. Пример описания файловой переменной текстового типа: Var Fi: TextFile; Файлы без типа состоят из компонент одинакового размера, структура которых не известна или не имеет значения. Допустим прямой доступ к любой компоненте файла. Пример объявления файловой переменной файла без типа: Var F: File; Файлы c типом состоят из однотипных компонент известной структуры. Допустим прямой доступ к любой компоненте файла. Пример объявления файловых переменных для файлов с типом: Type TRec = Record A: Real; B: Integer; C: Char; End; Var F : File of Real; Q : File of String[100]; Fr: File of TRec; В этом примере F объявлена как файловая переменная вещественного типа. Это означает, что компонентами файла могут быть только вещественные значения. Файловая переменная Q предназначена для доступа к файлам, которые состоят из символьных строк длины 100. Файловая переменная Fr предназначена для работы с файлами, которые состоят из записей типа TRec, объявленного в секции Type. 8. Совместимость типов Необходимым условием корректного вычисления выражений или выполнения операторов присваивания является совместимость типов входящих в них компонент. Суть совместимости типов удобнее пояснить на примере простейших выражений, которые состоят из одного (для одноместных операций) или двух (для двухместных операций) компонент (операндов) и одной операции. 8.1. Совместимость по вычислению Вычисление выражений возможно только при соблюдении следующих условий. Типы операций и операндов эквивалентны. Например, нельзя применять арифметические операции к логическим переменным и, наоборот, логические операции – к арифметическим переменным: Type R1, R2 : Real; L1, L2 : Integer; B1, B2: boolean; ... Not (R1 + R2) B1 + B2 'Иванов' + ' ' + 'Петр' {недопустимые выражения} Типы операндов эквивалентны. Типы операндов целые или вещественные, например: R1 + R2 L1 + R2 L2 / R1 / L1 {допустимые выражения} Один тип является базовым, а второй – ограниченным типом этого же базового типа. Type L11, L12 : Integer; K : -199 .. 199; Типы являются множествами, причем их базовые типы совместимы. Type L : set of 21 .. 2141; K : set of -199 .. 199; Один тип является строковым, а другой – также строковым либо символьным. Type L : String [34]; Q : String [23]; K: Char; Один тип является ссылочным, а другой – также ссылочным либо безтиповым указателем. Оба типа являются упакованными символьными массивами с одинаковым числом элементов. Один тип является строковым, а другой – также строковым типом, либо упакованным символьным массивом, либо символьным типом. Один имеет тип Variant, а другой – тип integer, real, string, character или Boolean. Оба типа операндов являются процедурными типами с одинаковым количеством параметров и идентичными порядковыми типами этих параметров. Для функций должны быть идентичны и типы результата. 8.2. Совместимость по присваиванию Оператор присваивания считается корректным, если тип переменной, расположенной в его левой части, совместим с типом выражения, располо-женного в правой части. Выражение T2 может быть присвоено переменной T1, если будут соблюдены следующие условия. Оба типа T1 и Т2 идентичны. Недопустимо присваивание файловых типов или структур, содержащих файловые типы (о файловых типах подробнее см. гл. 17). T1 и Т2 имеют совместимые простые типы. T1 и Т2 имеют вещественные типы. T1 и Т2 имеют целые типы. T1 и Т2 имеет тип PChar или другой строковый тип, и выражение представляет строковую константу. T1 и Т2 имеют строковые типы. T1 имеет строковый тип, а Т2 – символ или упакованная строка. T1 – длинная строка, а Т2 имеет тип PChar. T1 и Т2 имеют совместимые типы упакованных строк. .T1 и Т2 имеют совместимые множественные типы. .T1 и Т2 имеют совместимые Pointer-типы. .T1 имеет тип PChar или PWideChar, а T2 есть символьный массив вида array[0 .. n] of Char. .T1 и T2 имеют совместимые процедурные типы. .T1 имеет тип Variant, а T2 – один из типов integer, real, string, character или Boolean. .T1 имеет тип integer, real, string, character или Boolean, а Т2 – тип Variant. 9. Выражения Вычислительная система выполняет вычислительные и управляющие операции по командам, которые представлены в программе с помощью операторов. Большинство таких операторов строится с использованием выражений, которые в практике программирования играют большую роль, определяя способ и порядок преобразования данных. Выражения состоят из операндов (значений, констант, переменных, функций), соединенных с помощью операций. Для изменения порядка выполнения операций могут быть использованы круглые скобки. Наиболее важную роль играют арифметические, логические и строковые выражения. 9.1. Арифметические выражения При описании арифметических выражений для простоты типом Integer обозначен любой целый тип, а типом Real – любой вещественный тип. Выражение строится с помощью арифметических значений, констант, переменных, функций, арифметических операций. В выражениях можно применять круглые открывающие и закрывающие скобки. При этом количество открывающих скобок должно быть равно количеству закрывающих скобок. При вычислении выражения операции выполняются в строго определенной последовательности в соответствии с их приоритетом. Порядок выполнения операций можно изменить применением блоков, включающих подвыражения, заключенные в круглые скобки. В языке Object Pascal существует шесть арифметических операций. Учитывая, что арифметические операции образуют подмножество множества всех операций языка, в табл. 7 показано абсолютное значение приоритета каждой операции. Таблица 7
При вычислении выражения его тип определяется типами операндов. Операндом называется любая компонента, к которой применяется операция. Операндом может быть, например, значение, константа, переменная или выражение, заключенное в скобки. Типы элементарных выражений показаны в табл. 8. Таблица 8
Примеры: 4*5 = 20, 6/5 = 1.2, 8+7 = 15, 7-3 = 4, 16 div 5 = 3, 16 mod 5 = 2. Порядок выполнения операций определяется приоритетом операций и расположением внутренних выражений, заключенных в круглые скобки. Все операции в арифметическом выражении выполняются слева направо. Пример:
9.2. Логические выражения Результатом вычисления логического выражения может быть одно из двух логических значений: True (истина ) или False (ложь). Логическое выражение строится с помощью других выражений, (арифметических, строковых и др.), значений, констант, переменных, функций, логических операций и логических отношений. В языке существует четыре логических операций. Приоритет операций показан в табл. 9. Таблица 9
Значения элементарных логических выражений, поясняющих назначение этих операций, приведены в табл. 10. Таблица 10
В табл. 11 представлены логические отношения. Таблица 11
Все отношения равноприоритетны. Порядок выполнения операций при вычислении логического выражения следующий: сначала вычисляются арифметические выражения; затем – отношения; в последнюю очередь вычисляются логические операции. Примеры (для x=12, z = 0, y=1): Таблица 12
Пример, демонстрирующий порядок выполнения операций при вычислении логического выражения:
9.3. Строковые выражения Строковые выражения, частными случаями которых могут быть пустой символ '' или одиночный символ (например 'A'), строятся из строковых или символьных значений, констант, переменных и строковых функций при помощи строковой операции конкатенации (присоединения). Эта операция обозначена символом + (плюс). Скобки в строковых выражениях не применяются. Пример:
10. Операторы Оператор – языковая конструкция, представляющая описание команды или комплекса команд по обработке и преобразованию данных. Все операторы делятся на две части – простые операторы и структурные операторы. 11. Простые операторы К их числу относятся: оператор присваивания, оператор безусловного перехода, составной оператор, оператор процедур, специальные операторы. 11.1. Оператор присваивания В параграфе 1.4 было дано краткое определение этого оператора – одного самых простых и наиболее часто используемых операторов. Напомним, что его синтаксис имеет вид x := y; где x – имя переменной или функции; y – совместимое по типу выражение (о совместимости типов см. гл. 8). Символы ":=" обозначают операцию присваивания, в соответствии с которой вычисленное значение выражения y присваивается переменной x. Примеры операторов присваивания (комментарии показывают присвоенные значения): Var Ch: Char; S: String[5]; Q: String[18]; L, J: Integer; P: Byte; R: Real; B: Boolean; Rec: Record A: Word; B: String[20]; End; … Таблица 13
11.2. Оператор безусловного перехода Этот оператор выполняет передачу управления оператору, которому предшествует метка. Синтаксис оператора: Goto Метка; Язык допускает в качестве меток использовать имя или значение целого типа из диапазона 1 .. 9999. При использовании операторов перехода необходимо придерживаться следующих правил: Все метки, используемые в блоке, должны быть описаны словом Label. Пример оператора описания меток: Label 1, 2, Met1, Met2, Met3; Метка должна располагаться в том же блоке, что и оператор, который ею помечен. Недопустим переход к метке внутрь структурного оператора (например, внутрь цикла, минуя его заголовок). Компилятор не реагирует на эту ситуацию, однако поведение программы может быть непредсказуемо. Недопустимы также вход или выход по метке в процедурах или функциях. П р и м е ч а н и е. Не используйте меток, если в этом нет особой необходимости. В технике современного программирования использование меток считается правилом плохого тона, т. к. их применение часто ведет к составлению плохо структурированных модулей, усложняющих чтение, сопровождение и отладку программ. 11.3. Оператор обращения к процедуре Этот оператор вызывает активизацию операторов, расположенных в теле процедуры (см. параграф 15.1). После выполнения процедуры управление передается к оператору, расположенному вслед за оператором процедуры. При вызове процедуры её формальным параметрам должны строго соответствовать по совместимости типов и количеству фактические параметры. Примеры обращения к процедурам: Val (s, r, Code); Sort (a, n * 2); SaveParameters; 11.4. Обращение к функции Следует подчеркнуть, что не существует специального оператора обращения к функции (см. параграф 15.1). Обычно такое обращение производится посредством другого оператора, часто оператора присваивания. Обращение к функции активизирует ее внутренние операторы точно так же, как это происходит в процедурах. Принципиальное отличие между выполнением процедуры и функции состоит в следующем: после выполнения оператора процедуры управление передается к следующему за ним оператору; после выполнения функции управление вновь передается в оператор, который содержит обращение к этой функции, с целью передачи в него вычисленного значения функции и для завершения вычислений внутри этого оператора. Поясним это на примере оператора присваивания, содержащего обращение к функции Func8: G:= 2 * Pi * Func8(m, n, a) / Sqr (z); При выполнении этого оператора сначала происходит обращение к функции Func8. После выполнения операторов, составляющих тело этой функции, вычисленное значение возвращается в этот оператор, где оно используется для выполнения дальнейших вычислений внутри оператора. 12. Стандартные процедуры и функции Язык содержит ряд процедур и функций, которые в практике программирования ипользуются наиболее часто. Расширенный список процедур и функций, которые могут найти применение в практике программирования, приведен в приложении. 12.1. Строковые процедуры и функции Function Length (St): LongInt; Возвращает длину строки символов St, т. е. количество символов в ней (не путать с размером строки). St:= '1234abc'; L:= Length(St); {L= 7} Procedure Delete (St, Pos, Num); Удаляет Num символов из строки St начиная с позиции Pos, если Pos<Length (St). St:= '1234abc'; Delete(St, 4, 2); { St= '123bc'} Delete(St, 3, 120); { St= '12'} Procedure Insert (Obj, Target, Pos); Вставляет строку Obj в строку Target начиная с позиции Pos. Если Pos>Length (Target), то результат Target + Obj. St1:= '***'; St2:= '1234abc'; Insert (St1, St2, 3) { St2= '12***34abc'} Procedure Str (Value, St); Преобразует значение Value числового типа в строку символов St. Value может сопровождаться форматом. L:=19; Str (L, g); {g= '19'} R:= 2.123155; Str (R: 8:3, h); {h= ' 2.123' (длина 8, в дробной части 3} Procedure Val (St, Vr, Code); Преобразует строку символов St в числовую величину Vr целого или вещественного типа. Code = 0, если преобразование прошло успешно, иначе в Code будет записан номер первого ошибочного символа конвертируемой строки, при этом значение Vr не определено. St:='319'; Val (St, k, Cod); {k= 319, Cod = 0} St:='81yy9'; Val (St, k, Cod); {k= ?, Cod = 3} Function Copy (St, Pos, Num): String; Выделяет из строки St подстроку символов длиной Num начиная с позиции Pos. Если Pos>Length, то возвращает пустую строку. St1:='АБВГДЕ'; St2:= Copy(St1, 2, 3); {St2= 'БВГ'} St2:= Copy(St1, 2, 27); {St2= 'БВГДЕ'} St2:= Copy(St1, 44, 2); {возвращает пустую строку St2= ''} Function Concat (St1, St2{, …, StN}): String; Объединяет строки в одну строку. St:='abc'; St1:=Concat( 'sss', St, '1234'); {St1= 'sssabc1234'} St1:=Concat( St, '123'); {St1= 'abc123'} Function Pos (Obj, Target): Integer; Возвращает номер символа, начиная с которого строка Obj первый раз входит в строку Target. Если строка Obj отсутствует в строке Target, то Pos = 0. Q:= 'Иванов Сергей Петрович'; H:= Pos ('Сергей', Q); {H= 7} H:= Pos ('Игорь', Q); {H= 0} Function SizeOf (Obj): Integer; Возвращает размер переменной Obj. Function FormatFloat(const Format: string; Value: Extended): string; Возвращает форматированное вещественное значение в виде строки. Format – формат числа, Value – число. В табл. 14 даны форматы функции FormatFloat. Таблица 14
Примеры действия форматов при конвертации числа в строку представлены в табл. 15. Таблица 15
Страницы: 1, 2, 3, 4, 5, 6, 7, 8 |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
|
Рефераты бесплатно, реферат бесплатно, курсовые работы, реферат, доклады, рефераты, рефераты скачать, рефераты на тему, сочинения, курсовые, дипломы, научные работы и многое другое. |
||
При использовании материалов - ссылка на сайт обязательна. |