آموزش سیشارپ C# – بخش ۱۲
- مقدمه
در رابطه با چهار عمل اصلی ریاضی بطور کامل و کوتاه بحث شد و اکنون میبایست که بطور کامل فراگرفته باشید که چگونه در سیشارپ دو (یا چند) عدد را با هم جمع، از هم تفریق، با یکدیگر ضرب و تقسیم کنید. تنها موردی که باقی میماند نحوه دریافت یک عدد از یک Text Box میباشد و در نهایت خواهیم توانست که یک پروژهی ساده ماشینحساب را با هم شروع کنیم.
- نحوه دریافت عدد از Text Box و ذخیره آن در متغیر
ذخیره محتوای داخل یک Text Box در یک متغیر String بهراحتی امکانپذیر بود. فرض کنید که یک Text Box با نام txtBox1 و یک متغیر از نوع String با نام strText داشته باشیم. برای ذخیره محتوای داخل Text Box در متغیر کد آن بدین شکل بود:
strText = txtBox1.Text;
اما در رابطه با عدد چطور؟ اولاً یک شماره هم میتواند عدد باشد، هم میتواند یک متن. مثلاً داخل جعبه متن میتوانید بنویسید ۲۳ و در در داخل متغیر اینگونه جمع خواهد شد:
strText = “23”;
اما اینگونه ذخیره عدد بدرد ما نخواهد خورد! زیرا در عملیات ریاضی جمع دو عدد که به شکل string باشند امکانپذیر نیست و باید دو عدد از نوع int، float یا … باشد.
پس ابتدا برای شروع یک پروژه جدید از نوع Windows Application بسازید. یک button و یک Text Box قرار دهید و Property های Text Box به شکل ذیل باشد:
Name: tbFirstName
Size: 50, 20
Location: 40, 30
Text: 10
و Property های button به شکل زیر باشد:
Name: btnAnswer
Size: 75, 25
Location: 90, 90
Text: Answer
شکل فرم شما اینطور خواهد بود:
کاری که میخواهیم انجام دهیم این است که عدد ۱۰ را به شکل int دریافت کنیم و در یک متغیر از نوع int ذخیره کنیم. چون قصد داریم این اتفاقات با کلیک بر روی button انجام شوند، پس دوبار بر روی Button کلیک کنید و وارد بخش کدنویسی شوید. دو متغیر زیر را تعریف کنید:
int firstTextBoxNumber;
int answer;
همانند تصویر زیر:
برای اینکه محتوای وارد شده در TextBox را دریافت کنیم، کد زیر را مثل همیشه وارد کنید:
firstTextBoxNumber = tbFirstNumber.Text;
این کد میگوید: یک Text Box با نام tbFirstNumber را پیدا کن، وارد property با نام Text آن شو، وقتی که به Text آن دسترسی پیدا کردی، محتوای آن را وارد متغیر firstTextBoxNumber کن.
برای نمایش عدد وارد شده در Text Box در یک Message Box، کد زیر را وارد کنید:
MessageBox.Show(firstTextBoxNumber.ToString());
کدتان را اجرا کنید … سیشارپ به شما اجازه اجرا نخواهد داد و خطای زیر را خواهید دید:
اگر متوجه شده باشید، این خطا میگوید که شما نمیتوانید یک مقدار string را به یک مقدار int تبدیل کنید! اگر بخاطر داشته باشید ما قبلاً گفتیم که مقداری که وارد یک Text Box میشود، هرطور آن را وارد کنید (چه عدد خالی، چه متن خالی و چه مختلط) آخرسر یک مقدار String خواهد بود و سیشارپ این قابلیت را ندارد که یک مقدار string را به int تبدیل کند.
راه حل این مشکل، استفاده از یک شیء به نام Parse است. خدا را شکر این شیء، هیچ چیز عجیبی نیست و هیچ سختیای جز نوشتن کلمه Parse برای برنامهنویس ندارد! اکنون چون ما میخواهیم که از یک مقدار خاص از هر نوعی، به یک نوع معلومی (در اینجا میخواهیم به int) تبدیل کنیم، ما باید از int.Parse استفاده کنیم. پس کدتان را بهشکل زیر تغییر دهید:
firstTextBoxNumber = int.Parse(tbFirstNumber.Text);
کدتان را اجرا کنید و شاهد نتیجه درست آن باشید!
این نکته را دقت کنید که حتی میتوانید یک string مستقیم که حاوی عدد است را به int تبدیل کنید؛ مثلاً به کد زیر دقت کنید:
int aRandomNumber;
aRandomNumber = int.Parse(“10”);
این کد بدین شکل عمل میکند که شماره ۱۰ از نوع string را دریافت میکند و به عدد ۱۰ تبدیل میکند.
یک Text Box دیگر اضافه کنید و Property های آن را بهشکل زیر تنظیم کنید:
Name: tbSecondNumber
Size: 50, 20
Location: 165, 35
Text: 5
فرم شما بدیل شکل خواهد بود:
مجدداً با دابل-کلیک بر روی button، وارد بخش کدنویسی شوید. یک متغیر دیگر از نوع int با نام secondTextBoxNumber تعریف کنید. برای ذخیره سازی عدد از Text Box دوم، کد زیر را بنویسید:
secondTextBoxNumber = int.Parse(tbSecondNumber.Text);
اکنون بیایید با هم جمع دو متغیری که عددهای اول و دوم را از Text Box های اول و دوم را دریافت میکنند در متغیر answer ذخیره کنیم:
answer = firstTextBoxNumber + secondTextBoxNumber;
با استفاده از یک MessageBox، مقدار answer را نمایش میدهیم:
MessageBox.Show(answer.ToString());
تمامی کدها باید به شکل زیر نوشته شدهباشند:
نرمافزار خود را اجرا کنید؛ شما باید جمع دو عدد وارد شده را در یک Message Box مشاهده کنید:
تمرینهای زیر را سعی کنید انجام دهید تا در جلسه بعد که شروع یک پروژه جدی (ماشینحساب) خواهد بود، آماده باشید:
تمرین: سعی کنید Text Box های دیگری را تعریف کرده و با استفاده از آنها، عملیات حسابی دیگری همانند تفریق، ضرب، تقسیم و مخلوطی از آنها را با هم انجام دهید
جهت دریافت این بخش از آموزش بهصورت یک فایل PDF، اینجا را کلیک کنید.
می بینم که داری دور میگیری. سرعتت قابل تحسینه.بازم تشکر
سلام،
خواهش میکنم عزیزم. والا ما که میگفتیم یک ماه به ما اجازه بدید این امتحانا تموم بشه، سرعتمون رو بالا میبریم!
احتمالاً که برای شنبه مطلبی نباشه چونکه چیزی که دارم میبینم این هست که این مطلب هنوز بازدیدهای نرمال خودش رو بدست نیورده و احتمالاً خیلی از افراد در این روزها دسترسی به اینترنت ندارند (شاید بدلیل سفر یا هرچیز دیگر.)
انشاءالله از یکشنبه مجدداً قرار دادن آموزشها شروع میشود.
موفق باشید!
سلام.عزیز شنبه بذار دیگه.هر کس بخواد خوب بعد میاد و میگیره
ممنون
سلام دوست عزیزم،
متأسفانه خارج از دسترس بنده هست. تأیید مطالب توسط مدیریت کل سایت (آقای میری) یک روز طول میکشه.
اما به روی چشمم؛ سعی میکنم باهاشون هماهنگ بشم اگر اجازه دادند، شنبه منتشر بشه. اما من نخواستم این رو بگم که خدایی نکرده بدقولی نکرده باشم و بدترین حالت را در نظر گرفتم که یکشنبه منتشر میشه.
موفق باشید!
ایول زود تر مطلب بگذارید
احسنت داری واقعا. آفرین از همینجا معلومه اهل پیشرفتی
مطالب خیلی مفید بودن مرسی
عالیه
به آموزشاتون ادامه بدید
ما هم با اشتیاق دنبال می کنیم.
سلام . بسیار ممنون از زحمات شما
برنامه این صفحه موقع اجرا خطا داد
بررسی کردم دیدم دو متغیر عدد گیر را وقتی برای بار اول تعریف شده است را حذف کردم . خطا برطرف شد. یعنی مستقیما هنگام مقداردهی ، معرفی نوع متغیر هم انجام شد . انوقت دیگر خطا نداد
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication16
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button4_Click(object sender, EventArgs e)
{
double firstnum;
double secondnum;
double divide;
firstnum = double.Parse(txtbx10.Text);
secondnum =double.Parse (txtbx11.Text);
divide = firstnum / secondnum;
MessageBox.Show(divide.ToString());
txtbx12.Text = divide.ToString();
}
private void button1_Click(object sender, EventArgs e)
{
int firstnum;
int secondnum;
int sum;
firstnum = int.Parse(txtbx1.Text);
secondnum=int.Parse(txtbx2.Text);
sum = (firstnum + secondnum);
// MessageBox.Show(“sum is:”+sum,”sum”);
// MessageBox.Show(sum.ToString(), “sum”);
txtbx3.Text = (sum.ToString ());
}
private void button2_Click(object sender, EventArgs e)
{
int first;
int second;
int sub;
first = int.Parse (txtbx4.Text);
second = int.Parse (txtbx5.Text);
sub = first – second;
//MessageBox.Show(sub.ToString());
MessageBox.Show(“subtraction of two number is: ” + sub, “subtraction”);
txtbx6.Text = sub.ToString ();
}
private void button3_Click(object sender, EventArgs e)
{
int fstnm;
int scndnm;
int answermulti;
fstnm = int.Parse (txtbx7.Text);
scndnm = int.Parse(txtbx8.Text);
answermulti = fstnm * scndnm;
MessageBox.Show(“multiple of two number is: ” + answermulti, “multiple!”);
txtbx9.Text = answermulti.ToString();
}
}
}
با سلام
همانطور که می دانیم متد یک تابع است که می تواند دارای ورودی و یا خروجی باشد در حالیکه
شی یک نمونه از کلاس است لذا به نظر می رسید جمله زیر دارای خطایی معنایی می باشد
>>>>>>>>>>استفاده از یک شیء به نام Parse است>>>>>>>>>>>>>>>>>
ضمنا رنگ تمام توابع و متد به رنگ صورتی می باشد لذا توابع parse ,و try parse متد می باشد
سلام.چرا بعضی از صفحه ها باز نمیشن؟؟!!!
مثل صفحه 9 و13
لطفا جواب بدین