Создание обработчиков событий formсreate
После этого на форме внутри окаймления появится три кнопки-переключателя с введенными надписями.
Обратите внимание на то, что в тексте программы появилась переменная RadioGroup1 типа TRadioGroup. Теперь при нажатии одной из кнопок группы в переменной целого типа RadioGroup1.ItemIndex будет находиться номер нажатой клавиши (отсчитывается от нуля), что используется в тексте приведенной программы.
2.3.4. Создание обработчиков событий FormСreate и Botton1Сlick
Процедуры — обработчики событий FormСreate и Botton1Сlick создаются аналогично тому, как и в первой теме. Текст процедур приведен ниже.
Запустите программу и убедитесь в том, что все ветви алгоритма выполняются правильно. Форма приведена на рис.2.1.
Текст программы приведен ниже.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
CheckBox1: TCheckBox;
RadioGroup1: TRadioGroup;
Memo1: TMemo;
Button1: TButton;
Edit1: TEdit;
Label1: TLabel;
Label2: TLabel;
Edit2: TEdit;
Label3: TLabel;
Edit3: TEdit;
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′;
Memo1.Clear;
Memo1.Lines. Add(‘Рез-ты ст. гр.920201 Петрова И. И.’);
end;
procedure TForm1.Button1Click(Sender: TObject);
var x, y,z, u,ma:extended;
begin
// Ввод исходных данных и их вывод в окно Memo1
x:=StrToFloat(Edit1.Text);
Memo1.Lines. Add(‘ x=’+Edit1.Text);
y:=StrToFloat(Edit2.Text);
Memo1.Lines. Add(‘ y=’+Edit2.Text);
z:=StrToFloat(Edit3.Text);
Memo1.Lines. Add(‘ z=’+Edit3.Text);
// Проверка номера нажатой кнопки и выбор соответствующей ей функции
case RadioGroup1.ItemIndex of
0: u:=cos(x);
1: u:=sin(x);
2: u:=sin(x)/cos(x);
end;
// Проверка состояния кнопки CheckBox1
if CheckBox1.Checked then
begin u:=abs(u);
y:=abs(y);
z:=abs(z) end;
// Нахождение максимального из трех чисел
if u>y then ma:=u else ma:=y;
if z>ma then ma:=z;
if CheckBox1.Checked then
Memo1.Lines. Add(‘ maxabs=’+FloatToStrF(ma, ffFixed,8,2))
else
Memo1.Lines. Add(‘ max=’+FloatToStrF(ma, ffGeneral,8,2));
end;
end.
2.4. Выполнение индивидуального задания
По указанию преподавателя выберите индивидуальное задание из нижеприведенного списка. В качестве f(x) использовать по выбору: sh(x), x2, ex. Отредактируйте вид формы и текст программы, в соответствии с полученным заданием.
1. |
|
2. |
|
3. |
|
4. |
|
5. |
|
6. |
|
7. |
|
8. |
|
9. |
|
10. |
|
11. |
|
12. |
|
13. |
|
14. |
|
15.
16. Известно, что из четырех чисел ,, и одно отлично от трех других, равных между собой. Присвоить номер этого числа переменной n.
17. По номеру n (n>0) некоторого года определить c – номер его столетия (учесть, что, к примеру, началом XX столетия был 1901, а не 1900 год!).
18. Значения переменных a, b и с поменять местами так, чтобы оказалось a<=b<=c.
19. Дано целое k от 1 до 180. Определить, какая цифра находится в k-й позиции последовательности 10111213…9899 , в которой выписаны подряд все двузначные числа.
20. Дано натуральное k. Определить k–ю цифру в последовательности 110100100010000100000…, в которой выписаны подряд степени 10.
21. В старояпонском календаре был принят 60-летний цикл, состоявший из пяти 12-летних подциклов. Подциклы обозначались названиями цвета: green (зеленый), red (красный), yellow (желтый), white (белый) и black (черный). Внутри каждого подцикла годы носили названия животных: крысы, коровы, тигра, зайца, дракона, змеи, лошади, овцы, обезьяны, курицы, собаки и свиньи. (1984 год – год зеленой крысы –был началом очередного цикла). Разработать программу, которая вводит номер некоторого года нашей эры и выводит его название по старояпонскому календарю.
22. Если сумма трех попарно различных действительных чисел x, y, z меньше единицы, то наименьшее из этих трех чисел заменить полусуммой двух других; в противном случае заменить меньшее из x и y полусуммой двух оставшихся значений.
23. Для целого числа k от 1 до 99 вывести фразу “мне k лет”, учитывая при этом, что при некоторых значениях k слово “лет” надо заменить на слово “год” или “года”.
24. Для натурального числа k вывести фразу “мы выпили k бутылок пива”, согласовав окончание слова “бутылка” с числом k.
25. Type курс=(C, В,Ю, З); {север, восток, юг, запад}
Приказ=(вперед, вправо, назад, влево);
Var K1,K2:курс; ПР:приказ;
Корабль сначала шел по курсу K1, а затем его курс был изменен согласно приказу ПР. Определить K2 — новый курс корабля.
26. Type месяц=(январь, февраль, март, апрель, май, июнь, июль, август,
сентябрь, октябрь, ноябрь, декабрь);
день=1..31;
var d1,.d2:день;
m1,m2:месяц;
t:boolean;
Переменной t присвоить значение 1 если дата d1, m1 предшествует (в рамках года) дате d2, m2, и значение 0 в других случаях.
27. Type нота=(до, ре, ми, фа, соль, ля, си);
интервал=(секунда, терция, кварта, квинта, секста, септима);
var n1,n2:нота;
i:интервал;
Определить i-й интервал, образованный нотами n1 и n2(n1¹n2): секунда — это интервал из двух соседних (по кругу) нот (например, ре и ми, си и до), терция — интервал через ноту (например, фа и ля, си и ре) и т. д.
28. Type единица=(дециметр, километр, метр, миллиметр, сантиметр);
длина=real;
Var x : длина;
P : единица;
Значение переменной x, означающее некоторую длину в единицах p,заменить на величину этой же длины в метрах.
29. Type сезон=(зима, весна, лето, осень);
Var m:месяц; {определение «месяц» см. в 26}
S:сезон;
Определить s-сезон, на который приходится месяц m.
30. Var k:1..9; Вывести значение переменной k римскими цифрами.
Тема 3. Программирование циклических алгоритмов
Цель лабораторной работы: изучить простейшие средства отладки программ в среде DELPHI. Составить и отладить программу циклического алгоритма.
3.1. Операторы организации циклов repeat, whyle, for языка Pascal
Под циклом понимается многократное выполнение одних и тех же операторов при различных значениях промежуточных данных. Число повторений может быть задано в явной или неявной форме.
Для организации повторений в языке Pascal предусмотрены три различных оператора цикла.
Оператор
repeat
<операторы>
until<условие>;
организует повторение операторов, помещенных между ключевыми словами repeat и until, до тех пор, пока не выполнится <условие>=true, после чего управление передается следующему за циклом оператору.
Оператор
While<условие>do begin
<операторы>
end;
организует повторение операторов, помещенных между begin и end, до тех пор, пока не выполнится <условие>=fulse. Заметим, что если <условие>=fulse при первом входе, то <операторы> не выполнятся ни разу, в отличие от repeat, в котором хотя бы один раз они выполнятся.
Оператор
for i:=i1 to i2 do begin
<операторы>
end;
организует повторение операторов при нарастающем изменении переменной цикла i от начального значения i1 до конечного i2 с шагом “единица”. Заметим, что если i2>i1, то <операторы> не выполнятся ни разу. Модификация оператора for i:=i2 downto i1 do begin <операторы> end организует повторения при убывающем изменении i на единицу.
3.2. Средства отладки программ в DELPHI
Практически в каждой вновь написанной программе после запуска обнаруживаются ошибки.