Отправляет email-рассылки с помощью сервиса Sendsay

Delphi. Уроки

  Все выпуски  

Delphi. Уроки


Информационный Канал Subscribe.Ru

Delphi. Object Pascal. Уроки по программированию с сайта http://progs.biz

Рассылка №21

Delphi. Object Pascal. Урок 7. Множества и записи.

Полные версии уроков (с картинками) можно найти по адресам
Урок 7. Множества и записи.

Delphi. Pascal. Урок 7. Множества и записи

Множества и записи являются специфичными для Pascal'я типами. Сначала разберемся со множествами.

С общей точки зрения множество представляет из себя некоторый набор (на самом деле это тавтология, но на это мы не будем обращать внимания) чего-либо. Для такого набора действуют два правила - во-первых, в нем не должно быть поторяющих элементов (вернее, повторяющийся элемент защитывается ттолько один раз) и, во-вторых, во множество порядок элементов не существенен. Два множества мы можем пересекать, объединять, вычитать из одного другое, проверать, не есть одно множество частью (подмножеством) другого и др. Кроме того, мы можем определять, является ли или нет некоторый конкретный элемент элементом данного множества.

Для определения множества мы должны написать что-то вроде:

type
  Color = (Red, Green, Yellow, Blue, Black);
  Colors = set of Color;
var
  c1, c2, res: Colors; //Переменная c типа Colors

Как вы видите, сначала мы в разделе type модуля оперделяем новый тип Color (название может быть любым). Тип Color мы определяем через набор возможных значений (красны, зеленый, желтый, синий и черный). Затем мы опеределяем новый тип Colors (название тоже может быть любым) как множество, состоящее из элементов типа Color. Colors мы объявляем множеством с помошью ключевых слов set of:

  Colors = set of Color;

После того, как мы опеределили новый тип Colors, мы можем заводить переменные такого типа. Это м и делаем в разделе var модуля:

var
  c1, c2, res: Colors; //Переменные типа Colors

Теперь рассмотрим основные операции с множествами. Это суть:

Объединение множеств. Обозначается как "+" . Получаем в результате множество, состоящее из элементов, которые входят или в первое, или во второе множества:

  c1:=[Red, Green, Yellow];
  c2:=[Green, Blue];
  //Теперь множество res состоит
  //из элементов Red, Green, Yellow и Blue
  res:=c1 + c2;

Пересечение множеств. Обозначается как "*". Получаем в результате множество, состоящее из элементов, которые входят и в первое, и во второе множества:

  c1:=[Red, Green, Yellow];
  c2:=[Green, Blue];
  //Теперь множество res состоит
  //из элемента Green
  res:=c1 * c2;

Разность множеств. Обозначается как "-" . Получаем в результате множество, состоящее из элементов первого множества, за исключением тех элементов, которые входят во второе:

  c1:=[Red, Green, Yellow];
  c2:=[Green, Blue];
  //Теперь множество res состоит
  //из элементов Red и Yellow
  res:=c1 - c2;

Кроме того, для множеств существуют операции для определения, не является ли одно множество частью другого. Это операции "<=" (возвращает true, если каждый элемент первого множества является элементом и второго, и false в противоположном случае) и ">=" (возвращает true, если каждый элемент второго множества является элементом и первого, и false в противоположном случае). Вот пример использования:

  c1:=[Red, Green, Yellow];
  c2:=[Green, Red];
  if c1>=c2 then
    //c1 есть подмножество c2
    Writeln('c1 is a subset of c2')
  else
    //c1 не есть подмножество c2
    Writeln('c1 is not a subset of c2');

Если в программе надо определить, входит ли некоторый элемент в множество или нет, то мы доджны использовать операцию in. Вот пример ее использования:

  c1:=[Red, Green, Yellow];
  if Red in c1 then
    //Элемент Red принадлежит множеству c1
    ...
  else
    //Элемент Red не принадлежит множеству c1
    ...

Еще для множеств имееются операции "=" и "<>". Их использование вполне очевидно - первая возвращает true, если два множества равны, и false - если не равны, вторая: наоборот - true, если два множества не равны, и false - если равны.

В Delphi для множеств есть ограничение - в множестве не может больше 256 элементов.

Теперь поговорим кратко о записях. Запись представляет из себя новый, определенный пользователем, тип данных. Запись объединяет в себе некоторое (фиксированное) число переменных (которые официально наываются полями). Эти переменные могут быть разного типа. Например, вы можете создать новый тип для хранения данных о книге. В этот тип вы можете включить такие поля как Author (Автор), Title (Название), Pages (Количество страниц) и др. Доступ к отдельным полям мы получаем через точку, которую ставим после имени соответствующий переменной. Вот пример:

var
  //Определяем переменную book как запись
  book: Record
    Title: String;
    Author:String;
    Pages:  Integer;
    end;
    //Конец записи
  ...
  //Задаем название
  book.Title:='De machina computativa firmicis fundata.';
  //Задаем автора
  book.Author:='Osco do Casco';
  //Задаем количество страниц
  book.Pages:=212;

Как вы видите, для задания записи используются ключевые слова Record и End.

Наверх

Другие рассылки с сайта progs.biz

Рассылки Subscribe.Ru
Уроки по Java

Уроки по Java с самого начала. Основные конструкции языка, классы в Java, создание приложений с графическим интерфейсом, создание апплетов, работа в JBuilder от Borland'а, сетевые приложения.


Copyright Алексеев Игорь, 2002

Copyright сайт progs.biz, 2002



http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное