Home > CLR, Кодинг, Компьютер, Проги, С++, Windows > CLR – Common language runtime – Первый проект

CLR – Common language runtime – Первый проект

В новом семестре начали проходить CLR – Common Language Runtime. Преподаватель сказал, что нормальной литературы нет по этой теме. Поэтому я решил писать об этом здесь.  Итак, первый проект – калькулятор. Самый элементарный из всех считающих калькуляторов. В форме имеется:  10 кнопок с цифрами, 4 со знаками действий, 1 кнопка “Равно” и одна – “Очистить”.

А так же объект textBox – чтобы наглядней было результаты вводить/выводить.

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

Для этого проекта я использовал Microsoft Visual C++ 2008 Express Edition, скачанный с сайта Microsoft. Если вы используете другую среду, то может иметь место тот факт, что код различаться будет. Итак, создаем новый проект. Выбираем File–>NewProject–>CLR–>WindowsForms Application.

Задаем имя проекта,нажимаете Enter – несколько секунд и вот он, проект. Стоп. Но как-же добавить на форму кнопку? Для этого необходимо выбрать View–>Toolbox. Ищеме там объект Button и щелкаете сначала по нему, затем по форме. Объект добавлен. Щелкаем по нему, далее Properties–>Name. Изменяем текст в кнопке на ‘0’; Так необходимо сделать еще 14 раз, чтобы были кнопки с цифрами, знаками действий и “равно” . Так же необходимо создать TextBox. Выделяем мышкой кнопку с нулем и нажимаем Enter. Открывется окно с кодом, курсор мигает после System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { это – процедура, которая вызывается при нажатии на кнопку или обработчик событий, в данном случае – обработчик нажатия. Давайте пройдемся по коду и посмотрим, что же Visual Studio Создал за нас. А создал он очень много.

Сначала идет несколько строчек, начинающихся с ключевых слов using namespace – здесь идет определение пространства имен. Затем идет public ref class Form1 : public System::Windows::Forms::Form – здесь создается потомок класса “Form” – экранная форма для нашего калькулятора . Далее после открывающей скобки и идентификатора public: идет список доступных параметров. Там мы опишем 4 переменные.

String^  s; – переменная, являющаяся управляемым указателем на строку. В нашей программе она будет играть роль аккумулятора: в нее мы будем записывать символы и выводить в текстовое поле textBox. Затем необходимо указать две переменные типа float : float r, x; – эти переменные будут операндами для проведения арифметических действий. А так же символьную переменную ch char ch;.В нее будем записывать симол действия, которое необходимо провести с операндами.

Далее идет функция Form1(void) незнакомый с классами скажет, что здесь пропущен тип функции. На самом деле нет. Эта функция – особая, оня является конструктором. Она не требует типа и вызова. Имеет такое же имя, как и у класса. В ней просходит предварительная инициализация компонентов – InitializeComponent();. После процедуры инициализации добавим s = “”; r = 0; x = 0; – инициализацию наших переменных.

Затем идет еще одна фунция, имеющая имя ~Form1(). Эта функция имеет имя деструктор. Она тоже не требует типа и вызывается автоматически. В нем производится уничтожение всех компонентов экранной формы.

Понятно, что если на форме есть кнопка, то и должна быть соответсвующая переменная. После деструктора идет список этих объектов формы. К примеру, тексвое поле описывается так: System::Windows::Forms::TextBox^ textBox1;

Далее имеется процедура void InitializeComponent(void) в ней идет создание и настройка параметров объектов формы. Давайте остановимся остановимся поподробнее на настройке какой-нибудь кнопки. Создание происходит так:

this->button1 = (gcnew System::Windows::Forms::Button()); А настройка это то же самое, что и изменение свойств объекта:

this->button1->Font = (gcnew System::Drawing::Font(L”Microsoft Sans Serif”, 12)); – изменение шрифта и размера надписей на кнопке,

this->button1->Location = System::Drawing::Point(13, 38); – помещение кнопки в нужное место формы,

this->button1->Name = L”button1″; – кнопка будет называться “Button1”,

this->button1->Size = System::Drawing::Size(25, 25); – изменение размеров,

this->button1->Text = L”1″ – этот текст будет отображаться на ней,

this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click);создание обработчика нажатия кнопки.

Абсолютно аналогично происходит инициализация формы.

Теперь необходимо для каждой кнопки создать обработчик. Для этого на форме выделяем кнопку и нажимаем “Enter”.

В каждый обработчик нажатия на кнопку с цифрой необходимо поместить такой код: s = s + “1”;  textBox1->Text = s; В этих строчках мы используем переменную s, записываем в конец символ и выводим в textBox. Теперь приступим к написанию кода для кнопок с действиями. Что там должно проиходить?

В первый численный операнд должно быть помещено число из строки s, эта строка должна обнулиться, в textBox’е появляется значок действия, этот же значок помещается в переменную ch, чтобы затем было ясно, какое действие выполнять.

r = Convert::ToDouble(s);
ch = ‘+’;
textBox1->Text = “+”;
s = “”;

Вот такой код. Логично предположить, что, к примеру, для умножения необходимо во втрой и третьей строке поменять “плюс” на “умножить”.

Теперь кнопка “равно” ее код такой

x = Convert::ToDouble(s);
switch (ch) {
case ‘+’ : r = r + x; break;
case ‘-‘ : r = r – x; break;
case ‘*’ : r = r * x; break;
case ‘/’ : r = r / x; break;
}
textBox1->Text = Convert::ToString(r);

Здесь в первой строчке идет запись значения во второй операнд,  в проверке определяется, какое действие необходимо выполнить и вывод результата. Еще для удобства создадим кнопку “Очистить” в ней будем обнулять переменные. r = 0; x = 0; s = “”; textBox1->Text = s; вот так.

Разумеется, эта программа имеет массу недостатков и не отличается особой стабильностью, но ведь это первая программа, не так ли? 😉

Advertisements
  1. kamandrej
    22.02.2009 at 21:52

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

  2. 22.02.2009 at 23:12

    Спасибо интересно. Вот бы так же достаточно кратенько услышать про MSF (чисто методологию как правильно писать проги)

  3. incognito12
    23.02.2009 at 22:23

    Хм… Ну, что могу сказать… Прикольно: настальгия по школе. Только там мы калькулятор в визуал бейсике делали… =)

  4. Ахинея
    24.12.2010 at 01:32

    Огромнейшее спасибо за этот пост. Хорошо что хоть кому-то преподаватели на парах не байки травят, а дело рассказывают.

  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: