МЕНЮ


Фестивали и конкурсы
Семинары
Издания
О МОДНТ
Приглашения
Поздравляем

НАУЧНЫЕ РАБОТЫ


  • Инновационный менеджмент
  • Инвестиции
  • ИГП
  • Земельное право
  • Журналистика
  • Жилищное право
  • Радиоэлектроника
  • Психология
  • Программирование и комп-ры
  • Предпринимательство
  • Право
  • Политология
  • Полиграфия
  • Педагогика
  • Оккультизм и уфология
  • Начертательная геометрия
  • Бухучет управленчучет
  • Биология
  • Бизнес-план
  • Безопасность жизнедеятельности
  • Банковское дело
  • АХД экпред финансы предприятий
  • Аудит
  • Ветеринария
  • Валютные отношения
  • Бухгалтерский учет и аудит
  • Ботаника и сельское хозяйство
  • Биржевое дело
  • Банковское дело
  • Астрономия
  • Архитектура
  • Арбитражный процесс
  • Безопасность жизнедеятельности
  • Административное право
  • Авиация и космонавтика
  • Кулинария
  • Наука и техника
  • Криминология
  • Криминалистика
  • Косметология
  • Коммуникации и связь
  • Кибернетика
  • Исторические личности
  • Информатика
  • Инвестиции
  • по Зоология
  • Журналистика
  • Карта сайта
  • Программа на Delphi

    Множество – это совокупность однотипных элементов. Во многом оно похоже на

    типизованную константу, однако имеет от него принципиальное отличие. Это

    отличие состоит в том, что значениями множества являются все его допустимые

    подмножества.

    Как и в массивах, следует различать множество-тип и множество-переменную.

    Множество-тип. Синтаксис множества-типа:

    = Set of ;

    Пример:

    Type

    TSomeInts = 1..250;

    TIntSet = set of TSomeInts;

    создает тип множества с именем TIintSet, которое содержит множество целых

    чисел в диапазоне от 1 до 250. Это же множество могло быть описано явно:

    type TIntSet = set of 1..250;

    Множество-переменная. Синтаксис множества-переменной:

    : Set of ;

    В соответствии с вышеописанными типами можно объявить множества:

    Var Set1, Set2: TIntSet;

    а затем в операторной части задать эти множества:

    ...

    Set1 := [1, 3, 5, 7, 9];

    Set2 := [2, 4, 6, 8, 10];

    Можно объявить множество явно, перечислив его элементы:

    Var

    MySet1 : set of 'a' .. 'z';

    MySet2 : set of Byte

    MySet3 : set of (Club, Diamond, Heart, Spade)

    MySet4 : set of Char;

    ...

    MySet 1:= ['a','b','c']; {оператор определения множества}

    Операции над множествами. Допустимые операции над множествами приведены в

    следующей табл. 6:

    Таблица 6

    |Опера-|Наименование |Тип операндов|Тип |Пример |

    |ция |операции | |результата | |

    |+ |Объединение |set |set |Set1 + Set2 |

    |– |Вычитание |set |set |S - T |

    |* |Пересечение |set |set |S * T |

    |= |Не больше |set |boolean |S1 >= S2 |

    |= |Равенство |set |boolean |S2 = MySet |

    |<> |Неравенство |set |boolean |MySet <> S1 |

    |in |Принадлежание |элемент set |boolean |A in Set1 |

    Объединение, вычитание и пересечение множеств.

    Результатом любой из операций будет также множество.

    Пример:

    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 = 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. Совместимость по вычислению

    Вычисление выражений возможно только при соблюдении следующих условий.

    1. Типы операций и операндов эквивалентны.

    Например, нельзя применять арифметические операции к логическим

    переменным и, наоборот, логические операции – к арифметическим

    переменным:

    Type

    R1, R2 : Real;

    L1, L2 : Integer;

    B1, B2: boolean;

    ...

    Not (R1 + R2) B1 + B2 'Иванов' + ' ' + 'Петр' {недопустимые выражения}

    2. Типы операндов эквивалентны.

    3. Типы операндов целые или вещественные, например:

    R1 + R2 L1 + R2 L2 / R1 / L1 {допустимые выражения}

    4. Один тип является базовым, а второй – ограниченным типом этого же

    базового типа.

    Type

    L11, L12 : Integer;

    K : -199 .. 199;

    1. Типы являются множествами, причем их базовые типы совместимы.

    Type

    L : set of 21 .. 2141;

    K : set of -199 .. 199;

    1. Один тип является строковым, а другой – также строковым либо

    символьным.

    Type

    L : String [34]; Q : String [23]; K: Char;

    2. Один тип является ссылочным, а другой – также ссылочным либо

    безтиповым указателем.

    3. Оба типа являются упакованными символьными массивами с одинаковым

    числом элементов.

    4. Один тип является строковым, а другой – также строковым типом, либо

    упакованным символьным массивом, либо символьным типом.

    5. Один имеет тип Variant, а другой – тип integer, real, string,

    character или Boolean.

    6. Оба типа операндов являются процедурными типами с одинаковым

    количеством параметров и идентичными порядковыми типами этих

    параметров. Для функций должны быть идентичны и типы результата.

    8.2. Совместимость по присваиванию

    Оператор присваивания считается корректным, если тип переменной,

    расположенной в его левой части, совместим с типом выражения, располо-

    женного в правой части. Выражение T2 может быть присвоено переменной T1,

    если будут соблюдены следующие условия.

    1. Оба типа T1 и Т2 идентичны. Недопустимо присваивание файловых типов

    или структур, содержащих файловые типы (о файловых типах подробнее см.

    гл. 17).

    2. T1 и Т2 имеют совместимые простые типы.

    3. T1 и Т2 имеют вещественные типы.

    4. T1 и Т2 имеют целые типы.

    5. T1 и Т2 имеет тип PChar или другой строковый тип, и выражение

    представляет строковую константу.

    6. T1 и Т2 имеют строковые типы.

    7. T1 имеет строковый тип, а Т2 – символ или упакованная строка.

    8. T1 – длинная строка, а Т2 имеет тип PChar.

    9. T1 и Т2 имеют совместимые типы упакованных строк.

    10. .T1 и Т2 имеют совместимые множественные типы.

    11. .T1 и Т2 имеют совместимые Pointer-типы.

    12. .T1 имеет тип PChar или PWideChar, а T2 есть символьный массив вида

    array[0 .. n] of Char.

    13. .T1 и T2 имеют совместимые процедурные типы.

    14. .T1 имеет тип Variant, а T2 – один из типов integer, real, string,

    character или Boolean.

    15. .T1 имеет тип integer, real, string, character или Boolean, а Т2 – тип

    Variant.

    9. Выражения

    Вычислительная система выполняет вычислительные и управляющие операции по

    командам, которые представлены в программе с помощью операторов.

    Большинство таких операторов строится с использованием выражений, которые в

    практике программирования играют большую роль, определяя способ и порядок

    преобразования данных. Выражения состоят из операндов (значений, констант,

    переменных, функций), соединенных с помощью операций. Для изменения порядка

    выполнения операций могут быть использованы круглые скобки. Наиболее важную

    роль играют арифметические, логические и строковые выражения.

    9.1. Арифметические выражения

    При описании арифметических выражений для простоты типом Integer обозначен

    любой целый тип, а типом Real – любой вещественный тип. Выражение строится

    с помощью арифметических значений, констант, переменных, функций,

    арифметических операций. В выражениях можно применять круглые открывающие и

    закрывающие скобки. При этом количество открывающих скобок должно быть

    равно количеству закрывающих скобок.

    При вычислении выражения операции выполняются в строго определенной

    последовательности в соответствии с их приоритетом. Порядок выполнения

    операций можно изменить применением блоков, включающих подвыражения,

    заключенные в круглые скобки.

    В языке Object Pascal существует шесть арифметических операций. Учитывая,

    что арифметические операции образуют подмножество множества всех операций

    языка, в табл. 7 показано абсолютное значение приоритета каждой операции.

    Таблица 7

    |Операция |Наименование |Приоритет |

    |+ |Сложение |2 |

    |- |Вычитание |2 |

    |* |Умножение |1 |

    |/ |Деление |1 |

    |div |Деление нацело |1 |

    |mod |Остаток от деления |1 |

    При вычислении выражения его тип определяется типами операндов. Операндом

    называется любая компонента, к которой применяется операция. Операндом

    может быть, например, значение, константа, переменная или выражение,

    заключенное в скобки. Типы элементарных выражений показаны в табл. 8.

    Таблица 8

    |Операция|Тип операндов |Тип результата |Пример |

    |+ |Integer, real |integer, real |X + Y |

    |– |Integer, real |integer, real |Result - 1 |

    |* |Integer, real |integer, real |P * InterestRate |

    |/ |Integer, real |real |X / 2 |

    |div |Integer |integer |Total div UnitSize |

    |mod |Integer |integer |Y mod 6 |

    Примеры:

    4*5 = 20, 6/5 = 1.2, 8+7 = 15, 7-3 = 4, 16 div 5 = 3, 16 mod 5 = 2.

    Порядок выполнения операций определяется приоритетом операций и

    расположением внутренних выражений, заключенных в круглые скобки. Все

    операции в арифметическом выражении выполняются слева направо.

    Пример:

    |Выражение: |15 * ((25/5-5*9 + (j-8) * 7.55) / |

    | |8.67) |

    |Порядок выполнения операций: | 8 2 5 3 6 1 4|

    | | 7 |

    9.2. Логические выражения

    Результатом вычисления логического выражения может быть одно из двух

    логических значений: True (истина ) или False (ложь).

    Логическое выражение строится с помощью других выражений, (арифметических,

    строковых и др.), значений, констант, переменных, функций, логических

    операций и логических отношений.

    В языке существует четыре логических операций. Приоритет операций показан в

    табл. 9.

    Таблица 9

    |Операция |Наименование |Приоритет |

    |Not |Отрицание |3 |

    |And |Конъюнкция |4 |

    |Or |Дизъюнкция |5 |

    |Xor |Спец. дизъюнкция |6 |

    Значения элементарных логических выражений, поясняющих назначе-ние этих

    операций, приведены в табл. 10.

    Таблица 10

    |A |B |not A |A and B|A or B|A xor B|

    |True |True |False |True |True |False |

    |True |False |False |False |True |True |

    |False |True |True |False |True |True |

    |False |False |True |False |False |False |

    В табл. 11 представлены логические отношения.

    Таблица 11

    |Отношение |Наименование |

    |> |Больше |

    |< |Меньше |

    |>= |Больше или равно |

    | |Не равно |

    Все отношения равноприоритетны.

    Порядок выполнения операций при вычислении логического выра-жения

    следующий:

    . сначала вычисляются арифметические выражения;

    . затем – отношения;

    . в последнюю очередь вычисляются логические операции.

    Примеры (для x=12, z = 0, y=1):

    Таблица 12

    |Выражение |Результат |

    |5 > 8 |True |

    |(5 < 3) and (z = 0) |False |

    |((4 + 8) < 0) or not (y = |True |

    |0) |True |

    |not ((x < y) and (z > y)) |False |

    |('ab' = 'ac') and (x=z) |True |

    |(4 in [ 2 .. 23 ]) | |

    Пример, демонстрирующий порядок выполнения операций при вычислении

    логического выражения:

    |Выражение: |Not ((x > 6 + 8 * 2) and (y < 7) or (z > 7)) and (x <> |

    | |y) |

    |Порядок: | 9 3 2 1 6 4 |

    | | 7 5 10 8 |

    9.3. Строковые выражения

    Строковые выражения, частными случаями которых могут быть пустой символ ''

    или одиночный символ (например 'A'), строятся из строковых или символьных

    значений, констант, переменных и строковых функций при помощи строковой

    операции конкатенации (присоединения). Эта операция обозначена символом +

    (плюс). Скобки в строковых выражениях не применяются.

    Пример:

    |Выражение: |'Object '+'Pascal '+' для Delphi' |

    |Результат: |'Object Pascal для Delphi' |

    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

    |Оператор присваивания |Значение |

    |Q:= 'd:\Dir1\Word\a.txt'; |'d:\Dir1\Word\a.txt' |

    |S:= Q; |'d:\Di' |

    |Q:= S+'r\'; |'d:\Dir\' |

    |Ch:=Q[2]; |':' |

    |L:= 450; |450 |

    |P:= L; |Ошибка, т. к. max P = 255 |

    |J:= 100; |100 |

    |R:= -L / J; |-4.5 |

    |J:=-L / J; |Ошибка. Несоответствие типов |

    Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11


    Приглашения

    09.12.2013 - 16.12.2013

    Международный конкурс хореографического искусства в рамках Международного фестиваля искусств «РОЖДЕСТВЕНСКАЯ АНДОРРА»

    09.12.2013 - 16.12.2013

    Международный конкурс хорового искусства в АНДОРРЕ «РОЖДЕСТВЕНСКАЯ АНДОРРА»




    Copyright © 2012 г.
    При использовании материалов - ссылка на сайт обязательна.