лаба / documents-export-2013-10-05 / мет_Прогр_лаб1
.pdf11
Также при компиляции программы создаются промежуточные файлы скомпилированных модулей, с расширением «.dcu». Для работы исполняемого файла они не требуются.
Если в процессе компиляции программы компилятор находит синтаксическую ошибку в программе, процесс компиляции прерывается, выводится сообщение об ошибке и курсор устанавливается на предполагаемое место ошибки.
Трассировка программы
Для поиска алгоритмических ошибок среда программирования Delphi содержит отладчик, который позволяет выполнять программу в режиме трассировки. В этом режиме программа выполняется по шагам и программист может контролировать на каждом шаге текущие значения переменных программы. За один шаг программы в Delphi принимается одна строка программы. Текущая выполняемая строка программы выделяется в окне редактора определенным цветом (цвет зависит от настроек среды).
Существует следующие способы трассировки:
-выполнение одного оператора программы без входа в подпрограммы
–выполняется один оператор программы, причем вызовы подпрограмм считаются одним оператором.
-выполнение одного оператора программы с входом в подпрограммы – выполняется один оператор программы, причем подпрограммы также выполняются по шагам.
В случае если необходимо трассировать не всю программу с начала, а только определенную ее часть, можно выполнить часть программы в обычном режиме и только затем войти в режим трассировки. Это можно сделать следующими способами:
12
-выполнение программы до курсора – программист может выполнить фрагмент программы не в пошаговом режиме, установив курсор на строку после данного фрагмента и нажав <F4>. После достижения строки, на котором установлен курсор, программа приостанавливается, далее программист может просмотреть переменные и продолжить выполнение программы в любом режиме.
-установка контрольных точек – программист может установить на любую строку программы, содержащую выполняемые операторы, контрольную точку, установив курсор на эту строки и нажав <F5>. При запуске программы из Delphi по нажатию <F9>, отладчик контролирует выполнение программы и перед выполнением строки, на которую установлена контрольная точка, приостанавливает выполнение программы, также как и в предыдущем способе.
В среде существует специальное служебное окно «Watches», в котором отображаются значения переменных в процессе трассировки. Для добавления переменной в список просмотра необходимо нажать <Ctrl>+<F5> и ввести имя переменной.
Для просмотра или изменения текущего значения переменной можно нажать <Ctrl>+<F7>. При этом появляется окно, в котором программист может ввести имя переменной и просмотреть или изменить значение указанной переменной.
Режим трассировки завершается при завершении работы программы или досрочно при нажатии программистом <Ctrl>+<F2>.
Так как в приложениях применяется событийная модель, то для трассировки определенного обработчика события необходимо выполнять программу до курсора или устанавливать контрольные точки, которые должны находиться в нужном обработчике события.
13
Основы вывода графики под ОС Windows и компоненты Delphi для работы с графикой.
Для вывода графики в ОС Windows существует несколько стандартных программных интерфейсов (GDI, GDI+, Direct2D и т.д.).
Самый простой из них – GDI (Graphic Device Interface – интерфейс графических устройств), который может применяться для построения несложной 2D-графики.
GDI представляет собой набор подпрограмм, предоставляемых операционной системой, при помощи которых программа может строить растровое изображение используя доступные графические устройства. Так как ОС Windows является системой с оконным графическим интерфейсом, общая плоскость экрана разделяется на плоскости рисования (которые могут перекрываться). Каждая плоскость рисования имеет свою систему координат и свои параметры рисования. Параметры плоскости рисования содержатся в так называемом контексте отображения, который указывается при вызове GDI-функций.
Каждый графический элемент Windows (например, окно, кнопка, окно редактирования) имеет свою плоскость рисования.
В Delphi имеется специальный класс TCanvas (канва) для работы с плоскостью рисования. Верхний левый угол плоскости рисования класса TCanvas имеет координаты (0,0). Таким образом, при рисовании необходимо учитывать, что ось Y направлена вниз.
У ряда компонент имеется свойство Canvas типа TCanvas, таким образом эти компоненты позволяют рисовать на их поверхности. Размер плоскости рисования задается размерами компонента (свойства Width и Height). Некоторые их этих компонент - TForm, TImage, TPaintBox, TListBox, TPrinter.
14
Самый простой способ отображения графика функции – это рисование прямо на окне приложения (компонент TForm). Однако если в окне также расположены какие-либо другие элементы, то программирование рисования будет затруднено, так как необходимо будет контролировать размеры области рисования.
В Delphi имеется специальный компонент TPaintBox, который имеет плоскость рисования. Можно расположить этот элемент в окне и тогда при отображении графика функции на плоскости рисования этого элемента все линии выходящие за пределы плоскости рисования будут отсекаться.
Компоненты, необходимые для выполнения работы.
TForm - Форма, реализует окно приложения. Некоторые свойства:
Name – имя объекта; Caption – заголовок окна;
Left, Top - положение окна по X и Y; Width, Height - размеры окна по X и Y; Color – цвет фона окна;
BorderStyle – стиль рамки окна; Некоторые обработчики событий: OnCreate – действия при создании окна; OnClose - действия при закрытии окна; OnPaint – действия при перерисовке окна. Некоторые методы:
Close – закрыть окно; Hide – свернуть окно; Show – показать окно.
15
TLabel – Компонент представляет собой статический текст. С помощью этого компонента на рабочей поверхности формы можно отобразить информацию, сделать пояснения и показать названия других компонентов.
Некоторые свойства:
Caption - содержит строку с выводимым текстом; Color – цвет фона надписи;
Font – свойства шрифта надписи.
TButton – Обычная кнопка Windows. Некоторые свойства:
Caption – надпись на кнопке; Font – свойства шрифта надписи. Некоторые обработчики событий:
OnClick - действия при нажатии на кнопку.
TEdit – Строка редактирования. Предназначен для ввода/вывода или редактирования символьной строки.
Некоторые свойства: Color – цвет фона;
Text – текущая отображаемая строка. Тип string;
ReadOnly – имеет тип Boolean. Если значение True, то редактирование и ввод строки запрещен.
TPaintBox – (закладка System) – окно рисования, содержит объект класса TCanvas для отображения графики.
Основное свойство:
Canvas – канва - объект класса TCanvas для отображения графики.
16
Некоторые обработчики событий:
OnClick - действия при нажатии на кнопку мыши в окне рисования; OnDblClick - действия при двойном нажатии на кнопку мыши; OnPaint - действия при перерисовки окна рисования.
Класс TCanvas – класс для отображения графики (плоскость рисования).
Некоторые свойства:
Brush – кисть - объект класса TBrush, содержит текущие параметры заливки(фона);
Pen – перо - объект класса TPen, содержит текущие параметры линий; Font – шрифт - объект класса TFont, содержит текущие параметры
шрифта для отображения текста;
Pixels[x,y] – массив для непосредственного доступа к точке плоскости рисования с координатами x,y;
PenPos – тип Tpoint, позиция пера, содержит текущие координаты начала отрисовки линий.
Некоторые методы:
MoveTo(x,y) – установка текущей позиции пера в точку x,y; LineTo(x,y) – нарисовать линию из текущей позиции пера в точку x,y и
переместить текущую позиции пера в точку x,y;
Rectangle(x1,y1,x2,y2) – нарисовать прямоугольник с заданными координатами, перо задает параметры границы, а кисть параметры заливки;
TextOut(x,y,s) – нарисовать строку текста s, начиная с точки x,y.
17
Класс TPen - параметры линий Cвойства:
Style – стиль линии, например psDashDot – штрих-пунктирная линия; Color – цвет линии, например clBlack – черный, clRed - красный; Width – толщина линии.
Класс TBrush - параметры заливки(фона) Cвойства:
Style – стиль заливки, например, bsCross – заливка горизонтальными и вертикальными линиями, bsSolid – сплошная заливка;
Color – цвет заливки.
Функции, необходимые для выполнения работы.
StrToFloat(s:string):extended - Преобразование строки содержащей вещественное число в вещественное значение.
Пример (ввод вещественного значения с помощью объекта типа TEdit):
var a:real;
...
a:= StrToFloat(Edit1.Text);
...
FloatToStr(f:extended):string - Преобразование вещественного значения в строку содержащую это значение.
Пример (вывод вещественного значения с помощью объекта типа
TEdit):
var a:real;
...
a:=0.999;
18
Edit1.Text := FloatToStr(a);
...
4. Задание на лабораторную работу
1.Запустить среду программирования Delphi;
2.Изучить интерфейс среды, структуру проекта, горячие клавиши;
3.Изучить приведенный ниже пример и пример приложения «вычисление корней квадратного уравнения»;
4.Разработать приложение «вычисление корней квадратного уравнения»:
1.Разработать интерфейс приложения, используя необходимые компоненты;
2.Создать необходимые обработчики событий;
3.Произвести компиляцию и запуск программы;
4.Изучить способы трассировки программы
5.Выполнить трассировку программы, для получения значения переменных.
Пример обработчика события «нажатие на кнопку» вычисляющего отношение двух чисел:
procedure TForm1.Button1Click(Sender: TObject);
var a,b,c:real;
begin
a:=StrToFloat(Edit1.Text);
b:=StrToFloat(Edit2.Text);
if b=0 then
Edit3.Text:='Деление на 0';
else
begin
19
c:=a/b;
Edit3.Text:=FloatToStr(c);
end;
end;
Пример закрашивания черным цветом всего окна рисования PaintBox1:
PaintBox1.Canvas.Brush.Color:=clBlack;
PaintBox1.Canvas.Pen.Color:=clBlack;
PaintBox1.Canvas.Rectangle(0,0,
PaintBox1.Width-1,PaintBox1.Height-1);
Пример отображения графика функции y=10*sin(x) в окне рисования
PaintBox1 (размер окна 250х250):
var x,y:real;
i:integer;
...
PaintBox1.Canvas.Pen.Color:=clRed;
PaintBox1.Canvas.MoveTo(0,125);
for i:=0 to 249 do
begin
x:=i/10;
y:=10*sin(x);
PaintBox1.Canvas.LineTo(i,round(y)+125);
end;
...
5.Контрольные вопросы
1.Какие основные этапы создания программы?
2.Что такое отладка программы?
20
3.Какие бывают виды ошибок в программе?
4.Что такое транслятор?
5.В чем отличия компилятора и интерпретатора?
6.Какие основные особенности среды программирования Delphi?
7.Какие основные элементы интерфейса среды Delphi?
8.Что такое компонент?
9.Как организована событийная модель Windows?
10.Что такое событие и обработчики событий?
11.Какая структура у проекта Delphi?
12.Что такое форма?
13.Как осуществляется компиляция программы в среде Delphi?
14.Как осуществляется трассировка программы в среде Delphi?
15.Как осуществляется вывод графики под ОС Windows?
16.Какие компоненты Delphi можно использовать для вывода графики?
17.Как реализовать отображение графика функции в программе на
Delphi?
