زنگ سی شارپ – قسمت پنجم

آشنایی با دیتا تایپ کاراکتر و منطق بولین


مسعود درویشیان ۱۴ دیدگاه سی شارپ پنج شنبه, ۳۰ام شهریور , ۱۳۹۱ 21278 بازدید

در قسمت قبل در مورد Floating-Point Data Types و چگونگی دریافت مقدار از کاربر و چند نکته ی دیگر، توضیحاتی داده شد. در این قسمت به توضیح دیتا تایپ‌های char و bool خواهیم پرداخت. کاراکتر و بولین دو بحث پایه ای و مهم در برنامه نویسی هستند که کابردهای اساسی و مهمی دارند.

زنگ سی‌شارپ - قسمت پنجم

کاراکترها (Characters)

در سی شارپ از دیتا تایپ char برای نگهداری هر کاراکتری می‌توان استفاده کرد. در متغیری از جنس char شما می‌توانید کاراکترهای تکی (Single Character) را نگهداری کنید. سی شارپ بر اساس استاندارد یونی کد از ۱۶ بیت برای نمایش کاراکترها استفاده می‌کند، در صورتی که اکثر زبان‌های دیگر از ۸ بیت استفاده می‌کنند، مثل ++C و این می‌تواند مشکل ساز شود زیرا بعضی از حروف الفبایی را (مثل زبان چینی) نمی‌توان در ۸ بیت نمایش داد. این ویژگی سی شارپ باعث می‌شود بتوانید مقادیر جالبی را با فرمت یونی کد تولید کنید. برای مثال حروف الفبای خارجی که برای نمایش آن‌ها باید از کاراکتر استفاده کرد مثل حروف یونانی، عبری، چینی و آلمانی همچنین علامت‌های خاص از جمله علامت‌های پول‌های خارجی، علامت‌های ریاضی، اشکال هندسی و غیره که در صفحه کلید استاندارد موجود نیستند اما با استاندارد یونی کد قابل دسترسی هستند.

مقادیر کاراکتر را باید بین علامت single quotation (سینگل کوتیشن ‘ ‘) قرار داد، بدلیل اینکه کامپیوتر برای نگهداری مقادیر character و integer تفاوت قائل می‌شود.

برای مثال هر دو عبارت زیر درست هستند:

char aCharValue = '9';
int aNumValue = 9;

در صورتیکه هر دو عبارت زیر نادرست هستند:

char aCharValue = 9;
int aNumValue = '9';
// error, won't work

یک عدد می‌تواند یک کاراکتر باشد، که در اینصورت باید بین single quotation قرار بگیرد و نوع آن هم char باشد. همچنین یک حرف الفبایی نمی‌تواند در متغیری از نوع عددی قرار بگیرد.

چند نمونه:

char myInitial = 'J';
char percentSign = '%';
char numThatIsAChar = '9';

کاراکترها را می‌توان در خروجی نمایش داد:

static void Main(string[] args)
{
    char ch;
    ch = 'X';
    Console.WriteLine("This is a ch: " + ch);
}

شما می‌توانید هر کاراکتری از جمله کاراکترهایی مثل backspace و tab را ذخیره کنید. برای ذخیره ی این نوع کاراکترها (Escape Sequence) از دو علامت استفاده می‌شود که همیشه اولین آن‌ها علامت backslash است. این جفت علامت، یک کاراکتر را نمایش می‌دهند. برای مثال کد زیر، کاراکتر backspace و کاراکتر tab را به ترتیب در متغیرهای aBackSpaceChar و aTabChar ذخیره می‌‌کند:

char aBackspaceChar = '\b';
char aTabChar = '\t';

در این مثال، escape sequence یک مقدار را برای هر کاراکتر (یک backspace و یک tab به‌جای حروف b و t) نشان می‌دهد.

جدول زیر برخی از escape sequence های رایج در سی شارپ را نشان می‌دهد.

متغیری از جنس char تنها یک کاراکتر را در خود نگه می‌دارد. برای اینکه رشته ای از کاراکترها را داشته باشید (مثل نام شخصی خودتان) باید از string استفاده کنید. در طول انجام مثال‌ها با نحوه ی استفاده از char و اینکه در چه مواردی استفاده دارد بیشتر آشنا خواهید شد.

بولین (The bool Type)

دیتا تایپ bool یک منطق بولی (بولین – Boolean) است که بر پایه ی این دو مقدار است: false و true. یک متغیر از جنس int می‌تواند میلیون‌ها مقدار مختلف در زمان‌های مختلف را در خود ذخیره کند ولی متغیری از جنس bool تنها می‌تواند یکی از این دو مقدار را در خود نگه دارد: true یا false. برای اعلام یک متغیر بولین باید از کلمه کلیدی bool استفاده کنید.

مثال زیر دو مقدار را در دو متغیر از جنس bool ذخیره می‌کند:

bool isItMonday = false;
bool areYouTired = true;

شما همچنین می‌توانید بر اساس نتیجه ی مقایسه ی دو مقدار، مقدار true یا false را در یک متغیر بولین قرار دهید. عملگرهای مقایسه ای دو آیتم را با هم مقایسه می‌کنند، یک عبارت که شامل عملگر مقایسه ای است، یک مقدار بولین دارد.

جدول زیر ۶ عملگر مقایسه ای که سی شارپ پشتیبانی می‌کند را نشان می‌دهد:

هنگامی که شما از عملگرهای مقایسه ای که دارای دو علامت هستند (=>، =<، =!، ==) استفاده می‌کنید، نمی‌توانید بین دو علامت از space استفاده کنید و توجه داشته باشید که علامت = همیشه در سمت راست است.

به مثال زیر توجه کنید:

static void Main(string[] args)
{
    bool isSixBigger = 6 > 5; // Value stored would be true
    bool isSevenSmallerOrEqual = 7 <= 4; // Value stored would be false
            
    Console.WriteLine(isSixBigger);
    Console.WriteLine(isSevenSmallerOrEqual);
}

در این مثال دو عدد با هم مقایسه می‌شوند و حاصل آن‌ها که یا true است یا false، در متغیر بولین قرار داده می‌شود. هرچند این روش مقدار دهی به متغیرهای بولین تا حدودی بلا استفاده است ولی برای مثال و یادگیری در اینجا مناسب است. استفاده از مقادیر بولین زمانی معنای بهتری پیدا می‌کند که شما از متغیرها بجای اعداد ثابت در مقایسه ها استفاده کنید.

به مثال زیر توجه کنید:

static void Main(string[] args)
{
    int hoursWorked = 45;
    int annualIncome = 80000;

    bool doesEmployeeReceiveOvertime = hoursWorked > 40;
    bool isEmployeeInHighTaxBracket = annualIncome > 100000;

    Console.WriteLine(doesEmployeeReceiveOvertime);
    Console.WriteLine(isEmployeeInHighTaxBracket);
}

در بولین اول این برنامه متغیر hoursWorked با مقدار ثابت ۴۰ مقایسه می‌شود، اگر مقدار hoursWorked کمتر از ۴۰ باشد پس مقدار متغیر doesEmployeeReceiveOvertime برابر با false می‌شود، در غیر اینصورت برابر با true می‌شود.

در بولین بعدی، متغیر annualIncome باید مقداری بیشتر از ۱۰۰۰۰۰ را داشته باشد تا متغیر isEmployeeInHighTaxBracket برابر با true شود.

نکته ی مهم: توجه داشته باشید که علامت انتساب یک “تک مساوی” است و علامت مقایسه‌ی دو مقدار “دومساوی” است.

به مثال زیر توجه کنید:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace test
{
    class Program
    {
        static void Main(string[] args)
        {
            bool b;
            b = false;
            Console.WriteLine("b is " + b);
            b = true;
            Console.WriteLine("b is " + b);

            Console.WriteLine("10 > 9 is " + (10 > 9));
            Console.WriteLine("10 == 9 is " + (10 == 9));
        }
    }
}

خروجی:

b is false

b is true

۱۰ > 9 is true

۱۰ == ۹ is false

همان‌طور که می‌بینید هنگامی که مقدار بولین در خروجی توسط ()Console.WriteLine نمایش داده می‌شود، مقدار آن یا بصورت True نمایش داده می‌شود یا False. همین‌طور (۱۰ > ۹) و (۱۰ == ۹) شامل مقدار بولی هستند.



نویسنده / مترجم : مسعود درویشیان

علاقه مند به موسیقی و برنامه نویسی بازی


۱۴ دیدگاه برای این نوشته ثبت شده است


  1. علی حیدرزاده
    ۳۱ شهریور ۱۳۹۱

    اگر یکی دو تا تمرین برای حل کردن کسایی که دارن آموزش ها رو دنبال میکنن آخر هر قسمت قرار بدید خیلی خوب میشه.




    • مسعود درویشیان
      ۳۱ شهریور ۱۳۹۱

      تمرین‌هایی که باید انجام بدید همه‌گی آماده شده و به‌زودی توی سایت قرار داده می‌شه، ولی باید بحث به یه جایی برسه که تمرین‌ها رو قرار بدیم.




  2. مجتبی
    ۳۱ شهریور ۱۳۹۱

    عالی بود.
    ولی اگر در مورد اینکه چه مقدارهایی به جز True و False معنای همین دو مقدار رو میدن فکر کنم برای دوستان مفید بود.



    • اگر منظورت ۰ و ۱ هست، خب شاید در ادامه بهش اشاره بشه شاید هم نه. ولی این همه توضیح در مقابل یک ۰ و ۱ نباید باعث بشه شما در ادامه ی تعریفتون ولی و اما و اگر بیارید.




  3. عـــــ L ــــــی
    ۲ مهر ۱۳۹۱

    سلام دوست عزیز

    وب سایت زیبا و پر محتوایی دارین
    من میخواستم سی شارپ رو یاد بگیرم,البته مهندسی کامپیوتر میخونم,چند بار هم تلاش کردم شروع کنم و شروع هم میکنم تا یه جایی که میرسم دیگه نمیدونم باید چکار کنم
    لطفا کمکم کنید که اول از کجا شروع کنم,چه چیزهایی رو باید اول یاد بگیرم و …
    لطفا راهنمایی کنید که از این سر در گمی بیرون بیام



    • سلام
      توی هرکاری باید تلاش و پشت‌کار داشت، برنامه‌نویسی هم از جمله این‌کارهاست. اگه شما می‌خواین سی‌شارپ رو آنلاین آموزش ببینید مقالات آموزشی زنگ سی‌شارپ گزینه‌ی خوبی هست.
      شما باید ابتدا مبانی برنامه‌نویسی رو کامل یاد بگیرید سپس از اون توی محیط‌های مختلف استفاده کنید، مثل ویندوز اپلیکیشن یا ASP.NET و …
      موفق باشید.




  4. Praise
    ۱۲ آذر ۱۳۹۱

    سلام
    ۱٫ آیا وقتی کاراکتر تب رو وارد کنیم مث این میمونه که دکمه تب رو فشار داده باشیم ؟؟!!
    یک مثال واضح تر در مورد این کاراکترها اگه بگید ممنون میشم

    ۲٫ آیا میشه به جای اینکه در خروجی False یا True چاپ بشه Yes /No چاپ بشه مثلا تو همون مثال مالیات و …؟؟!!




    • Praise
      ۱۲ آذر ۱۳۹۱

      آخه من وقتی ورتیکال تب رو به کار بردم یه کاراکتر عجیب و غریب تو خروجی نمایش داده شد!!




      • Mersad
        ۱۲ مرداد ۱۳۹۲

        سلام
        دقیقا منم مشکل آقا یا خانم Praise برام پیش اومد.

        وقتی v\ رو تو خروجی چاپ کردم یه کاراکتر عجیب و غریب نشون داد.
        همچنین وقتی b\ رو هم تو خروجی چاپ کردم، هیچ تغییری انجام نشد، هیچ کاراکتری هم پاک نشد!

        مشکل چیه دقیقا؟
        خیلی ممنون




    • کوثر
      ۲۱ شهریور ۱۳۹۲

      ; char t=’\t’
      ;(Console.WriteLine(t
      دقیقا معنی همون تب صفحه کلید رو میده
      یا مثلا همون n\همون معنی Enter رو میده




  5. shahrokhdj
    ۲۰ مهر ۱۳۹۲

    سپاس از شما بابت مطالبتون

    فقط مثال های داخل اموزش رو کاربردی تر کنید.

    :)




  6. محمد
    ۲۴ آبان ۱۳۹۲

    به خدا که سایتتون حرف نداره .آرزوی موفقیت برات دوست عزیز




  7. hamid
    ۲۰ بهمن ۱۳۹۲

    سلام خوبی ادرستون کجاست اموزش هم می دید .تلفن تماس؟




  8. علی
    ۴ اردیبهشت ۱۳۹۴

    سایت جامعی دارین خیلیه عالیه مطالبتون!!!



دیدگاه خود را بنویسید





نشانی ایمیل شما منتشر نخواهد شد.

کامنت های شما بعد از تأیید توسط نویسنده وبلاگ، منتشر خواهند شد.

لطفا دیدگاهتان تا حد امکان مربوط به پست بالا باشد. اگر حرف دیگری دارید و یا قصد تماس با من را دارید، از فرم تماس استفاده کنید.

شما میتوانید با مراجعه به سایت گراواتار یک آواتار اختصاصی برای خود تعریف کنید، تا در کنار نام شما نمایش داده شود

برای قرار دادن کدهای نمونه می توانید از تگ های [php] ، [html] ، [css] و [js] استفاده کنید.
به عنوان مثال کدهای php را می توان به صورت زیر قرار داد:
[php] var $whoLoveIranians = "WebTarget!"; [/php]



کلیه حقوق مادی و معنوی برای وب سایت وب تارگت محفوظ است ©2017 وب‌تارگت

استفاده از مطالب وب سایت در سایر وب سایت‌ها و نشریات چاپی با ذکر منبع آزاد است.