Home > Компьютер, Проги, Windows > Программирование на C# под Windows Mobile

Программирование на C# под Windows Mobile

Имеется у меня коммуникатор на базе одной из последних Windows Mobile. И как-то в голову мне пришла мысль: а почему бы что-нибудь не написать для него? Там же тоже виндовз. А у меня как раз есть Microsoft Visual Studio 2005. Правда писать программы для Windows Mobile нужно на языке C#, но это не является особой проблемой для тех, кто знает С++. 🙂

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

Квадратный трехчлен имеет вид:   y = ax²+bx+c

Первая производная:  y’ = 2ax+b

Вторая производная: y’ ‘ = 2a

А как учитли в средней школе, точка экстремума находится из первой производной, а харктер выпуклости – из второй.

Собственно, нам понадобится вот что:

private System.Windows.Forms.TextBox textBox1;
private System.Windows.Forms.TextBox textBox2;
private System.Windows.Forms.TextBox textBox3;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.Button button1;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.Label label5;
private System.Windows.Forms.TextBox textBox4;
private System.Windows.Forms.TextBox textBox5;
private System.Windows.Forms.TabControl tabControl1;
private System.Windows.Forms.TabPage input;
private System.Windows.Forms.TabPage math;
private System.Windows.Forms.TabPage info;
private System.Windows.Forms.Label label6;
private System.Windows.Forms.TextBox eq;
private System.Windows.Forms.TextBox pr1;
private System.Windows.Forms.TextBox pr2;
private System.Windows.Forms.TextBox wings;
private System.Windows.Forms.TextBox ext;
private System.Windows.Forms.TextBox vip;

Немного, согласитесь 😉

Самое первое, что мы разместим на форме, будет элемент управления tabControl. В нем будет три вкладки :

  1. Ввод – для ввода коэффициентов и расчета корней
  2. Анализ – для всего остального
  3. Инфо – для копирайта 🙂

Необходимо иметь ввиду, что разрешение экрана у КПК и коммуникаторов сильно отличаются, поэтому для удобства конечного пользователя, чтобы ему ползунками экран не двигать, свойство DOCK необходимо поменять на FILL. Это позволит tabControl’ у автоматически принимать размеры всей формы.

На вкладке 1 разместим следующие элементы: 5 label’ ов, 5 textBox’ ов , и одну кнопку. Все должно выглядеть примерно так:

Вид вкладки "Ввод"

На второй вкладке будет 6 label’ ов.

Вкладка номер 2. Общий вид

Вкладка номер 2. Общий вид

А на вкладке номер три – копирайт. Ибо без него – никак.

И, наконец, полный код обработчика!

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms; namespace DeviceApplication1
{
public partial class First : Form
{
double a, b, c, d, x1, x2;
public First()
{
InitializeComponent();
} private void button1_Click(object sender, EventArgs e)
{
a = Convert.ToDouble(textBox1.Text);
b = Convert.ToDouble(textBox2.Text);
c = Convert.ToDouble(textBox3.Text);
d = b * b - 4 * a * c;
if (d < 0)
{
x1 = (-b + Math.Sqrt(-d)) / 2 / a;
x2 = (-b - Math.Sqrt(-d)) / 2 / a;
x1 = Math.Round(x1 * 10000) / 10000;
x2 = Math.Round(x2 * 10000) / 10000;
textBox4.Text = x1.ToString();
textBox5.Text = x2.ToString();
textBox4.Text += "i";
textBox5.Text += "i";
}
else
{
x1 = (-b + Math.Sqrt(d)) / 2 / a;
x2 = (-b - Math.Sqrt(d)) / 2 / a;
textBox4.Text = x1.ToString();
textBox5.Text = x2.ToString();
}
} private void tabControl1_GotFocus(object sender, EventArgs e)
{
//УРАВНЕНИЕ
field.Height = field.Width;
string str = "";
str = a.ToString() + "x^2";
if (b > 0) str += "+" + b.ToString() + "x"; else str += b.ToString() + "x";
if (c > 0) str += "+" + c.ToString(); else str += c.ToString();
eq.Text = "y=" + str;
//ПЕРВАЯ ПРОИЗВОДНАЯ y'=2ax+b;
double q;
q = 2 * a;
str = "";
str = q.ToString() + "x";
if (b > 0) str += "+" + b.ToString(); else str += b.ToString();
pr1.Text = "y'=" + str;
//ВТОРАЯ ПРОИЗВОДНАЯ
str = "";
pr2.Text = "y''=" + q.ToString();
double x, y;
x = -b / q; x = Math.Round(x*1000)/1000;
y = x * x * a + b * x + c; y = Math.Round(y * 1000) / 1000;
ext.Text = "A(" + x.ToString() + ";" + y.ToString() + ") - "; //Вывод if (a > 0)
{
wings.Text = "Ветви вверх";
ext.Text += "MIN";
vip.Text = "Выпуклость - вниз";
}
else
{
wings.Text = "Ветви вниз";
ext.Text += "MAX";
vip.Text = "Выпуклость - вниз";
}

}

private void First_Closing(object sender, CancelEventArgs e)
{
Dispose();
}


}
}

Вот и всё 🙂

Ничего сложного, как видите, нет!

В будущем проекты будут более интересны. А Вам – удачи!

Напоминаю, что при использовании материалов с моего сайта, ссылка на него обязательна!

Advertisements
  1. 09.09.2009 at 13:59

    Благодарю за пост, очень интересно. Я согласен с предыдущим комментарием.

  2. Alex
    19.10.2010 at 20:40

    Отличная прога для начала, был бы раз за большее число таких статей.

  3. 08.12.2010 at 14:27

    Спасибо, очень хорошо написано. О программирование http://progalegko.ru можно почитать.

  4. 10.10.2011 at 14:01

    Это при компиляции проги – выбирать компиляцию под WM ???

    А то я шото в детстве возился с VC++ а теперь захотелось под WM сделать программулину и понятия не имею – с чего начать. ибо всё забыл.

  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: