Главная | Случайная
Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Выполнение задания на работу




Ранее разработанное окно системы Калькулятор необходимо доработать так, как показано на рисунке 94.

Рисунок 94 – Доработанная форма к системе Калькулятор

На рисунке 94 показаны добавленные кнопки:

- % (вычисление процентов);

- х^y (возведение в степень);

- 1/х (деление единицы на число);

- sin (вычисление функции синус);

- cos (вычисление функции косинус);

- tan (вычисление функции тангенс);

- ctg (вычисление функции котангенс);

- div (целочисленное деление, т. е. деление без остатка);

- mod (определение остатка от деления);

- e (выдача константы – основания натурального логарифма);

- pi (выдача константы – числа пи);

- С – сброс значений;

- СЕ – сброс последнего числа.

Кроме того, на форму вынесены переключатели режимов вычислений:

- градусы;

- радианы.

Переключатели режимов вычислений располагаются на форме посредством выноса компонента TRadioButton с палитры компонентов Стандартная. Название компонента вводится в параметре Caption Инспектора объектов.

Для организации процедуры вычисления процентов необходимо после слова implementation описать переменную pr, охарактеризовав ее как целочисленную.

Следует отметить, что в процедурах, где были организованы операции «+», «-», «*», переменная pr должна принимать следующие значения:

- в процедуре «+»: pr:=1;

- в процедуре «-»: pr:=2;

- в процедуре «*»: pr:=3 (см. п. 5.1.3).

На рисунках 95а, 95б, 95в показаны фрагменты кода программы, где переменная pr принимает указанные значения.

Рисунок 95а – Процедура для кнопки, маркированной «+»

 

Рисунок 95б – Процедура для кнопки, маркированной «-»

Рисунок 95в – Процедура для кнопки, маркированной «*»

В процедуре, сопровождающей обработку событий при нажатии на кнопку «%» , следует прописать следующий код:

procedure TForm2.Button20Click(Sender: TObject);

begin

x:=strtofloat(memo1.Text);

case pr of

1: begin

y:=y+((y*x)/100);

end;

2:begin

y:=y-((y*x)/100);

end;

3: y:=(y*x)/100;

end;

memo1.Text:=floattostr(y);

k:=1;

end.

В данном примере кнопка, маркированная как «%», имеет порядковый номер 20, в соответствии с чем имеет название и указанная процедура.

Представленный фрагмент кода означает:

В переменную х сохраняется число, внесенное через поле memo, и переведенное из строкового формата в числовой формат.

При помощи оператора выбора (селектора) осуществляются следующие действия:

Если переменная pr принимает значение, равное 1, т.е. нажимается кнопка «+», в переменную y записывается значение, равное прибавлению к числу х вычисленного процента от числа.

Например, вводится число 6, затем нажимается следующая последовательность кнопок + 50 %. Тогда в поле memo выведется значение, равно 9 (6+50 %от6=6+3=9).

Если переменная pr принимает значение, равное 2, производится вычитание из введенного числа процента.

Например, вводится число 6, затем нажимается следующая последовательность кнопок - 50 %. Тогда в поле memo выведется значение, равно 3 (6-50 %от6=6-3=3).

Если переменная pr принимает значение, равное 3, вычисляется процент от числа.

Например, вводится число 8, затем нажимается следующая последовательность кнопок * 50 %. Тогда в поле memo выведется значение, равно 4 (50 %от8=4).

Одно из трех рассчитанных значений y выводится в поле memo, с предварительным переводом его из числового формата в строковый.

Переменной к присваивается значение, равное 1, означающее возможность ввода нового числа в окно Калькулятора.

Соответствующий текст программы представлен на рисунке 96.

Рисунок 96 – Фрагмент кода программы при организации процедуры вычисления процентов

Для организации операции возведения числа в степень в процедуре, сопровождающей обработку событий при нажатии на кнопку «х^y» , следует прописать следующий код:

procedure TForm2.Button19Click(Sender: TObject);

begin

x:=strtofloat(Memo1.Text);

z:=6;

k:=1;

end.

В приведенном фрагменте кода программы переменной х присваивается значение, введенное в поле memo, предварительно переведенное в числовой формат из строкового.

Присутствие переменной z означает то, что операция возведения в степень связана с кнопкой, маркированной знаком «=» (в отличие от операций вычисления процентов).

Возведение в степень осуществляется в следующей последовательности: число, возводимое в степень; кнопка «х^y»; число, служащее степенью, кнопка «=».

Переменная к, равная 1, означает возможность ввода в окно Калькулятора нового числа.

Поскольку операция возведения в степень «связана» с кнопкой «=», в процедуре, сопровождающей обработку событий при нажатии на кнопку «=», следует прописать следующий код:

if z=6 then begin

