- •Введение
- •1 Компоненты Delphi
- •1.1 Компонент класса TEdit
- •1.2 Компонент класса TLabel
- •1.3 Компонент класса TButton
- •1.4 Компонент класса TMemo
- •1.5 Компонент класса TStringGrid
- •1.6 Компонент класса TSpinEdit
- •2 Примеры выполнения практических заданий
- •2.1 Простейшие алгоритмы
- •2.2 Выражения
- •2.3 Циклы
- •2.4 Одномерные массивы
- •2.5 Матрицы
- •2.6 Строки
- •2.7 Записи и файлы
- •2.8 Функции и процедуры
2 Примеры выполнения практических заданий
2.1 Простейшие алгоритмы
Задание: Найти сумму двух целых чисел A и B.
Для решения поставленной задачи потребуются компоненты:
A_E1 класса TEdit для ввода числа A;
B_E класса TEdit для ввода числа B;
Res_E класса TEdit для вывода результата. Данный компонент должен
быть недоступным для редактирования, что достигается путем установки свойства ReadOnly в значение True;
A_L класса TLabel для подписи компонента A_E;
B_L класса TLabel для подписи компонента B_E;
Res_L класса TLabel для подписи компонента Res_E;
Calc_B класса TButton для активизации расчета.
Установим следующие значения свойств компонентов (таблица 4):
Таблица 4 – Значения свойств компонентов для примера выполнения задания по работе с простейшими алгоритмами
Компонент.Свойство |
Значение |
A_L.Caption |
Число &A |
A_L.FocusControl |
A_E |
|
|
B_L.Caption |
Число &B |
B_L.FocusControl |
B_E |
|
|
Res_L.Caption |
&Результат |
Res_L.FocusControl |
Res_E |
|
|
Res_E.ReadOnly |
True |
Calc_B.Caption |
Рас&чет |
Очистим свойство «Text» у компонентов A_E, B_E и Res_E. Опишем событие OnClick кнопки Calc_B2:
procedure TForm1.Calc_BClick(Sender: TObject);
var |
|
|
a,b,res : integer; |
|
|
begin |
|
|
a := StrToint(A_E.Text); |
// Получение |
числа A |
b := StrToint(B_E.Text); |
// Получение |
числа B |
1A_E является идентификатором компонента. Здесь и далее подразумевается, что у соответствующего компонента изменено свойство Name.
2Реализации алгоритмов, приводимые в примерах, не всегда оптимальны, так как направлены на раскрытие механизмов работы с компонентами.
11
res := a+b; // Расчет результата
Res_E.Text := IntToStr(res); // Вывод результата end;
Внешний вид1 и пример работы программы показаны на рисунке 1.
Рисунок 1 – Внешний вид и пример работы программы, реализующей простейшие алгоритмы
2.2 Выражения
Задание: По значениям двух переменных x и y найти значения перемен-
ных |
|
k, |
m, |
|
p, |
где |
k sin 2x cos 3y , |
m lg x 5 2 , |
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
p |
k 2m |
при |
|
k |
|
|
m |
. |
|
|
||||
|
2 |
|
|
|
|
|
|
|
|
|
|
|||
при |
|
k |
|
|
m |
|
|
|
||||||
|
|
|
|
|
|
|||||||||
|
5k 4m |
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Для решения поставленной задачи потребуются компоненты:
X_E класса TEdit для ввода числа x;
Y_E класса TEdit для ввода числа y;
K_E класса TEdit для вывода числа k;
M_E класса TEdit для вывода числа m;
P_E класса TEdit для вывода числа p;
X_L класса TLabel для подписи компонента X_E;
Y_L класса TLabel для подписи компонента Y_E;
K_L класса TLabel для подписи компонента K_E;
M_L класса TLabel для подписи компонента M_E;
P_L класса TLabel для подписи компонента P_E;
Calc_B класса TButton для активизации расчета.
Установим следующие значения свойств компонентов (таблица 5):
1 Здесь и далее для получения внешнего вида, показанного на рисунках, необходима настройка еще ряда свойств компонентов, изучение которых не предусматривается в рамках данных занятий.
12
Таблица 5 – Значения свойств компонентов для примера выполнения задания по работе с выражениями
Компонент.Свойство |
Значение |
X_L.Caption |
Число &X |
X_L.FocusControl |
X_E |
|
|
Y_L.Caption |
Число &Y |
Y_L.FocusControl |
Y_E |
|
|
K_L.Caption |
Число &K |
K_L.FocusControl |
K_E |
|
|
K_E.ReadOnly |
True |
M_L.Caption |
Число &M |
M_L.FocusControl |
M_E |
M_E.ReadOnly |
True |
P_L.Caption |
Число &P |
P_L.FocusControl |
P_E |
P_E.ReadOnly |
True |
|
|
Calc_B.Caption |
Рас&чет |
Очистим свойство «Text» у компонентов X_E, Y_E, K_E, M_E и P_E. Опишем событие OnClick кнопки Calc_B:
procedure TForm1.Calc_BClick(Sender: TObject);
var |
|
|
x,y,k,m,p : double; |
|
|
begin |
|
|
x := StrToFloat(X_E.Text); // |
Получение числа x |
|
y := StrToFloat(Y_E.Text); // |
Получение числа y |
|
k := sin(2*x)+cos(3*y); |
// |
Расчет числа k |
m := sqr(ln(x)/ln(10)+5); |
// |
Расчет числа m |
if abs(k)>abs(m) then |
// |
Проверка условия |
p := sqrt(k+2*m) |
// Истина, расчет числа p |
|
else |
|
|
p := sqr(5*k+4*m); |
// Ложь, расчет числа p |
|
K_E.Text := FloatToStr(k); |
// Вывод числа k |
|
M_E.Text := FloatToStr(m); |
// |
Вывод числа m |
P_E.Text := FloatToStr(p); |
// |
Вывод числа p |
end; |
|
|
Внешний вид и пример работы программы показаны на рисунке 2.
2.3 Циклы
xi
Задание: По формуле ( 1)i 1i!(i 4) члена ряда с номером i составить программы вычисления:
13
а) суммы первых n членов ряда (i = 1,2,…n);
б) суммы всех начальных членов ряда, значение которых не меньше заданного числа e.
Рисунок 2 – Внешний вид и пример работы программы, реализующей вычисления выражений
В задании обозначение i! обозначает расчет факториала. Факториал некоторого числа – это последовательное перемножение чисел начиная с 1 до заданного числа, например, 5! = 1*2*3*4*5.
Для решения поставленной задачи потребуются компоненты:
X_E класса TEdit для ввода числа x;
N_E класса TEdit для ввода числа n (программа «а)»);
E_E класса TEdit для ввода числа e (программа «б)»);
Sum1_E класса TEdit для вывода суммы программы «а)»;
Sum2_E класса TEdit для вывода суммы программы «б)»;
X_L класса TLabel для подписи компонента X_E;
N_L класса TLabel для подписи компонента N_E;
E_L класса TLabel для подписи компонента E_E;
Sum1_L класса TLabel для подписи компонента Sum1_E;
Sum2_L класса TLabel для подписи компонента Sum2_E;
Calc1_B класса TButton для активизации расчета программы «а)»;
Calc2_B класса TButton для активизации расчета программы «б)».
Установим следующие значения свойств компонентов (таблица 6):
Таблица 6 – Значения свойств компонентов для примера выполнения задания по работе с циклами
Компонент.Свойство |
Значение |
X_L.Caption |
Число &X |
X_L.FocusControl |
X_E |
|
|
N_L.Caption |
Число &N |
N_L.FocusControl |
N_E |
|
|
E_L.Caption |
Число &E |
14
Продолжение таблицы 6
Компонент.Свойство |
Значение |
E_L.FocusControl |
E_E |
Sum1_L.Caption |
&Сумма 1 |
Sum1_L.FocusControl |
Sum1_E |
Sum1_E.ReadOnly |
True |
|
|
Sum2_L.Caption |
С&умма 2 |
Sum2_L.FocusControl |
Sum2_E |
|
|
Sum2_E.ReadOnly |
True |
|
|
Calc1_B.Caption |
Расчет &1 |
Calc2_B.Caption |
Расчет &2 |
Очистим свойство «Text» у компонентов X_E, N_E, E_E, Sum1_E и
Sum2_E.
Опишем событие OnClick кнопки Calc1_B (программа «а)»):
procedure TForm1.Calc1_BClick(Sender: TObject); var
n,i,j,f,k : integer; x,sum,sx : double;
begin
{Ввод значений "x" и "n"} n := StrToInt(N_E.Text);
x := StrToFloat(X_E.Text);
{Для вычисления суммы членов ряда переменной-накопителю
необходимо изначально присвоить значение "0"} sum := 0;
{Организация цикла перебора членов ряда} for i := 1 to n do
begin
{Расчет факториала} f := 1;
for j := 2 to i do f := f*j;
{Возведение "-1" в требуемую степень} if odd(i+1) then
k := -1 else
k := 1;
{Возведение "x" в требуемую степень} sx := x;
for j := 2 to i do sx := sx*x;
{Расчет слагаемого и его суммирование} sum := sum+sx/(k*f*(i+4));
end;
{Вывод результата}
Sum1_E.Text := FloatToStr(sum); end;
15