শিখুন C# ডট নেট প্রোগ্রামিং [পর্ব-১১]: Temperature converter তৈরি এবং Logic নিয়ে ভাবনা

শিখুন C# ডট নেট প্রোগ্রামিং

সুপ্রিয় বন্ধুরা আসসালামু আলাইকুম। আশা করি ভাল আছেন। আজকে আমি একটি ছোট কিন্তু খুব important একটি প্রোজেক্ট নিয়ে আলোচনা করব। এটি হল temperature converter. যার মাধ্যমে আপনি সহজেই তাপমাত্রার স্কেল পরিবর্তন করে দেখতে পারেন। আমি এই প্রোজেক্ট টির ভিতরে বিভিন্ন ছোট ছোট বিষয় রেখেছি যা আপনাকে মোটামুটি Logic নিয়ে কাজ করতে শিখাবে।

Program শুরু করার আগে আপনাকে কিছু বিষয় নিয়ে ভাবতে হবে।

  • ১. কল্পনা করুন কি প্রোজেক্ট বানাবেন।
  • ২. খাতা কলমে ডিজাইন এঁকে ফেলুন।
  • ৩. এবার step by step Algorithm তৈরি করুন প্রোগ্রামটা কিভাবে কাজ করবে। User কোথাও ভুল করলে কি message আসবে। একজন programmer হিসেবে আপনাকে আগে থেকে জানতে হবে user কোথায় কি input দিতে পারে। input invalid হলে কি message show করবে।
  • ৪. এবার Logic তৈরি করুন।
  • ৫. Code লেখার সময় প্রয়োজনীয় comment করুন।

তো চলুন শুরু করা যাক।

১. নিচের মত ডিজাইন করুন।

২. ফর্মটি সিলেক্ট করা অবস্থায় properties এ যান। তারপর BackColor এ গিয়ে color choose করুন।

দেখুন আপনার প্রোজেক্টটির background color change হয়ে গেছে। color choose করার সময় চেষ্টা করবেন professional কোন color choose করতে। এটা আপনার professional mind এর পরিচয় দেবে। তবে Default হিসেবে যে System Color দেয়া থাকে সেটাই সবথেকে ভাল বলে আমি মনে করি।

৩. এবার প্রথম combobox টি সিলেক্ট করে properties এ যান এবং Items এ ক্লিক করুন।

৪. এরকম একটি window open হবে।

এখানে আপনার item গুলো লিখুন এবং ok করুন।

৫. তারপর properties থেকে DropDownStyle এ যান এবং সিলেক্ট করুন DropDownList.

এর মানে হল combobox এ selected item ছাড়া অন্য কিছু লেখা যাবে না।

৬. এবার অপর combobox টি সিলেক্ট করুন এবং একই কাজ করুন।

৭. এবার Convert button এ double click করুন এবং method এর উপরে নিচের function টি লিখুন।


void checkSameSelection()//এটা হল function এর নাম।

{

if (comboBox1.SelectedIndex == comboBox2.SelectedIndex)

{

MessageBox.Show("You Have selected same temperature....Please Select Different temperature","warning");

}

}

function কি?

সহজ ভাষায় function হল ছোট ছোট module যাকে পরবর্তীতে প্রোগ্রাম এর মাঝে ব্যাবহার করা যায়। function এর সুবিধা হল একই function কে বারবার call করা যায়। function calling এর জন্য প্রোগ্রাম এর ভিতরে function এর নাম লিখে () দিতে হয়।

if (comboBox1.SelectedIndex == comboBox2.SelectedIndex) এই কথার মানে হল দুটি combobox থেকে selected item একই হলে message show করবে। যখনি এরকম ঘটবে তখনি message show করবে। তাই আমি বারবার same message না লিখে function call করব। এতে প্রোগ্রাম এর complexity কমে। আমি আপনাদের বিস্তারিত বললাম না একারণে যে আমি ধরে নিচ্ছি আপনারা c language কিছুটা হলেও পারেন।

৮. এবার নিচের function গুলো লিখুন।


private void ctof()

{

double c, f;

c = double.Parse(textBox1.Text);

f = (9 * c + 160) / 5;

textBox2.Text = f.ToString();

}

private void ctok()

{

double c, k;

c = double.Parse(textBox1.Text);

k = c + 273;

textBox2.Text = k.ToString();

}

private void ftoc()

{

double f, c;

f = double.Parse(textBox1.Text);

c = ((f - 32) * 5) / 9;

textBox2.Text = c.ToString();

}

private void ftok()

{

double f, k;

f = double.Parse(textBox1.Text);

k = (((f - 32) * 5) / 9)+273;

textBox2.Text = k.ToString();

}

 

private void ktoc()

{

double c, k;

k = double.Parse(textBox1.Text);

c = k - 273;

textBox2.Text = c.ToString();

}

private void ktof()

{

double f, k;

k = double.Parse(textBox1.Text);

f = (((k - 273) * 9) / 5) + 32;

textBox2.Text = f.ToString();

}

code এর ব্যাপারে পরে আসি। আগে বলি এই function গুলো কেন লিখলাম? Logic কি?

আমাদের প্রোগ্রাম এর মূল উদ্দেশ্য কি temperature convert করা। কি কি convert করব? সেলসিয়াস থেকে ফারেনহাইট , ফারেনহাইট থেকে সেলসিয়াস সেলসিয়াস থেকে কেলভিন, কেলভিন থেকে সেলসিয়াস, ফারেনহাইট থেকে কেলভিন ইত্যাদি। আমি যা যা convert করব সেগুলোর জন্য আমি আলাদা আলাদা function name দিয়েছি। যেমন ctof(celcius to farenheit),ctok(celcious to kelvin)……..ktoc(kelvin to celcius), ktof(kelvin to farenheit) ইত্যাদি। function name নিজেদের ইচ্ছা মত দেওয়া যায়। তবে যেকোনো developer/programmer যেন বুঝতে পারে সে ধরনের Standard নাম দেওয়া উচিৎ যেমন আমি দিয়েছি।

এবার প্রতিটি function এর ভিতরে প্রয়োজনীয় conversion এর সুত্র সংযোজন  করা হয়েছে। যেকোনো function এর 3 no লাইন এ সুত্র গুলো দেওয়া আছে। আর parse কেন করলাম, আবার string এ কেন convert করলাম তা আমার আগের tutorial গুলতে দেওয়া আছে কষ্ট করে দেখে নেবেন। তবুও কোন প্রশ্ন থাকলে জানাবেন।

৯. এবার convert method এর মধ্যে নিচের code গুলো লিখুন।


private void Convert_Click(object sender, EventArgs e)

{

try

{

this.checkSameSelection();//function call

if (comboBox1.SelectedIndex == 0 && comboBox2.SelectedIndex == 1)

{

ctof();//function call

}

else if (comboBox1.SelectedIndex == 0 && comboBox2.SelectedIndex == 2)

{

ctok();

}

 

if (comboBox1.SelectedIndex == 1 && comboBox2.SelectedIndex == 0)

{

ftoc();

}

else if (comboBox1.SelectedIndex == 1 && comboBox2.SelectedIndex == 2)

{

ftok();

}

if (comboBox1.SelectedIndex == 2 && comboBox2.SelectedIndex == 0)

{

ktoc();

}

else if (comboBox1.SelectedIndex == 2 && comboBox2.SelectedIndex == 1)

{

ktof();

}

}

catch

{

MessageBox.Show("Plz input a value","Error");

textBox1.Focus();

}

}

if (comboBox1.SelectedIndex == 0 && comboBox2.SelectedIndex == 1) লাইন দিয়ে বুঝায় যখন SelectedIndex 0 হয় অর্থাৎ আপনি ১ম combobox এ প্রথম item টি select করেন এবং ২য় combobox থেকে ২য় item select করেন তখন function call হবে। আর input same হলে warning message দেখাবে। এখানে একটা ব্যাপার মনে রাখবেন আপনি combobox এ যে item গুলো লিখবেন তার প্রথম item টির index value হবে 0। তারপর ১, ২ এভাবে। এখানে centigrade এর index value=0, farenheit এর index value=এর kelvin এর index value=2.

১০. সবশেষে আমি clear button এ নিচের code গুলো লিখেছি।


private void btnClear_Click(object sender, EventArgs e)

{

comboBox1.SelectedIndex = -1;

comboBox2.SelectedIndex = -1;

textBox1.Clear();

textBox2.Clear();

}

আপনাদের সুবিধার জন্য আমি আমার সম্পূর্ণ source code টি একত্রে আবার দিলাম।


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 TemperatureConverter

{

public partial class TempConverter : Form

{

public TempConverter()

{

InitializeComponent();

}

void checkSameSelection()//function name

{

if (comboBox1.SelectedIndex == comboBox2.SelectedIndex)//check same input

{

MessageBox.Show("You Have selected same temperature....Please Select Different temperature","warning");

}

}

private void ctof()//function name

{

double c, f;

c = double.Parse(textBox1.Text);

f = (9 * c + 160) / 5;

textBox2.Text = f.ToString();

}

private void ctok()

{

double c, k;

c = double.Parse(textBox1.Text);

k = c + 273;

textBox2.Text = k.ToString();

}

private void ftoc()

{

double f, c;

f = double.Parse(textBox1.Text);

c = ((f - 32) * 5) / 9;

textBox2.Text = c.ToString();

}

private void ftok()

{

double f, k;

f = double.Parse(textBox1.Text);

k = (((f - 32) * 5) / 9)+273;

textBox2.Text = k.ToString();

}

private void ktoc()

{

double c, k;

k = double.Parse(textBox1.Text);

c = k - 273;

textBox2.Text = c.ToString();

}

private void ktof()

{

double f, k;

k = double.Parse(textBox1.Text);

f = (((k - 273) * 9) / 5) + 32;

textBox2.Text = f.ToString();

}

private void Convert_Click(object sender, EventArgs e)

{

try

{

this.checkSameSelection();

if (comboBox1.SelectedIndex == 0 && comboBox2.SelectedIndex == 1)//verify your input, if valid then will function call

{

ctof();//function call

}

else if (comboBox1.SelectedIndex == 0 && comboBox2.SelectedIndex == 2)

{

ctok();

}

if (comboBox1.SelectedIndex == 1 && comboBox2.SelectedIndex == 0)

{

ftoc();

}

else if (comboBox1.SelectedIndex == 1 && comboBox2.SelectedIndex == 2)

{

ftok();

}

 

if (comboBox1.SelectedIndex == 2 && comboBox2.SelectedIndex == 0)

{

ktoc();

}

else if (comboBox1.SelectedIndex == 2 && comboBox2.SelectedIndex == 1)

{

ktof();

}

}

catch

{

MessageBox.Show("Plz input a value","Error");

textBox1.Focus();

}

}

 

private void btnClear_Click(object sender, EventArgs e)

{

comboBox1.SelectedIndex = -1;//code to clear combobox item

comboBox2.SelectedIndex = -1;

textBox1.Clear();

textBox2.Clear();

}

}

}

বিশেষ দ্রষ্টব্যঃ হুবহু Copy paste করলে প্রোগ্রাম execute হবে না। প্রতিটা control এ double click করে সেখানে নির্ধারিত code গুলো লিখতে হবে। আপনি যখন function তৈরি করবেন তখন কোন method এর under এ লিখা যাবে না।

আজ এ পর্যন্তই। ভাল থাকবেন। আর comments দিয়ে জানাবেন। ধন্যবাদ সবাইকে।

Level New

আমি Salman Srabon। বিশ্বের সর্ববৃহৎ বিজ্ঞান ও প্রযুক্তির সৌশল নেটওয়ার্ক - টেকটিউনস এ আমি 11 বছর 6 মাস যাবৎ যুক্ত আছি। টেকটিউনস আমি এ পর্যন্ত 24 টি টিউন ও 49 টি টিউমেন্ট করেছি। টেকটিউনসে আমার 4 ফলোয়ার আছে এবং আমি টেকটিউনসে 0 টিউনারকে ফলো করি।


টিউনস


আরও টিউনস


টিউনারের আরও টিউনস


টিউমেন্টস

Level 0

Thanks vai……
SMS Answer ar kono Project thaklay aktu shair koren………

Level New

sorry vaia apnar kothata bujhlam na. apni ki web application chacsen?

Level 0

Vai, private void ctok(), e error dirche & comboBox1.SelectedIndex o error dirche,
oh srabon vai apnar contract number ta ki dea jabe

Level New

apnar error message ta copy paste kore amake dekhan. apni jodi private void ctok() function ti call na koren tahole error dekhabe. amar cell no: 01686606909 sondhar por any time call korte paren. thanx

Level 0

thanks for ur reply,ami private void ctok() function call korechi then error dekai, apni ki teamviewer dea amar PC te dekte parben if possible hoy