Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

лаба / documents-export-2013-10-05 / мет_Прогр_лаб1

.pdf
Скачиваний:
41
Добавлен:
22.03.2015
Размер:
307.03 Кб
Скачать

11

Также при компиляции программы создаются промежуточные файлы скомпилированных модулей, с расширением «.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?