Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
5.doc
Скачиваний:
9
Добавлен:
30.04.2022
Размер:
311.81 Кб
Скачать

Контрольные вопросы

1. Каким образом можно поместить графическое изображение в окно программы?

2. Какие способы построения графиков вы знаете?

3. Какой компонент можно использовать для построения графиков?

4. Как можно организовать анимационное изображение?

5. Какой компонент можно использовать для вывода рисунков?

6. Как в Delphi можно создать «мультик»?

Варианты заданий

График функции y=y(x)

Функция y(x)

1

sin(x)

2

cos(x)

3

sin(x)+sin(2x)

4

sin(x)-sin(2x)

5

sin(x)+cos(2x)

6

sin(x)-cos(2x)

7

sin(x)*exp(x)

8

cos(x)*exp(x)

9

sin(x)*exp(-x)

10

cos(x)*exp(-x)

Практическое занятие № 13

РАЗРАБОТКА ПРОГРАММ, ИММИТИРУЮЩИХ РАБОТУ БАЗЫ ДАННЫХ, С ДАННЫМИ КОМБИНИРОВАННОГО ТИПА

Цель занятия: разработка программ, использующих структуры данных комбинированного типа.

Задание: разработать структуру записи для представления информации, характеризующей какой - либо объект реальной действительности в соответствии с индивидуальным вариантом. Используя ввод данных с клавиатуры ввести 5-7 записей, найти и выдать на экран информацию по задаваемому пользователем значению одного из полей.

Краткие теоретические сведения

Комбинированный тип данных или Запись (record) – это структурированный тип данных, состоящих из фиксированного числа элементов одного или нескольких различных типов. Описание типа данных Запись начинается словом record и заканчивается словом end. Между ними заключен список элементов, называемых полями, с указанием их имен (или идентификаторов) и имени типа. Например,

Type TPerson = record

FirstName :string[20];

LastName : string[20];

BirthYear : Integer;

end;

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

Var Friend : TPerson;

Доступ к содержимому записи осуществляется посредством её имени и имени поля, между которыми ставится разделительная точка. Такая комбинация называется составным именем. Например, чтобы получить доступ к полям записи Friend, нужно записать:

Friend.FirstName := 'Alexander';

Friend.LastName := 'Ivanov';

Friend.BirthYear := 1991;

Обращение к полям записи имеет несколько громоздкий вид, что особенно неудобно при использовании мнемонических идентификаторов длиной более 5 символов. Для решения этой проблемы предназначен оператор with, который имеет следующий шаблон:

with <имя записи> do

<оператор>;

Однажды указав имя записи в операторе with, можно работать с именами ее полей как с обычными переменными, т.е. без указания имени записи перед именем поля. Например,

with Friend do

begin

FirstName := 'Alexander';

LastName := 'Ivanov';

BirthYear := 1991;

end;

После выполнения этого оператора значения полей записи Friend станут равными значениям соответствующих полей записи BestFriend.

Задание: разработать структуру записи для представления информации, характеризующей преподавателей учебного заведения. Свойства объекта: Фамилия, имя, отчество, дата рождения, домашний адрес, учебная дисциплина. Выдать сведения о преподавателях, родившихся в ноябре месяце.

Листинг модуля программы

unit Unit1;

implementation

{$R *.dfm}

type

TDate = record //Запись для хранения даты рождения

Den : 1..31;

Mes : 1..12;

God : 1910..1985;

end;

Tprep = record {Запись для хранения сведений о преподавателях}

Family : string[15];

Name : string[20];

Otches : string[18];

Drozhd : TDate;

Address: string;

Diszip : string[50];

end;

TSpisPrep = array [1..100] of Tprep;

var

SpisPr: TSpisPrep; {Массив для хранения сведений о преподавателях}

procedure TForm1.FormActivate(Sender: TObject);

Begin //Заголовки столбцов StringGrid1

StringGrid1.Cells[0,0] := 'Фамилия';

StringGrid1.Cells[1,0] := 'Имя';

StringGrid1.Cells[2,0] := 'Отчество';

StringGrid1.Cells[3,0] := 'День';

StringGrid1.Cells[4,0]:='Месяц';

StringGrid1.Cells[5,0]:='Год';

StringGrid1.Cells[6,0]:='Адрес';

StringGrid1.Cells[7,0]:='Дисциплина';

//Заголовки столбцов StringGrid2

StringGrid2.Cells[0,0]:='Фамилия';

StringGrid2.Cells[1,0]:='Имя';

StringGrid2.Cells[2,0]:='Отчество';

StringGrid2.Cells[3,0]:='День';

StringGrid2.Cells[4,0]:='Месяц';

StringGrid2.Cells[5,0]:='Год';

StringGrid2.Cells[6,0]:='Адрес';

StringGrid2.Cells[7,0]:='Дисциплина';

end; {TForm1.FormActivate}

procedure TForm1.BitBtn1Click(Sender: TObject);

var i, k :byte;

begin

for i:=1 to StringGrid1.RowCount-1 do

Family := StringGrid1.Cells[0,i];

Name := StringGrid1.Cells[1,i];

Otches := StringGrid1.Cells[2,i];

Drozhd.Den := StrToInt(StringGrid1.Cells[3,i]);

Drozhd.Mes := StrToInt(StringGrid1.Cells[4,i]);

Drozhd.God := StrToInt(StringGrid1.Cells[5,i]);

Address := StringGrid1.Cells[6,i];

Diszip := StringGrid1.Cells[7,i];

end;

k := 1;

for i := 1 to StringGrid1.RowCount-1 do

if SpisPr[i].DRozhd.Mes = 11

then begin

with Pr[i] do begin

StringGrid2.Cells[0,k] := Family;

StringGrid2.Cells[1,k] := Name;

StringGrid2.Cells[2,k] := Otches;

StringGrid2.Cells[3,k] := IntToStr(Drozhd.Den);

StringGrid2.Cells[4,k] := IntToStr(Drozhd.Mes);

StringGrid2.Cells[5,k] :=IntToStr(Drozhd.God);

StringGrid2.Cells[6,k] := Address;

StringGrid2.Cells[7,k] := Diszip;

end;

StringGrid2.RowCount := StringGrid2.RowCount+1;

k:=k+1;

end;end; {TForm1.BitBtn1Click}

procedure TForm1.BitBtn2Click(Sender: TObject);

{Процедура для добавления новой строки в таблицу}

begin

StringGrid1.RowCount:=StringGrid1.RowCount+1;

end; {TForm1.BitBtn2Click }end.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]