Create Octal To Binary Converter in C#

Posted by ေတဇာလင္း Thursday 29 September 2016 0 comments

မိတ္ေဆြ၊ ညီအစ္ကို၊ ေမာင္ႏွမအားလံုးပဲ မဂၤလာပါဗ်ာ။ ဒီေန႔ေတာ့ က်ေနာ္တို႔ Octal Number တစ္ခုကို Binary Number အျဖစ္ ဘရ္လို ေျပာင္းလဲ ယူႏိုင္မလဲဆိုတာေလးကို ေလ့လာၾကည့္ၾကမွာ ျဖစ္ပါတရ္။ Coding ေရးသားတဲ့အခါမွာ Visual Studio က ေထာက္ပံ့ေပးထားတဲ့ Method ေတြကို အသံုးမျပဳပဲ အလြယ္ကူဆံုးနည္းလမ္းတစ္ခုနဲ႔ ကိုယ္ပိုင္ Method တစ္ခု တည္ေဆာက္ၿပီး ေလ့လာၾကည့္ၾကမွာျဖစ္ပါတရ္။
Logic ပိုင္း ေထြေထြထူးထူးမရွိပါဘူး။ သာမာန္အေတြးကိုပဲ ရုပ္လံုးေဖာ္လုိက္တာပါ။ Coding Flow ေလးကို ၾကည့္ၾကည့္မရ္ဗ်ာ။
  1. မိတ္ေဆြရိုက္ထည့္လိုက္ေသာ Octal Number ကို 10 နဲ႔ စားၿပီး ေနာက္ဆံုးတစ္လံုးကို ျဖတ္ယူပါ့မရ္။
  2. ရလာတဲ့ စားလဒ္(Quotient)ကို သုညနဲ႔မညီမခ်င္း Loop ပတ္ၿပီး ထပ္ခါတလဲလဲ 10 နဲ႔ စားေနမရ္။
  3. ရလာတဲ့ စားၾကြင္းဟာ loop ပါတ္တိုင္း Octal Number ရဲ႕ ေနာက္ဆံုးတစ္လံုးရရွိေနမွာပါ။ ၄င္း Octal Number ကိုမွ Index အျဖစ္သံုးၿပီး က်ေနာ္တို႔ ႀကိဳတင္ ဖန္တီးထားတဲ့ string[] OctalConstant Array ကိုျဖတ္ၿပီး ရရွိလာတဲ့ Value ကို Binary အျဖစ္ Container တစ္ခုထဲ ေခတၱသိမ္းထားလိုက္မွာျဖစ္ပါတရ္။
  4. ေနာက္ဆံုး စားလဒ္(Quotient)ဟာ သုညနဲ႔ညီသြားတဲ့အခ်ိန္မွာ Loop ကို ရပ္မရ္။ ဒီအခ်ိန္မွာေတာ့ စုစည္းထားတဲ့ Binary Number တစ္ခုကို က်ေနာ္တို႔ ရရွိေနပါၿပီ။
နားလည္ႏိုင္ၾကလိမ့္မရ္လို႔ ထင္ပါတရ္ဗ်ာ။ Logic အနည္းငယ္စိမ္းေနမရ္ဆိုရင္ေတာ့..... http://programmingknowledge.blogspot.com/2014/07/7-number-system-conversions-from-octal.html Page မွာ ပံုနဲ႔တကြ ရွင္းထားတာေလးရွိပါတရ္။ ေလ့လာၾကည့္ႏိုင္ပါတရ္ဗ်ာ။ အခုေတာ့ Coding အပိုင္းေလး ဆက္ၾကမရ္။ GUI ကိုေတာ့ က်ေနာ္ ေအာက္က ပံုစံအတိုင္း ပံုေဖာ္ထားပါတရ္။ မိတ္ေဆြတို႔ေတာ့ စိတ္ႀကိဳက္ ပံုေဖာ္ ဖန္တီးႏိုင္ပါတရ္။
ပိုၿပီး နားလည္သြားေအာင္ Coding အျပည့္အစံုေလးကို ေအာက္မွာ ေလ့လာၾကည့္လိုက္ၾကပါအံုးဗ်ာ။
using System;
using System.Windows.Forms;

namespace NumberTypeConverter
{
    public partial class Octal_Conversion : Form
    {
        public Octal_Conversion()
        {
            InitializeComponent();
        }       

        public string OctalToBinary(int Oct) 
        {
            string[] OctalConstant = { "000", "001", "010", "011", "100", "101", "110", "111" };
            int OctIndex, quotient = Oct;
            string binary = "";
            while (quotient != 0)
            {
                OctIndex = quotient % 10;
                if (OctIndex >= 8)
                {
                    MessageBox.Show("It's not Octal Number");
                    break;
                }
                else
                {
                    binary = OctalConstant[OctIndex] + " " + binary;
                    quotient /= 10;
                }                
            }
            return binary;
        }

        private void btnConvert_Click(object sender, EventArgs e)
        {
            txtBinary.Text = OctalToBinary(int.Parse(txtOctal.Text));
        }

        private void btnReset_Click(object sender, EventArgs e)
        {
            txtOctal.Clear();
            txtBinary.Clear();
            txtOctal.Focus();
        }
    }
}   
ခက္ခဲတဲ့ Coding ေတြ မရွိလို႔ က်ေနာ္ အေသးစိတ္ မရွင္းျပေတာ့ပါဘူးဗ်ာ။ မိတ္ေဆြတို႔အေနနဲ႔ေတာ့ Coding Flow ေလးကို Trace လိုက္ၿပီး စမ္းၾကည့္ေစခ်င္ပါတရ္။ ဒီေလ့က်င့္ခန္းမွာဆိုရင္ေတာ့ က်ေနာ္ အေျပာင္းအလဲေလးျဖစ္သြားေအာင္ if()statement ေလးနဲ႔ မိတ္ေဆြတို႔ ရိုက္ထည့္လိုက္တဲ့ Number ဟာ Octal Number ျဖစ္လား/မျဖစ္လားဆိုတာကို စစ္ေဆးထားပါတရ္(Octal Number က 0 to 7 ပဲရွိတာကိုဗ်)။ မိတ္ေဆြတို႔အေနနဲ႔ 7 ထက္ႀကီးတဲ့ Number တစ္ခု ရိုက္ထည့္မိၿပီဆိုတာနဲ႔ Error Message တတ္လာၿပီး မွန္ကန္တဲ့ Octal Number ရိုက္ထည့္ႏိုင္ဖို႔ ေျပာပါလိမ့္မရ္။ နားလည္ႏိုင္ၾကလိမ့္မရ္လို႔ ယံုၾကည္ပါတရ္ဗ်ာ။ မိတ္ေဆြ၊ ညီအစ္ကို၊ ေမာင္ႏွမအားလံုး ေလ့လာျခင္းျဖင့္ ေက်နပ္ႏိုင္ၾကပါေစ။

0 Responses so far.

Post a Comment