Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Структурированнные данные




Вопросы и упражнения.

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

2. Создайте процедуру write для вывода текста на холст формы.

3. Создайте программу решения системы линейных уравнений методом Гаусса.

4. Вычислите сумму первых n гармональных чисел. N вводится в текстовое поле(edit).

5. Вычислите след матрицы A(n,m).

6. Напишите программу сложения 2 матриц.

 

В Delphi как и в Турбо Паскаль определены следующие структурированные данные: массивы, записи(record), множества(Set of тип), файлы, объекты(object), регистровый тип. Все эти типы были нами рассмотрены. Теперь рассмотрим примеры на Delphi (см. рис.51).

Пример 1. Создайте новый тип klss типа запись, состоящее из полей fam,dr,adress. Напишите программу вывода сведений о классе в списки listbox1, listbox2, listbox3.

Установаим на форме метки с надписями Фамилия И.О., Дата рождения, Aдрес и три списка Listbox1, listbox2,listbox3. Программируем щелчок мыши по кнопке.

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls;

type

TForm1 = class(TForm)

Button1: TButton;

ListBox1: TListBox;

ListBox2: TListBox;

ListBox3: TListBox;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

procedure Button1Click(Sender: TObject);

private

{Private declarations }

public

{Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);

{Создание типа klss}

type klss=record

fam:string;

dr:string;

adress:string;

end;

{описание массива klass типа klss}

var klass:array[1..20] of klss;

i:byte;

begin

klass[1].fam:='Иванов Саша';

klass[1].dr:='12/11/1992';

klass[1].adress:='Ленина 56,д.25, кв.19';

klass[2].fam:='Сидоров Иван';

klass[2].dr:='12/01/1992';

klass[2].adress:='Ленина 86,д.25.,кв.38';

klass[3].fam:='Петров Коля';

klass[3].dr:='12/11/1991';

klass[3].adress:='Пушкина 12,д.26,кв.59';

klass[4].fam:='Николаев Игорь';

klass[4].dr:='12/10/1991';

klass[4].adress:='Пушкина 112,д.26,кв. 203';

listbox1.Font.Size:=12;listbox1.Font.Style:=[fsbold];

listbox2.Font.Size:=12;listbox2.Font.Style:=[fsbold,fsitalic];

listbox3.Font.Size:=12;listbox3.Font.Style:=[fsbold];

listbox1.Clear; listbox2.Clear; listbox3.Clear;

for i:=1 to 4 do

begin

listbox1.Items.Add(klass[i].fam);

listbox2.Items.Add(klass[i].dr);

listbox3.Items.Add(klass[i].adress);

end;

end;

end.

Приведем кадр выполнения программы.

Рис.51. Рис.52.

Пример 2. Даны 2 множества A и B символов. Найдите пересечение, объединение, разность этих множеств. Исходные множества и результаты отобразите в списках.

Отметим, что в Delphi и в Turbo Pascal множества определены для байтовых чисел и символов.

Множества описываются в разделе описания переменных.

Var a, b: set of byte(char)

Для простоты ограничимся множествами A=[‘а’, ‘б’, ‘с’, ‘д’, ‘е’, ‘ф’, ‘у’, ‘к’, ‘л’] и B=[‘с’, ‘д’, ‘п’, ‘р’, ‘у’, ‘ц’, ‘щ’, ‘ц’, ‘а’].

Установим на форме пять списков и кнопку. Присвоим заголовку формы значение «Действия над множествами» и вспомним основные операции над множествами.


 

Таблица 2.15.

Проверка принадлежности элемента множеству ‘a’ in C k in A, где к байтовое число, А- множество байтовых чисел Сложение (Объединение) множеств A+B
Умножение (Пересечение) множеств A*B
Разность(Дополнение) A – B

 

Приведем код модуля.

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls;

type

TForm1 = class(TForm)

ListBox1: TListBox;

ListBox2: TListBox;

ListBox3: TListBox;

ListBox4: TListBox;

ListBox5: TListBox;

Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel;

Label5: TLabel;

Button1: TButton;

procedure FormCreate(Sender: TObject);

procedure Button1Click(Sender: TObject);

private

{Private declarations }

public

{Public declarations }

end;

var

Form1: TForm1;

{здесь объявлены глобальные символьные множества}

A,B,C,P,R:set of char;

k:char;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);

begin

A:=['а', 'б', 'с', 'д', 'е', 'ф', 'у', 'к', 'л'];

B:=['с', 'д', 'п', 'р', 'у', 'ц', 'щ', 'ц', 'а'];

listbox1.Clear;

listbox2.Clear;

listbox1.Font.Size:=14;

listbox2.Font.Size:=14;

listbox3.Font.Size:=10;listbox3.Font.Style:=[fsbold];

listbox4.Font.Size:=14;

listbox5.Font.Size:=14;

for k:='а' to 'я' do

begin

if k in A then listbox1.Items.Add(k);

if k in B then listbox2.Items.Add(k);

end;

end;

procedure TForm1.Button1Click(Sender: TObject);

begin

c:=a+b;

p:=a*b;

r:=a-b;

listbox3.clear;

listbox4.clear;

listbox5.clear;

{Вспомните цикл для по символьному параметру}

for k:='а' to 'я' do

begin

if k in C then listbox3.Items.Add(k);

