2011-2012 учебный год
К сегодняшнему занятию Вами изучены следующие элементы управления
Edit
Label
Button
RadioButton
CheckBox
SpinEdit (на вкладке Misc)
ListBox (на вкладке Standard)
Memo (на вкладке Standard)
ShowMessage
Компонент TStringGrid - на вкладке компонентов Additional. Настройка таблицы StringGrid1
в окне Инспектор объектов
Убрать заголовки строк
FixedCols = 0
Убрать заголовки колонок
FixedRows = 0
Установить количество колонок
ColCount = 5
Установить количество строк
RowCount = 1
Установить ширину всех колонок
DefaultColWidth = 30
Установить высоту всех строк
DefaultRowHeight = 30
Об отметках
Основные упражнения не отмечены никакими специальными знаками, их выполнения достаточно для удовлетворительной оценки. Дополнительные упражнения отмечены "звездочками", их выполнение необходимо для получения повышенной оценки.
"5" - в отчете выполнены все основные упражнения, дополнительно выполнены упражнения с одной и двумя "звездочками".
"4" - в отчете выполнены все основные упражнения, дополнительно выполнены упражнения с одной "звездочкой".
"3" - в отчете выполнены все основные упражнения.
Упражнения
Монте-Карло: вывод в ListBox. Задать элементы одномерного массива целыми и вещественными числами из отрезка с заданными границами с помощью генератора псевдослучайных чисел (ГПЧ).
Требования к выполнению. Использовать целые и вещественные случайные числа. Разместить на форме следующие компоненты.
Пример интерфейса
Пример.
const N_MAX = 10; {...} procedure TForm1.Button1Click(Sender: TObject); var z : array [1..N_MAX] of Integer; a, b : Integer; i : 1..N_MAX; begin ListBox1.Clear; a := SpinEdit1.Value; b := SpinEdit2.Value; for i := 1 to N_MAX do begin z[i] := Random(Abs(b-a+1))+a; ListBox1.Items.Add(IntToStr(z[i])); end; end; procedure TForm1.Button2Click(Sender: TObject); const N = 3; // Количество цифр в мантиссе M = 2; // Количество цифр в показателе степени 10 var v : array [1..N_MAX] of Double; a, b : Double; i : 1..N_MAX; begin ListBox2.Clear; a := FloatSpinEdit1.Value; b := FloatSpinEdit2.Value; for i := 1 to N_MAX do begin v[i] := Abs(b-a)*Random+a; ListBox2.Items.Add(FloatToStrF(v[i], ffExponent, N, M)); end; end;
Лас-Вегас: вывод в Memo. С помощью RadioButton определить, выводить массив в строку или в столбик.
Требования к выполнению. Использовать целые и вещественные случайные числа. Разместить на форме следующие компоненты.
Пример интерфейса
Пример.
const N_MAX = 10; NUM_SEPARATOR = ' '; {...} procedure TForm1.Button1Click(Sender: TObject); var z : array [1..N_MAX] of Integer; a, b : Integer; i : 1..N_MAX; z_str: string; begin Memo1.Clear; a := SpinEdit1.Value; b := SpinEdit2.Value; if RadioButton1.Checked then begin for i := 1 to N_MAX do begin z[i] := Random(Abs(b-a+1))+a; Memo1.Lines.Add(IntToStr(z[i])); end; end; if RadioButton2.Checked then begin z_str := ''; for i := 1 to N_MAX do begin z[i] := Random(Abs(b-a+1))+a; z_str := z_str + IntToStr(z[i]) + NUM_SEPARATOR; end; Memo1.Lines.Add(z_str); end; end; procedure TForm1.Button2Click(Sender: TObject); const N = 3; // Количество цифр в мантиссе M = 2; // Количество цифр в показателе степени 10 var v : array [1..N_MAX] of Double; a, b : Double; i : 1..N_MAX; z_str: string; begin Memo2.Clear; a := FloatSpinEdit1.Value; b := FloatSpinEdit2.Value; DecimalSeparator := ','; if RadioButton3.Checked then begin for i := 1 to N_MAX do begin v[i] := Abs(b-a)*Random+a; Memo2.Lines.Add(FloatToStrF(v[i], ffExponent, N, M)); end; end; if RadioButton4.Checked then begin z_str := ''; for i := 1 to N_MAX do begin v[i] := Abs(b-a)*Random+a; z_str := z_str + FloatToStrF(v[i], ffExponent, N, M) + NUM_SEPARATOR; end; Memo2.Lines.Add(z_str); end; end;
Монако: вывод в StringGrid. С помощью RadioButton определить, выводить массив в строку или в столбик.
Требования к выполнению. Использовать целые и вещественные случайные числа.
Пример интерфейса
Пример.
const N_MAX = 10; NUM_SEPARATOR = ' '; FIRST_ROW = 0; FIRST_COL = 0; procedure TForm1.Button1Click(Sender: TObject); var z : array [0..N_MAX - 1] of Integer; a, b : Integer; i : 0..N_MAX - 1; begin StringGrid1.Clean; a := SpinEdit1.Value; b := SpinEdit2.Value; if RadioButton1.Checked then begin for i := 0 to N_MAX - 1 do begin z[i] := Random(Abs(b-a+1))+a; StringGrid1.Cells[FIRST_COL, i] := IntToStr(z[i]); end; end; if RadioButton2.Checked then begin for i := 0 to N_MAX - 1 do begin z[i] := Random(Abs(b-a+1))+a; StringGrid1.Cells[i, FIRST_ROW] := IntToStr(z[i]); end; end; end; procedure TForm1.Button2Click(Sender: TObject); const N = 3; // Количество цифр в мантиссе M = 2; // Количество цифр в показателе степени 10 var v : array [0..N_MAX - 1] of Double; a, b : Double; i : 0..N_MAX - 1; begin StringGrid1.Clean; a := FloatSpinEdit1.Value; b := FloatSpinEdit2.Value; if RadioButton3.Checked then begin for i := 0 to N_MAX - 1 do begin v[i] := Abs(b-a)*Random+a; StringGrid1.Cells[FIRST_COL, i] := FloatToStrF(v[i], ffExponent, N, M); end; end; if RadioButton4.Checked then begin for i := 0 to N_MAX - 1 do begin v[i] := Abs(b-a)*Random+a; StringGrid1.Cells[i, FIRST_ROW] := FloatToStrF(v[i], ffExponent, N, M); end; end; end;
Домашнее задание
Классы элементов 2. В программе к задаче "Классы элементов" создать массив-константу строк с обозначениями химических элементов. По этому массиву в цикле идентифицировать выбранный в списке элемент и преобразовать его к типу t_mendeleev, перечислимому типу, созданному пользователем.
Требования. Использовать тип множество для формирования классов неметаллов и металлов.