Сделай Сам Свою Работу на 5

Структурированные типы данных: множества





Множество представляет собой набор различных объектов одинакового типа, называемого базовым типом. В качестве базового типа элементов множества может использоваться любой порядковый тип, кроме Word, Integer, Longlnt, Int64.

Если С есть множество объектов типа Т, то о каждом объекте типа Т можно сказать, что он либо является элементом множества С, либо нет. Тип множества определяется в разделе определения типов.

<имя типа множества> = setof<базовый тип>

Ключевые слова setof означают «набор из». Для задания множества используется так называемый конструктор множества: список спецификаций элементов множества, отделенных друг от друга запятыми; список обрамляется квадратными скобками. Спецификациями элементов могут быть константы или выражения базового типа, а также тип-диапазон того же базового типа.

Пример определения и задания множеств:

type

digitChar = set of '0'..'9' digit = set of 0..9var

al, a2 : digitChar; аЗ, a4 : digit begin

al := ['1', '2', '3']; al := ['2', '3']; a3 := [4, 5]; a4 := [3..9];

end.

Количество элементов, входящих во множество, может меняться от 0 до 256. Множество может не иметь элементов. В этом случае оно называется пустым множеством и обозначается так: [ ].



Для объектов, имеющих структуру множества, определены специальные операции:

♦ объединение, пересечение и вычитание двух множеств;

♦ проверка на равенство или неравенство множеств;

♦ проверка принадлежности элемента к множеству, (т. е. входит ли указанный элемент во множество или нет).

Объединением двух множеств называется множество всех элементов, принадлежащих обоим множествам. Знаком операции объединения множеств служит знак «+».Например:[1, 2] + [3, 4, 5] = [1, 2, 3, 4, 5];

Пересечением двух множеств называется множество элементов, которые принадлежат одновременно обоим множествам. Знаком операции пересечения множеств служит знак «*».Например:[1..10] * [5..20] = [5..10];

Разностью двух множеств называется множество, содержащее те элементы, которые не являются элементами второго множества. Знаком операции разности двух множеств служит знак «—».Например:[1..10] - [5..20] = [1..4];

Для проверки принадлежности элемента к множеству служит отношение in, зарезервированное слово в языке Delphi. Слева от словаin пишется выражение перечисляемого типа. Справа пишется выражение типа множеств, производимого от типа левого операнда. Результат будет true, если первый операнд является элементом второго операнда, т. е. элементом этого множества. В противном случае результат будет false.



Например,5 in [1, 2, 3, 4, 5, 6, 7] — true10 in [1, 2, 3, 4, 5, 6, 7] — false


Динамические структуры данных: указатели

Задачи, обрабатывающие данные, которые по своей природе являются динамическими, удобно решать с помощью динамических структур.

Указатели.Переменные, которые ссылаются на другие переменные, называются указателями. Указатель — это переменная, значением которой является адрес другой переменной или структуры данных.

Указатель, как и любая другая переменная программы, должен быть объявлен в разделе объявления переменных.Приведем примеры объявления указателей:

pi: "integer; р2: "real;

pi — это указатель на переменную типа integer, а р2 — указатель на переменную типа real.

Тип переменной, на которую ссылается указатель, называют типом указателя. В начале работы программы переменная-указатель «ни на что не указывает». В этом случае говорят, что значение указателя равно NIL. Зарезервированное слово NIL соответствует значению указателя, который ни на что не указывает.

Указателю можно присвоить значение — адрес переменной соответствующего типа. Ниже приведен оператор, после выполнения которого переменная р будет содержать адрес переменной п.

р := @п;

Помимо адреса переменной, указателю можно присвоить значение другого указателя при условии, что они являются указателями на переменную одного типа. Например, если переменные pi и р2 являются указателями типа integer, то в результате выполнения оператора



р2 := pi; переменные pi и р2 указывают на одну и ту же переменную.

Указатель можно использовать для доступа к переменной, адрес которой содержит указатель. Например, если р указывает на переменную i, то в результате выполнения оператора

р" : = 5;

значение переменной i будет равно пяти. В приведенном примере значок " показывает, что значение «пять» присваивается переменной, на которую указывает переменная-указатель .


Использование переключателей. Переключатель RadioButton

RadioButton — переключатель. Обычно объединяется как минимум еще с одним таким же компонентом в группу. Щелчок на переключателе приводит к автоматическому освобождению ранее выбранного переключателя в той же группе.

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

Если в начальный момент ни один из компонентов не выбран, то достаточно сделать такой выбор - щёлкнуть по одному из компонентов, и в дальнейшем можно только "переключать" компоненты, снять выбор уже невозможно. Хотя нет, есть способ - программно!

Компонент DelphiRadioButton состоит из круглого окошка и текстовой строки. В окошке появляется отметка выбора данного компонента, текстовая строка поясняет его смысл. За изменение текстовой строки отвечает свойство Caption. Основное же свойство компонента DelphiRadioButton - Checked (т.е. "выбрано") типа Boolean, доступное как для чтения, так и для записи. У выбранного компонента свойство Checked равно True.

НаданнойФорме

RadioButton1.Checked = True;

RadioButton2.Checked = False;

RadioButton13Checked = False;

Для выбора, например, компонента RadioButton2 достаточно написать

RadioButton2.Checked := True;// отметка с RadioButton1 будет снята автоматически.

Для снятия выбора нужно в программе написать

RadioButton1.Checked := False;// теперь ни один из компонентов не выбран. Вручную этого достичь невозможно.

Основным событием компонента DelphiRadioButton является, естественно, OnClick, то есть щелчок мышкой. В этот момент могут быть выполнены процедуры, соответствующие выбору этого компонента.


Стандартная кнопка Button

Компонент DelphiButton

Компонент DelphiButton это простая командная кнопка. Командная кнопка DelphiButton используется для реализации в программе команд с помощью обработчика события OnClick этого компонента.

 

Один и тот же обработчик может обрабатывать события нескольких компонентов TButton (да и не только TButton, но и даже компонентов других типов). Для определения того, событие какого именно компонента нужно обрабатывать, используется встроенная переменная Sender типа TObject, обозначающая объект, вызвавший данное событие. Для иллюстрации этой возможности рассмотрим простую процедуру, определяющую нажатую кнопку.

 

Создадим обработчик кнопки Button1, а для Button2 и Button3 в Инспекторе Объектов на вкладке Events выберем событие OnClick, и из выпадающего списка выберем появившийся там обработчик Button1Click. Теперь он обрабатывает нажатие всех трёх кнопок.

 

procedure TForm1.Button1Click(Sender:TObject);

begin

Form1.Caption:=(Sender as TButton).Caption;

end;

 

Конструкция SenderasTButton позволяет работать со свойствами объекта Sender как со свойствами кнопки. Непосредственно же различить кнопку как объект можно обычным оператором сравнения:

 

if (Sender = Button1) then

Form1.Caption:=Button1.Caption;

 

 

Иногда события инициированы даже компонентами разных типов. В таком случае, проверить компонент какого типа вызвал событие, можно таким образом:

 

if (SenderisTButton) then

Form1.Caption:='Кнопка';


Структура проекта Delphi

Любая программа Delphi состоит из файла проекта (файл с расширением dpr) и одного или нескольких модулей (файлы с расширением pas). Каждый из таких файлов описывает программную единицу Delphi.

Файл проекта представляет собой программу, написанную на языке Delphi и предназначенную для обработки компилятором. Эта программа автоматически создается Delphi и содержит лишь несколько строк:

programProjectl;

uses Forms,

Unitl in 'Unitl.pas' {fmExample} {$R *.RES}

begin

Application. Initialize;

Application.CreateForm (TfmExample, fmExample); Application.Run; end.

Жирным шрифтом в программе выделены зарезервированные слова, а курсивом — комментарии. Зарезервированные слова играют важную роль в Delphi, придавая программе в целом свойство текста, написанного на почти естественном английском языке

Комментарий в Delphi — это любой текст, заключенный в фигурные { } или в круглые со звездочкой (* *) скобки.

Строка {$R *.RES}, которая похожа на комментарий, — это директива компилятору подключить файл ресурсов. Директивы начинаются символом $, который стоит сразу за открывающей фигурной скобкой.

Слово program со следующим за ним именем программы и точкой с запятой образуют заголовок программы. За заголовком программы следует раздел описаний, в котором программист (или Delphi) описывает используемые в программе идентификаторы. Следующие строки указывают, что, помимо файла проекта, в программе должны использоваться модули Forms и Unitl:

Модуль Forms является стандартным (т. е. уже известным Delphi), а модуль Unitl — новым, ранее неизвестным, и Delphi в этом случае указывает также имя файла с текстом модуля (in 'Unitl.pas') и имя связанного с модулем файла описания формы {fmExample}.

Собственно тело программы начинается со слова begin (начать) и ограничивается терминатором end с точкой. Тело состоит из нескольких операторов языка Delphi. В каждом операторе реализуется некоторое действие — изменения значения переменной, анализ результата вычисления, обращение к подпрограмме и т. п. В теле программы — три исполняемых оператора: Application.Initialize;

Объект в целом предназначен для решения какой-либо конкретной задачи и воспринимается в программе как неделимое целое. В объекте Application собраны данные и подпрограммы, необходимые для нормального функционирования Windows-программы в целом.

Application.Initialize-Прочитав эту строку, компилятор создаст код, который заставит процессор перейти к выполнению некоторого фрагмента программы, написанного разработчиками Delphi.

Для размещения отдельных частей программы используются программные единицы, называемые модулями.

Начинается модуль словом unit, за которым следует имя модуля.

Модуль состоит из следующих разделов:

• интерфейса;• реализации;• инициализации.

Следующий фрагмент является синтаксически правильным вариантом модуля: unitUnitl; interface

// Раздел интерфейса

implementation

// Раздел реализации

begin

// Раздел инициализации end.

В разделе интерфейса описываются программные элементы (типы, классы, процедуры и функции), которые будут «видны» другим программным модулям, а в разделе реализации раскрывается механизм работы этих элементов.

Раздел инициализации позволяет выполнить инициализацию переменных модуля.

Так как проект представляет собой набор файлов, то рекомендуется для каждого проекта создавать отдельную папку.

Элементы программы — это минимальные неделимые ее части, имеющие определенное значение для компилятора. К элементам относятся: зарезервированные слова, идентификаторы, типы, константы, переменные, метки, подпрограммы, комментарии.

 

 








Не нашли, что искали? Воспользуйтесь поиском по сайту:



©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.