if k in P then listbox4.Items.Add(k);

if k in R then listbox5.Items.Add(k);

end;

end;

end.

Пример 3. Cоставьте программу сохранения целого числа в файле, добавления чисел в этот файл и чтения и просмотра чисел в элементе список.

При изучении свойств объектов memo и richedit мы рассмотрели методы сохранения и загрузки текстов. В delphi также как в Паскале определены типизованные, нетипизованные файлы. Ниже приводятся основные процедуры и функции работы с файлами. Типы числовых файлов те же самые, что типы самих чисел. Например,

f:file of integer;

f1:file of byte;

f2:file of currency;

f3:file of real;

f4:file of cardinal;

Рис.53. Рис.54.

Текстовый и символьный файлы описываются следующим образом:

f5: textfile;

f6: file of char;

Нетипизованные файлы описываются так: var g: file;

Таблица 2.16.

Метод(функции, процедуры) Назначение
Assignfile(f,'имя_файла') Назначает логическому файлу f физический файл
rewrite(f) Открывает файл для записи
reset(f) Открывает файл для чтения
eof(f) Возвращает true при достижении конца файла
filesize(f) Возвращает размер файла в байтах
seek(f,filesize(f)) Устанавливает головку чтения-записи на конец файла
seek(f,N) Устанавливает головку чтения-записи на N-й байт
write(f,t1,..,tn) Запись в файл значений переменных t1,.., tn
read(f,t1,.., tn) Чтение из файла значений переменных t1,.., tn
Append(g) Открытие текстового файла для добавления записей
Reset (f,n) Открыть файл для чтения с размером записи (record size) n.
Rewrite(f,n) Открыть файл для сохранения с размером записи (record size) n.

 

Вернемся к нашему заданию. Установим на форме 3 кнопки и listbox для просмотра файла (см. рис.54).

unit Unitfile;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls;

type

TForm1 = class(TForm)

Button1: TButton;

Button2: TButton;

ListBox1: TListBox;

Button3: TButton;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

private

{Private declarations }

public

{Public declarations }

end;

var

Form1: TForm1;

f: file of integer;

t:integer;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);

{процедура сохранения случайного числа}

begin

assignfile(f,'tt.dat');

rewrite(f);

t:=random(100)+234;

write(f,t);

closefile(f);

end;

procedure TForm1.Button2Click(Sender: TObject);

{процедура чтения чисел из файла}

begin

listbox1.Clear;

assignfile(f,'tt.dat');

reset(f);

while not eof(f) do

begin

read(f,t);

form1.listbox1.items.Add(inttostr(t));

end;

closefile(f);

end;

procedure TForm1.Button3Click(Sender: TObject);

{процедура добавления случайного числа}

begin

assignfile(f,'tt.dat');

reset(f);

seek(f,filesize(f));

t:=random(500);

write(f,t);

closefile(f);

end;

end.

В результае запуска программы мы можем добавить целые случайные числа, вывести содержимое файла в элемент listbox1 (см. рис.55).

Пример 4. Сохраните в нетипизованном файле сведения о студентах:

Фио, группа, курс, возраст (количество полных лет), дата рождения, адрес.

Установим на форме метки и текстовые поля, также 2 кнопки для записи в файл и чтения из него.

Рис.55. Рис.56.

Приведем код модуля. Обратите внимание на то, что в каждой процедура нам пришлось объявить локальные типы и переменные.

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls, ComCtrls;

type

TForm1 = class(TForm)

Edit1: TEdit;

Edit2: TEdit;

Edit3: TEdit;

Edit4: TEdit;

Edit5: TEdit;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

Edit6: TEdit;

Label6: TLabel;

Button1: TButton;

Button2: TButton;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

private

{Private declarations}

public

{Public declarations}

end;

var

Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);

{процедура записи данных в файл}

type student=record

Fio:string[30];

group: string[5];

kurs:byte;

vozr:byte;

datar:string[10];

adress: string[50];

end;

var ankdat:student;

f:file;

tt:longint;

begin

ankdat.Fio:=edit1.Text;

ankdat.group:=edit2.text;

ankdat.kurs:=strtoint(edit3.text);

ankdat.vozr:=strtoint(edit4.text);

ankdat.datar:=edit5.Text;

ankdat.adress:=edit6.Text;

assignfile(f,'stud.dat');

rewrite(f,98);

seek(f,1);

blockwrite(f,ankdat,1);

closefile(f);

end;

procedure TForm1.Button2Click(Sender: TObject);

{процедура чтение данных из файла и представления данных в текстовых полях}

type student=record

Fio:string[30];

group: string[5];

kurs:byte;

vozr:byte;

datar:string[10];

adress: string[50];

end;

var ankdat:student;

f:file;

i:integer;

begin

assignfile(f,'stud.dat');

reset(f,98);

seek(f,1);

blockread(f,ankdat,1);

closefile(f);

edit1.Text:=ankdat.Fio; edit2.text:=ankdat.group;

edit3.text:=inttostr(ankdat.kurs); edit4.text:=inttostr(ankdat.vozr);

edit5.Text:=ankdat.datar;

edit6.Text:=ankdat.adress;

end;

end.

Приведем кадр выполнения программы.

Рис.57.




Поделиться с друзьями:


Дата добавления: 2014-01-05; Просмотров: 379; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.092 сек.