Занятие 3. Контрольное

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

 

Задание

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

2. Снабдить программу необходимыми комментариями.

3. Подготовиться к ответам на вопросы, содержащиеся в листинге примера.

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

 

Листинг

unit calc_;

Interface

Uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;

Type

TForm1 = class(TForm)

Edit1: TEdit;

Button1: TButton;        // 1. как это получается?

Button2: TButton;

Button3: TButton;

Button4: TButton;

Button5: TButton;

Button6: TButton;

Button7: TButton;

Button8: TButton;

Button9: TButton;

ButtonPlus: TButton;

ButtonMinus: TButton;

ButtonEnter: TButton;

ButtonC: TButton;

Button0: TButton;

ButtonZ: TButton;

procedure Edit1Change(Sender: TObject; var Key:Char);

procedure Button7Click(Sender: TObject);

procedure Button8Click(Sender: TObject);

procedure Button9Click(Sender: TObject);

procedure Button4Click(Sender: TObject);

procedure Button5Click(Sender: TObject);

procedure Button6Click(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure Button0Click(Sender: TObject);

procedure ButtonZClick(Sender: TObject);

procedure ButtonCClick(Sender: TObject);

procedure ButtonPlusClick(Sender: TObject);

procedure ButtonMinusClick(Sender: TObject);

procedure ButtonEnterClick(Sender: TObject);

procedure FormCreate(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

Var

Form1: TForm1;                          // 2. что это означает?

Implementation                           // 3. что это такое?

{$R *.dfm}

Var

accum: real;                            // это что?

oper: integer;                            // это что?;

f: integer;

{ f = 0 признак ожидания ввода чего? f = 1 соответственно чего? }

 

procedure TForm1.Button0Click(Sender: TObject);

Begin

if f = 0                                         //                     

   then begin

    Edit1.Text:= '0';                 // 4. что такое Edit1 и Edit1.Text (и точка)?

    f:= 1;

  end

else

if Edit1.Text <> '0'                 // это позволяет не выводить 0 в начале числа, но

                                                      // 5. поясните как это делается?

   then Edit1.Text:= Edit1.Text + '0';

end;

 

procedure TForm1.Button1Click(Sender: TObject);

begin                                             // 6. поясните, что делает эта процедура?

if f = 0 

then begin

Edit1.Text:= '1';

f:= 1; 

end

else Edit1.Text:= Edit1.Text + '1';                    // 7. что делает эта операция?

end;

 

procedure TForm1.Button2Click(Sender: TObject);     //?

Begin

if (f = 0)

then begin

    Edit1.Text:= '2';

    f:= 1; 

end

else Edit1.Text:= Edit1.Text + '2';

end;

 

procedure TForm1.Button3Click(Sender: TObject);

Begin

if f = 0

then begin

    Edit1.Text:= '3';

    f:= 1;

  end

else Edit1.Text:= Edit1.Text + '3';

end;

 

procedure TForm1.Button4Click(Sender: TObject);     //?

Begin

if f = 0 then

begin

Edit1.Text:= '4';

f:= 1;

end

else Edit1.Text:= Edit1.Text + '4';

end;

 

procedure TForm1.Button5Click(Sender: TObject);

Begin

if (f = 0)

then begin

    Edit1.Text:= '5';

    f:= 1;

  end

else Edit1.Text:= Edit1.Text + '5';

end;

 

procedure TForm1.Button6Click(Sender: TObject);

Begin

if f = 0

then begin

    Edit1.Text:= '6';

    f:= 1;

  end

else Edit1.Text:= Edit1.Text + '6';

end;

 

procedure TForm1.Button7Click(Sender: TObject);

Begin

if f = 0

then begin

Edit1.Text:= '7';

f:= 1;

end

else Edit1.Text:= Edit1.Text + '7';

end;

 

procedure TForm1.Button8Click(Sender: TObject);

Begin

if f = 0

then begin

    Edit1.Text:= '8';

    f:= 1;

  end

else Edit1.Text:= Edit1.Text + '8';

end;

 

procedure TForm1.Button9Click(Sender: TObject);

Begin

if f = 0 

then begin

    Edit1.Text:= '9';

    f:= 1;

  end

else Edit1.Text:= Edit1.Text + '9';

end;

 

procedure TForm1.ButtonZClick(Sender: TObject);     // 8. что делает эта процедура?

Begin

if Edit1.Text = '0' then

begin

Edit1.Text:= '0,';

f:= 1;

end;

if Pos(',',Edit1.Text) = 0 then                                        // 9. что делает эта операция?

Edit1.Text:= Edit1.Text + ',';

end;

 

 

procedure DoOper;                                                         // что делает процедура?

Var

numb: real;                                                        //10. это число на индикаторе, поясните                                                                           //что означает эта строка?

Begin

                                                                         // 11. accum что содержит?

                                                                         // 12. oper – это что?

                                                                             // 13 а где находится операнд?.

numb:= StrToFloat(Form1.Edit1.Text);

 case oper of

0: accum:= numb;

1: accum:= accum + numb;

2: accum:= accum - numb;

end;

Form1.Edit1.Text:= FloatToStr(accum);        // 14. что делает эта операция?

end;

 

procedure TForm1.ButtonPlusClick(Sender: TObject); // что делает процедура?

{ Подсказка: надо выполнить предыдущую операцию, вывести результат на индикатор, запомнить текущую операцию и установить режим ожидания первой цифры нового числа}

Begin

if f = 0

then oper:= 1

else begin                                                    // Подсказка: на индикаторе есть число

DoOper;                                                         // 15. что делает эта операция?

oper:=1;                                                           // 16. что делает эта операция?

f:=0;   

end;

end;

 

procedure TForm1.ButtonMinusClick(Sender: TObject); // что делает процедура?

Begin

if f = 0

then oper:= 2

else begin

DoOper;                                                         // 17. что делает эта операция?

oper:=2;                                                           // 18. что делает эта операция?

f:=0;

end;

end;

 

// кнопка "="

procedure TForm1.ButtonEnterClick(Sender: TObject); // 19. что делает эта процедура?

Begin

if f = 0  

then oper:= 0

else begin

DoOper;                                                                     // 20. это что?

oper:=0;

f:=0;    

end;

end;

 

                                                                                         // 21 кнопка "с" -  что делает?

procedure TForm1.ButtonCClick(Sender: TObject);

Begin

Edit1.Text:= '0';

accum:= 0;

oper:= 0;

f:= 0;

end;

 

procedure TForm1.Edit1Change(Sender: TObject; var Key:Char);

                                                                                         // 22. что делает эта процедура?

Begin

Key:= Chr(0); 

end;

 

procedure TForm1.FormCreate(Sender: TObject); // 23. что делает эта процедура?

Begin

oper:= 0;

end;

 

End.

 

Рекомендация

Дать указание студентам по завершению упражнения в Word вставить табличку, поместить в нее ответы на все указанные вопросы и предъявить их преподавателю.

 

 

Занятия 4.

На выполнение занятий 4 отводится 4ч.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: