Wednesday, January 29, 2020

சி ஷார்ப்பில் அர்ரேக்கள்



இந்த கட்டுரையில் அர்ரே என்றால் என்ன , சி ஷார்ப்பில் எவ்வாறு எழுதபடுகின்றது, அதன் அட்வாண்டேஜ், டிஸ் அட்வான்டேஜ் என்ன என்று பார்ப்போம்.
பொதுவாக அர்ரே என்பது ஓரே வேரியபிளில் ஒன்றுக்கும் மேற்பட்ட டேட்டாக்களை சேமிக்க பயன்படுகின்றது.
கீழே உள்ளது சி ஷார்ப்பில் அர்ரே எவ்வாறு எழுதப்படுகின்றது என்றுள்ளது.
using System;

namespace ConsoleApplication8
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] a = new int[3];
            a[0] = 10;
            a[1] = 20;
            a[2] = 30;
            Console.WriteLine("a[1]={0}", a[1]);
            Console.ReadKey();


           
        }
    }
}
இதில் a என்பது இன்டிஜெர் அர்ரே . அதன் அளவு 3. அதாவது அதிகபட்சம் 3 டேட்டாக்களை சேமிக்கலாம். அதன் இண்டெக்ஸ் 0 வில் தொடங்கும் அதன் இண்டெக்ஸ் 2-ல் முடியும்.
இதில் a[1]என்பது 20 ஆகும் எனவே இதன் வெளியீடு
a[1]=20
என இருக்கும்.
இதன் நண்மைகள்.
1.      அர்ரேயை பொருத்தவரை எல்லா டேட்டாவுமே ஒரே டேட்டா டைப்பாக இருக்க வேண்டும். அதாவது மேலே உள்ள நிரலில் a என்பது ஒரு int டைப் அர்ரே அதில் எல்லா டேட்டாவுமே இன்ட் டைப்பாக தான் இருக்க வேண்டும். வேறு டேட்டா டைப்பை சேர்ந்த டேட்டாவை மதிப்பிருத்தினால் பிழை சுட்டப்படும் .எனவே இது டைப்  சேஃப்டி ஆகும்.
டிராபேக்கள்.
இதில் அதன் இண்டெக்ஸ் ரேஞ்சிற்கும் அப்பாற்பட்ட லொகேசனில் டேட்டாவை சேமித்தால் இது கம்பைல் டைமில் பிழை காட்டாது. ஆனால் இயக்க நேரத்தில் பிழை காட்டும்.
சான்றாக மேலே உள்ள நிரலில்
a[3]=45;
என மதிப்பிருத்தினால் எர்ரர் கம்பைல் டைமில் காட்டப்படாது. ஆனால் ரன் டைமில் எர்ரர் காட்டப்படும்.
இதன் டேட்டாவை அணுகுவதற்கு இண்டெக்ஸை குறிப்பிட்டே அனுக வேண்டும்.வேறு வழியில்லை.
-நன்றி
முத்து கார்த்திகேயன், மதுரை.


ads Udanz

டேட்டா டைப் கன்வெர்சன்கள் சி ஷார்ப்



இந்த கட்டுரையில் சி ஷார்ர்பில் டேட்டா டைப் கன்வெர்சன்கள் குறித்து காண் இருக்கின்றோம்.
இரண்டு வகையான கன்வெர்சன்கள்>
1.      Implicit conversion
2.      Explicit Conversion.
இம்ப்ளிசிட் கன்வெர்சனில் லோயர் டேட்டா டைப்பை ஹையர் டேட்டா டைப்பிற்க்கு மதிப்பிருத்துவோ.
சான்று நிரல்.
using System;

namespace ConsoleApplication8
{
    class Program
    {
        static void Main(string[] args)
        {
            int a = 150;
            float f = a;
            Console.WriteLine("float value={0}", f);
           
        }
    }
}
இதில் int லோயர் டேட்டா டைப், float ஹையர் டேட்டா டைப். இந்த மதிப்பிருத்தலில் எந்த டேட்டா இழப்பும் ஏற்பட போவதில்லை. மேலும் டேட்டா ஓவர் ஃப்லொவும் ஏற்பட போவதில்லை. இதில் நேரடியாக டேட்டாவை மதிப்பிருத்தியிருக்கின்றோம். எனவே இது implicit conversion ஆகும்
சான்று நிரல்-2
using System;

namespace ConsoleApplication8
{
    class Program
    {
        static void Main(string[] args)
        {
           float a= 150.123F;
            int  f =(int) a;
            Console.WriteLine("int value={0}", f);
           
        }
    }
}
வெளியீடு:
int value=150
Press any key to continue . . .
மேலே உள்ள நிரலில் ஹையர் டேட்டா டைபை லோயர் டேட்டா டைப்பிற்கு மதிப்பிருத்தியிருக்கின்றோம்.இதில் int கீ வேர்டை பயன்படுத்தி Explicit ஆக மதிப்பிருத்தியிருக்கின்றோம். எனவே இது explicit conversion ஆகும்.
சான்று நிரல்-3
using System;

namespace ConsoleApplication8
{
    class Program
    {
        static void Main(string[] args)
        {
           float a= 150.123F;
            int  f =Convert.ToInt32( a);

            Console.WriteLine("int value={0}", f);
           
        }
    }
}
மேற்கண்ட முறையிலும் Convert.ToInt32 என்ற லைப்ரரி மெத்தடை  பயன்படுத்தியும் Explicit conversion செய்யலாம்.
இரண்டுக்கும் உள்ள வித்தியாசம்.
1.      டேட்டா ஓவர் ஃப்லோ ஆகும் பொழுது டைப்பை குறிப்பிட்டு(int)
கன்வெர்சன் செய்கையில் டேட்டா தவறுதலாக மதிப்பிருத்தப்படும். உதாரணத்திற்கு int எனில் அதன் மினிமம் வேல்யூ மதிப்பிருத்தப்படலாம்.
2.      Convert.ToInt32 என்பதில் டேட்டா ஓவர் ஃப்லோ ஆகும் பொழுது முறையாக எர்ரர் திரோ ஆகும்.
அடுத்தது int.parse.
இது ஸ்ட்ரிங்க் மதிப்பை இன்டிஜர் ஆக கன்வெர்ட் செய்ய  பயன்படுகின்றது.
using System;

namespace ConsoleApplication8
{
    class Program
    {
        static void Main(string[] args)
        {
            string a = "500";
            int i = int.Parse(a);

            Console.WriteLine("int value={0}", i);
           
        }
    }
}
வெளியீடு:
int value=500
Press any key to continue . . .
ஆனால் ஸ்ட்ரிங்க் மதிப்பு தவறுதலாக இருந்தால் (ஏண்ணாக இல்லாமல் இருந்தால்) உதாரணத்திற்கு 500tg என இருந்தால் எர்ரர் திரோ செய்யப்படும். அந்த நேரத்தில் TryParse மெத்தட் கை கொடுக்கும்.
using System;

namespace ConsoleApplication8
{
    class Program
    {
        static void Main(string[] args)
        {
            string a = "500tg";
            int result = 0;
            bool b = int.TryParse (a, out result );
            if (b)
            {
                Console.WriteLine("int value={0}", result);
            }
            else
            {
                Console.WriteLine("not a number");
            }

           
        }
    }
}
மேலே உள்ள நிரலில் TryParse மெத்தட் ஆனது a சரியான நம்பர் ஃபார்மேட்டில் இருந்தால் அதை பார்ஸ் செய்து result என்ற வேரியபிளில் மதிப்பிருத்தும்.மேலும் கன்வெர்சன் வெற்றி எனில் true மதிப்பையும் தோல்வி எனில் false மதிப்பையும் ரிடர்ன் செய்யும். அதை சோதித்து முறையாக மேலே உள்ள நிரலில் உள்ள படி வெளியீடு செய்யலாம்.
மேலே உள்ள நிரலின் வெளியீடு:

not a number
Press any key to continue . . .
இவ்வாறாக டேட்டா டைப் கன்வெர்சன்கள் சி ஷார்ப்பில் நடைபெறுகின்றது.
நன்றி.
முத்து கார்த்திகேயன்,மதுரை.



ads Udanz