Создаем простой калькулятор
Все привет. В этой статье мы создадим калькулятор в среде Borland C++ Builder. Откроем ее и сделаем форму как у меня:
Обозначение компонентов:
Edit1 - Число 1
Edit2 - Число 2
Edit3 - Ответ
Button (1-4) - + - / соответственно
Напишем код для формы, для этого щелкним на ней два раза, автоматически будет создана следующаяя процедура:
void __fastcall TForm1::FormCreate(TObject *Sender) { }
TForm1 - указывает на имя компонента
FormCreate - указывает в случае чего код между фигурных скобок выполнится. В данном случае код выполнится в момент создания формы. Напишем в нем следующую команду:
Form1->BorderStyle=bsToolWindow;
В результыте ее выполнения стиль формы будет следующим:
Теперь ее нельзя растянуть.
Идем дальше, код для кнопки +:
void __fastcall TForm1::Button1Click(TObject *Sender) { if (Edit1->Text=="" && Edit2->Text=="") //Проверяем введены ли числа { ShowMessage ("Числа не введены!"); // Если нет ты выводим сообщение } else //Если введены то { float a; // Переменная для числа a float b; // Переменная для числа b float result; // Переменная для результата a=StrToFloat (Edit1->Text); // Берем из первого эдита строку и переводим ее в число b=StrToFloat (Edit2->Text); // Берем из первого эдита строку и переводим ее в число result=a+b; // Складываем два числа и помещаем в переменную для результата Edit3->Text=FloatToStr (result); // Выводим значение переменной результат } }
Теперь разберем код.
1. Мы проверяем ввел ли числа пользователь, для этого используем оператор && (логическое И)
вот его схема:
правда && правда = правда
ложь && правда = ложь
ложь && ложь = ложь
Помимо && в C++ есть следующие операторы:
|| - логическое ИЛИ
!= - логическо НЕ (не равно)
== - равно (не путайте с оператором присваивания =, оператор равно мы используем когда хотим что-то сравнить, а оператор = мы используем когда хотим присовить чему-то значение). Для проверки условия используется конструкция IF. Вот ее вид:
if (условие)
{
действия если правда;
}
else
{
действия если ложь;
}
тоесть строчку if (Edit1->Text=="" && Edit2->Text=="") можно дословно перевести так:
Если текст в эдите 1 РАВЕН пустоте И текст в эдите 2 РАВЕН пустоте,то выводим сообщение.
Команда ShowMessage выводит простое виндосовское сообщение с заданным текстом. Ее вид: ShowMessage (текст сообщения). Все на вводимость проверили, теперь надо написать код для сложения. Т.е если пользователь ввел числа, то надо их сложить. Т.е условие (Edit1->Text=="" && Edit2->Text=="") поэтому код пишем во второй чатси if - else. Объявляем три переменные типа float (тип для дробных чисел).
Одну для первого числа, другую для второго числа соответственно. Третья переменная нужна для результата.
Далее записываем в переменные числа, поскольку числа в эдитах имеют тип string - строка, нам надо перевести их в тип Float. Для этого есть функция StrToFloat. ЕЕ вид: StrToFLoat (строка которую надо перевести в число);
Переводим и записываем значения в переменные:
a=StrToFloat (Edit1->Text); b=StrToFloat (Edit2->Text);
Записали! Теперь сложим их:
result=a+b;
Сложили и записали результат в переменную result. Теперь надо вывести результат в эдит 3, но число в переменной result имеет тип float, а свойтво эдита - Text может принять параметром только строку. Как же нам перевести число в строку? Для этого есть функция FloatToStr. ЕЕ вид:
FloatToStr (число типа float)
Переводим и записываем в эдит 3:
Edit3->Text=FloatToStr (result);
Теперь осталось только написать код для кнопок *,\,-. Они аналогичны коду кнопки +.
Код для кнопки / :
void __fastcall TForm1::Button4Click(TObject *Sender) { if (Edit1->Text=="" && Edit2->Text=="") //Проверяем введены ли числа { ShowMessage ("Числа не введены!"); // Если нет ты выводим сообщение } else //Если введены то { float a; // Переменная для числа a float b; // Переменная для числа b float result; // Переменная для результата a=StrToFloat (Edit1->Text); // Берем из первого эдита строку и переводим ее в число b=StrToFloat (Edit2->Text); // Берем из первого эдита строку и переводим ее в число result=a/b; // делим и помещаем в переменную для результата Edit3->Text=FloatToStr (result); // Выводим значение переменной результат } }
Код для кнопки *:
if (Edit1->Text=="" && Edit2->Text=="") //Проверяем введены ли числа { ShowMessage ("Числа не введены!"); // Если нет ты выводим сообщение } else //Если введены то { float a; // Переменная для числа a float b; // Переменная для числа b float result; // Переменная для результата a=StrToFloat (Edit1->Text); // Берем из первого эдита строку и переводим ее в число b=StrToFloat (Edit2->Text); // Берем из первого эдита строку и переводим ее в число result=a*b; // умножаем и помещаем в переменную для результата Edit3->Text=FloatToStr (result); // Выводим значение переменной результат }
Код для кнопки -:
void __fastcall TForm1::Button2Click(TObject *Sender) { if (Edit1->Text=="" && Edit2->Text=="") //Проверяем введены ли числа { ShowMessage ("Числа не введены!"); // Если нет ты выводим сообщение } else //Если введены то { float a; // Переменная для числа a float b; // Переменная для числа b float result; // Переменная для результата a=StrToFloat (Edit1->Text); // Берем из первого эдита строку и переводим ее в число b=StrToFloat (Edit2->Text); // Берем из первого эдита строку и переводим ее в число result=a-b; // вычитаем и помещаем в переменную для результата Edit3->Text=FloatToStr (result); // Выводим значение переменной результат } }
Все! Калькулятор готов! Запускаем, вводим любые числа и выбираем любое действие.
Кстати я содал форум своей команды. Он доступен по адресу xorez.16mb.com/forum и еще в воскресенье пройдет первый урок по C++. Подробнее на сайте xorez.16mb.com
Урок 5 - Шаблоны функций