Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Разработка информационной системы Калькулятор

Поиск

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

Общие сведения

Оператор присваивания

Оператор присваивания является самым простым и часто употребляемым оператором в любых системах программирования, в том числе и в системе Delphi. Он используется в случаях, когда результат вычисления выражения с целью его дальнейшей обработки (например, для вывода в поле на форме) надо предварительно сохранить. Сохранение переменной означает запись значения в переменную, которая предварительно должна быть объявлена в тексте программы.

При размещении данных в переменную, они размещаются в области памяти, которая соответствует имени этой переменной. Соответствие области памяти и имени переменной отслеживается компилятором автоматически, который не допускает однотипных имен переменных.

Оператор присваивания выглядит так:

Имя переменной:= новое значение;

В языке Object Pascal почти каждый оператор, за некоторым исключением, заканчивается знаком; (точка с запятой).

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

Оператор присваивания, как и остальные операторы, можно выполнять только внутри логических блоков begin… end.

Оформление комментариев

Программа, написанная на языке Object Pascal, может быть оснащена комментариями. Желательно, чтобы программа всегда содержала комментарии, даже если ее схема кодируется простейшими операторами.

Комментарии бывают двух типов: однострочные и многострочные.

Однострочные комментарии в программах, написанных на языке Object Pascal, открываются знаком // и не закрываются. При этом все, что записано после знака //, до конца строки считается комментарием.

Например:

pi:= 3.14; // оператор присваивания.

Многострочные комментарии заключаются в фигурные скобки { } или в скобки вида (* *).

Например:

procedure TForm2.Button11Click(Sender: TObject);

begin

(*

ввод числа ноль

*)

if k=0 then

memo1.Text:=Memo1.Text+'0'

else

memo1.Text:='0';

{

необходимое обнуление переменной

}

k:=0;

end;

Однострочные комментарии можно вкладывать в многострочные.

Например:

procedure TForm2.Button11Click(Sender: TObject);

begin

(*

ввод числа ноль

{

аналогично вводится любое другое число

}

*)

if k=0 then

memo1.Text:=Memo1.Text+'0'

else

memo1.Text:='0';

{

необходимое обнуление переменной

(* выполняется всегда *)

}

k:=0;

end.

Условный оператор

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

Условный оператор – один из важнейших операторов. Он позволяет изменять порядок выполнения операторов в зависимости от некоторого условия, представляющего собой логическое выражение типа Boolean. Если это значение равно true, то выполняется одна группа операторов, если это значение равно false, то выполняется другая группа операторов или не выполняется ничего.

Условия представляют собой логические выражения. В них происходит сравнение значений выражений, вызов функций, возвращающих значение типа Boolean, и комбинирование этих значений с помощью логических операций.

Если используются логические операции or или and, то связываемые ими проверки условий заключаются в круглые скобки.

Условный оператор имеет вид:

if условие then действие;

или

if условие then действие 1 else действие 2;

if, then, else – зарезервированные слова языка Object Pascal. Перед зарезервированным словом знак; (точка с запятой) не ставится.

Задание на работу

Необходимо разработать систему Калькулятор, в которой можно осуществить:

- ввод целых и дробных чисел;

- ввод положительных и отрицательных чисел;

- операции сложения, умножения, вычитания, деления.

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

Для реализации задания на работу необходимо организовать ввод значений в поле (окно калькулятора).

Для этого необходимо создать форму, имеющую название «Калькулятор», содержащую поле ТMemo (окно калькулятора), 12 компонентов TButton с левой стороны формы и 5 компонентов TButton с правой стороны формы. Подписать компоненты TButton можно так, как показано на рисунке 78. Удалите из поля ТMemo запись (очистите поле). Для очистки поля ТMemo используйте Инспектор объектов, закладку Свойства, категорию Localisable, свойство Lines. Запись (строка) из компонента ТMemo удаляется из окна String List Editor, вызванного из свойства Lines (рисунок 79а, б). Для подписи компонентов TButton используйте Инспектор объектов, закладку Свойства, категорию Localisable, свойство Action.

Рисунок 78 – Форма «Калькулятор»

Рисунок 79а – Инспектор объектов, закладка Свойства,

категория Localisable, свойство Lines

Рисунок 79б – Окна String List Editor

В процедуре procedure TForm2.FormShow(Sender: TObject); необходимо прописать следующий код: memo1.text:='0';

Приведенная строка кода позволит при запуске приложения (то есть при открытии главной, в данном случае, единственной формы) в поле ТMemo отображать значение 0, показывая тем самым, что калькулятор готов к работе (по аналогии с микрокалькуляторами).

Для того, чтобы перейти в указанную процедуру необходимо в Инспекторе объектов включить закладку Events, выбрать категорию Visual, свойство On Show. Двойной клик мышью по строке Form Show позволит перейти в указанную процедуру (рисунок 80).

Рисунок 80 – Инспекторе объектов, закладка Events,

категория Visual, свойство On Show, строка Form Show

Для ввода цифр в окно калькулятора через компоненты TButton, необходимо ввести промежуточную переменную, присвоив ей значение 1. Такое значение промежуточной переменной позволяет организовать корректный ввод чисел в окно калькулятора. Промежуточная переменная вводится в процедуру procedure TForm2.FormShow(Sender: TObject); (т. е. в процедуру, сопровождающую открытие формы). В данном случае в качестве первой промежуточной переменной выбрана переменная к.

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

Рисунок 81 – Фрагмент кода программы

Следует отметить, что переменные, являющиеся общими для процедур программы, можно объявлять в сгенерированном системой Delphi программном коде после зарезервированного слова implementation. Переменная к имеет целочисленный тип данных (integer).

Для ввода цифр в поле ТMemo необходимо в процедурах TForm2.Button (№ кнопки) Click(Sender: TObject); ввести следующий код:

if k=0 then

memo1.Text:=Memo1.Text+'1'

else

memo1.Text:='1';

k:=0;

end.

Отличие в записи кода при переходе от процедуры к процедуре будет заключаться в выводе символов (0, 1, 2, 3, 4, 5, 6, 7, 8, 9) при нажатии на соответствующую кнопку.

Указанная процедура представляет собой обработчик событий при нажатии на соответствующую кнопку.

Представленный фрагмент кода характерен для процедуры, сопровождающей компонент TButton, который переименован в компонент 1 (т. е. для кнопки 1).

Фактически при наименовании процедуры кнопка может иметь другой порядковый номер.

Приведенный фрагмент кода означает, что в случае, если переменная к равно нулю, в поле ТMemo добавляется символ 1. В противном случае, т. е. если переменная к принимает отличное от нуля значение, в поле ТMemo вводится символ 1. После добавления символа 1 переменная к обнуляется.

Таким образом, при нажатии на кнопку с изображением символа 1, сразу же после запуска формы, когда переменная к имеет значение, равное 1, в поле ТMemo отобразится символ 1 (введется в окно калькулятора). В противном случае, т. е., если переменная к обнулена (переменная к никаких других значений, кроме 0 и 1 принимать не может) в поле ТMemo добавится 1, так как в случае, если к=0, окно калькулятора уже будет содержать ранее введенные значения цифр (переменная к обнуляется после ввода в поле ТMemo численных значений).

Таким же образом организуется ввод чисел в окно калькулятора и при использовании других кнопок, маркированных надписями 2, 3, 4, 5, 6, 7, 8, 9, 0 (то есть для кнопок, отвечающих за ввод чисел).

На рисунке 82а представлен фрагмент кода, позволяющий вводить в окно калькулятора символ 0. На рисунке 82б представлен фрагмент кода, позволяющий вводить в окно калькулятора символ 2.

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

в окно калькулятора символ 0

Фактически кнопка, обрабатывающая событие – ввод символа 0 в окно калькулятора имеет номер 11, а процедура имеет соответствующее название.

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

в окно калькулятора символ 2

Аналогичным образом осуществляется ввод и других символов.

Для организации ввода десятичных дробей в окно калькулятора следует организовать ввод символа «запятая» (знака, отделяющего целую часть от дробной в десятичных дробях). Для ввода символа «запятая» необходимо ввести еще одну промежуточную переменную в процедуру, сопровождающую открытие формы, т. е. в процедуру procedure TForm2.FormShow(Sender: TObject);

В рассматриваемом примере в качестве второй промежуточной переменной выбрана переменная t. Переменная t имеет целочисленный тип данных (integer) и объявляется после слова implementation. При открытии формы переменная t должна принимать значение, равное 0 (рисунок 83).

Рисунок 83 – Присваивание второй промежуточной переменной t

значения 0

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

procedure TForm2.Button10Click(Sender: TObject);

begin

if t=0 then

begin

if k=0 then

memo1.Text:=Memo1.Text+','

else

memo1.Text:='0,';

k:=0;

t:=1;

end;

end.

В представленном фрагменте кода программы знак «запятая», добавляется к ранее введенным символам в том случае, если переменная t равна 0 и переменная к=0, т. е. в том случае, если форма открыта и в нее ранее были введены числа.

Знак «0,» добавляется в том случае, если переменная t равна 0 и переменная к=1, т. е. в том случае, когда форма открыта, но значения в окно калькулятора (поле TMemo) добавлены не были.

Для того чтобы знак «запятая» не был проставлен повторно, переменная t принимает значение, равное 1. При таком значении переменной t программа не выполняет никаких действий.

Для того чтобы можно было после знака «запятая» добавлять числа, переменной k присваивается значение 0 (рисунок 84).

Рисунок 84 – Фрагмент кода программы

Для организации ввода отрицательных чисел необходимо ввести третью промежуточную переменную, в данном случае zn, которая при открытии формы принимает значение, равное 0. Объявление переменной zn осуществляется после слова implementation. Переменная zn имеет вещественный тип данных. На рисунке 85 показано присвоение значения 0 переменной zn.

Рисунок 85 – Присвоение переменной zn значения 0

Следует отметить, что тем переменным, которые при открытии формы должны принимать значение, равное 0, это значение можно не присваивать. По умолчанию объявленной переменной присваивается значение 0.

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

procedure TForm2.Button13Click(Sender: TObject);

begin

zn:=strtofloat(memo1.Text);

zn:=zn*(-1);

memo1.Text:=floattostr(zn);

end;

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

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

Рисунок 86 – Фрагмент кода программы

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

- четвертую (по счету) х;

-пятую y;

- шестую x1.

Причем, переменные x, y, x1 – переменные вещественного типа. Все указанные переменные при открытии формы должны содержать значение 0.

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

procedure TForm2.Button12Click(Sender: TObject);

begin

x:=strtofloat(memo1.Text);

y:=x+x1;

memo1.Text:=floattostr(y);

x1:=y;

k:=1;

end.

В данном фрагменте кода переменная х, записанная в поле ТMemo, переводится из строкового типа в вещественный тип (до того, как значение будет вписано в поле, переменная х равно 0).

Затем переменной y присваивается значение, равное сумме значений, содержащихся в переменной х и х1 (на первом этапе х1=0). Значение переменной y возвращается в поле ТMemo. Далее переменной х1 присваивается значение переменной y, переменной к, которая задействована при наборе цифр, присваивается значение, равное 1.

Приведенный код программы выполняет следующую последовательность действий:

1 Вводится значение. Предположим, 3.

2 Значение 3 записывается в переменную х.

3 В переменную y записывается значение y=3+0=3.

4 В поле TMemo выводится значение 3.

5 Переменная х1 принимает значение, равное 3.

6 Вводится следующее значение. Предположим 5.

7 Значение 5 записывается в переменную х.

8 В переменную y записывается значение y=5+3=8.

9 В поле TMemo выводится значение 8.

10 Переменная х1 принимает значение, равное 8.

11 Вводится следующее значение и т. д.

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

Рисунок 87 – Фрагмент кода программы

Аналогичным образом организовывается операция умножения. В качестве промежуточной переменной выступает переменная х2, которая по умолчанию принимает значение, равное 1.

На рисунке 88 показано присвоение переменной х2 значения, равного 1.

Рисунок 88 – Присвоение переменной х2 значения, равного 1

На рисунке 89 показан соответствующий код программы.

Рисунок 89 – Фрагмент кода программы

С целью организации вычитания чисел для обработки событий кнопкой, маркированной знаком «минус», необходимо ввести еще одну промежуточную переменную, например, m. При открытии формы она должна содержать значение, равное 0 (рисунок 90).

Рисунок 90 – Присвоение переменной m значения, равного 0

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

procedure TForm2.Button14Click(Sender: TObject);

begin

x:=strtofloat(memo1.Text);

if m=0 then

y:=x-x1

else

y:=x1-x;

memo1.Text:=floattostr(y);

x1:=y;

m:=1;

k:=1;

end.

Данный фрагмент кода аналогичен коду программы, в котором организуется операция вычитания.

Приведенный код программы выполняет следующую последовательность действий:

1 Вводится значение. Предположим 3.

2 Значение 3 записывается в переменную х.

3 Если переменная m равна 0 (например, при открытии программы), то в переменную y записывается значение y=3-0=3 (переменная х1 по умолчанию равна 0).

3а При невыполнении условия (когда переменная х1 равна 1) в переменную y записывается значение y=0-3=-3

4 В поле TMemo выводится значение у. Предположим, что программа была открыта впервые. Тогда у=3.

5 Переменная х1 принимает значение, равное у=3.

6 Переменная m принимает значение, равное 1.

7 Вводится следующее значение. Предположим 5.

8 Значение 5 записывается в переменную х.

9 Так как m=1, то в переменную y записывается значение y=3-5=-2.

10 В поле TMemo выводится значение -2.

11 Переменная х1 принимает значение, равное -2.

12 Вводится следующее значение и т. д.

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

Рисунок 91 – Фрагмент кода программы

Аналогичным образом организовывается операция деления чисел. В качестве промежуточной переменной выступает переменная х2, которая по умолчанию принимает значение, равное 1. Переменная х2 объявлена ранее, при организации операции умножения чисел.

На рисунке 92 показан соответствующий код программы.

Рисунок 92 – Фрагмент кода программы[15]

Следует отметить, что не использованные ранее во фрагментах кода программы переменные, необходимы для организации операции равенства. Такой переменной является переменная z. Переменная z может иметь как целочисленный, так и вещественный тип данных. Она необходима для идентификации операции и увязки всех вычислительных операций в операцию равенства. В данном случае переменная z имеет вещественный тип данных.

При организации операции сложения некоторой промежуточной переменной z присвоено значение, равное 1.

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

procedure TForm2.Button17Click(Sender: TObject);

begin

if z=1 then

begin

x:=strtofloat(memo1.Text);

y:=y+x;

end.

В соответствии с приведенным кодом, в случае, если выполняется операция сложения (z=1), к переменной y, которая была выведена в поле TMemo, прибавляется значение переменной х, записанное в поле TMemo перед тем, как была нажата кнопка, маркированная символом «равно».

Подобным образом организовывается итог операции умножения. Переменная z для операции умножения содержит значение, равное 3.

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

if z=3 then

begin

x:=strtofloat(memo1.Text);

y:=y*x;

end.

Процедура, по понятным причинам, та же (procedure TForm2.Button17Click(Sender: TObject);).

Аналогичным образом организовывается итог операции вычитания. Переменная z для операции вычитания содержит значение, равное 2.

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

if z=2 then

begin

x:=strtofloat(memo1.Text);

y:=y-x;

end.

Процедура, по понятным причинам, та же (procedure TForm2.Button17Click(Sender: TObject);).

Для операции деления z=4.

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

if z=4 then

begin

x:=strtofloat(memo1.Text);

y:=y/x;

end;

Процедура, по понятным причинам, та же (procedure TForm2.Button17Click(Sender: TObject);).

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

Рисунок 93 – Увязка операций сложения, умножения, вычитания,

деления в операцию равенства

Следует отметить, что значение, содержащееся в переменной y, следует вывести в поле TMemo, для чего после операторов, выполняемых программой по завершении проверки условий необходимо ввести строку кода memo1.Text:=floattostr(y);

Вывод значения y можно осуществить и один раз после закрытия последней операторной скобки end.

Поскольку, в данном случае, код для операции равенства (кнопки «=») прописан не полностью, строка кода, осуществляющая вывод значения переменной y, не представлена. Для корректной работы программы необходимо переменную у вывести в поле TMemo (см. ранее представленные разделы).

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

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

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

2 Какие виды комментариев существуют? Как в системе Delphi оформляются комментарии?

3 Что такое условный оператор? Для чего он необходим?

4 Как организовать ввод чисел в окно калькулятора, если оно представлено полем TMemo?

5 Какую функцию выполняют промежуточные переменные?

6 Как организовать ввод десятичной дроби?

7 Как организовать ввод отрицательных чисел?

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

9 Как организовать операцию умножения?

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

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

12 Как организовать вывод итога, полученного операцией сложения? Вычитания? Умножения? Деления?



Поделиться:


Последнее изменение этой страницы: 2017-02-19; просмотров: 298; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.137.186.26 (0.013 с.)