Memo1.Lines.Add(‘ Результат S = ‘+FloatToStrF(s,fffixed,8,3));
end;
end.
1.4. Индивидуальные задания
По указанию преподавателя выберите индивидуальное задание. Уточните условие задания, количество, наименование, типы исходных данных. Нарисуйте схему алгоритма, разбив выражение на части. Установите необходимое количество окон Edit, меток label. Выберите необходимые типы переменных и функции их преобразования при вводе и выводе данных. Используйте Приложение 2.
С помощью инспектора объектов измените цвет формы, шрифт выводимых символов.
1.
При x=14.26, y=-1.22, z=3.5´10-2 t=0.564849.
2.
При x=-4.5, y=0.75´10-4, z=0.845´10-2 u=-55.6848.
3.
При x=3.74´10-2, y=-0.825, z=0.16´102, v=1.0553.
4.
При x=0.4´104, y=-0.875, z=-0.475´10-3 w=1.9873.
5.
При x=-15.246, y=4.642´10-2, z=20.001´102 a =-182.036.
6.
При x=16.55´10-3, y=-2.75, z=0.15 b =-40.63069.
7.
При x=0.1722, y=6.33, z=3.25´10-4 g =-205.306.
8.
При x=-2.235´10-2, y=2.23, z=15.221 j =39.374.
9.
При x=1.825´102, y=18.225, z=-3.298´10-2 y =1.2131.
10.
При x=3.981´10-2, y=-1.625´103, z=0.512 a=1.26185.
11.
При x=6.251, y=0.827, z=25.001 b=0.7121.
12.
При x=3.251, y=0.325, z=0.466´10-4 c=4.025.
13. .
При x=17.421, y=10.365´10-3, z=0.828´105 f=0.33056.
14. .
При x=12.3´10-1, y=15.4, z=0.252´103 g=82.8257.
15. .
При x=2.444, y=0.869´10-2, z=-0.13´103, h=-0.49871.
Тема 2. ОБРАБОТКА СОБЫТИЙ В СРЕДЕ DELPHI. Программирование разветвляющихся алгоритмов
Цель лабораторной работы: научиться пользоваться простейшими компонентами организации переключений (TСheckBox, TRadioGroup). Написать и отладить программу разветвляющегося алгоритма.
2.1. Обработка событий
Обо всех происходящих в системе событиях, таких как создание формы, нажатие кнопки мыши или клавиатуры и т.д., ядро системы Windows информирует работающие программы путем посылки соответствующих сообщений. Среда DELPHI позволяет принимать и обрабатывать большинство таких сообщений. Каждый компонент содержит относящиеся к нему обработчики сообщений на странице Events инспектора объектов.
Для создания обработчика события необходимо раскрыть список компонентов в верхней части окна инспектора объектов и выбрать необходимый компонент. Затем, на странице Events, нажатием левой клавиши мыши, выбрать обработчик и дважды щелкнуть по его левой (белой) части. В ответ DELPHI активизирует окно текста программы и покажет заготовку процедуры обработки выбранного события.
Каждый компонент имеет свой набор обработчиков событий, однако некоторые из них присуши большинству компонентов. Наиболее часто применяемые события представлены в табл. 2.1.
Таблица 2.1 | |
Событие | Описание события |
OnActivate | Форма получает это событие при активации |
OnCreate | Возникает при создании формы (компонент TForm). В обработчике данного события следует задавать действия, которые должны происходить в момент создания формы, обычно установку начальных значений в окнах формы |
OnKeyPress | Возникает при нажатии кнопки на клавиатуре. Параметр Key имеет тип Char и содержит ASCII-код нажатой клавиши (клавиша Enter клавиатуры имеет код #13, клавиша Esc — #27 и т.д.). |
OnKeyUp | Является парным событием для OnKeyDown и возникает при отпускании ранее нажатой клавиши |
OnClick | Возникает при нажатии кнопки мыши в области компонента |
OnDblClick | Возникает при двойном нажатии кнопки мыши в области компонента |
2.2. Операторы if и case языка Паскаль
Для программирования разветвляющихся алгоритмов в языке Pascal используются специальные переменные типа boolean, которые могут принимать только два значения — true и false (да, нет), а также операторы if и case. Оператор if проверяет результат логического выражения, или значение переменной типа boolean, и организует разветвление вычислений.
Например, если bl : boolean, x, y, u : integer, то фрагмент программы с оператором if может быть таким:
bl:=xy;
ifbl then u:=y-x
else u:=x-y;
Оператор выбора case организует разветвления в зависимости от значения некоторой переменной перечисляемого типа.
Например, если in: integer, то после выполнения
Case in of
0: u:=x+y;
1, 5: u:=x-y;
2, 4, 6: u:=x*y;
elseu=0;
end;
в соответствии со значением in вычисляется u. Если in=0, то u=x+y, если in=1 или 5, то u=x-y, если in=2 или 4 или 6, то u=x*y и, наконец, u=0 при любых значениях in отличных от 0, 1, 2, 4, 5, 6.
2.3. Кнопки-переключатели в Delphi
При создании программ в DELPHI для организации разветвлений часто используются компоненты в виде кнопок-переключателей. Состояние такой кнопки (включено — выключено) визуально отражается на форме. На форме (рис.2.1) представлены кнопки-переключатели двух типов (TCheckBox, TRadioGroup ).
Компонент TCheckBox организует кнопку независимого переключателя, с помощью которой пользователь может указать свое решение типа да/нет. В программе состояние кнопки связано со значением булевской переменной, которая проверяется с помощью оператора if.
Компонент TRadiogroup организует группу кнопок — зависимых переключателей. При нажатии одной из кнопок группы все остальные кнопки отключаются. В программу передается номер включенной кнопки (0,1,2,..), который анализируется с помощью оператора case.
2.4. Пример написания программы
Задание: ввести три числа — x, y, z. Вычислить по усмотрению u=sin(x) или u=x2, или u=ex. Найти максимальное из трех чисел: u, y ,z. Предусмотреть возможность округления результата до целого.
Создать форму, представленную на рис. 2.1, и написать соответствующую программу.
Рис. 2.1.
2.4.1. Coздание формы
Создайте форму, такую же как в первом задании, скорректировав текст надписей и положение окон TEdit.
2.4.2.Работа с компонентом TСheckBox
Выберите в меню компонентов Standard пиктограмму и поместите ее в нужное место формы. С помощью инспектора объектов измените заголовок (Caption) на “Округлять”. В тексте программы появилась переменная CheckBox1 типа TСheckBox. Теперь в зависимости от того, нажата или нет кнопка, булевская переменная CheckBox1.Checked будет принимать значения true или false.
2.4.3. Работа с компонентом TRadioGroup
Выберите в меню компонентов Standard пиктограмму и поместите ее в нужное место формы. На форме появится окаймленный линией чистый прямоугольник с заголовком RadioGroup1. Замените заголовок (Caption) на “u=”. Для того чтобы разместить на компоненте кнопки, необходимо свойство Columns установить равным единице (кнопки размещаются в одном столбце). Дважды щелкните по правой части свойства Items мышью, появится строчный редактор списка заголовков кнопок. Наберите три строки с именами: в первой строке – “cos(x)”,. во второй – “x в квадрате”, в третьей – “экспонента x”, нажмите ОК.
После этого на форме внутри окаймления появится три кнопки-переключателя с введенными надписями.
Обратите внимание на то, что в тексте программы появилась переменная RadioGroup1 типа TRadioGroup. Теперь при нажатии одной из кнопок группы в переменной целого типа RadioGroup1.ItemIndex будет находиться номер нажатой клавиши (отсчитывается от нуля), что используется в тексте приведенной программы.
Форма приведена на рис. 2.1. Текст программы приведен на Листинге 2.1.
Листинг 2.1.
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Edit1: TEdit;
CheckBox1: TCheckBox;
RadioGroup1: TRadioGroup;
Label2: TLabel;
Edit2: TEdit;
Label3: TLabel;
Edit3: TEdit;
Label4: TLabel;
Memo1: TMemo;
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private { Private declarations }
public { Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
Edit1.text:=’0,1′;
Edit2.text:=’0,356′;
Edit3.text:=’0,53′;
Memo1.Clear;
Memo1.Lines.Add(‘Рез-ты ст. гр. 552002 Петрова И.В.’);
RadioGroup1.ItemIndex:=0; // Активна первая кнопка RadioGroup1
end;
procedure TForm1.Button1Click(Sender: TObject);
var x,y,z,u,ma:extended;
begin
// Ввод исходных данных
x:=StrToFloat(Edit1.Text);
y:=StrToFloat(Edit2.Text);
z:=StrToFloat(Edit3.Text);
// Вывод введенных исходных данных
Memo1.Lines.Add(‘ x=’+FloatToStrF(x,ffFixed,8,4));
Memo1.Lines.Add(‘ y=’+FloatToStrF(y,ffFixed,8,4));
Memo1.Lines.Add(‘ z=’+FloatToStrF(z,ffFixed,8,4));
// Проверка номера нажатой кнопки и выбор функции
case RadioGroup1.ItemIndex of
0: u:=cos(x);
1: u:=sqr(x);
2: u:=exp(x);
end;
// Нахождение максимального из трех чисел
if uy then ma:=u else ma:=y;
if zma then ma:=z;
// Вывод результата
if CheckBox1.Checked then // Проверка состояния кнопки CheckBox1
Memo1.Lines.Add(‘ max=’+IntToStr(Round(ma))
else
Memo1.Lines.Add(‘ max=’+FloatToStrF(ma,ffGeneral,8,2));
end;
end.
2.5. Выполнение индивидуального задания
По указанию преподавателя выберите индивидуальное задание. Нарисуйте схему алгоритма. В качестве f(x) использовать по выбору: sh(x) или x2или ex. Отредактируйте вид формы и текст программы, в соответствии с полученным заданием. Используя теорию п. 2.1. создайте вместо обработчика Button1.Click обработчик Memo1Click или Label1DblClick
.
1. | 2. | ||
3. | 4. | ||
5. | 6. | ||
7. | 8. | ||
9. | 10. | ||
11. | 12. | ||
13. | 14. | ||
15. |
Тема 3. СРЕДСТВА ОТЛАДКИ ПРОГРАММ В СРЕДЕ DELPHI. Программирование циклических алгоритмов.
Цель лабораторной работы: изучить простейшие средства отладки программ в среде DELPHI. Составить и отладить программу циклического алгоритма.
3.1. Средства отладки программ в DELPHI
Практически в каждой вновь написанной программе после запуска обнаруживаются ошибки.
Ошибки первого уровня (ошибки компиляции) связаны с неправильной записью операторов (орфографические, синтаксические). При обнаружении ошибки компилятор DELPHI останавливается напротив первого оператора, в котором обнаружена ошибка. В нижней части экрана появляется текстовое окно, содержащее сведения обо всех ошибках найденных в проекте. Каждая строка этого окна содержит имя файла, в котором найдена ошибка, номер строки с ошибкой и характер ошибки. Для быстрого перехода к интересующей ошибке необходимо дважды щелкнуть на строке с ее описанием. Для получения более полной информации о характере ошибки необходимо обратится к HELP нажатием клавиши F1. Следует обратить внимание на то, что одна ошибка может повлечь за собой другие, которые исчезнут при ее исправлении. Поэтому следует исправлять ошибки последовательно, сверху вниз и, после исправления каждой ошибки компилировать программу снова.
Ошибки второго уровня (ошибки выполнения) связаны с ошибками выбранного алгоритма решения или с неправильной программной реализацией алгоритма. Эти ошибки проявляются в том, что результат расчета оказывается неверным либо происходит переполнение, деление на ноль и др. Поэтому перед использованием отлаженной программы ее надо протестировать, т.е. сделать просчеты при таких комбинациях исходных данных, для которых заранее известен результат. Если тестовые расчеты указывают на ошибку, то для ее поиска следует использовать встроенные средства отладки среды DELPHI.
В простейшем случае для локализации места ошибки рекомендуется поступать следующим образом. В окне редактирования текста установить курсор в строке перед подозрительным участком и нажать клавишу F4 (выполнение до курсора) или щелкнуть на серой полосе слева от оператора для обозначения точки прерывания (появится красная точка) и нажать клавишу F9. Выполнение программы будет остановлено на указанной строке. Для просмотра текущих значений можно поместить на нужную переменную курсор (на экране будет высвечено ее значение), либо нажать Ctrl-F7 (окно оценки и модификации) или Ctrl-F5 (окно наблюдения) и в появившимся диалоговом окне указать интересующую переменную. Нажимая клавишу F7 (пошаговое выполнение), можно построчно выполнять программу, контролируя изменение тех или иных переменных и правильность вычислений. Если курсор находится внутри цикла, то после нажатия F4 расчет останавливается после одного выполнения тела цикла. Для продолжения расчетов следует нажатьменю Run или F9.
3.2. Операторы организации циклов repeat, whyle, for языка Pascal
Под циклом понимается многократное выполнение одних и тех же операторов при различных значениях промежуточных данных. Число повторений может быть задано в явной или неявной форме. Для организации повторений в языке Pascal предусмотрены три различных оператора цикла.
Оператор
Repeat
until;
организует повторение операторов, помещенных между ключевыми словами repeat и until, до тех пор, пока не выполнится =true, после чего управление передается следующему за циклом оператору.
Оператор
Статьи к прочтению:
Проход дымохода через окно. Мой бюджетный вариант.
Похожие статьи:
-
Memo1.clear; // очистка окна редактора memo1
Синицын А. К., Навроцкий А. А. ОСНОВЫ АЛГОРИТМИЗАЦИИ И ПРОГРАММИРОВАНИЯ В СРЕДЕ DELPHI. БАЗОВЫЕ ТИПЫ И ПРОСТЕЙШИЕ АЛГОРИТМЫ Лабораторный практикум по…
-
Элементы окна и работа с окном
Только одно из находящихся на экране окон может быть активным, все остальные окна неактивны. Заголовок активного окна выделен ярким цветом, заголовки…