2011-2012 учебный год
К сегодняшнему занятию Вами изучены следующие элементы управления
Edit
Label
Button
RadioButton
CheckBox
SpinEdit (на вкладке Misc)
FloatSpinEdit (на вкладке Misc)
ListBox (на вкладке Standard)
Memo (на вкладке Standard)
GroupRadioButton (на вкладке Standard)
ShowMessage, MessageBox
StringGrid (на вкладке Additional)
Image (на вкладке Additional)
TTabControl (на вкладке Common Controls)
Компонент TImage - на вкладке компонентов Additional.
Об отметках
Основные упражнения не отмечены никакими специальными знаками, их выполнения достаточно для удовлетворительной оценки. Дополнительные упражнения отмечены "звездочками", их выполнение необходимо для получения повышенной оценки.
"5" - в отчете выполнены все основные упражнения, дополнительно выполнены упражнения с одной и двумя "звездочками".
"4" - в отчете выполнены все основные упражнения, дополнительно выполнены упражнения с одной "звездочкой".
"3" - в отчете выполнены все основные упражнения.
Упражнения
Картезиус. Изобразить декартову систему координат. С помощью компонентов TCheckBox предоставить возможность пользователю выбирать, что отобразить: 1) ось абсцисс, 2) ось координат, 3) координатную решетку. С помощью компонентов TSpinEdit предоставить возможность изменять 1) положение начала координат в компоненте TImage, 2) шаг координатной решетки. Требования к выполнению. Использовать компоненты TImage, TCheckBox, TSpinEdit.
Пример интерфейса
Пример программы
// Глобальные константы. const BORDER_DX = 5; BORDER_DY = 10; RO = 15; BRUSH_CL = clBlack; PEN_COLOR = clWhite; CURVE_COLOR = clLime; procedure TForm1.Button1Click(Sender: TObject); var cx, cy : Integer; begin // color of background with Image1 do begin Canvas.Pen.Width:=1; Canvas.Brush.Color := BRUSH_CL; Canvas.Brush.Style := bsSolid; Canvas.Pen.Color := PEN_COLOR; Canvas.Rectangle(0,0,Width,Height); end; // color of lines Image1.Canvas.Pen.Color := PEN_COLOR; // begin of coordinats cx := SpinEdit1.Value; cy := SpinEdit2.Value; // x-axe if CheckBox1.Checked then Image1.Canvas.Line(BORDER_DX, cy, Image1.Width - BORDER_DX, cy); // y-axe if CheckBox2.Checked then Image1.Canvas.Line(cx, BORDER_DY, cx, Image1.Height - BORDER_DY); // draw border if CheckBox3.Checked then with Image1.Canvas do begin Brush.Style := bsClear; Pen.Color := PEN_COLOR; Rectangle(BORDER_DX, BORDER_DY, Width - BORDER_DX, Height - BORDER_DY); end; // around of center if CheckBox4.Checked then with Image1.Canvas do begin Brush.Style := bsClear; Pen.Color := PEN_COLOR; Ellipse(cx - RO div 2, cy - RO div 2, cx + RO div 2, cy + RO div 2); end; end; procedure TForm1.CheckBox5Change(Sender: TObject); begin if CheckBox5.Checked then begin SpinEdit1.Value := Image1.Width div 2; SpinEdit2.Value := Image1.Height div 2; SpinEdit1.Enabled := False; SpinEdit2.Enabled := False; end else begin SpinEdit1.Enabled := True; SpinEdit2.Enabled := True; end; end; procedure TForm1.FormCreate(Sender: TObject); var cx, cy : Integer; begin SpinEdit1.MaxValue := Image1.Width; SpinEdit1.Value := Image1.Width div 2; SpinEdit2.MaxValue := Image1.Height; SpinEdit2.Value := Image1.Height div 2; // color of background with Image1 do begin Canvas.Pen.Width:=1; Canvas.Brush.Color := BRUSH_CL; Canvas.Brush.Style := bsSolid; Canvas.Pen.Color := PEN_COLOR; Canvas.Rectangle(0,0,Width,Height); end; // begin of coordinats cx := SpinEdit1.Value; cy := SpinEdit2.Value; // x-axe if CheckBox1.Checked then Image1.Canvas.Line(BORDER_DX, cy, Image1.Width - BORDER_DX, cy); // y-axe if CheckBox2.Checked then Image1.Canvas.Line(cx, BORDER_DY, cx, Image1.Height - BORDER_DY); end;
Осциллограмма. Вывести осциллограмму гармонических колебаний по заданным амплитуде, частоте и начальной фазе.
Требования к выполнению. Использовать компонент Image. Вывод выполнить в системе координат по примеру из Упражнения 1.
Пример интерфейса
Пример программы
// Глобальные константы. const SCALE_X = 10; SCALE_Y = 10; procedure TForm1.Button1Click(Sender: TObject); const WW = 0; DD = 2; START_T = -1; END_T = 1; STEP_T = 0.01; NJU2OMEGA = 2*Pi; PHI2RAD = Pi; BORDER_DX = 5; BORDER_DY = 10; BRUSH_CL = clBlack; PEN_COLOR = clWhite; CURVE_COLOR = clLime; var a, omega, nju, phi, phi0 : double; t, f, fmin, fmax : double; sx, sy : double; cx, cy, x, y : Integer; w, h : Integer; begin ListBox1.Clear; ListBox2.Clear; // border w := Image1.Width - 2*BORDER_DX; h := Image1.Height- 2*BORDER_DY; // color Image1.Canvas.Pen.Width:=1; with Image1 do begin Canvas.Brush.Color := BRUSH_CL; Image1.Canvas.Brush.Style := bsSolid; Canvas.Pen.Color := PEN_COLOR; Canvas.Rectangle(0,0,Width,Height); end; // x-axe cx := Image1.Canvas.Width div 2; cy := Image1.Canvas.Height div 2; Image1.Canvas.Pen.Color := PEN_COLOR; Image1.Canvas.Line(BORDER_DX, cy, Image1.Width - BORDER_DX, cy); // y-axe Image1.Canvas.Line(cx, BORDER_DY, cx, Image1.Height - BORDER_DY); // draw border with Image1.Canvas do begin Brush.Style := bsClear; Pen.Color := PEN_COLOR; Rectangle(BORDER_DX, BORDER_DY, Width - BORDER_DX, Height - BORDER_DY); end; a := StrToFloat(Edit1.Text); nju := StrToFloat(Edit2.Text); omega := NJU2OMEGA*nju; phi0 := PHI2RAD*StrToFloat(Edit3.Text); // x scale sx := w/(omega*Abs(END_T - START_T)); // y scale fmin := -a; fmax := a; sy := h/Abs(fmax - fmin); // start t := START_T; phi := omega*t; f := a*Sin(phi + phi0); x := cx + Round(sx*phi); y := cy - Round(sy*f); Image1.Canvas.MoveTo(x, y); // curve Image1.Canvas.Pen.Color := CURVE_COLOR; Image1.Canvas.Pen.Width := 5; while t <= END_T do begin phi := omega*t; f := a*Sin(phi + phi0); x := cx + Round(sx*phi); y := cy - Round(sy*f); Image1.Canvas.LineTo(x, y); ListBox1.Items.Add(FloatToStrF(phi, ffExponent, WW, DD)); ListBox2.Items.Add(FloatToStrF(f, ffExponent, WW, DD)); t := t + STEP_T; end; end;
Гистрограмма. По заданному статистическому распределению вывести гистограмму.
Требования к выполнению. Использовать компонент Image.
Пример интерфейса
Пример программы
// Глобальные константы.
Многоугольник распределения. По заданному статистическому распределению вывести многоугольник распределения.
Требования к выполнению. Использовать компонент Image.
Пример интерфейса
Пример программы
// Глобальные константы.
Const N_MAX = 10; // Глобальные переменные. var y : array [0..N_MAX - 1] of single; procedure TForm1.Button1Click(Sender: TObject); const X0 = 0; Y0 = 240; XS = 10; YS = 10; R = 15; var i, n : Integer; dx : real; x : real; xx, yy : Integer; begin n := Memo1.Lines.Count; if n > N_MAX then n := N_MAX; for i := 0 to n - 1 do y[i] := StrToFloat(Memo1.Lines.Strings[i]); dx := StrToFloat(Edit1.Text); Brush.Style := bsSolid; Image1.Canvas.FillRect(ClientRect); Image1.Canvas.Clear; x := X0; xx := X0; yy := Y0; with Image1.Canvas do begin Pen.Color := clGreen; Brush.Style := bsClear; MoveTo(xx, yy); for i := 0 to n - 1 do begin x := x + dx; xx := Round(XS*x); yy := Y0 - Round(YS*y[i]); Pen.Color := clGreen; LineTo(xx, yy); Pen.Color := clBlue; Ellipse(xx - R div 2, yy - R div 2, xx+R div 2, yy + R div 2); MoveTo(xx, yy); end; end; end;
*Дифракционная картина. По заданным параметрам вывести дифракционную картину.
Требования к выполнению. Использовать компонент Image.
**Интерференционная картина. По заданным параметрам вывести интерференционную картину для интерференции от двух точечных источников.
Требования к выполнению. Использовать компонент Image.
Домашнее задание
Осциллограмма 2. Вывести 2 осциллограммы гармонических колебаний в одной системе координат по заданным амплитудам, частотам и начальным фазам.
Требования к выполнению. Использовать компонент Image.
Фигуры Лиссажу. Вывести по заданному соотношению частот и амплитуд гармонических колебаний график зависимости y(x).
Требования к выполнению. Использовать компонент Image.
Доска Гальтона. Создать графическую имитацию доски Гальтона.
Требования к выполнению. Использовать компонент Image.