x1:=strtofloat(Memo1.Text);

if x<0 then

begin

if x1>1 then

begin

x11:=trunc(x1);

st:= x11 mod 2;

if st=0 then

y:=exp(x1*ln(abs(x)))

else

begin

y:=exp(x1*ln(abs(x)));

y:=(-1)*y;

end;

end;

if (x1<-1) then

begin

x11:=trunc(x1);

st:= x11 mod 2;

if (st=0) then

y:=exp(x1*ln(abs(x)))

else

begin

y:=exp(x1*ln(abs(x)));

y:=(-1)*y;

end;

end;

end;

if (x>0) then

y:=exp(x1*ln(x));

if (x<0) and (x1<1) and (x1>-1) then begin

showmessage('Недопустимый аргумент');

y:=0;

end;

end.

В представленном фрагменте кода программы: в случае, если переменная z принимает значение, равное 6 (нажимается кнопка «х^y» (причем то число, которое должно быть возведено в степень уже хранится в переменной х)), переменной х1 присваивается значение, введенное в поле memo после нажатия кнопки «х^y», (т. е. число, служащее степенью).

Далее проверяется условие: если переменная x меньше нуля, и при этом переменная х1 больше 1, то переменная х1, содержащая значение степени, проверяется на четность. Эта проверка необходима, т. к. в случае возведения в нечетную степень отрицательного числа, результат вычислений должен быть также отрицательным.

С целью проверки переменной, содержащейся в х1 на четность переменной х11 присваивается значение, равное целой части вещественного числа х1. Функция Trunc(x) – возвращает целую часть вещественного числа x. Например, Trunc(5.234) = 5. Это действие необходимо для того, чтобы определить остаток от деления на 2. Переменная st содержит результат определения остатка от деления переменной х1 на 2.

Если значение переменной st оказалось равным нулю (число, содержащееся в х11, разделилось без остатка), то степень четная и переменной y присваивается значение, полученное из выражения y:=exp(x1*ln(abs(x))).

В противном случае, т. е. при нечетной степени, переменной y присваивается значение, полученное из такого же выражения y:=exp(x1*ln(abs(x))), причем полученное значение y после его вычисления умножается на -1.

В случае, если х меньше 0, а х1 меньше -1 (число возводится в целую отрицательную степень) также осуществляется проверка четности степени. При четной отрицательной степени значение итоговое будет положительным. При нечетной отрицательной степени итоговое значение будет отрицательным.

В этом же условии осуществляется возведение любого числа в нулевую степень. Значение y при этом равно 1.

В случае, если х больше нуля, степень вычисляется по формуле y:=exp(x1*ln(x)). Если х положительное число, то его можно возвести в любую степень.

Если переменная x меньше нуля, и при этом переменная х1 меньше 1, но больше -1 операция возведения в степень невозможна. В этом случае Калькулятор выдаст сообщение «Недопустимый аргумент», а значение y будет равно 0.

После представленных расчетов значение y должно выводится в поле Тmemo в строковом формате, т. е. должна быть добавлена строка кода memo1.Text:=floattostr(y);

Действительно, в соответствии с представленными формулами:

1 Число -2 следует возвести в степень 4.

Так как х=-2 (<0), х1=4 (>1, четное), то расчет степени следует вести по формуле: y:=exp(x1*ln(abs(x)))=exp(4*ln |2|)= exp2,772588722=16.

Функция exp означает операцию возведения в степень ex. Функция abs(x) означает модуль числа х.

2 Число -2 следует возвести в степень 3.

Так как х=-2 (<0), х1=3 (>1, нечетное), то расчет степени следует вести по формуле: y:=exp(x1*ln(abs(x)))=exp(3*ln |2|)= exp2,079441542=8. Далее значение y умножается на -1. В итоге: -1*8=-8.

3 Число -2 следует возвести в степень -4.

Так как х=-2 (<0), х1=-4 (<1, четное), то расчет степени следует вести по формуле: y:= exp(x1*ln(abs(x)))=exp(-4*ln |2|)=-2,772588722=0,0625. Так как степень четная, то результат возведения в степень положительный.

4 Число -2 следует возвести в степень -3.

Так как х=-2 (<0), х1=-3 (<1, нечетное), то расчет степени следует вести по формуле: y:= exp(x1*ln(abs(x)))=exp(-3*ln |2|)=-2,079441542=0,125. Так как степень отрицательная, итоговый y умножается на -1. В итоге получим y=-1*0,125=-0,125.

5 Число 2 следует возвести в степень 4.

Так как х=2 (>0), х1=4 (>0), то y:=exp(x1*ln(x)) =exp(4*ln 2)= exp2,772588722=16.

Таким же образом возводится в положительную дробную степень любое положительное число.

6 Число -2 следует возвести в степень 0,3, затем в степень -0,3.

Так как х=-2 (<1), х1=0,3 (<1) (или х1=-0,3 (>-1)), то отрицательное число возвести в дробную степень невозможно.

Переменные х11, st описываются после слова implementation (х11, st-целочисленные переменные).

На рисунке 97а показан фрагмент кода программы, прописанный в процедуре, сопровождающей обработку событий при нажатии на кнопку «х^y».

Рисунок 97а – Фрагмент кода программы, прописанный в процедуре, сопровождающей обработку событий при нажатии на кнопку «х^y»

На рисунке 97б показан фрагмент кода программы, прописанный в процедуре, сопровождающей обработку событий при нажатии на кнопку «=».

Рисунок 97б – Фрагмент кода программы, прописанный в процедуре, сопровождающей обработку событий при нажатии на кнопку «х^y»

 

 

Рисунок 97б – Продолжение

Следует отметить, что возвести отрицательное число в дробную степень, по модулю большую 1 (|х1 |>1) при таком подходе невозможно. Например, невозможно возвести в степень 2,5 или -2,5 число -2.

Для организации процедуры деления 1 на число в процедуре, сопровождающей обработку событий при нажатии на кнопку «1/х» , следует прописать следующий код:

procedure TForm2.Button18Click(Sender: TObject);

begin

memo1.Text:=floattostr(1/(strtofloat(memo1.Text)));

k:=1;

end.

Представленный код программы позволяет:

- число, записанное в поле memo, перевести из строкового типа в числовой с целью осуществления операции деления единицы на число, введенное в поле memo;

- осуществить непосредственно операцию деления единицы на число, введенное в поле memo;

- перевести полученный результат в строковый тип данных;

- вывести результат в поле memo.

Все перечисленные функции прописаны только в одной строке кода программы.

Далее переменной к, отвечающей за организацию ввода чисел в окно Калькулятора, присваивается значение, равное 1, т. е. Калькулятор снова готов для ввода следующих чисел.

Соответствующий код программы представлен на рисунке 98.

Рисунок 98 – Фрагмент кода программы, позволяющий осуществлять

деление 1 на число

Для организации расчета значений функции косинус в процедуре, сопровождающей обработку событий при нажатии на кнопку «cos» , следует прописать следующий код:

procedure TForm2.Button24Click(Sender: TObject);

begin

if form2.RadioButton1.Checked=true then

x:=(strtofloat(memo1.Text))*3.1415926535897932384626433832795/180

else

x:=strtofloat(memo1.Text);

y:=cos(x);

y:=trunc(y*1000)/1000;

memo1.Text:=floattostr(y);

x:=0;

y:=0;

k:=1;

end.

Представленный фрагмент кода «связан» с режимами вычислений (расчет значений тригонометрических функций в радианах или в градусах). При работе с тригонометрическими функциями система Delphi ведет расчеты только в радианах. Причем, стандартной функцией в системе Delphi является только функция косинус. Все остальные функции выражаются через косинус. Следовательно, если в окно Калькулятор введено значение в градусах и требуется определить косинус введенного значения, его необходимо перевести в радианы. Перевод градусов в радианы осуществляет строка кода x:=(strtofloat(memo1.Text))*3.1415926535897932384626433832795/180. Строка кода y:=trunc(y*1000)/1000; позволяет округлять полученные значения.

Если значение изначально было введено в радианах, перевод не требуется.

Остальные строки кода в представленном фрагменте кода программы аналогичны строкам кода при организации выше приведенных операций.

Соответствующий код программы представлен на рисунке 99.

Рисунок 99– Фрагмент кода программы, определяющий косинус

Для организации расчета значений функции синус необходимо в процедуре, сопровождающей обработку событий при нажатии на кнопку «sin» , прописать код как показано на рисунке 100.

Рисунок 100 – Фрагмент кода программы, определяющий значение синус

Расчет функции синус аналогичен расчету функции косинус.

Для организации расчета значений функции тангенс, необходимо в процедуре, сопровождающей обработку событий при нажатии на кнопку «tan» , прописать код как показано на рисунке 101.

Рисунок 101 – Фрагмент кода программы, определяющий тангенс

Для организации расчет значений функции котангенс необходимо в процедуре, сопровождающей обработку событий при нажатии на кнопку «сtg» , прописать код как показано на рисунке 102.

Рисунок 102 – Фрагмент кода программы, определяющий котангенс

Для организации операции целочисленного деления чисел (деления без остатка) в процедуре, сопровождающей обработку событий при нажатии на кнопку «div» , следует прописать следующий код:

procedure TForm2.Button27Click(Sender: TObject);

begin

x11:=strtoint(memo1.Text);

z:=8;

k:=1;

end.

Операция целочисленного деления осуществляется через кнопку «=». Следовательно, по аналогии с предыдущими операциями, в процедуре, сопровождающей обработку событий при нажатии на кнопку «=», следует прописать следующий код:

if z=8 then

begin

x12:=strtoint(memo1.Text);

y:=x11 div x12;

memo1.Text:=floattostr(y);

end.

В представленном фрагменте: в случае, если переменная z принимает значение, равное 8, в переменную х12 заносится значение, введенное в поле memo и переведенное из строкового формата в числовой. Следует отметить, что число, выступающее делимым, предварительно введено в поле memo, и сохранено в переменную х11 (делимое вводилось перед нажатием на кнопку «div»).

Далее выполняется операция целочисленного деления, т. е. операция div, после чего переменная y выводится в поле memo.

На рисунке 103 представлен фрагмент соответствующего кода программы.

Рисунок 103 – Фрагмент кода программы, позволяющий выполнять целочисленное деление

Для организации операции вычисления остатка от деления необходимо в процедуре, сопровождающей обработку событий при нажатии на кнопку «mod» , прописать следующий код:

procedure TForm2.Button30Click(Sender: TObject);

begin

z:=7;

x11:=strtoint(memo1.Text);

k:=1;

end.

Операция вычисления остатка от деления осуществляется через кнопку «=». Следовательно, по аналогии с предыдущими операциями, в процедуре, сопровождающей обработку событий при нажатии на кнопку «=», следует прописать следующий код:

if z=7 then

begin

x12:=strtoint(memo1.Text);

y:=x11 mod x12;

end.

В представленном фрагменте программы выполняется операция определения остатка от деления или операция mod.

Для организации ввода константы – основания натурального логарифма – необходимо в процедуре, сопровождающей обработку событий при нажатии на кнопку «е», прописать следующий код:

procedure TForm2.Button29Click(Sender: TObject);

begin

memo1.Text:='2,7183';

end;

В данном фрагменте кода при нажатии на кнопку «е» в окно Калькулятора выводится константа 2,7183.

Соответствующий фрагмент кода программы представлен на рисунке 104.

Рисунок 104 – Фрагмент кода программы, позволяющий вводить

константу – основание натурального алгоритма

Для организации ввода константы – числа пи – необходимо в процедуре, сопровождающей обработку событий при нажатии на кнопку «pi», прописать следующий код:

procedure TForm2.Button28Click(Sender: TObject);

begin

memo1.Text:='3,1415926535897932384626433832795';

end;

Структура кода аналогична выводу в окно калькулятора константы е. Соответствующий фрагмент кода программы представлен на рисунке 105.

Рисунок 105 – Фрагмент кода программы, позволяющий вводить

константу – число 3,14

Для организации сброса значений из окна Калькулятора необходимо в процедуре, сопровождающей обработку событий при нажатии на кнопку «С», прописать следующий код:

procedure TForm2.Button21Click(Sender: TObject);

begin

memo1.text:='0';

m:=0;

k:=1;

t:=0;

x1:=0;

x2:=1;

x:=0;

y:=0;

z:=0;

end.

Представленный фрагмент кода означает, что всем переменным присваиваются начальные параметры, также как при первоначальном открытии формы.

Для организации сброса последнего значения из окна Калькулятора необходимо в процедуре, сопровождающей обработку событий при нажатии на кнопку «СЕ», прописать следующий код:

procedure TForm2.Button22Click(Sender: TObject);

begin

memo1.Text:='0';

k:=1;

t:=0;

end.

Представленный фрагмент кода означает, что переменным, отвечающим за первоначальный ввод значений в окно Калькулятора, и ввод дробной части числа присваиваются первоначальные значения.

Далее следует откомпилировать и сохранить проект.

Контрольные вопросы

1 Для чего необходим оператор выбора (селектор)?

2 Как организовать операцию вычисления процентов?

3 Как организовать операцию возведения в степень?

4 Как организовать операцию деления единицы на число?

5 Как организовать расчет значений тригонометрических функций? Косинуса? Синуса? Тангенса? Котангенса?

6 Какая функция в системе Delphi непосредственно вычисляется путем введения стандартной функции, а какие рассчитываются исходя из тригонометрических зависимостей?

7 Как организовать различные режимы расчета тригонометрических функций? Расчет в градусах? Расчет в радианах?

8 Каким образом различные режимы расчета тригонометрических функций связаны с процессом расчета значений тригонометрических функций на уровне программного кода?

9 Как организовать операцию целочисленного деления, т. е. деления чисел без остатка?

10 Как организовать операцию вычисления остатка от деления?

11 Как организовать вывод констант?

12 Как осуществить процесс очистки окна Калькулятора (сброса всех значений)?

13 Как осуществить процесс сброса последнего введенного в окно Калькулятора значения?




Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2019 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных