Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Отладчик позволяет выполнять программу построчно, по функциям или по блокам. Указав, какие части программы должны выполняться и когда выполнение программы должно приостановиться, можно быстро пропускать те участки программы, которые работают правильно, сосредоточившись на отладке тех частей, которые приводят к неверному выполнению программы. Для управления выполнением программы предназначены следующие команды.
Run | Программа выполняется без остановки на каждой строке. Эта программа эквивалентна выполнению программы вне отладчика |
Step Over | Программа выполняется построчно. Подпрограммы выполняются как одна строка |
Trace Into | Программа выполняется построчно. Также выполняется каждая строка подпрограммы |
Run To Cursor | Программа выполняется до той строки, на которой находится курсор в окне Редактора Кода |
Program Pause | Выполнение программы приостанавливается |
Program Reset | Выполнение программы завершается |
Add Breakpoint | Можно указать точки прерывания при выполнении программы |
Add Watch | Можно указать точки просмотра для слежения за изменением значений переменных или полей структур данных |
В процессе обучения программированию очень удобно пользоваться пошаговым выполнением программы. Почему? Это позволяет посмотреть, как изменяются значения переменных, участвующих в программе, в процессе пошагового выполнения. Какую последовательность действий предпринять? Установить курсор в тексте программы на вторую исполняемую строку после Begin и запустить команду Run To Cursor (F4). Программа выполнит этот оператор и остановится. В окне Редактора Кода выполненная строка будет помечена зеленой стрелкой слева и выделена синим цветом. Если навести курсор на название какой-нибудь переменной из предшествующей части программы, рядом с курсором появится справочное окошко, где приведено значение этой переменной. Далее запустить командой Step Over (F8) следующий шаг выполнения. Будет помечена следующая строка при выполнении. С помощью курсора мыши можно посмотреть, как изменились значения переменных при выполнении этого шага программы.
Часто при отладке пользуются окном точек просмотра. Пометить переменные для просмотра можно, наведя на них курсор и выполнив команду Add Watch (Ctrl+F5). Далее следует запустить пошаговое выполнение программы. Часто окно Watch List бывает закрыто окном редактора кода. Его надо отодвинуть.
Отладочные настройки отменяются командой Program Reset.
Практика
Задача
Составить программу, определяющую по росту и весу пользователя программы, похудеть или поправиться ему нужно и на сколько килограммов.
Компоненты
Имя компонента | Свойства компонентов | Значение | Назначение |
Form1 | Caption | Контроль веса | Заголовок формы |
Label1 | Caption | Поле для ввода веса | Подсказка пользователю |
Label2 | Caption | Поле для ввода роста | Подсказка пользователю |
Label3 | Caption | Поле вывода результатов работы программы | |
Button1 | Caption | Вычислить | Кнопка для вычисления |
Переменные
Обозначение в программе | Содержание | Тип |
wes | Вес | Вещественный |
Rost | Рост | Вещественный |
opt | Оптимальный вес | Вещественный |
d | Отклонение от оптимального веса | Вещественный |
Проект формы
unit wtest;
…………………….
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var
wes:real; {вес}
Rost:real; {рост}
opt:real; {оптимальный вес}
d:real; {отклонение от оптимального веса}
begin
wes:=StrToFloat(Edit1.text);
Rost:=StrToFloat(Edit2.Text);
opt:=Rost-100;
if wes=opt
then
Label3.caption:='Ваш вес оптимален!'
else
if wes<opt
then
begin
d:=opt-wes;
Label3.caption:='Вам надо поправиться, на'+ FloatTostr(d)+ 'кг.';
end
else
begin
d:=wes-opt;
Label3.caption:='Надо немного похудеть, на '+ FloatTostr(d)+ 'кг.';
end;
end;
end.
Результаты работы программы
Задача
Некоторая страховая компания страхует индивидуальные дома по следующей схеме:
Стоимость страховки = Площадь * Цена_кв.м * Коэф.этажности * *Износ/100*Проценты*Курс_у.е..
Цена_кв.м:
Кирпичный коттедж — 200 у.е.
Дом из оцилированного бревна — 250 у.е.
Дом из бруса — 150 у.е.
Дом из бревен — 100 у.е.
Каркасно-щитовой — 50 у.е.
Коэффициетн этажности:
1 этаж — 1
2 этажа — 1,2
3 этаж — 1,3
Коэффициент износа:
Возраст дома:
Более 15 лет — 0,8
От 11 до15 лет — 0,6
от 6 до 10лет — 0,4
до 5 лет — 1
Проценты страхового сбора:
Количество лет страхования в данной страховой компании
Превышает 7 лет — 1 процент
От 3 до 7 лет — 2 процента
До 3 лет (включительно) — 3 процента
Компоненты
Имя компонента | Свойства компонентов | Значение | Назначение |
Form1 | Caption | Сумма страховки индивидуального дома | Заголовок формы |
Label1 | Caption | Программа для расчета суммы страхования индивидуального дома в некоторой страховой компании | Справочная информация для пользователя программы |
Label2 | Caption | Общая площадь (кв.м) | Подсказка пользователю |
Label3 | Caption | Год постройки | Подсказка пользователю |
Label4 | Caption | Сколько лет дом страховался в данной страховой компании | Подсказка пользователю |
Label5 | Caption | Поле для вывода суммы страховки дома | |
Label6 | Caption | Поле для вывода текущей даты, установленной на компьютере | |
Label7 | Caption | Курс у.е. | Подсказка пользователю |
Edit1 | Text | ….. | Поле для ввода общей площади |
Edit2 | Text | ….. | Поле для ввода года постройки дома |
Edit3 | Text | ….. | Поле для ввода количества лет страхования в данной компании |
Edit4 | Text | Поле для ввода курса у.е. | |
Button1 | Caption | РАСЧЕТ | Кнопка для вычисления суммы страховки |
Button2 | Caption | ВЫХОД | Кнопка закрытия формы и выхода из программы |
ListBox1 | Items | Кирпичный коттедж Дом из оцилированного бревна Дом из бруса Дом из бревен Каркасно-щитовой | Список для выбора типа дома |
ComboBox1 | Text Items | Количество этажей | Поле со списком |
Переменные
Обозначение в программе | Содержание | Тип |
S | Общая площадь индивидуального дома | Вещественный |
Zena_m | Цена кв. метра | Денежный |
Summa | Сумма страхового взноса | Денежный |
d | Текущий день | Целый беззнаковый |
m | Текущий месяц | Целый беззнаковый |
Y | Текущий год | Целый беззнаковый |
God | Год постройки дома | Целый беззнаковый |
KE | Коэффициент этажности | Вещественный |
Iznos | Коэффициент износа | Вещественный |
Prozent | Процент страхового взноса | Вещественный |
Kurs | Курс у.е. | Вещественный |
Проект формы
Текст модуля
unit Unit1;
……………………….
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
Var S:Real; //общая площадь дома
Zena_m, Summa: currency;// цена кв.м, сумма страховки дома
d,m,Y,God: Word; // день, месяц, год страхования; год
//постройки дома
KE:Real; // коэффициент, учитывающий этажность
Iznos:Real;// коэффициент износа
Prozent:Integer; // процент страхового взноса
Kurs:Real; // курс у.е.
begin
// ввод площади дома, года постройки и курса у.е.
S:=StrToFloat(Edit1.Text);
God:=StrToInt(Edit2.Text);
Kurs:=StrToFloat(Edit4.Text);
// вывод текущей даты на форму
Label6.Caption:='Сегодня: '+DateToStr(Date);
// по выбранному из списка типу дома определяется цена за
//кв.м
Case ListBox1.ItemIndex of
0:Zena_m:=200;
1:Zena_m:=250;
2:Zena_m:=150;
3:Zena_m:=100;
4:Zena_m:=50;
Else Exit;
end;
// определение коэффициента этажности
// по выбранному из поля со списком числу этажей
Case ComboBox1.ItemIndex of
0:KE:=1;
1:KE:=1.2;
2:KE:=1.3;
Else Exit;
end;
// разделение текущей даты на составляющие
// и помещение их в отдельные переменные: год, месяц, день
Decodedate(Date,Y,m,d);
// если разность между текущим годом и годом постройки дома
// не больше 5 лет, то износ равен 1
If Y-God<=5 Then Iznos:=1
// иначе если разность между текущим годом и годом постройки // дома
// больше 5 лет и не более 10, то износ равен 0,8
Else If ((Y-God)>5) and ((Y-God)<=10)
Then Iznos:=0.8
// иначе если разность между текущим годом и годом
// постройки дома
// не больше 15 лет, то износ равен 0,6
Else If Y-God<=15 Then Iznos:=0.6
Else
Iznos:=0.4;// иначе износ 0,4
// если дом застрахован в данной компании не более 3 лет,
// то процент страхового взноса равен 3
If StrToInt(Edit3.Text)<=3 Then Prozent:=3
// иначе дом застрахован в данной компании более 7 лет,
// то процент страхового взноса равен 1
Else If StrToInt(Edit3.Text)>7 Then Prozent:=1
// иначе дом страхуется от 3 до 7 лет,
// процент страхового взноса равен 2
Else Prozent:=2;
// расчет суммы страхового взноса
Summa:=S*Zena_m*KE*Iznos/100*Prozent*Kurs;
// вывод суммы страховки на форму
Label5.Caption:='Сумма страховки Вашего дома составляет: '
+FloatToStrF(Summa,Fffixed,10,2)+' руб.'
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Form1.Close;
end;
end.
Результаты работы программы
Дата публикования: 2014-11-02; Прочитано: 289 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!