Для того, чтобы у нас получилось достойное приложение нужно сделать следующее




Итак мы повторили такие темы, как «Разветвляющийся алгоритм» и «Запись выражений», «Калькулятор» и «Стандартные функции языка программирования Pascal». В начале урока мы вспомнили свойства формы, и интерфейс системы программирования Delphi. Мы знаем, что для разработки приложения в среде Delphi необходимо воспользоваться палитрой визуальных компонентов. На сегодняшнем уроке мы разработаем «Калькулятор» ничуть не уступающий по возможностям приложению ОС Windows и разберемся, как же все работает, рассмотрим механизм работы этой программы.

Для того, чтобы у нас получилось достойное приложение нужно сделать следующее:

- Открыть систему программирования (создать новый проект);

- Сохранить проект в своей директории (урок 1, «Сохранение проекта»);

- Изменить свойства формы до размеров приложения «Калькулятор» (свойства Height/Width)

- Разместить следующие компоненты на форме; Edit1, Button (по количеству кнопок) (Рис.1)

Примечание:Для размещения компонентов закладки Standart (к любой другой закладке компонентов операции с размещением и удалением не изменяются) выбираем комопонент одинарным щелчком ЛКМ на палитре компонентов и нажимаем на форме приложения в том месте, где вы хотите установить объект. Для удаления объекта щелкните по размещенному объекту 1 раз ЛКМ и нажмите кнопку Delete на клавиатуре. Для перемещения компонента на форме нажмите и удерживая ЛКМ перетащите компонент по форме.

Рис.1. Общий вид проекта приложения

- Измените следующие свойства (properties) компонентов главной формы приложения (рис. 2). Сохраните изменения.

 

Название Свойство Изменение свойства
Edit1 Text удалить значение
Button1 Caption +
Button2 Caption -
Button3 Caption *
Button4 Caption /
Button5 Caption =
Button6 Caption C
Form1 Caption Мой Первый Калькулятор

 

 

 

Рис.2. Форма проекта программы «Мой Первый Калькулятор»

 

Прежде чем наша программа начнет показывать результаты арифметических вычислений, давайте еще раз вспомним основные правила записи выражений. Например требуется получить сумму двух введеных переменных. Что для этого нужно сделать? Или, например проверить значение переменной и в зависимости от ее значения выполнить то или иной условие? Как все это записать? Если с этими и другими простыми задачами и задачами средней степени сложности вы справляетесь, то ответьте на вопрос что такое тип данных? Какие типы данных вы знаете?

 

  • Real – вещественный тип данных
  • Integer – целочисленный тип данных
  • Boolean – логический тип данных
  • String – строки
  • Сhar – символы
  • Text – внешний файл

 

А какой тип данных по вашему отображается в поле ввода (таковым является Edit и др.)? Правильный ответ: строка (тип данных string). Что это значит? Это значит что для того чтобы прибавить 5 к 3 нужно? Правильный ответ: преобразовать тип данных для сложения двух указанных ранее чисел, иначе при сложении их как string у вас получится не 8, а 53. Примечение: строки можно только складывать.

 

В Delphi есть стандартные функции преобразования из строки в число для процессорной обработки:

  • из string в integer – strtoint
  • из string в real – strtofloat

и соответственно для вывода результата

  • из integer в string –inttostr
  • из real в string – floattostr

 

Давайте разберем на примере программы «Сложение двух чисел» синтаксис языков Pascal и Delphi (тип данных может быть изменен и соотвественно ему форматирование вывода и функции преобразования)

 

Pascal (модульный консольный язык) Delphi (визуальный объектно-ориентированный язык)
var a,b,c:integer; begin writeln(‘vvedite….’) readln(a,b); // ввод чисел с клавиатуры c:=a+b; writeln(‘Rezultat= ’, c); // вывод на экран результата сложения двух целых чисел readln; end. // Для получения следующего результата надо перезапускать приложение и заново водить var a,b,c:integer; begin a:=strtoint(edit1.text); // преобразовании введенного значения из строки в число (указание адреса) b:=strtoint(edit2.text); c:=a+b; edit3.text:=inttostr(c); // обратная функция преобразования после получения результата. Значение присваивается к адресу end.`
Результат работы программы (вид запущенного приложения)

 

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

 

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

 

Техническое описание программы. Задача пользователя, который открывает программу довольно проста. Он открывает программу, вводит число в строку, нажимает на операнде, вводит следующее число, нажимает на знаке равно, видит результат, очищает поле от значений. Задача и порядок операций? Опишите внутренний механизм работы приложения? Механизм работы приложения заключается в следующем (действия):

 

- Ввод числа в поле ввода Edit1 (число в видимой части приложения всегда является string);

- Действие пользователя вызывающее событие OnClick нажатием на операндах «+/*-»;

- Преобразование string в integer для последующей обработки;

- Очистка поля ввода для ввода следующего числа;

- Ввод следующего числа в поле ввода Edit1;

- Действие пользователя вызывающее событие OnClick нажатием на знаке «=»;

- Преобразование string в integer следующего числа;

- Выполнение операции в зависимости от операнда (использование условного оператора);

- Вывод в поле ввода Edit1 полученного результата преобразования integer в string.

 

Что вызвало в механизме (алгоритме) работы программы интерес и что мы упустили? Напомню, что событие есть процесс возникающий под действием пользователя или программы. Но, так как все программы разрабатываются программистами, а программисты тоже люди, то очевидно, что событие есть процесс, возникающий именно под действиями пользователя. Это значит что функция или процедура, описанная в событии есть действия пользователя или программная обработка данных.

 

Перейдем к событиям. Нам надо выбрать кнопку Button1 (или другую на которой у вас сейчас написан «+») в ObjectTreeView (Дерево объектов) и в Object Inspector перейти к закладке Events (События). В списке событий найдите строку OnClick и нажмите два раза напротив этого события до того момента пока не появится следующее:

 

procedure TForm1.Button1Click(Sender: TObject);

Begin

end;

End.

 

30% дела сделано! Не расслабляйтесь. Пролистайте колесиком мыши вверх до этих строк:

 

Var

Form1: TForm1;

Implementation

{$R *.dfm}

 

Добавьте в раздел var (variable) следующие переменные - a,b,c:real; d:char; Модуль примет следующий вид:

 

Var

Form1: TForm1;

a,b,c:real;

d:char;

Implementation

{$R *.dfm}

 

Вернитесь к процедуре, в которой будет описано событие OnClick. Назовите действие (действие 2). Добавьте следующий текст программы после оператора begin

procedure TForm1.Button1Click(Sender: TObject);

Begin

a:=strtofloat(edit1.text); // преобразование введеного значения

d:=’+’; // запоминание операции

edit1.clear; //очистка поля ввод от содержимого

end;

End.

60% проекта завершено! Вернитесь к форме. Это можно сделать, нажав вот на этой кнопке

Задание. По очереди выберите каждую кнопку с операндом на форме и перейдите к их событиям. Для каждой кнопки будет свое событие. В зависимости от операции в тексте процедуры будет свой символ, присваиваемый к переменной d. На выполнение задание 3 мин.

Если вы все сделали правильно, то ваша программа должна принять следующий вид:

 

85% проекта выполнено! Очень скоро мы сможем ее скомпилировать и увидеть результат наших вычислений. Ну и конечно мы должны закрепить наши знания и умения проанализировав, сложив все знания и умения применить и получить новый продукт интеллектуального труда. Нажатия на кнопки с операциями уже описаны и отработаны, но осталось важное – нажатие на знак «=». Именно он должен быть агрегатором всех операций. Перейдем к форме и выберем событие OnClick у кнопки с надписью «=».

 

Давайте еще раз вспомним механизм работы приложения:

 

- Ввод числа в поле ввода Edit1 (число в видимой части приложения всегда является string);

- Действие пользователя вызывающее событие OnClick нажатием на операндах «+/*-»;

- Преобразование string в integer для последующей обработки;

- Очистка поля ввода для ввода следующего числа;

- Ввод следующего числа в поле ввода Edit1;

- Действие пользователя вызывающее событие OnClick нажатием на знаке «=»;

- Преобразование string в integer следующего числа;

- Выполнение операции в зависимости от операнда (использование условного оператора);

- Вывод в поле ввода Edit1 полученного результата преобразования integer в string.

Добавьте к процедуре события OnClick кнопки с надписью «=» следующее (после begin):

Использование оператора множественного выбора Использование условных операторов if-then-else
b:=strtofloat(edit1.Text); case d of '+':c:=a+b; '-':c:=a-b; '*':c:=a*b; '/':c:=a/b; end; edit1.Text:=floattostr(c); b:=strtofloat(edit1.Text); if d=’+’thenc=a+b; if d=’-’thenc=a-b; if d=’*’thenc=a*b; if d=’/’thenc=a/b; edit1.Text:=floattostr(c);

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-04-04 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: