Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Запись как тип данных, их определение, назначение, структура. Обращение к полям записей: составные имена, оператор With. Примеры применения в программах.

Читайте также:
  1. Begin IF умова 2 THEN оператор 1 end
  2. Begin оператори; end.
  3. I. История применения лекарственных растений. Заготовка, сбор, сушка и хранение лекарственных растений
  4. I. Область применения
  5. II. Система культуры и её структура.
  6. III. Первоначальное накопление капитала (особенности, примеры)
  7. III. Составные элементы генерального бюджета.
  8. IV. Проблемы применения данной техники _
  9. MEDLINE - это база данных, которая содержит...
  10. Абсорбция. Общие сведения и области его применения.

Запись (англ. record) - это сложный тип данных, позволяющие объединить данные разных типов. Запись можно назвать наиболее общим сложным типом данных. Название "запись" появилось из тех соображений, что данные разного типа можно встретить в таблицах: в каждой строке записаны сразу несколько разных значений. Таким образом, одна запись соответствует одной строке данных: она имеет несколько полей, каждое из которых хранит своё значение.

Допустим, мы хотим хранить информацию о людях, заполнивших анкету на поступление на работу. Нас интересуют: ФИО человека, возраст, образование (среднее/высшее), владение компьютером, владение иностранными языками. Все эти данные мы можем объединить в запись. Дальнейшее повествование будет основываться на этом примере.

Чтобы работать в программе с записями, нужно сначала описать соответствующий тип данных. Запись описывается следующим образом:

type

имя_типа_записи = record

{поля записи}

end;

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

Для нашего примера:

type

TPerson = record

Name: String;

Age: Byte;

Education,PC: Boolean;

Foreign: set of TForeignLanguages;

end;

Итак, общая форма записи:

with запись do

{обращение к полям записи}

А теперь на нашем примере:

with L do

begin

X:=StrToFloat(X1Edit.Text);

Y:=StrToFloat(Y1Edit.Text);

X2:=StrToFloat(X2Edit.Text);

Y2:=StrToFloat(Y2Edit.Text);

end;

Что же мы имеем? А вот что: мы нашу запись "вынесли за скобку", и далее напрямую обращаемся к её полям. Удобно, не правда ли? Этот код абсолютно эквивалентен тому, что был написан нами ранее, только он более эффективен.

Несложно догадаться, что использование with для единичного обращения к записи бессмысленно/

Записи объединяют фиксированное число элементов данных других типов. Отдельные элементы записи имеют имена и называются полями. Имя поля должно быть уникальным в пределах записи. Различают фиксированные и вариантные записи.

Фиксированная запись состоит из конечного числа полей, ее объявление имеет формат:

Фиксированная запись

1. Record

2. <Имя поля1>: <Тип поля1>;

3....

4. <Имя поляN>: <Тип поляN>;

5. end;

Вариантная запись, как и фиксированная, имеет конечное число полей, однако предоставляет возможность по-разному интерпретировать области памяти, занимаемые полями. Все варианты записи располагаются в одном месте памяти и позволяют обращаться к ним по различным именам. Отметим, что в данном случае термин «вариантный» не имеет ничего общего с вариантным типом (variant). Формат объявления вариантной записи:

Вариантная запись

1. Record

2. case <Признак>: <Тип признака> of

3. <Вариант1>: (<Описание варианта1>);

4. <ВариантN>: (<Описание вариантаN>);

5. end;

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

Пример использования записи:

Пример использования записи

1. var

2. Man: record

3. Name: string;

4. Salary: real;

5. Note: string;

6. end;

7. Man.Name: = 'Иванов M.P.';

8. Man.Salary:=500;

Переменная Man является фиксированной записью и имеет поля имени (Name), оклада (Salary) и примечания (Note), каждое своего типа.

Система Delphi предоставляет также большое количество уже описанных типов записей, например:

Пример использования записи

1. type

2. TPoint = record

3. X: Longint;

4. Y: Longint;

5. end;

6. TRect = record

7. case Integer of

8. 0: (Left, Top, Right, Bottom: Integer);

9. 1: (TopLeft, BottomRight: TPoint);

10. end;

Здесь тип TPoint является фиксированной записью, а тип TRectвариантной записью.

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

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

Структура условного оператора представляет собой следующий вид:

if условие then список операторов 1 else список операторов 2;

где if, then, else - зарезервированные слова, по русски означающие - если, то, иначе.

Условие выбора - это логическое выражение (в основном используются операторы сравнения).

список операторов 1 и список операторов 2 - любые операторы языка Delphi. В состав списка операторов может входить один оператор или несколько, тогда это должен быть составной оператор. Один из выборов может отсутствовать, (быть пустым). Обычно это выбор действий расположенный после слова else. В такой ситуации, при условии равном FALSE, управление передается операторам следующим сразу за условным оператором.

Алгоритм работы условного оператора имеет следующий вид. Первоначально вычисляется выражение условие. Получаем результат логического типа. Если результат равен TRUE, то выполняются операторы входящие в список операторов 1, а список операторов 2 пропускается. Если результат равен FALSE, то происходит обратное действие - выполняются операторы входящие в список операторов 2, а список операторов 1 пропускается.

Еще важный момент перед словом else не ставиться точка c запятой.

Давайте расположим на форме кнопку Button и компонент Label. Для кнопки напишем такой обработчик события:

procedure TForm1.Button1Click(Sender: TObject);

var

i: integer;

begin

i:=2;

if i = 1 then

begin

Label1.Caption:= 'Переменная i равна 1';

Form1.Color:= clRed

end else

begin

Label1.Caption:= 'Переменная i не равна 1';

Form1.Color:= clGray

end

end;

Изменяя значение переменной i с 1 на двойку мы увидим работу условного оператора в действии. Как результат будет выбор цвета формы и название заголовка компонента label.

Если условие сложное и само в себе включает несколько условий, то их необходимо объединить путем организации вложений условных операторов или используя логические операторы and, or, xor, not.

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

if (i > y) and (j = 55) then...

Запись без скобок будет ошибочной, так как компилятор воспримет его следущим образом:

if i > (y and j) = 55 then...

Список операторов 1 и список операторов 2 могут содержать любые операторы, в том числе содержать условные операторы. В свою очередь любой из вложенных может содержать в себе еще условные операторы. Бывает не у всех вложенных условных операторах имеется слово else. В этих случаях следует исходить из того, что else всегда ассоциируется с ближайшим к нему (сверху по тексту) словом if, которое еще не связано с else:

var

i, y, j, k: integer;

begin

// определение значений переменных i, y, j, k

if (i > y) and (j = 55) then

if k > y then

k:= y

else // относиться к if k > y

y:= k;

end;

С помощью комментария можно показывать к какому if относиться else. Это подсказка себе на будущее для компилятора она не имеет никакого значения. Писать вложенных друг в друга составные операторы следует с особой тщательностью, аккуратно, не допуская ошибок и неточностей.




Дата добавления: 2014-12-19; просмотров: 59 | Поможем написать вашу работу | Нарушение авторских прав




lektsii.net - Лекции.Нет - 2014-2024 год. (0.016 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав