Uploaded by Kubatbek Abdumitalip uulu

ПРОГРАММИРОВАНИЕ В СРЕДЕ DELPHI (ЛАБОРАТОРНЫЕ РАБОТЫ)

advertisement
ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ
УХТИНСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
ПРОГРАММИРОВАНИЕ В СРЕДЕ
DELPHI (ЛАБОРАТОРНЫЕ РАБОТЫ)
МЕТОДИЧЕСКИЕ УКАЗАНИЯ
УХТА 2005
УДК 519.90
Т 83
ББК 32.973
Туманова, О.Н. Программирование в среде DELPHI (лабораторные работы)
[Текст]: метод. указания / О.Н.Туманова. – Ухта: УГТУ, 2005. – 40 с.
Методические
указания предназначены для студентов специальности
060800(ЭТК). Методические указания могут быть использованы студентами
дневного обучения при выполнении лабораторных работ по
дисциплине
Информатика, раздел “ Алгоритмизация и программирование”
Содержание указаний соответствует рабочей учебной программе дисциплины
Информатика
Методические указания рассмотрены и одобрены кафедрой ПМИ. 2005г.пр.№ 4
от 26.05.2005 г.
Рецензент: зав. кафедрой прикладной математики и информатики
Ухтинского государственного университета, к. ф-м., доцент Ю. Г. Смирнов.
Редактор: Н.М. Выборова.
Компьютерная верстка: О.Н.Туманова, А.Н. Платцев, О.А.Канева, С.А.Артеева
В методических указаниях учтены замечания рецензента и редактора.
План 2005 г., позиция 52.
Подписано в печать 16.06.05 г.
Объем 40 с. Тираж 80 экз. Заказ № 191.
© Ухтинский государственный технический университет, 2005
169300, г. Ухта, ул. Первомайская, 13.
Отдел оперативной полиграфии УГТУ.
169300, г. Ухта, ул. Октябрьская, 13
-3-
Содержание
Введение. Язык программирования в Delphi ........................................................... 4
1.Разработка приложения в среде Delphi ................................................................. 7
2.Лабораторная работа №1. Программирование алгоритмов линейной и
разветвляющейся структуры. .................................................................................. 11
3. Лабораторная работа №2. Организация программ циклической структуры ..14
4. Лабораторная работа №3. Обработка одномерных массивов ......................... 17
5. Лабораторная работа №4. Обработка матрицы (двумерных массивов) . ........ 19
6. Лабораторная работа №5. Программирование с использованием
функций и процедур ................................................................................................. 22
7. Лабораторная работа № 6. Обработка строк………………………………….. 24
8. Лабораторная работа №7. Обработка записей .................................................. 26
9. Лабораторная работа №8. Обработка файлов ................................................... 30
10. Лабораторная работа №9. Графика в Delphi ................................................... 34
11. Библиографический список ................................................................................ 40
-4-
ВВЕДЕНИЕ.
Язык программирования DELPHI.
DELPHI – среда разработки программ, ориентированных на работу в
Windows.
В основе идеологии
DELPHI лежит технология визуального
проектирования и методология объектно-ориентированного программирования.
Для представления программ используется разработанный фирмой
BORLAND язык Object Pascal, в основе которого Turbo Pascal.
В основе DELPHI лежит концепция быстрого создания приложений.
Приложение создаётся с использованием компонентов, которые располагаются
на форме. При расположении компонентов на форме и задании их свойств
одновременно создаются автоматические подпрограммы, характеризующие эти
свойства.
Среда DELPHI разработана для профессиональных программистов, но в
вузах рассматриваются основные принципы этой среды визуального
программирования.
После запуска DELPHI на экране появляется четыре окна интегрированной
среды разработки приложений.
Главные составные части среды программирования:
1) главное окно;
2) окно Form;
3) окно редактора кода программы;
4) окно инспектора объектов.
Главное окно (располагается в верхней части экрана, имеет заголовок
Project1)
В главном окне находится строка главного меню, панели инструментов и
палитра компонентов. Главное окно остаётся открытым пока загружено
DELPHI. Если вы закрываете окно, значит, заканчиваете работу в DELPHI.
1) строка меню содержит команды для разработки и тестирования
приложений и управления ими;
2) панель инструментов содержат кнопки, которые выполняют
определённые команды меню;
3) палитра компонентов Component (находится правее кнопок панелей
инструментов). В ней отражаются компоненты, с помощью которых
пользователь создаёт свои приложения.
Компоненты являются основой библиотеки визуальных компонентов.
Они позволяют создавать пользовательский интерфейс прикладных программ.
Компонент – это элемент, имеющий определённые свойства и
размещаемый в окне формы. К ним относятся кнопки, надписи, метки и т.д.
Палитра компонентов имеет несколько страниц. Когда мы загружаем
DELPHI, активной становится страница Standart.
-5-
Окно Form - это проект Windows окна будущей программы (если окно
приложения на этапе разработки).
Когда мы загружаем DELPHI, на окне формы содержится только кнопка
вызова системного меню и три кнопки: минимизация, максимизация и
закрытие. Также содержится полоса заголовка и рамка, очерчивающая форму.
На форме содержится координатная сетка для упорядочения компонентов на
форме.
Работа с формой напоминает игру с конструктором. На форме мы будем
располагать различные компоненты.
Окно редактора кода программы – располагается позади окна формы.
Оно предназначено для создания и редактирования текста программы. Между
содержимым окон формы и программы существует неразрывная связь, которая
строго отслеживается системой DELPHI.
Размещение на форме компонентов автоматически изменяет программу.
Удаление вставленных фрагментов в программу автоматически ведёт к
удалению элементов на форме.
-6-
Окно инспектора объектов – это окно создаёт и редактирует свойства
компонентов, а также является обработчиком событий компонентов. Инспектор
объектов – инструмент, который используется для формирования внешнего
вида и функциональных возможностей.
Окно инспектора объектов содержит две страницы:
1)
свойства Properties
2)
события Events
В левой части перечислены все имеющиеся обработчики событий
компонентов. События определяют поведение компонента, т.е. будет ли
компонент реагировать на щелчок мыши или на нажатие клавиши.
В правых колонках обеих страниц указывается значение свойств или
обработчики событий соответствующих компонентов.
-7-
1. Разработка приложения в среде DELPHI
Разработка приложений состоит из двух этапов:
1) этап конструирования формы;
2) кодирование (составление программы).
Например, сконструируем форму, на которой нужно поместить
компонент Label и в ней поместить надпись: «Я программирую на DELPHI»

Для того, чтобы поместить компонент на форму, надо выбрать
страницу, где находится нужный компонент;

Выбрать компонент на странице и щёлкнуть по нему мышью;

Перейти на форму и щёлкнуть по тому месту, где нужно разместить
компонент;

Затем надо установить его свойства.
Создать кнопку на форме так, чтобы после нажатия на эту кнопку
появилась надпись: «Нет, только учусь».
1) В компоненте Button задаём свойству Caption значение OK.
2) Перейти на страницу события Events и напротив OnClick щёлкнуть
мышью, открывается процедура
3) В процедуре записываем инструкцию Label1.Caption:=’Нет, только
учусь’
4) Затем запускаем программу из Меню, команда RUN. Затем щелкаем
по кнопке ОК Вместо надписи «Я программирую на DELPHI»
появится надпись «Нет, только учусь».
Oсновные компоненты проекта.
Любая программа на Delphi состоит из файла проекта (файл *.dpr) и одного
или нескольких модулей (файлы с расширением *.pas). Каждый из таких
файлов описывает программную единицу Object Pascal. Файл проекта
представляет собой текстовый файл - программу, написанную на языке Object
Pascal, предназначенную для обработки компилятором. Текст программы
начинается зарезервированным словом program и заканчивается словом end.
Сочетание end и точки называется терминатором программной единицы, как
только в тексте программы встретится такой терминатор, компилятор
прекращает анализ программы и игнорирует дальнейший текст программы.
Собственно тело программы начинается со слова begin и оканчивается
терминатором end. Тело программы или модуля состоит из одного или
нескольких операторов языка Object Pascal. В каждом операторе реализуется
некоторое действие – изменение значения переменной, анализ результата
вычисления, обращение к подпрограмме и т.д. Файл проекта практически
полностью формируется самой средой Delphi и редко требует отдельного
редактирования.
-8-
Структура модуля.
Модули – это программные единицы, предназначенные для размещения
фрагментов программ. С помощью содержащегося в них программного кода
реализуется вся поведенческая сторона программы. Любой модуль имеет
следующую структуру:
Заголовок;
Секция интерфейсных объявлений;
Секция реализаций;
Терминатор.
Заголовок открывается зарезервированным словом unit, за которым
следует имя модуля и точка с запятой. Секция интерфейсных объявлений
открывается зарезервированным словом interface, секция реализаций – словом
implementation.
В секции интерфейсных объявлений описываются программные элементы
(Типы, классы, процедуры и функции), которые будут доступны другим
программным модулям, а в секции реализаций раскрывается механизм работы
этих элементов. Разделение модуля на две секции обеспечивает удобный
механизм обмена алгоритмами между отдельными частями одной программы.
В отличие от файла проекта, текст модуля может быть изменен программистом.
Ввод-вывод данных в DELPHI
Ввод:
Программа может получать результаты из окна ввода, из поля ввода
компонентов, а также из файла.
1. Ввод данных из окна ввода
Ввод данных производится вызовом функции InputBox. Результатом этой
функции является строка, вводимая пользователем.
Вид этой функции:
Переменная:=InputBox(заголовок, подсказка, значение);
Заголовок – это текст заголовка окна ввода.
Подсказка – это текст поясняющего сообщения. Он появляется в окне
ввода на экране.
Переменная – это имя переменной строкового типа, значение которой
должно быть получено из окна ввода.
Например, в программе надо пересчитать вес из фунтов в килограммы.
Инструкция может выглядеть так:
S:=InputBox(‘фунты-килограммы’, 'введите вес в фунтах', ' ');
Окно ввода:
-9-
В поле ввода вводится число фунтов (например, 500), затем щёлкаем по
кнопке OK и переменная S получает значения строкового типа, а чтобы
получить число, надо преобразовать введённую строку в число.
Функции преобразования
StrToInt(S) – функция преобразует строку S в целое число
a:=StrToInt(S);
StrToFloat(S) – преобразует строку S в вещественное число;
IntToStr(n) – преобразует целое n число в строку S;
FloatToStr(n) – преобразует вещественное число n в строку S;
FloatToStrF(n,f,l,m) – преобразует вещественное n в строку;
n – вещественное число;
f – формат (способ) изображения;
l – точность (общее количество цифр);
m – количество цифр после точки.
2. Ввод данных через компоненты
Компоненты, в поле ввода которых будем записывать данные, называется
компонентами, имеющими фокус ввода. Такими компонентами являются:
Edit – однострочный редактор ввода
Memo – многострочный редактор ввода
Ввод данных в поле ввода компонентов Edit производится обращением к
свойству Text
var a: real;
a:= StrToFloat (Edit.Text);
Компонент Memo имеет свойства Lines.
Вывод:
Вывод результатов может быть выполнен следующим образом:
1. В окне сообщения;
2. в поле ввода компонентов формы;
3. в файл;
4. на принтер.
1. Вывод в окно сообщения
- 10 -
Вывод может производиться с помощью процедуры Show Message, функции
- MessageDig .
Вид:
Show Message (‘сообщение’);
Show Message (‘корней нет’);
2. Вывод результатов в компоненты формы
Вывод в форму можно сделать в компоненте Label, либо в диалоговом окне
других компонентов.
Для вывода информации с помощью Label используется свойство Caption.
В компоненте Edit используется свойство Text, а в компоненте Memo свойство Text и Lines.
Свойства видимых компонентов Left, Top, Width, Height,
Visible, Enable, Align, Hint, ShowHint, Cursor, Font.
Left – устанавливает отступ слева относительно родительского компонента.
Top – устанавливает отступ сверху относительно родительского
компонента.
Width – устанавливает ширину компонента.
Height – устанавливает высоту компонента.
Visible – устанавливает видимость компонента.
Enable – устанавливает доступность компонента.
Align – устанавливает выравнивание компонента относительно границ
своего родителя.
Hint – текст всплывающей подсказки, которая появляется при наведении на
компонент мыши.
ShowHint – показывать/не показывать всплывающую подсказку.
Cursor – вид курсора при наведении его на компонент.
Font – шрифт, которым будет отображать текст на компоненте.
События видимых компонентов OnClick, OnDblClick,
OnMouseDown, OnMouseUp, OnMouseMove, OnKeyPress,
OnKeyDown, OnKeyUp, OnEnter, OnExit.
OnClick – нажатие и отпускание кнопки мыши на компоненте.
OnDblClick – двойное нажатие левой кнопки мыши на компоненте.
OnMouseDown – нажатие кнопки мыши на компоненте.
OnMouseUp – отпускание кнопки мыши.
OnMouseMove – перемещение мыши над компонентом.
OnKeyPress – нажатие и отпускание кнопки на клавиатуре.
OnKeyDown – нажатие кнопки на клавиатуре.
OnKeyUp – отпускание кнопки на клавиатуре.
OnEnter – получение фокуса компонентом.
OnExit – потеря фокуса компонентом.
Width – ширина экрана в пикселах.
- 11 -
2. Лабораторная работа № 1
Программирование алгоритмов линейной и разветвляющейся структуры
1.Выполнить задания, приведенные ниже как примеры.
2.Выполнить задание своего варианта, из литературы[1](стр.4-13)
Пример программы алгоритма линейной структуры:
1.Конструирование формы:
При выполнении задания на форме были размещены следующие
компоненты:
Label1 – используется для текста “Введите t, x”.
Label2 – используется для текста “Вычисление у”. Button1 – кнопка, при
нажатии которой производятся вычисления.
Код вычислений прописан в методе OnClick, который срабатывает при
нажатии кнопки во время исполнения программы. Button2 – кнопка, при
нажатии которой форма закрывается.
Edit1 – однострочный редактор для ввода t.
Edit2 – однострочный редактор для ввода x.
Edit3 – однострочный редактор для вывода у.
Для перевода строковых данных в число использовалась функция
StrToFloat. Для перевода результатов вычислений в строку была использована
функция FormatFloat, позволяющая перевести число с плавающей запятой в
требуемый формат в строковом виде.
2.Условие:
Вычислить: y =
e
 at
(t 
t 
t  a )
4t  b
при а = 2.3*sin(t); b = 17.6*x3; t = 3; x = 1.38.
3.Форма
4. Программа:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
- 12 -
TForm1 = class(TForm)
Label1: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
Label2: TLabel;
Edit3: TEdit;
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);
var t, x, a, b, y:real;
begin
t:=strtofloat(edit1.Text); //Переводит строку в число
x:=strtofloat(edit2.Text);//Переводит строку в число
a:=2.3*sin(t);
b:=17.6*x*x*x;
y:=(exp(-a*t)*(t+sqrt(abs(t+a))))/(t-(sqrt(abs(4*t-b))));
edit3.text:=('y='+formatfloat('##.###',y));
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Application.Terminate;
end;
end.
5. Результат:
- 13 -
Пример программы алгоритма разветвляющейся структуры:
1. Конструирование формы:
При выполнении задания на форме были размещены следующие
компоненты:
TLabel – используется для создания комментариев и вывода результата
вычислений. Для этого использовалось свойство компонента Caption, которое
имеет строковый тип. Для перевода результатов вычислений в строку была
использована функция FormatFloat, позволяющая перевести число с плавающей
запятой в требуемый формат в строковом виде.
TImage – предназначен для просмотра изображения. Для размещения
изображения используется свойство компонента Picture.
TButton – кнопка, при нажатии которой производятся вычисления. Код
вычислений прописан в методе OnClick, который срабатывает при нажатии
кнопки во время исполнения программы. Комментарий на кнопке
прописывается в свойстве кнопки Caption.
TEdit – компонент предназначенный для ввода строковых данных. В
свойстве Text данного компонента при создании программы были установлены
необходимые значения переменных. Для перевода строковых данных в число
использовалась функция StrToFloat.
2.Условие:
Вычислить:
 ax 3  b  lg 2 x , если
a  b  x


y   a  Sin 2 x , если
a  b  x

3
 arctg 5 x  bCos x , если
a  b  x
при a=13,7; b=8,91; x=0,07.
3.Форма:
TLabel
TEdit
TImage
TButton
4.Программа:
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, math, jpeg, ExtCtrls;
type
TForm1 = class(TForm)
- 14 -
Edit1: TEdit;
Label1: TLabel;
Label2: TLabel;
Edit2: TEdit;
Label5: TLabel;
Button1: TButton;
Label7: TLabel;
Edit3: TEdit;
Image1: TImage;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
a,b,x,y:real;
begin
Label5.Caption:='';
a:=StrToFloat(Edit1.Text);
b:=StrToFloat(Edit2.Text);
x:=StrToFloat(Edit3.Text);
if (sqrt(a-b)<x) then y:=a*power(x,3)+b*log10(2*x);
if (sqrt(a-b)=x) then y:=sqrt(abs(a+sin(2*x)));
if (sqrt(a-b)>x) then y:=arctan(5*x)-b*power(cos(x),3);
Label5.Caption:='y='+FormatFloat('0.000',y);
end;
end.
5.Результат:
- 15 -
3.Лабораторная работа № 2.
Организация программ циклической структуры
1.Выполнить задание, приведенное ниже как пример.
2.Выполнить задание своего варианта, из литературы[1] (стр.14-23)
Пример программы циклической структуры :
1.Конструирование формы:
При выполнении задания на форме были размещены следующие
компоненты:
TLabel – используется для создания комментариев и вывода результата
вычислений. Для этого использовалось свойство компонента Caption, которое
имеет строковый тип. Для перевода результатов вычислений в строку была
использована функция FormatFloat, позволяющая перевести число с плавающей
запятой в требуемый формат в строковом виде.
TButton – кнопка, при нажатии которой производятся вычисления. Код
вычислений прописан в методе OnClick, который срабатывает при нажатии
кнопки во время исполнения программы. Комментарий на кнопке
прописывается в свойстве кнопки Caption.
TListBox – используется для вывода результатов программы.
2.Условие:
Вычислить: y = x3-ex; z =
a=3,4.
cos4y2 – lg|y| , если y<1,
,если x є [ 4;8] с шагом 0,5 ;
ay  tga
3.Форма:
4.Программа:
unit Unit1;
, если y  1.
- 16 -
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
ListBox1: TListBox;
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);
const a=3.4;
var x,y,z:real;
begin
x:=4;
while x<=8 do
begin y:=x*x*x-exp(x);
if y<1 then z:=cos(y*y)*cos(y*y)*cos(y*y)*cos(y*y)-ln(abs(y)/ln(10));
if y>=1 then z:=sqrt(abs(a*y+sin(a)/cos(a)));
listbox1.Items.Add('z='+formatfloat('##.###',z));
x:=x+0.5;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
application.Terminate;
end;
end.
5.Результат:
- 17 -
4. Лабораторная работа № 3.
Обработка одномерных массивов
1.Выполнить задание, приведенное ниже как пример.
2.Выполнить задание своего варианта, из литературы[1] (стр.24-33)
Пример программы обработки одномерных массивов:
1.Конструирование формы:
При выполнении задания на форме были размещены следующие
компоненты:
TLabel – используется для создания комментариев. Для этого
использовалось свойство компонента Caption, которое имеет строковый тип.
TButton – кнопка, при нажатии которой производятся вычисления. Код
вычислений прописан в методе OnClick, который срабатывает при нажатии
кнопки во время исполнения программы. Комментарий на кнопке
прописывается в свойстве кнопки Caption.
TListBox – используется для вывода результатов программы.
2.Условие:
Дан массив xi={3,5;7,2;4,5;2,1;7,6;9,3}. Вычислить
max yi и его номер k.
3.Форма:
y i  x i * cos x i 
2
xi
4
, найти
- 18 -
4.Программа:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
ListBox1: TListBox;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
const x:array[1..6] of real=(3.5,7.2,4.5,2.1,7.6,9.3);
var y:array[1..6] of real;
max:real; i,k:integer;
begin
max:=-1E5;
k:=0;
For i:=1 to 6 do
begin
y[i]:=x[i]*cos(x[i])+x[i]*x[i]/4;
ListBox1.Items.Add('y='+FormatFloat('###.##',y[i]));
if y[i]>max then begin
max:=y[i];k:=i;
end;
end;
ListBox1.Items.Add('max='+FormatFloat('###.##',max));
ListBox1.Items.Add('k='+IntToStr(k));
end;
end.
5.Результат:
- 19 -
5. Лабораторная работа № 4.
Обработка матрицы (двумерных массивов)
1.Выполнить задание, приведенное ниже как пример.
2.Выполнить задание своего варианта, из литературы[1] (стр.34-47)
Пример программы обработки матриц (двумерных массивов):
1.Конструирование формы:
При выполнении задания на форме были размещены следующие
компоненты:
TLabel – используется для создания комментариев. Для этого
использовалось свойство компонента Caption, которое имеет строковый тип.
TButton – кнопка, при нажатии которой производятся вычисления. Код
вычислений прописан в методе OnClick, который срабатывает при нажатии
кнопки во время исполнения программы. Комментарий на кнопке
прописывается в свойстве кнопки Caption.
TStringGrid – данный компонент был использован для вывода исходногй
матрицы и модифицированной матрицы. Для вывода элементов матриц
использовалось свойство компонента Cells (ячейка), которое характеризуется
индексами размещения в столбце и в строке. Количество строк и столбцов
прописываются в свойствах компонента RowCount и ColCount. А для перевода
числовых значений в строку – функция IntToStr. Задаём следующие свойства:
ColCount – число столбцов (в данной работе 6)
RowCount – число строк (в работе 5)
FixedCols = 0 - фиксированное число столбцов
FixedRows = 0 – фиксированное число строк
StringGrid1 – здесь записывается исходная матрица. В свойствах Options
установить свойству редактирования go Editing значение true.
StringGrid2 – здесь записывается полученная матрица.
TGroupBox – компонент, предназначенный для группировки внутри себя
других компонентов. Заголовок компонента прописывается в его свойстве
Caption.
2.Условие:
Определить наибольшее значение среди элементов, расположенных выше
главной диагонали матрицы A(5,6). Напечатать новую матрицу A, в которой все
- 20 -
элементы выше главной диагонали заменены нулями, кроме наибольшего
элемента. Элементы исходной матрицы выбрать самостоятельно.
3.Форма:
TGroupBox
TStringGrid
TLabel
TButton
4.Программа:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids;
type
TForm1 = class(TForm)
GroupBox1: TGroupBox;
StringGrid1: TStringGrid;
Button1: TButton;
Label1: TLabel;
Label2: TLabel;
GroupBox2: TGroupBox;
StringGrid2: TStringGrid;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
- 21 -
end;
var
Form1: TForm1;
A:array[1..5,1..6]of integer;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var
i,j:integer;
begin
for j:=1 to 6 do
for i:=1 to 5 do
begin
A[i,j]:=random(100);//Создание случайного числа
StringGrid1.Cells[j-1,i-1]:=IntToStr(A[i,j]);//Помещение
StringRead
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
i,j:integer;
Max:integer;
begin
Max:=A[1,2];
for i:=1 to 5 do
for j:=i+1 to 6 do
if (A[i,j]>Max)then Max:=A[i,j];
Label2.Caption:=IntToStr(Max);
for i:=1 to 5 do
for j:=i+1 to 6 do
if (A[i,j]<Max)then A[i,j]:=0;
for j:=1 to 6 do
for i:=1 to 5 do
begin
StringGrid2.Cells[j-1,i-1]:=IntToStr(A[i,j]);
end;
end;
end.
5.Результат:
A[i,j]
в
ячейку
- 22 -
6. Лабораторная работа № 5.
Программирование с использованием функций и процедур
1.Выполнить задание, приведенное ниже как пример.
2.Выполнить задание своего варианта, из литературы[1] (стр.48-60)
Пример программы на программирование с использованием функций и
процедур
1.Конструирование формы:
При выполнении задания на форме были размещены следующие
компоненты:
TLabel – используется для создания комментариев. Для этого
использовалось свойство компонента Caption, которое имеет строковый тип.
TButton – кнопка, при нажатии которой производятся вычисления. Код
вычислений прописан в методе OnClick, который срабатывает при нажатии
кнопки во время исполнения программы. Комментарий на кнопке
прописывается в свойстве кнопки Caption.
TListBox – используется для вывода результатов программы.
2. Условие.
Задана последовательность чисел А={A1,A2,…,A6}. Выбрать из них числа,
принадлежащие отрезку [x,y]. Из выбранных чисел образовать массив. Решение
оформить в виде подпрограммы. Исходные данные: А={-4.1,-1,1.2,3,5,0.75}.
X=-2.5, Y=1.2.
3.Форма:
- 23 -
4. Программа.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
ListBox1: TListBox;
ListBox2: TListBox;
Label1: TLabel;
Label2: 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);
const A:array [1..6] of real=(-4.1,-1,1.2,3,5,0.75);
type mas=array [1..6] of real;
var A1,B:mas;i,k:integer;
Procedure mas2(Z:mas;n:integer;var k:integer;var B:mas);
var i:integer;
const x=-2.5; y=1.2;
begin
k:=0;
For i:=1 to n do
if (z[i]>=x) and (z[i]<=y) then begin
- 24 -
k:=k+1;
B[k]:=z[i];
end;
end;
begin for i:=1 to 6 do
A1[i]:=A[i];
mas2(A1,6,k,B);
for i:=1 to k do
Listbox2.Items.Add('b['+inttostr(i)+']='+formatfloat('##.###',b[i]));
for i:=1 to 6 do
Listbox1.items.add('a['+inttostr(i)+']='+floattostr(a[i]));
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Application.Terminate;
end;
end.
5.Результат:
7. Лабораторная работа № 6.
Обработка строк
1.Выполнить задание, приведенное ниже как пример.
2.Выполнить задание своего варианта, из литературы[1] (стр.61-66)
Условие задачи. Дан текст: Наступила зима (температура -5 градусов). Выпал
снег(10 см). Исключить из текста группы символов, расположенных между
скобками ” (” и ” )”. Сами скобки должны быть исключены . Предполагается,
что внутри каждой пары скобок нет других скобок.
1. Конструирование формы:
При выполнении задания на форме были размещены следующие
компоненты:
Button1 – кнопка, имеющая заголовок Выполнить, при нажатии которой
первоначальный текст из программы заносится в компонент Edit1, а
преобразованный текст заносится в компонент Edit2 . Button2 – кнопка,
имеющая заголовок Закрыть, при нажатии которой форма закрывается.
- 25 -
Edit1 – компонент предназначенный для отображения первоначального
текста до изменения его. Edit2 – компонент предназначенный для отображения
текста после изменения его.
Программа
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
Button2: TButton;
Edit2: TEdit;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
- 26 -
procedure TForm1.Button1Click(Sender: TObject);
Var
s:string;
n,nn,n1,n2,i:integer;
begin
s:=' Наступила зима(температура -5).Выпал снег(10 см).';
edit1.Text:=s;
n:=Length(s);
for i:=1 to n do
begin
n1:=pos('(',s);
n2:=pos(')',s) ;
nn:=n2-n1+1;
if (i>=n1) and(i<=n2) then delete(s,n1,nn);
end;
edit2.Text:=s;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Application.Terminate;
end;
end.
8. Лабораторная работа № 7.
Обработка записей
1.Выполнить задание, приведенное ниже как пример.
2.Выполнить задание своего варианта, из литературы[1] (стр.67-69)
Пример программы обработки записей :
1.Конструирование формы:
- 27 -
При выполнении задания на форме были размещены следующие
компоненты:
TLabel – используется для создания комментариев. Для этого
использовалось свойство компонента Caption, которое имеет строковый тип.
TEdit – данный компонент был использован для ввода исходных данных
о студентах.
TButton – кнопка, при нажатии которой производятся действия по
запоминанию данных о студентах. Код прописан в методе OnClick, который
срабатывает при нажатии кнопки во время исполнения программы.
Комментарий на кнопке прописывается в свойстве кнопки Caption.
TGroupBox – компонент, предназначенный для группировки внутри себя
других компонентов. Заголовок компонента прописывается в его свойстве
Caption.
TMemo – компонент, позволяющий отображать текстовую информацию.
Для внесения дополнительной информации используется метод Append()
свойства Lines.
2.Условие:
Ввести информацию о 10 студентах группы. Информация содержит
фамилию, имя, отчество студента, год рождения, четыре оценки за экзамены
последней сессии. Распечатать анкетные данные студентов, получивших в
последнюю сессию оценку 2.
TLabel
3.Форма:
TGroupBox
TEdit
TButton
TMemo
4.Программа:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
- 28 -
GroupBox1: TGroupBox;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Button1: TButton;
Button2: TButton;
Edit6: TEdit;
Edit7: TEdit;
Edit8: TEdit;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
Student=record
Surname:string;
Name:string;
Otch: string;
YearBirth:integer;
Mark:array[1..4]of byte;
end;
var
. Form1: TForm1;
Stud:array [1..10] of Student;
n:byte=0;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
n:=n+1;
with Stud[n] do
begin
Surname:=Edit1.Text;
Name:=Edit2.Text;
Otch:=Edit3.Text;
- 29 -
YearBirth:=StrToInt(Edit4.Text);
mark[1]:=StrToInt(Edit5.Text);
mark[2]:=StrToInt(Edit6.Text);
mark[3]:=StrToInt(Edit7.Text);
mark[4]:=StrToInt(Edit8.Text);
end;
Memo1.Lines.Append(Edit1.Text+' '+Edit2.Text+' '+Edit3.Text+' '+Edit4.Text);
Memo1.Lines.Append('Оценки: '+Edit5.Text+' '+Edit6.Text+' '+Edit7.Text+'
'+Edit8.Text);
Edit1.Clear;
Edit2.Clear;
Edit3.Clear;
Edit4.Clear;
Edit5.Clear;
Edit6.Clear;
Edit7.Clear;
Edit8.Clear;
if n=10 then GroupBox1.Enabled:=false;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
i,j:integer;
begin
Memo1.Clear;
for i:=1 to n do
with stud[i] do
for j:=1 to 4 do
begin
if Mark[j]=2 then
begin
Memo1.Lines.Append(Surname+' '+Name+' '+Otch+' '+IntToStr(YearBirth));
Memo1.Lines.Append('Оценки: '+' '+IntToStr(Mark[1])+'
'+IntToStr(Mark[2])+' '+IntToStr(Mark[3])+' '+IntToStr(Mark[4]));
break;
end;
end;
end;
end.
5.Результат:
- 30 -
9. Лабораторная работа № 8.
Обработка файлов
1.Выполнить задание, приведенное ниже как пример.
2.Выполнить задание своего варианта, из литературы[1] (стр.69-75)
Пример программы обработки файлов:
1.Конструирование формы:
При выполнении задания на форме были размещены следующие
компоненты:
- 31 -
TLabel – используется для создания комментариев. Для этого
использовалось свойство компонента Caption, которое имеет строковый тип.
TEdit – компонент, используемый для ввода критериев поиска.
TButton – кнопка, при нажатии которой производятся вычисления. Код
для вывода списка по запросу прописан в методе OnClick, который срабатывает
при нажатии кнопки во время исполнения программы. Комментарий на кнопке
прописывается в свойстве кнопки Caption.
TStringGrid – данный компонент был использован для вывода
информации о пациентах.
TGroupBox – компонент, предназначенный для группировки внутри себя
других компонентов. Заголовок компонента прописывается в его свойстве
Caption.
2.Условие:
Создать файл, содержащий сведения о пациентах глазной клиники.
Информация такова: фамилия пациента, пол, возраст, место проживания
(город), диагноз.
Написать программу, выдающую следующую информацию:
- количество иногородних, прибывших в клинику;
- список пациентов старше X лет с диагнозом Y.
3.Форма:
TGroupBox
TStringGrid
TEdit
TButton
Лабораторная работа № 9.
Графика в DELPHI
4.Программа
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- 32 -
Dialogs, Grids, StdCtrls;
type
TForm1 = class(TForm)
GroupBox1: TGroupBox;
StringGrid1: TStringGrid;
GroupBox3: TGroupBox;
Edit2: TEdit;
Label2: TLabel;
Edit1: TEdit;
Label3: TLabel;
Label1: TLabel;
Button1: TButton;
StringGrid2: TStringGrid;
Label4: TLabel;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var
f: TextFile;
Fm,S,A,C,D:string;
n:integer;
begin
StringGrid1.Cells[0,0]:='Фамилия';
StringGrid1.Cells[1,0]:='Пол';
StringGrid1.Cells[2,0]:='Возраст';
StringGrid1.Cells[3,0]:='Город';
StringGrid1.Cells[4,0]:='Диагноз';
StringGrid2.Cells[0,0]:='Фамилия';
StringGrid2.Cells[1,0]:='Пол';
StringGrid2.Cells[2,0]:='Возраст';
StringGrid2.Cells[3,0]:='Город';
StringGrid2.Cells[4,0]:='Диагноз';
AssignFile(f,'Pacient.txt');
Reset(F);
n:=0;
while not(Eof(f)) do
- 33 -
begin
Readln(f,Fm);
Readln(f,S);
Readln(f,A);
Readln(f,C);
Readln(f,D);
if C<>'Ухта' then n:=n+1;
with StringGrid1 do
begin
Cells[0,RowCount-1]:=Fm;
Cells[1,RowCount-1]:=S;
Cells[2,RowCount-1]:=A;
Cells[3,RowCount-1]:=C;
Cells[4,RowCount-1]:=D;
RowCount:=RowCount+1;
end;
end;
CloseFile(f);
StringGrid1.RowCount:=StringGrid1.RowCount-1;
Label4.Caption:='Количество иногородних пациентов: '+IntToStr(n);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
f: TextFile;
Fm,S,A,C,D:string;
begin
AssignFile(f,'Pacient.txt');
Reset(F);
StringGrid2.RowCount:=2;
while not(Eof(f)) do
begin
Readln(f,Fm);
Readln(f,S);
Readln(f,A);
Readln(f,C);
Readln(f,D);
if (StrToInt(A)>=StrToInt(Edit1.Text)) and (D=Edit2.Text) then
with StringGrid2 do
begin
Cells[0,RowCount-1]:=Fm;
Cells[1,RowCount-1]:=S;
Cells[2,RowCount-1]:=A;
Cells[3,RowCount-1]:=C;
Cells[4,RowCount-1]:=D;
RowCount:=RowCount+1;
- 34 -
end;
end;
CloseFile(f);
StringGrid2.RowCount:=StringGrid2.RowCount-1;
end;
end.
5.Результат:
10. Лабораторная работа № 9.
Графика в DELPHI
1.Выполнить задание, приведенное ниже как пример.
2.Выполнить задание своего варианта, из литературы[1] (стр.75-80)
Пример программы графики в DELPHI :
1.Конструирование формы:
Для прорисовки изображения было использовано свойство формы Canvas
(холст), а также методы позволяющие рисовать графические примитивы.
Для построения изображения были использованы следующие функции:

MoveTo(X,Y) – перемещение в точку с заданными координатами;
- 35 -

LineTo(X,Y) – строит линию от текущей точки, в которую перешли
с помощью предыдущей функции, до точки с заданными координатами;

RoundRect(X1,Y1, X2,Y2, X3,Y3) – строит прямоугольник с
закругленными углами, где X1,Y1 – координаты верхнего левого угла
прямоугольника, X2,Y2 – координаты нижнего правого угла прямоугольника,
X3,Y3 – радиусы закругления углов.

Arc(X1,Y1, X2,Y2, X3,Y3,X4,Y4) – построение дуги, где X1,Y1 –
координаты верхнего левого угла прямоугольника, X2,Y2 – координаты
нижнего правого угла прямоугольника, X3,Y3 – точка начала дуги, X4,Y4 –
точка конца дуги. Прорисовка дуги происходит против часовой стрелки.
2.Условие:
Составить программу вывода на экран рисунка, используя графические
возможности языка программирования.
3.Программа:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
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);
begin
With Canvas do
begin
Canvas.brush.color:=clblue;//Задает цвет кисти
RoundRect(25,50,325,250,30,30);//Рисует прямоугольник с закругленными
углами
Canvas.pen.color:=clblack;// Задает цвет пера
MoveTo(25,150);//Перемещает курсор в точку
- 36 -
LineTo(325,150);//Рисует линии
Canvas.Brush.color:=claqua;
Floodfill(27,155,clblack,fsborder);//Процедура заливки замкнутой области,
цветом кисти пока не встретится цвет границы
MoveTo(25,160);
LineTo(325,160);
Canvas.Brush.color:=clblue;
Floodfill(27,165,clblack,fsborder);
MoveTo(25,200);
LineTo(200,200);
LineTo(200,180);
LineTo(270,210);
LineTo(200,240);
LineTo(200,220);
LineTo(25,220);
Canvas.Brush.color:=clred;//
Floodfill(27,210,clblack,fsborder);
MoveTo(145,125);
LineTo(90,125);
LineTo(90,133);
LineTo(65,120);
LineTo(90,107);
LineTo(90,115);
LineTo(145,115);
LineTo(145,125);
Canvas.Brush.color:=clred;
Floodfill(144,123,clblack,fsborder);
Canvas.Brush.color:=clgray;
Ellipse(200,130,220,150);
Canvas.Brush.color:=clblue;
Ellipse(205,135,215,145);//Рисует окружность(колесо)
MoveTo(325,140);
LineTo(223,140);
Arc(195,125,225,157,225,141,195,141);//Рисует дугу
MoveTo(195,140);
LineTo(175,140);
LineTo(175,110);
LineTo(205,80);
LineTo(325,80);
MoveTo(325,90);
LineTo(220,90);
LineTo(195,115);
LineTo(325,115);
Canvas.Brush.color:=clyellow;
Floodfill(200,120,clblack,fsborder);
- 37 -
MoveTo(285,90);
LineTo(285,115);
MoveTo(280,90);
LineTo(280,115);
Canvas.Brush.color:=clyellow;
Floodfill(281,111,clblack,fsborder);
MoveTo(250,90);
LineTo(250,115);
MoveTo(245,90);
LineTo(245,115);
Canvas.Brush.color:=clyellow;
Floodfill(246,111,clblack,fsborder);
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Application.Terminate;
end;
end.
4.Результат:
Построение графика функции, заданной в полярной системе
координат.
1.Условие:
- 38 -
Построить график функции, заданной в полярной системе координат.
R=10*(1+cos(t)), где
2.Программа:
unit grfunc_;
interface
t € [0; 2π] шаг изменения t h=0.01
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;
type
TForm1 = class(TForm)
procedure FormPaint(Sender: TObject);
procedure FormResize(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
// Функция, график которой надо построить
Function f(t:real):real;
begin
f:=10*(1+cos(t));
end;
// строит график функции
procedure GrOfFunc;
var
t1,t2,x1,x2:real; // границы изменения аргумента функции
y1,y2:real; // границы изменения значения функции
t:real;
// аргумент функции
x:real;
// аргумент функции
y:real;
// значение функции в точке x
dt:real;
// приращение аргумента
L,b:integer; // левый нижний угол области вывода графика
w,h:integer; // ширина и высота области вывода графика
mx,my:real; // масштаб по осям X и Y
x0,y0:integer; // точка - начало координат
begin
// область вывода графика
L:=100;
// X - координата левого верхнего угла
b:=Form1.ClientHeight-20; // Y - координата левого верхнего угла
h:=Form1.ClientHeight-40; // высота
- 39 -
w:=Form1.Width-100;
// ширина
t1:=0; // нижняя граница диапазона аргумента
t2:=6.28; // верхняя граница диапазона аргумента
dt:=0.01; // шаг аргумента
// найдем максимальное и минимальное значения
// функции на отрезке [x1,x2]
x1:=f(t1)*cos(t1); // минимум
x2:=f(t1)*cos(t1); // максимум
y1:=f(t1)*sin(t1); // минимум
y2:=f(t1)*Sin(t1); // максимум
t:=t1;
repeat
x:=f(t)*cos(t);
y := f(t)*sin(t);
if y < y1 then y1:=y;
if y > y2 then y2:=y;
if x < x1 then x1:=x;
if x > x2 then x2:=x;
t:=t+dt;
until (t>=t2);
// вычислим масштаб
my:=h/abs(y2-y1); // масштаб по оси Y
mx:=w/abs(x2-x1); // масштаб по оси X
// оси
x0:=L;
y0:=b-Abs(Round(y1*my));
with form1.Canvas do
begin
// оси
MoveTo(l,b);LineTo(l,b-h);
MoveTo(x0,y0);LineTo(x0+w,y0);
TextOut(l+5,b-h,FloatToStrF(y2,ffGeneral,6,3));
TextOut(l+5,b,FloatToStrF(y1,ffGeneral,6,3));
// построение графика
t:=t1;
repeat
x:=f(t)*cos(t);
y:=f(t)*sin(t);
Pixels[x0+Round(x*mx),y0-Round(y*my)]:=clRed;
t:=t+dt;
until (t>=t2);
end;
end;
procedure TForm1.FormPaint(Sender: TObject);
begin
- 40 -
GrOfFunc;
end;
// изменился размер окна программы
procedure TForm1.FormResize(Sender: TObject);
begin
// очистить форму
form1.Canvas.FillRect(Rect(0,0,ClientWidth,ClientHeight));
// построить график
GrOfFunc;
end;
end.
3.Результат;
11. Библиографический список
1. Туманова О. Н., Лихачева Л. М., Шоль Н. Р. Сборник заданий по
программированию: Учебное пособие. – Ухта: УГТУ, 2001. -84с.
2. Культин Н. Б. Delphi в задачах и примерах. – СПб.: БХВ- Петербург, 2003. –
288 с.
3. Культин Н. Б. Самоучитель на Delphi – 7. – СПб.: БХВ- Петербург, 2004.
Download