Программирование в среде Delphi

Понятия и определения Delphi. Ознакомление с технологией визуального проектирования. Создание простой формы в программе. Задачи с использованием функций case, if. Работа с массивами данных. Программные инструкции read, readln, write и writeln в Delphi.

Рубрика Программирование, компьютеры и кибернетика
Вид методичка
Язык русский
Дата добавления 24.03.2015
Размер файла 117,7 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

10. В массиве фамилий разделите фамилии, заканчивающиеся на “ва” и на “ов”, остальные фамилии выделите в отдельный блок. Напечатайте их отдельными столбцами в поле меток. Оформите работу как проект Delphi.

9. Лабораторная работа № 6. Обработка массивов и компонента StringGrid

Цель работы.

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

Общие сведения.

Исходные данные для решения многих задач удобно представлять в табличной форме. Колонки и строки таблицы, как правило, состоят из однородной информации, поэтому в программе для хранения и обработки табличных данных имеет смысл использовать массивы. Таблица может быть представлена как совокупность одномерных массивов строк или столбцов, а также как двумерный массив.

В общем виде описание одномерного массива имеет вид:

array[<индекс начала> .. <индекс конца>] of <тип>;

где:

<индекс начала> - целое число, номер первого элемента массива; -

<индекс конца> - целое число, номер последнего элемента массива;

<тип> - тип элементов массива.

В общем виде описание двумерного массива имеет вид:

array[<индекс начала1> .. <индекс конца1> , <индекс начала2> .. <индекс конца2> ] of <тип>;

где:

<индекс начала1>,<индекс конца1>,<индекс начала2>,<индекс конца2> - целые константы, определяющие диапазон изменения индексов и, следовательно, число элементов массива.

<тип> - тип элементов массива.

Массив может быть описан как в области описания типов type, так и в области описания переменных var. Пример 1:

type

aa = array [1..5] of integer; {aa- имя типа массив целых чисел}

var

a, b : aa; {переменные a, b объявлены как массивы типа -аа}

Пример2:

var

a, b : array [1..5] of integer; {переменные a, b объявлены как массив целых чисел}

Пример3:

type

xx = array [1..5 , 1..4] of real ; {объявлен тип - двумерный массив вещественных чисел , размерности 5 х 4}

var

c,d : xx; {переменные c,d объявлены как массив типа хх}.

Компонент StringGrid (строковая таблица) добавляется к форме также как и другие, известные нам по предыдущим работам, компоненты. Его значок находится на дополнительной (Additional) странице палитры компонентов. Ниже перечислены некоторые свойства компонента StringGrid .

Задание на работу.

Создать проект, обрабатывающий результаты спортивных соревнований. Исходные данные представлены в таблице.

Результаты зимней олимпиады в Нагано (Япония,1998г.)

Страна

Количество медалей

золотых

серебряных

бронзовых

Австрия

3

5

2

Германия

12

9

8

Италия

2

6

2

Канада

6

5

4

Нидерланды

5

4

2

Норвегия

10

10

5

Россия

9

6

3

США

6

3

4

Финляндия

2

4

6

Швейцария

2

2

3

Япония

5

1

4

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

Name Tabl

ColCount 6

RowCount 12

FixedCols 0

FixedRows 1

Options.goEditing TRUE

DefaultColWidth 65

DefaultRowHeight 14

GridLineWidth 1

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

procedure TForm1.FormActivate(Sender: TObject);

begin

tabl.cells[0,0]:= `Страна';

tabl.cells[1,0]:= `Золотых';

tabl.cells[2,0]:= `Серебряных';

tabl.cells[3,0]:= `Бронзовых';

tabl.cells[4,0]:= `Всего';

tabl.cells[5,0]:= `Очков';

tabl.cells[0,1]:= `Австрия';

tabl.cells[0,2]:= `Германия';

tabl.cells[0,3]:= `Италия';

tabl.cells[0,4]:= `Канада';

tabl.cells[0,5]:= `Нидерланды';

tabl.cells[0,6]:= `Норвегия';

tabl.cells[0,7]:= `Россия';

tabl.cells[0,8]:= `США';

tabl.cells[0,9]:= `Финляндия';

tabl.cells[0,10]:= `Швейцария';

tabl.cells[0,11]:= `Япония';

end;

Программа обработки исходной таблицы, текст которой приведен ниже, запускается в результате Щелчка на командной кнопке Итоги(Button1).

procedure TForm1.Button1Click(Sender: TObject);

var

c, r: integer;

s: integer;

p: integer;

m: integer;

buf:array[0..6] of string;

i: integer;

begin

for r:= 1 to tabl.rowcount do

begin

s:=0;

{}

for c:=1 to 3 do

if tabl,cells[c,r] <> ` `

then s:= s + StrToInt(tabl.cells[c,r])

else tabl.cells[c,r]:= ` `;

{}

p:= 7*StrToInt(tabl.cells[1,r] ) + 6*StrToInt(tabl.cells[2,r]) +

5*StrToInt(tabl.cells[3,r]);

{}

tabl.cells[4,r]:= IntToStr(s);

tabl.cells[5,r]:= IntToStr(p);

end;

{}

for r:=1 to tabl.rowcount - 1 do

begin

m:= r; {}

for i:= r to tabl.rowcount - 1 do

if StrToInt(tabl.cells[5,i]) > StrToInt(tabl.cells[5,m])

then m:= i;

if r <> m then

begin {}

for c:= 0 to 5 do

begin

buf[c] := tabl.cells[c,r];

tabl.cells[c,r] := tabl.cells[c,m];

tabl.cells[c,m] := buf[c];

end;

end;

end;

end;

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

Задания для самостоятельного выполнения. 1.Определить общее количество вносимых удобрений на 1 га площади посева сельхоз культур и суммарную стоимость удобрений если известно, что стоимость 1 кг фосфорных удобрений равна 0.85 сомони, 1 кг калийных удобрений равно 0.40 сомони, 1 кг азотных удобрений равна 0,25 сомони. Количество внесенных удобрений (в кг хозяйствами за сезон) сведено в таблицу.

фосфор

калий

азот

общ.кол

сумма

1 бригада

987

1348

1943

2 бригада

675

1165

1540

3 бригада

849

1270

1687

2.Расчитать средний балл и назначить стипендию успевающим студентам. Стипендия назначается только студентам, не имеющим тройки по результатам экзаменационной сессии. Студентам, сдавшим сессию только на отлично, назначается повышенная стипендия - на 50% больше обычной. Результаты сессии приведены ниже.

физика

химия

ин.язык

общ.бал

стипенд

Азизов А.Р.

3

4

4

Баротов И.Н.

5

5

5

Валиев А.С.

5

4

4

Гафуров Б.Г.

4

2

3

Джабаров И.С.

4

5

5

Икромов Р.З.

5

4

3

Комилов Б.Ю.

4

5

4

3.В таблице приведен результат месячной работы нескольких бригад токарного цеха, выпускающих четыре вида деталей. Необходимо составить проект для ввода данных, реакцию на нажатие клавиши «результат» по которой происходит вычисление общего количества деталей и суммарная выработка изделий, если известно, что первый вид деталей оценивается в 4.0 дирам, второй вид - 3 дирама, третий вид - 21дирам и 4 вид изделий оценивается в 9 дирам.

издел_1

издел_2

издел_3

издел_4

общ.кол.

сумма

1 бригада

2987

2348

2943

12786

2 бригада

1675

1365

1540

27841

3 бригада

4849

4270

3687

15739

4. Расчитать средний балл и сумму баллов полученных при вступительных экзаменах. Известно, что для энергетического факультета при расчете баллов каждый правильный ответ умножается на два, по физике на 1,5 а баллы по дисциплинам суммируются с коэффициентом 1.0. Фрагмент результатов вступительных экзаменов приведен ниже.

физика

химия

матем.

родн.яз.

сумм.бал

ср.балл

Азизов А.Р.

23

44

41

34

Баротов И.Н.

50

35

45

41

Валиев А.С.

25

14

34

23

Гафуров Б.Г.

14

42

13

10

Джабаров И.С.

24

35

15

9

Икромов Р.З.

15

14

23

12

Комилов Б.Ю.

14

5

14

22

эл.энер.

газ

вода

общ.кол.

сумма

1 предприятие

129870

113480

9194300

2 предприятие

675000

116560

8154000

3 предприятие

284900

127000

7168700

5.Расчитать сумму платежей за год компании, если известны расходы газа, электроэнергии и воды отдельных его предприятий. Оплата производится согласно следующему тарифу: за 1куб.м. газа 0.08 центов, за 1квт.час электроэнергии - 0.02 цента и за 1 куб.м. воды - 0.001центов.

6.Определить площадь поперечного сечения (S в мм.кв), диаметр (d в мм.) и вес(G в кг.) одного метра провода круглого сечения, используемого в электрической цепи при различных токах (в a) нагрузки, приняв допустимую плотность тока для алюминиевого провода 3.5 а/мм.кв. В расчетах используйте формулы d=( 4*S/ 3.14)^(1/ 2) и G = S/g , g - удельный вес алюминия принять равным 0.86 г/ см.куб.

S

d

G

5

10

15

20

25

30

7.Определить вес скирды различной формы и для различного вида сена. Результаты расчета свести в таблицу.

вид сена

вид укладки.

Перекид П м.

Ширина Ш м.

длина окр. Д м.

вес 1куб.м. кг.

вес скирды кг.

луговое

ск.кругл.верх.

10.1

4.9

15

50

степное

скирда плоск.

12.4

5.7

18.6

60

злаковое

ск.остро.верх.

8.6

3.4

12.8

67

Для определения объема ( в куб.м.) скирды на практике используются следующие формулы: скирда островерхая - (П*Ш)*Д/4; для кругловерхой скирды - (П*0.52-Ш*0.46)*Ш*Д; для плоской скирды (П*0.56 - Ш*0.55)*Ш*Д.

8.Расчитать стоимость каждого вида кормов, а также общую стоимость отдельного вида кормов с учетом стоимости переработки и стоимости их доставки. Расчеты свести в таблицу.

вид кормов

кол-во корм.(ц)

стоим. 1ц.(сом)

стоим. всего

Стоимость переработ.

Стоимость доставки.

общая стоимость

зернофураж

2120

7-00

3000

2600

зерноотходы

290

2-75

600

300

сено

8165

2-60

-

4200

сенаж

4354

1-83

-

1200

корнеплоды

1640

3-29

300

400

картофель

700

6-63

-

500

силос

4383

1-83

-

3100

9.Расчитать рентабельность производства продукции животноводства.

Наименование продукции

кол-во продук. (ц)

себестоим. 1ц.прод. (сом)

себесто. всей пр. (2*3)

средняя цена реализ.1ц.пр. (сом)

сумма от реализац. (2*5)

Прибыль (6-4)

1

2

3

4

5

6

7

молоко

2165,6

19,56

18,94

мясо крупн. рогат. скота

685,8

131,75

130,60

мясо птицы

48,3

137,35

131,75

мясо свиней

388,9

175,54

125,65

10. Лабораторная работа №6. Создание файла

Цель работы.

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

Общие сведения.

Файл - это структура данных, представляющая собой последовательность компонентов одного типа. Типом компонентов может быть любой тип Delphi, кроме файлов. Как и любая переменная программы, файл должен быть объявлен в разделе описания переменных. В зависимости от способа объявления можно выделить три вида файла.

1) типизированные файлы.

При объявлении файла указывается тип его компонентов.

<имя>: file of <тип компонентов>;

Примеры:

var

satr: file of char; {символьный файл}

Car: file of real; {файл с вещественными компонентами}

aa: file of ff ; { ff - тип пользователя, который объявляется в разделе type}.

2) текстовые файлы.

<имя>: TextFile;

Пример:

var

вв: TextFile; {текстовый файл, TextFile - обозначение типа}.

3) нетипизированные файлы (определяются типом File).

Пример:

var

сс: File;

Нетипизированные файлы отличаются тем, что для них не указан тип компонентов. Отсутствие типа делает эти файлы, с одной стороны, совместимыми с любыми другими файлами, а с другой - позволяет организовать высокоскоростной обмен данными между диском и памятью. При работе с нетипизированными файлами могут применяться все процедуры и функции, доступные типизированным файлам, за исключением Read и Write, которые заменяются соответственно высокоскоростными процедурами BlockRead и BlockWrite.

Объявление файловой переменной задает только тип компонентов файла. Чтобы программа могла выводить данные в файл или считывать данные из файла, необходимо указать конкретный файл, т. е. задать имя файла на диске. Имя файла задается процедурой AssignFile, связывающей файловую переменную с конкретным внешним файлом (файлом на диске), который создается или уже существует.

Описание процедуры имеет вид:

AssignFile(var f , <имя файла>: string);

Примеры:

AssignFile(f, `с:\result.txt');

AssignFile(f, `с\star\work\natj.txt');

fname:= `kor.txt';

AssignFile(f, fname);

Непосредственно вывод в текстовый файл осуществляется при помощи инструкций write или writeln. В общем виде эти инструкции записываются следующим образом: write(<Файловая переменная>, <Список вывода>); writeln(<Файловая переменная>, <Список вывода>); <Файловая переменная>- переменная, идентифицирующая файл, в который выполняется вывод. <Список вывода>- разделенные запятыми имена переменных, значения которых нужно вывести в файл. Помимо имен переменных в список вывода можно включать строковые константы.

write(f, `корни уравнения =',x1,x2);

Различия между инструкциями write и writeln состоит в том, что инструкция writeln после вывода всех значений, указанных в списке вывода, записывает в файл символ “новая строка”.

Чтобы открыть файл в режиме создания нового файла или замены существующего, необходимо вызвать процедуру Rewrite(f), где f - файловая переменная типа TextFile.

Чтобы открыть файл в режиме добавления к уже существующим данным, находящимся в этом файле, необходимо вызвать процедуру Append (f). Процедура Append (f) применяется только в текстовых файлах.

Попытка открыть файл может завершиться неудачей и вызвать ошибку времени выполнения программы. При запуске программы и из Delphi и из Windows в случае ошибки появляется соответствующее окно сообщения. Программа может взять на себя задачу контроля за результатом выполнения инструкции открытия файла. Это можно сделать, проверив значение функции IOResult (Input-Output Result - результат ввода-вывода). Функция IOResult возвращает 0, если операция ввода/вывода завершилась успешно; в противном случае - код ошибки не ноль. Для того чтобы программа смогла проверить результат выполнения операции ввода/вывода, нужно разрешить ей это сделать. Для этого надо перед инструкцией вызова открытия файла поместить директиву компилятору - {$I-}, которая запрещает автоматическую обработку ошибок ввода/вывода. Эта директива сообщает компилятору, что программа берет на себя контроль ошибок. После инструкции открытия файла следует поместить директиву {$I+}, восстанавливающую режим автоматической обработки ошибок ввода/вывода

Перед завершением работы программа должна закрыть все открытые файлы. Это делается вызовом процедуры Close(f).

Задание к работе.

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

Для ввода данных в диалоговом окне необходимо создать три поля редактирования - Edit1 для ввода дней, Edit2 для ввода номера месяца и Edit3 для ввода температуры. Для записи сформированных данных в файл используем компоненту Button1 с заголовком Добавить.

Свойству Enabled этой кнопки нужно присвоить значение FALSE. Для открытия файла базы данных воспользуемся процедурой TForm1.FormActivate, которая запускается автоматически при активизации формы приложения. Если операция открытия файла завершается успешно, то процедура делает доступным кнопку Добавить. В противном случае кнопка остается недоступной и нужно просто закрыть окно программы. Процедура открытия файла:

procedure TForm1.FormActivate(Sender: TObject);

begin

AssignFile(f, `с:\ weather.db');

{$I-}

Append (f);

if IOresult = 0

then Button1. Enabled := TRUE

else

begin

Rewrite(f);

if IOresult = 0

then Button1.Enabled:= TRUE

else ShowMessage(`Ошибка создания файла');

end;

end;

Если все поля редактирования нашей формы заполнены то при щелчке на кнопке Добавить введенная информация записывается в базу данных - файл weather.db. Процедура этого события имеет следующий вид:

procedure TForm1.ButtonClick(Sender: TObject);

begin

if (length(Edit1.text)=0)

or (length(Edit2.text)=0)

or (length(Edit3.text)=0)

then ShowMessage(`Ошибка ввода данных.' + #13 + 'Все поля должны быть заполнены.')

else writeln(f, Edit1.text, ' ', Edit2.text, ' `, Edit3.text);

end;

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

procedure TForm.FormClose(Sender : TObject; var Action: TCloseAction);

begin

CloseFile(f);

end;

Переменную f следует описать в разделе описания переменных модуля как f: TextFile, так как она используется как общая переменная во всех приведенных выше процедурах.

Задания для самостоятельного выполнения.

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

2.Разработать диалоговое окно позволяющий создать файл, содержащий сведения о телефонах абонентов. Каждая запись имеет структуру - фамилия абонентов, год установки телефона, номер телефона.

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

4.Создать проект позволяющий сформировать файл, содержащий сведения о ходе работ по вспашке земли в хозяйстве. Структура записи: фамилия тракториста, площадь земли вспаханной за день, дата.

5.Создать диалоговое окно позволяющий сформировать файл, имеющий следующую структуру - номер машины, сведение о пробеге автомобиля, дата проверки.

6.Разработать проект позволяющий создать файл, содержащий сведения о товарах, хранящихся на складе: шифр товара, количество единиц, стоимость одной единицы.

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

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

9.Разработать диалоговое окно позволяющий создать файл содержащий результаты наблюдения за сушкой древесины в сушильной камере. Записи файла имеют следующие поля - время, температура и влажность древесины.

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

Файл должен содержать следующие данные: шифр коровы, количество молока за день, дата.

12. Лабораторная работа № 7. Ввод из файла

Цель работы.

Целью настоящей работы является получение практических навыков чтения (ввода) данных из существующего файла для дальнейшей их обработки

Общие сведения.

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

Для этого нужно объявить файловую переменную типа TextFile, назначить ей с помощью AssignFile имя файла, из которого будут считываться данные, открыть файл для чтения процедурой reset и прочитать (ввести) данные, используя инструкцию read или readln .

var

f: TextFile;

begin

AssignFile(f, c:\ data.txt);

Reset(f);

label m;

var

f: TextFile;

fname: string[80]; {для записи краткого или полного имени файла}

res: integer; {для хранения значения функции IOresult}

answ: word: {ответ пользователя}

begin

fname:= `c:\ data.txt';

AssignFile(f, fname);

repeat

{$I-}

Reset(f); {открытие файла для чтения}

{$I+}

res:= IOresult; {При успешном завершении открытия файла IOresult := 0}

if res <> 0

then answ:= MessageDlg(`Ошибка открытия ' + fname + #13 + `Повторить попытку ? ', mtWarning, [mbYes, mbNo], 0;);

until (res = 0) OR (answ = mbNo);

if res <> 0 then goto m;

{здесь инструкции программы, которые выполняются в случае успешного открытия файла}

m:

Общий вид инструкций read и readln : read(<Файловая переменная>, <Список переменных> ); readln(<Файловая переменная>, <Список переменных>); <Файловая переменная> - переменная типа TextFile ; <Список переменных> - имена переменных разделенных запятыми. Отличие инструкции readln от read состоит в том, что после считывания очередного числа и присвоения его значения последней переменной списка инструкции readln происходит переход к следующей строке файла. Процедура

procedure Simp;

var

f: TextFile;

a, b, c: integer;

begin

assignFile(f, `c: \ data.txt');

reset(f);

read(f, a);

readln(f, b);

read(f, c);

end;

переменная a получит значение 12, переменная b получит значение 5 , а переменная с получит значение равное15.

Следует отметить, что для определения конца файла используется функция EOF(End Of File - конец файла). Функция имеет один параметр - файловую переменную. Значение функции EOF равно FALSE, если прочитанный элемент данных не является последним в файле, т. е. возможно дальнейщее чтение из файла. Если прочитанный элемент данных является последним в файле, то значение EOF равно TRUE.

Задание на работу. Пусть на диске есть текстовый файл, содержащий информацию о доходах. Каждая строка файла начинается с цифры, соответствующей величине дохода, за которой следует строка символов - комментарий. Необходимо вычислить суммарный доход и вывести результат.

Приведем процедуру, которая решает поставленную задачу. Процедура запускается при активизации окна приложения, которое содержит только один компонент-поле метки, используемое для вывода результата работы программы.

procedure (Sender: TObject);

var

fname: string[20];

f: TextFile;

inc: integer;

sum: integer;

begin

fname:= `c: \ incom.txt';

AssignFile(f, fname);

{$I-}

Reset(f);

{$I+}

if IOresult = 0

then begin sum:=0;

while NOT EOF(f) do

begin

readln(f, inc);

sum:= sum + inc; { StrToInt(inc)-ведь файл текстовый }

end;

CloseFile(f);

Label1.caption:= `Суммарный доход:' + IntToStr(sum);

end

else

Label1.caption:= `Ошибка открытия' + fname;

end;

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

Задания для самостоятельного выполнения.

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

2.Используя данные файла созданного в предыдущей работе, определите номер телефона и год его установки заданного абонента, предварительно отсортировав номера

телефонов по принадлежности к той или иной АТС.

3.По данным прочитанным из файла составьте программу определения стажа работы сотрудника, год его рождения и занимаемую должность. Соответствующий файл был создан Вами в предыдущей работе. Данные должны выводится компонентой Label1 проекта Delphi.

4.Составте программу чтения данных из файла, созданного Вами в предыдущей работе. Результатом работы программы должна быть общая площадь вспаханной земли трактористом за период от Дата1 до Дата2.

5.Составить проект Delphi, который, используя данные файла созданного в предыдущей работе, определит дату следующего освидетельствования и срок службы автомобиля с указанным номером.

6.Определить на какую сумму и сколько видов товаров имеется на складе. Данные прочитать из файла составленного Вами в предыдущей работе.

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

В созданном Вами проекте используйте файл из предыдущей работы.

8. Определите суммарное количество огурцов и помидор собранных за указанный промежуток времени между Дата1 и Дата2. В программе используйте данные из файла составленного Вами в предыдущей работе.

9. При заданной начальной и конечной допустимой влажности древесины определить его сушки. И составленном приложении на Delphi используйте данные из файла, составленного в предыдущей работе.

10. Определить количество молока надоенного от данной коровы за неделю. В программе используйте данные из предыдущей работы.

11. Лабораторная работа № 8. Структура данных типа запись

Цель работы.

Целью работы является получение практических навыков работы по определению собственных типов данных сложной структуры и использованию их для решения поставленных задач.

Общие сведения.

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

Объявление комбинированных типов, объектами которых являются записи, осуществляются с помощью резервированного слова RECORD . Записи состоят из фиксированного количества компонентов, называемых полями.

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

Тип записи должен быть объявлен в разделе type. В общем виде запись объявляется так:

<Имя> = record

<Поле1>: <Тип1>;

<Поле2>: <Тип2>;

<ПолеК>: <ТипК>;

end;

где:

<Имя> - имя типа записи;

<Полеi> - имя типа i-го компонента (поля) записи;

record , end - зарезервированные слова.

Примеры:

type

Tperson = record

fam: string[20];

imya: string[20];

day: integer;

Month: integer;

year: integer;

address:string[50];

end;

TDate = record

day: integer;

month: integer;

year: integer;

end;

Согласно принятому в Delphi соглашению, имена типов должны начинаться с буквы Т(от слова Type - тип). После объявления типа записи можно объявить переменную, относящуюся к этому типу, например:

var

student: Tperson;

birthday: TDate;

Для доступа к полю записи указывают имя записи и имя поля, отделяя имя поля от имени записи точкой. Например, инструкция ShowMessage(`Имя: ', student.fam + `Адрес: ', student.address); выводит имя и адрес студента в переменной - записи student. Иногда тип переменной - записи объявляют непосредственно в разделе объявления переменных. В этом случае тип записи указывается сразу за именем переменной, через двоеточие. Например, запись student может быть объявлена в разделе var следующим образом:

var

student: record

fam: string[20];

Imya: string[20];

day:integer;

month:integer;

address: string[50];

end;

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

with <Имя> do

begin

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

end;

где:

with - зарезервированное слово , означающее, что далее до слова end при обращении к полям записи можно не указывать имя записи;

<Имя>- имя переменной- записи.

Например, если в программе объявлена переменная - запись

student: record

fam: string[20];

Imya: string[20];

address:string[50];

end;

и данные о студенте находятся в полях Edit1, Edit2 и Edit3 диалогового окна, то для заполнения полей записи вместо инструкции;

student.fam:= Edit1.text;

student.Imya:= Edit2.text;

student.address:= Edit3.text;

можно записать

with student do

begin

fam:= Edit1.text;

Imya:= Edit2.text;

address:= Edit3.text;

end;

Записи можно хранить в файле. Для этого надо объявить файл, указав в качестве типа его компонентов тип записи (record). Например, инструкции

type

Tperson = record

fam:string[20];

Imya: string[20];

address: string[50];

end;

var

f: file of Tperson;

объявляют файл, компонентами которого являются записи типа Tperson. После объявления файла, связывания файловой переменной с конкретным файлом (AssignFile), открытия файла(Append, Reset или Rewrite) переменные-записи могут записываться в файл и читаться из файла инструкциями write и read соответственно.

Задание на работу.

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

unit appres;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls;

type

TForm1 = class(TForm) // описание формы приложения

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Edit1: TEdit

Button1: TButton;

Label5: TLabel;

ComboBox1: TComboBox;

ComboBox2: TComboBox;

RadioGroup1: TRadioGroup;

Label4: TLabel;

procedure FormActivate(Sender: TObject);

procedure FormClose(Sender: TObject; var Action: TCloseAction);

procedure Button1Click(Sender: TObject);

private

{Private declarations}

public

{Public declarations}

end;

TKind = (GOLD, SILVER, BRONZE); // тип медали

TMedal = record // запись файла

country: string[20];

sport: string[20];

person: string[40];

kind: TKind;

end;

var

Form1: TForm1;

f: file of TMedal;

implementation

{$R *.DFM}

procedure TForm1.FormActivate( Sender: TObject);

var

resp: word;

begin

AssignFile(f, `с:\ medals.db');

{$I-}

Append(f); // открыть файл для добавления

{$I+}

if IOresult = 0

then button1.enabled:= TRUE

else

begin

resp:= MessageDlg(`Файл базы данных не найден' +

`Создать новую БД?', mtInformation,

[mbYes, mbNo],0);

if resp = mrYes

then begin

{$I-}

rewrite(f);

{$I+}

if IOresult = 0

then button1.enabled:= TRUE

else ShowMessage(`Ошибка создания БД.');

end;

end;

end;

procedure TForm.Button1Click(Sender: TObject);

var

medal: TMedal;

begin

with medal do

begin

country:= ComboBox1.Text;

sport:= Combo Box2.Text;

person:= Edit1.Text;

case RadioGroup1.ItemIndex of

0:kind:= GOLD;

1:kind:= SILVER;

2:kind:= BRONZE;

end;

end;

write(f, medal);

end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);

begin

CloseFile(f);

end;

Файл базы данных открывается процедурой TForm1.Activate . Добавление записи в файл выполняет процедура TForm1.Button1Click, которая запускается при щелчке на кнопке Добавить. Значения полей записи country и sport заполняются с помощью компонент комбинированных списков - ComboBox1(Страна) и ComboBox2(Вид спорта). Список стран и видов спорта следует ввести во время создания формы приложения в свойства Items. Поле person заполняется из поля Edit1 (Спортсмен). Значение поля medal определяется выбранной кнопкой компонента RadioGroup. Закрытие файла базы данных выполняет процедура TForm1.FormClose.

Объявление файловой переменной f выведено в раздел объявления переменных var, так как она используется во всех процедурах.Тип TMedal используется двумя процедурами TForm1.Activate и TForm1.Button1Click, то его описание помещено в раздел type .

Для решения второй части поставленной задачи создадим диалоговое окно Form1, которое состоит из компоненты Edit1- окна редактирования , Memo1- окна списка и кнопки управления Button1- “Поиск”. Edit1 используется для ввода названия страны, Memo1 для вывода списка медалей полученной страной участницей. В следующей таблице приведены значения некоторых свойств компоненты Memo1.

Свойство Значение

Name Memo1

ScrollBar ssWertical

ReadOnly True

Чтение записи из файла и вывод списка медалей выполняет процедура, которая запускается в результате щелчка на кнопке Поиск.

procedure TForm1.Button1Click(Sender: TObject);

type

TKind = (GOLD,SILVER,BRONZE);

TMedal = record

country: string[20];

sport: string[20];

person: string[40];

kind: TKind;

end;

var

f:file of TMedal;

rec: TMedal;

n: integer; // общее количество медалей

st: string[80];

begin

AssignFile(f, `с:\ medals.db');

{$I-}

Reset(f);

{$I+}

if IOresult <> 0

then ShowMessage(`Ошибка открытия файла БД');

else

begin

// обработка БД

Button1.enabled:= FALSE;

n:= 0;

while not EOF(f) do

begin

read(f, rec);

if rec.country = Edit1.Text

then

begin

if n = 0

then Memo1.Lines.Add(`*** ` + Edit1.Text +' ***');

n:=n+1;

case rec.kind of

GOLD: st:= `Золотая';

SILVER: st:= `Серебрянная';

BRONZE; st:= `Бронзовая';

end; {case}

st:= st + rec.sport+' `+rec.person;

Memo1.Lines.Add(st);

end;

end;

CloseFile(f);

if n = 0

then ShowMessage(`В БД нет информации о спортменах

страны страны'+Edit1.Text);

Button1.enabled:= TRUE;

end;

end;

Процедура открывает файл и последовательно читает находящиеся в нем записи. Если прочитанная запись удовлетворяет условию запроса - содержимое поля country совпадает с названием страны, введенным пользователем в поле Страна (Edit1) диалогового окна, то содержимое записи добавляется в поле Memo1 . Добавление информации в поле Memo выполняет инструкция Memo1.Line.Add(st), которая является инструкцией применения метода Add (Добавить) к компоненту Memo1 .

Задания для самостоятельного выполнения.

Составить проект Delphi с помощью которого создается файл содержащий сведения о количестве собранных изделий типов А, В и С членами бригад. Проект должен содержать компоненты ComboBox1(номера бригад), ComboBox2(цены отдельных изделий по типам), Edit1(количество собранных изделий), Edit2( фамилия рабочего, собравшего эти изделия) и RadioGroup1(наименование изделий). Написать программу, в результате которой можно получить информацию об итоговых данных сбора изделий по месяцам - по типам, по сумме собранных изделий. Найти номер бригады, собравшей наибольшее количество изделий за месяц.

Созданный Вами проект будет эксплуатироваться в регистратуре городской поликлиники. Он должен содержать следующие компоненты ComboBox1(специальности врачей), ComboBox2(фамилии врачей),Edit1(фамилия посетителя) и RadioGroup1(учащиеся, пенсионеры, рабочие и служащие, не работающие ). В результате обработки данных файла составьте ежедневные итоги по количеству пациентов принятых врачами различных специальностей в порядке убывания числа принятых пациентов.

Составьте файл, содержащий сведения о стипендиях назначенных студентам учебных групп по результатам сессии. Проект должен содержать следующие компоненты: ComboBox1(курсы), ComboBox2(группы факультета), Edit1(фамилия студента) и RadioGroup1(обычная, повышенная и именная стипендии). В результате обработки созданного файла нужно найти число студентов получающих обычную, повышенную и именную стипендии по факультету в целом.

Создайте проект Delphi с помощью которого производится регистрация участников международной научной конференции. Проект должен содержать следующие компоненты: ComboBox1(страна ближнего зарубежья), ComboBox2(название секций),Edit1(фамилия участника) и RadioGroup1(доклад, сообщение , стендовый доклад). Обработав созданный файл мы должны получить информацию о количестве участников из разных стран, сколько человек должны делать доклад сколько человек выступят с сообщениями и сколько будет стендовых докладов.

Обработка результатов Республиканской олимпиады юных техников может быть произведено с помощью Вашей программы. Проект должен содержать следующие компоненты: ComboBox1(название областей), ComboBox2(вид секции), Edit1(фамилия участника) и RadioGroup1(награды - диплом 1 степени, диплом 2 степени и диплом 3 степени ). В результате обработки файла мы должны получить возможность обобщения данных - область, занявшая 1 место и в скольких секциях принимали участие учащиеся этой области.

На посту ГАИ установлен компьютер. Сотрудник ГАИ заносит в компьютер данные о зарегистрированных нарушениях допущенных водителями автотраспорта. Проект имеет следующие компоненты: ComboBox1(тип машины), ComboBox2(цвет машины), Edit1(фамилия_номер_машины) и RadioGroup1(вид наказания- предупреждение, штраф, лишение водительских прав). Обработав данные такого файла можно определить степень тяжести допущенных нарушений, сгруппировав их по виду нарушений. Водителями какого вида автотранспорта допускаются наибольшее количество нарушений?

Составьте программу регистрации основных моментов игры в хоккей между командами А и В. Программа должна содержать следующие компоненты: ComboBox1(название играющих команд), ComboBox2( фамилия_игрока_номер), Edit1(номер игрока) и RadioGroup1(гол, голевая передача, штраф 2 мин.).

Литература

1. Культин Н. Delphi 3. Программирование на Object Pascal - СПб.: ВHV - Санкт - Петербург, 1998. - 304 с.

2. Культин Н. Основы программирования в Delphi 7. - СПб.: БХВ - Петербург, 2009. - 640 с.

3. Тюкачев Н.А. Программирование в Delphi для начинающих.- СПб.: БХВ - Петербург, 2007. - 662 с.

4. Фаронов В.В. Delphi. Программирование на языке высокого уровня. - СПб.: Питер, 2009. - 640 с.

5. Delphi 7.Под ред. А. Хомоненко. - СПб.: БХВ - Петербург,2008.

Размещено на Allbest.ru

...

Подобные документы

  • Особенности среды визуального проектирования Borland Delphi 7.0. Этапы разработки программы и составления блок-схемы алгоритмов. Способы вычисления кусочно-заданной функции одной переменной. Рассмотрение компонентов среды Delphi, ее предназначение.

    контрольная работа [703,8 K], добавлен 24.09.2012

  • Создание Windows-приложения на алгоритмическом языке Object Pascal в среде визуального программирования Delphi, которое, как планируется, будет обеспечивать решение специализированных задач по формированию, обработке на ЭВМ и выводу информации.

    курсовая работа [967,6 K], добавлен 20.05.2008

  • Вычисление выражений, использование стандартных функций; работа с графикой. Порядок действий при вычислении, способы ввода данных с клавиатуры. Построение таблиц функций. Организация циклов в программе, итерационные процессы. Работа с массивами чисел.

    контрольная работа [614,7 K], добавлен 16.09.2012

  • Теоретические основы объектно-ориентированного языка программирования Delphi, изучение среды визуального проектирования приложений. Определение 40-го числа Фибоначчи, составление листинга и блок-схемы программы, тестирование ее на работоспособность.

    курсовая работа [261,1 K], добавлен 25.03.2015

  • Теоретические основы применения технологии ADO в среде Delphi. Основные понятия и определения теории баз данных. Компоненты Delphi для создания приложений, оперирующих с базами данных. Общий вид и основные особенности работы приложения "Аптека".

    курсовая работа [1,4 M], добавлен 09.08.2012

  • Описания объектов, свойств, методов, формы и основных модулей текста программы в среде Delphi. Создание Windows-приложения на алгоритмическом языке Object Pascal в среде визуального программирования. Анализ результатов тестирования программного продукта.

    курсовая работа [2,4 M], добавлен 27.08.2012

  • Borland Delphi 7 как универсальный инструмент разработки, применяемый во многих областях программирования, функции: добавление информации об абитуриентах в базу данных, формирование отчетов. Рассмотрение и характеристика основных компонентов Delphi.

    контрольная работа [3,6 M], добавлен 18.10.2012

  • Особенности и тонкости программирования в среде Delphi. Специфика перехода от алгоритмического решения к непосредственной программной реализации на языке Object Pascal с использованием всех необходимых средств данного языка. Анализ полученных результатов.

    реферат [246,2 K], добавлен 17.11.2012

  • Разработка информационной системы административного управления. Выбор языка и среды программирования. Структура взаимодействия информации. Требования к программно-аппаратному окружению. Создание программы в Delphi и связывание ее с базой данных.

    курсовая работа [1010,9 K], добавлен 08.10.2015

  • Организация работы в среде визуального программирования Delphi. Настройка, конфигурация и главное окно формы. Модификация формы, свойств и событий. Пиктографические кнопки, палитра компонентов, окно инспектора объектов. Процесс построения приложения.

    реферат [40,3 K], добавлен 23.01.2011

  • Эффективные средства разработки программного обеспечения. Технология визуального проектирования и событийного программирования. Конструирование диалоговых окон и функций обработки событий. Словесный алгоритм и процедуры программы Borland Delphi 7 Studio.

    дипломная работа [660,2 K], добавлен 21.05.2012

  • Предмет объектно-ориентированного программирования и особенности его применения в средах Паскаль, Ада, С++ и Delphi. Интегрированная среда разработки Delphi: общее описание и назначение основных команд меню. Процедуры и функции программы Delphi.

    курсовая работа [40,8 K], добавлен 15.07.2009

  • Разработка простейшей базы данных с использованием приемов работы с Microsoft Access в среде программирования Delphi. Назначение базы данных, условия эксплуатации, выполнения и запуска программы "База данных районного отдела налоговой инспекции".

    курсовая работа [1,3 M], добавлен 14.12.2012

  • Основы программирования, работа в консольном режиме Delphi. Правила оформления комментариев. Типы данных, используемые в консольном режиме. Текстовый редактор Delphi Memo. Пример загрузки текстового файла. Примеры решения и оформления простейших задач.

    отчет по практике [2,1 M], добавлен 11.03.2014

  • Интегрированная среда разработки Delphi и элементы, входящие в ее состав. Математическая модель, алгоритм решения и его свойства. Описание операторов, процедур, функций и методов. Создание приложений по аналитической геометрии и теоретической механике.

    курсовая работа [1,8 M], добавлен 26.05.2010

  • Программирование линейных алгоритмов. Процедуры ввода READ и READLN и вывода WRITE и WRITELN. Примеры решения задач на языке Паскаль. Оператор присваивания и выражения. Основные способы формирования структурных операторов. Операторы вызова процедур.

    курсовая работа [44,3 K], добавлен 18.03.2013

  • Средства языка программирования Delphi. Структурные типы данных. Строковые переменные, массивы, множества, файлы. Механизм классов в C++. Интерфейсный и описательный обзоры классов в Delphi. Работа с текстовыми и бинарными файлами прямого доступа.

    курсовая работа [990,4 K], добавлен 07.08.2012

  • Ознакомление с историей создания и особенностями объектно-ориентированного языка программирования Delphi. Разработка приложения, фиксирующего количество повторений какого-либо слова в тексте, введённом в поле MEMO. Описание интерфейса программы.

    курсовая работа [880,1 K], добавлен 21.04.2015

  • Программа поиска в базе данных в среде Borland Delphi 7.0 Enterprise. Условия и блок-схемы задач. Ввод массива. Текст программ в Delphi, в Паскаль. Текст программы поиска в базе данных. Кодирование материала. Изготовление реляционной базы данных.

    практическая работа [27,6 K], добавлен 11.10.2008

  • Общая характеристика системы программирования Delphi, а также принципы создания ее компонентов. Описание значений файлов приложения, созданного с помощью Delphi. Структура и свойства библиотеки визуальных компонентов (Visual Component Library или VCL).

    отчет по практике [1,1 M], добавлен 07.12.2010

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.