မိတ္ေဆြ၊ ညီအစ္ကို၊ ေမာင္ႏွမအားလံုးပဲ မဂၤလာပါဗ်ာ။ ဒီေန႔ေတာ့ က်ေနာ္တို႔ Decimal Number တစ္ခုကို Hexadecimal String အျဖစ္ ဘရ္လို ေျပာင္းလဲ ယူႏိုင္မလဲဆိုတာေလးကို ေလ့လာၾကည့္ၾကမွာ ျဖစ္ပါတရ္။ Coding ေရးသားတဲ့အခါမွာ Visual Studio က ေထာက္ပံ့ေပးထားတဲ့ Method ေတြကို အသံုးမျပဳပဲ အလြယ္ကူဆံုးနည္းလမ္းတစ္ခုနဲ႔ ကိုယ္ပိုင္ Method တစ္ခု တည္ေဆာက္ၿပီး ေလ့လာၾကည့္ၾကမွာျဖစ္ပါတရ္။
Logic ပိုင္း ေထြေထြထူးထူးမရွိပါဘူး။ သာမာန္အေတြးကိုပဲ ရုပ္လံုးေဖာ္လုိက္တာပါ။ Coding Flow ေလးကို ၾကည့္ၾကည့္မရ္ဗ်ာ။
- Hexadecimal ေျပာင္းမွာျဖစ္တဲ့အတြက္ က်ေနာ္တို႔ ေျပာင္းလဲခ်င္တဲ့ Decimal ကို 16 နဲ႔စားမရ္။
- ရလာတဲ့ စားလဒ္(Quotient)ကို သုညနဲ႔မငယ္မခ်င္း Loop ပတ္ၿပီး ထပ္ခါတလဲလဲ 16 နဲ႔ စားေနမရ္။
- စားၾကြင္း(remainder)ကိုေတာ့ template filtering စနစ္နဲ႔ တိုက္ဆိုင္စစ္ေဆးမရ္။ ရလာတဲ့ result တစ္ခုကို container array တစ္ခုထဲ ေခတၱထည့္သိမ္းထားမရ္ေပါ့။
- ေနာက္ဆံုး စားလဒ္(Quotient)ဟာ သုညနဲ႔ညီလွ်င္ပဲျဖစ္ျဖစ္၊ ငယ္သြားရင္ပဲျဖစ္ျဖစ္ Loop ကို ရပ္မရ္။ ဒီအခ်ိန္မွာေတာ့ စားၾကြင္း(remainder)ေတြႀကီး စုစည္းထားတဲ့ array တစ္ခုကို က်ေနာ္တို႔ ရရွိေနပါၿပီ။
- ေနာက္ဆံုးမွာေတာ့ Array ကို Invert လုပ္ ေျပာင္းျပန္လွန္ေပးျခင္းျဖင့္ Hexadecimal string တစ္ခုကို ဆြဲထုတ္လိုက္တာပဲျဖစ္ပါတရ္။ နားလည္ႏိုင္ၾကပါလိမ့္မရ္ဗ်ာ။
Logic အနည္းငယ္စိမ္းေနမရ္ဆိုရင္ေတာ့..... http://programmingknowledge.blogspot.com/2014/07/6-number-system-conversions-from.html
Pageမွာ ပံုနဲ႔တကြ ရွင္းထားတာေလး ရွိပါတရ္။ ေလ့လာၾကည့္ႏိုင္ပါတရ္ဗ်ာ။ အခုေတာ့ Coding အပိုင္းေလး ဆက္ၾကမရ္။ GUI ကိုေတာ့ က်ေနာ္ ေအာက္က ပံုစံအတိုင္း ပံုေဖာ္ထားပါတရ္။ မိတ္ေဆြတို႔ေတာ့ စိတ္ႀကိဳက္ ပံုေဖာ္ ဖန္တီးႏိုင္ပါတရ္။
Coding ေလးကို ေလ့လာၾကည့္လိုက္ၾကပါအံုးဗ်ာ။
using System;
using System.Linq;
using System.Windows.Forms;
namespace DecToHex
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public string DecToHex(int Dec)
{
string remainder= null, result = null;
int Quotient = Dec;
while (Quotient > 0)
{
remainder = (Quotient % 16).ToString();
if (remainder == "0") remainder = "0";
if (remainder == "1") remainder = "1";
if (remainder == "2") remainder = "2";
if (remainder == "3") remainder = "3";
if (remainder == "4") remainder = "4";
if (remainder == "5") remainder = "5";
if (remainder == "6") remainder = "6";
if (remainder == "7") remainder = "7";
if (remainder == "8") remainder = "8";
if (remainder == "9") remainder = "9";
if (remainder == "10") remainder = "A";
if (remainder == "11") remainder = "B";
if (remainder == "12") remainder = "C";
if (remainder == "13") remainder = "D";
if (remainder == "14") remainder = "E";
if (remainder == "15") remainder = "F";
result += remainder;
Quotient = Quotient / 16;
}
////Revert String
return new string(result.ToCharArray().Reverse().ToArray());
}
private void btnDecToHex_Click(object sender, EventArgs e)
{
txtHex.Text = DecToHex(int.Parse(txtDec.Text));
}
}
}
ေနာက္ဆံုး String ကို Reverse လုပ္ထားတဲ့စနစ္ကိုေတာ့ Linq ရဲ႕ Method နဲ႔ ျပထားပါတရ္။ မိတ္ေဆြတို႔အေနနဲ႔ သာမာန္အေတြးအတိုင္း for loop ကို အသံုးျပဳၿပီး Reverse လုပ္ခ်င္တရ္ဆိုရင္ေတာ့ ေအာက္က ကုဒ္တင္းေလးနဲ႔ ေျပာင္းေရးႏိုင္ပါတရ္ဗ်ာ။
ခက္ခက္ခဲခဲ ဘာမွ မရွိပါဘူးဗ်ာ။ Coding ေလးနဲ႔ ScreenShoot ေလးကို ၾကည့္လိုက္ရင္ေတာ့ မိတ္ေဆြတို႔အေနနဲ႔ ရွင္းျပစရာမလိုေလာက္ေအာင္ နားလည္သြားၾကလိမ့္မရ္လို႔ ထင္ပါတရ္ဗ်ာ။ မိတ္ေဆြအားလံုး ေလ့လာျခင္းျဖင့္ ေက်နပ္ႏိုင္ၾကပါေစဗ်ာ။
string output = "";
for (int i = result.Length - 1; i >= 0; i--)
{
output += result[i];
}
return output;
မိတ္ေဆြ၊ ညီအစ္ကို၊ ေမာင္ႏွမအားလံုး မဂၤလာပါဗ်ာ။ ဒီေန႔ေတာ့ က်ေနာ္တို႔ C# Graphic သင္ခန္းစာေလးေတြထဲက Drawing Tool – Brush အေၾကာင္းေလးကို ထပ္ေလ့လာၾကည့္ၾကမရ္။ ေရွး ေလ့က်င့္ခန္းေတြမွာတုန္းက က်ေနာ္တို႔ Brush နဲ႔ ပတ္သတ္ၿပီး SolidBrush, HatchBrush အေၾကာင္းေလးေတြ ကိုေလ့လာခဲ့ၾကၿပီးျဖစ္ပါတရ္။ ဒီေလ့က်င့္ခန္းမွာေတာ့ TextureBrush အသံုးျပဳပံုအေၾကာင္းေလးကို မိတ္ဆက္ ေပးခ်င္ပါတရ္ဗ်။ အားလံုးကေတာ့ အေျခခံေလးေတြပဲျဖစ္ပါတရ္။ ဒါေပမဲ့ စတင္ေလ့လာသူမ်ားအတြက္ အသံုးျပဳ ပံုေလးေတြကို အနည္းငယ္တီးမီေခါက္မိၿပီး ေရွ႕ဆက္အဆင့္ျမင့္ အပိုင္းေတြကို ေလလာႏိုင္ဖို႔ရည္ရြယ္ပါတရ္ဗ်။ ကဲ... ေျပာေနရင္ၾကာတရ္။ လက္ေတြ႔ ေလ့လာၾကည့္ၾကမရ္ဗ်ာ။
စိတ္၀င္စားတဲ့ မိတ္ေဆြ၊ ညီအစ္ကို၊ ေမာင္ႏွမမ်ား က်ေနာ္နဲ႔အတူ ေလ့လာၾကည့္ၾကအံုးစို႔ဗ်ာ။
အားလံုးအဆင္ေျပ ေခ်ာေမြ႕နိုင္ၾကပါေစ။
မိတ္ေဆြ၊ ညီအစ္ကို၊ ေမာင္ႏွမအားလံုး မဂၤလာပါဗ်ာ။ ဒီေန႔ေတာ့ က်ေနာ္တို႔ အခန္းဆက္ Tutorials ေလးျဖစ္တဲ့ Algorithm အေၾကာင္းေလးကို ဆက္ေလ့လာၾကည့္ၾကရေအာင္ပါ။ အခန္းဆက္ ေလ့က်င့္ခန္းျဖစ္လို႔ အပိုင္းေလးေတြခြဲၿပီး တင္ျပ ေဆြးေႏြးေပးသြားပါ့မရ္ဗ်ာ။ အခု အပိုင္း(2) ကေတာ့ Sorting Method ေတြထဲက တစ္ခုျဖစ္တဲ့ “Insertion Sort” အေၾကာင္းေလးပဲျဖစ္ပါတရ္။ ဒီ algorithm ရဲ႕ ေနာက္ကြယ္က အလုပ္,လုပ္သြားတဲ့ idea ကို အလြယ္ကူဆံုးနဲ႔ ထင္သာျမင္သာ အရွိဆံုးျဖစ္ေအာင္ ေျပာရမယ္ဆိုရင္ေတာ့ ဖဲခ်ပ္ေတြကိုစီတဲ့ ပံုစံလို႔ပဲ ဥပမာ ေပးရပါလိမ့္မရ္ဗ်။
စားပြဲေပၚမွာ ဖဲခ်ပ္ေတြကို ေမွာက္ၿပီးခ်ထားမယ္၊ အ့ဲဒီအထဲက တစ္ခ်က္ခ်င္းကို လက္တစ္ဘက္နဲ႔(ဘယ္လက္)ယူမယ္၊ အပြင့္ကိုၾကည့္ၿပီး ေနာက္လက္တစ္ဘက္ထဲကို(ညာလက္) အစဥ္အတိုင္း သူ႔ေနရာနဲ႔သူ ထိုးထည့္ (insert) လိုက္မယ္ေပါ့ဗ်ာ။ (ဒီ Insertion သေဘာတရား ေၾကာင့္ပဲ insertion sort လို႔ ေခၚတာပါ)။ စစခ်င္းမွာေတာ့ ညာလက္ဟာ empty ပါဘဲ။ စားပြဲေပၚကေန တစ္ခ်ပ္ခ်င္းယူၿပီး အစဥ္တိုင္း သူ႔ေနရာနဲ႔သူ ထည့္လုိက္ေတာ့မွ Fig မွာျမင္ရတဲ့အတိုင္း ညာလက္ထဲ ေရာက္သမွ် ဖဲခ်ပ္တိုင္းဟာ အစီစဥ္တက် စဥ္ၿပီးသား အေနအထားကို ေရာက္သြားပါတယ္။ စိတ္၀င္စားတဲ့ မိတ္ေဆြတို႔အေနနဲ႔ က်ေနာ္နဲ႔အတူ ေလ့လာၾကည့္ၾကရေအာင္ဗ်ာ။
အားလံုးအဆင္ေျပ ေခ်ာေမြ႕နိုင္ၾကပါေစ။
အားလံုးအဆင္ေျပ ေခ်ာေမြ႕နိုင္ၾကပါေစ။
မိတ္ေဆြ၊ ညီအစ္ကို၊ ေမာင္ႏွမအားလံုး မဂၤလာပါ။ ဒီေန႔ က်ေနာ္တို႔ C# Graphics သင္ခန္းစာေလးေတြ ထဲက Drawing Tool - Brush အေၾကာင္းေလးကို ထပ္ေလ့လာၾကည့္ၾကမရ္။ ေရွ႕ေလ့က်င့္ခန္းမွာတုန္းက SolidBrush အေၾကာင္းကို Color ေတြနဲ႔ ေလ့လာခဲ့ၾကပါတရ္။ ဒီေန႔မွာေတာ့ ပံုစံတူေလးျဖစ္တဲ့ HatchStyle ကိုအသံုးျပဳၿပီး HatchBrush အျဖစ္ Graphic Object ဆြဲယူႏိုင္ပံုေလးကို ေဆြးေႏြးေပးသြားပါ့မရ္။ Hatch ဆိုတာနဲ႔ မိတ္ေဆြတုိ႔အေနနဲ႔ အသင့္ဆြဲၿပီးသား Design Pattern ေတြကို အသံုးျပဳေတာ့မရ္ဆိုတာ သိေနေလာက္ပါၿပီ။ Photoshop သမားေတြအတြက္ ပိုၿပီး အကၽြမ္းတ၀င္ရွိလိမ့္မရ္လို႔ ထင္ပါတရ္ဗ်ာ။ ကဲ... ေျပာေနရင္ၾကာတရ္။ ဘာလဲဆိုတာ လက္ေတြ႔ ေလ့လာၾကည့္ၾကမရ္ဗ်ာ။
စိတ္၀င္စားတဲ့ မိတ္ေဆြ၊ ညီအစ္ကို၊ ေမာင္ႏွမမ်ား က်ေနာ္နဲ႔အတူ ေလ့လာၾကည့္ၾကအံုးစို႔ဗ်ာ။
အားလံုးအဆင္ေျပ ေခ်ာေမြ႕နိုင္ၾကပါေစ။


