КАТЕГОРИИ: Архитектура-(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.
Приведем код модуля. 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.
Вернемся к нашему заданию. Установим на форме 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; Просмотров: 402; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |